From fa9af3227e734d01b7052976f4ea2d0b057ef3cc Mon Sep 17 00:00:00 2001 From: yksoft1 Date: Thu, 14 May 2020 23:47:00 +0800 Subject: [PATCH 001/166] Make the code buildable on MinGW.org (not mingw-w64) and MSYS1. --- include/PR/ultratypes.h | 4 ++++ include/ultra64.h | 6 ++++++ src/pc/gfx/gfx_pc.c | 14 ++++++++++++++ tools/utils.h | 3 ++- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h index 8a00490a..8d590542 100644 --- a/include/PR/ultratypes.h +++ b/include/PR/ultratypes.h @@ -38,7 +38,11 @@ typedef s32 ptrdiff_t; #else #include #include +#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) +typedef long ssize_t; +#else typedef ptrdiff_t ssize_t; #endif +#endif #endif diff --git a/include/ultra64.h b/include/ultra64.h index 409a3cf7..94bbc388 100644 --- a/include/ultra64.h +++ b/include/ultra64.h @@ -30,4 +30,10 @@ #include #include +#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) +#include +#define bzero(b,len) (memset((b), '\0', (len)), (void) 0) +#define bcopy(s1, s2, n) memmove((s2), (s1), (n)) +#endif + #endif diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index d674a4d6..72147886 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -153,7 +153,21 @@ static size_t buf_vbo_num_tris; static struct GfxWindowManagerAPI *gfx_wapi; static struct GfxRenderingAPI *gfx_rapi; +#if defined(_WIN32) && !defined(__MINGW64_VERSION_MAJOR) +#include +#define CLOCK_MONOTONIC 0 +//https://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows +struct timespec { long tv_sec; long tv_nsec; }; //header part +int clock_gettime(int arg, struct timespec *spec) //C-file part +{ __int64 wintime; GetSystemTimeAsFileTime((FILETIME*)&wintime); + wintime -=116444736000000000LL; //1jan1601 to 1jan1970 + spec->tv_sec =wintime / 10000000LL; //seconds + spec->tv_nsec =wintime % 10000000LL*100; //nano-seconds + return 0; +} +#else #include +#endif static unsigned long get_time(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/tools/utils.h b/tools/utils.h index dff1d6a3..03f482d0 100644 --- a/tools/utils.h +++ b/tools/utils.h @@ -7,8 +7,9 @@ // printing size_t varies by compiler #if defined(_MSC_VER) || defined(__MINGW32__) + #include #define SIZE_T_FORMAT "%Iu" - #define realpath(N,R) _fullpath((R),(N),_MAX_PATH) + #define realpath(N,R) _fullpath((R),(N),MAX_PATH) #else #define SIZE_T_FORMAT "%zu" #endif From 1b03e251bb59b205fc277877306ebd81c454f5d4 Mon Sep 17 00:00:00 2001 From: yksoft1 Date: Fri, 15 May 2020 00:26:56 +0800 Subject: [PATCH 002/166] Better way to detect mingw-w64; fix bettercamera for mingw.org; close .assets-local.txt before deleting it. --- extract_assets.py | 1 + include/PR/ultratypes.h | 5 ++++- include/ultra64.h | 5 ++++- src/game/bettercamera.inc.h | 5 ++++- src/pc/gfx/gfx_pc.c | 5 ++++- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/extract_assets.py b/extract_assets.py index 706fc728..7c29358b 100755 --- a/extract_assets.py +++ b/extract_assets.py @@ -47,6 +47,7 @@ def remove_file(fname): def clean_assets(local_asset_file): assets = set(read_asset_map().keys()) assets.update(read_local_asset_list(local_asset_file)) + local_asset_file.close() for fname in list(assets) + [".assets-local.txt"]: if fname.startswith("@"): continue diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h index 8d590542..62f14f31 100644 --- a/include/PR/ultratypes.h +++ b/include/PR/ultratypes.h @@ -38,11 +38,14 @@ typedef s32 ptrdiff_t; #else #include #include -#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) +#if defined(__MINGW32__) +#include <_mingw.h> +#if !defined(__MINGW64_VERSION_MAJOR) typedef long ssize_t; #else typedef ptrdiff_t ssize_t; #endif #endif +#endif #endif diff --git a/include/ultra64.h b/include/ultra64.h index 94bbc388..e78ded49 100644 --- a/include/ultra64.h +++ b/include/ultra64.h @@ -30,10 +30,13 @@ #include #include -#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) +#if defined(__MINGW32__) +#include <_mingw.h> +#if !defined(__MINGW64_VERSION_MAJOR) #include #define bzero(b,len) (memset((b), '\0', (len)), (void) 0) #define bcopy(s1, s2, n) memmove((s2), (s1), (n)) #endif +#endif #endif diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index 6c9592b8..b48f5d4c 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -9,8 +9,11 @@ #include "include/text_strings.h" #include "engine/surface_collision.h" #include "pc/configfile.h" +#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) +//quick and dirty fix for some older MinGW.org mingwrt +#else #include - +#endif /** diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 72147886..570c5305 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -153,7 +153,9 @@ static size_t buf_vbo_num_tris; static struct GfxWindowManagerAPI *gfx_wapi; static struct GfxRenderingAPI *gfx_rapi; -#if defined(_WIN32) && !defined(__MINGW64_VERSION_MAJOR) +#if defined(__MINGW32__) +#include <_mingw.h> +#if !defined(__MINGW64_VERSION_MAJOR) #include #define CLOCK_MONOTONIC 0 //https://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows @@ -168,6 +170,7 @@ int clock_gettime(int arg, struct timespec *spec) //C-file part #else #include #endif +#endif static unsigned long get_time(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); From c8a5d2ec68b5b46167955d6cfb1fcec3e1b3da3c Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Sun, 17 May 2020 05:49:34 -0300 Subject: [PATCH 003/166] Fix unused code --- src/game/spawn_object.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/game/spawn_object.c b/src/game/spawn_object.c index cc15c8e9..79f930f2 100644 --- a/src/game/spawn_object.c +++ b/src/game/spawn_object.c @@ -161,8 +161,7 @@ void clear_object_lists(struct ObjectNode *objLists) { } /** - * This function looks broken, but it appears to attempt to delete the leaf - * graph nodes under obj and obj's siblings. + * Delete the leaf graph nodes under obj and obj's siblings. */ static void unused_delete_leaf_nodes(struct Object *obj) { struct Object *children; @@ -176,8 +175,7 @@ static void unused_delete_leaf_nodes(struct Object *obj) { mark_obj_for_deletion(obj); } - // Probably meant to be != - while ((sibling = (struct Object *) obj->header.gfx.node.next) == obj0) { + while ((sibling = (struct Object *) obj->header.gfx.node.next) != obj0) { unused_delete_leaf_nodes(sibling); obj = (struct Object *) sibling->header.gfx.node.next; } From 072025d24339661af332ce2cce213d77d843b385 Mon Sep 17 00:00:00 2001 From: yksoft1 Date: Sun, 17 May 2020 19:01:13 +0800 Subject: [PATCH 004/166] Fix cliopts on MinGW.org. --- src/pc/cliopts.c | 1 + src/pc/cliopts.h | 1 + 2 files changed, 2 insertions(+) diff --git a/src/pc/cliopts.c b/src/pc/cliopts.c index 1e3b29c8..50487134 100644 --- a/src/pc/cliopts.c +++ b/src/pc/cliopts.c @@ -1,6 +1,7 @@ #include "cliopts.h" #include #include +#define __NO_MINGW_LFS //Mysterious error in MinGW.org stdio.h #include struct PCCLIOptions gCLIOpts; diff --git a/src/pc/cliopts.h b/src/pc/cliopts.h index 1844c44c..75d78e8b 100644 --- a/src/pc/cliopts.h +++ b/src/pc/cliopts.h @@ -1,3 +1,4 @@ +#include #include "sm64.h" struct PCCLIOptions From b52560869ca41888c80825b89b037437d6edf34a Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Sun, 17 May 2020 08:17:37 -0300 Subject: [PATCH 005/166] The last of TARGET_N64 finally gets thanos'd --- src/game/crash_screen.c | 386 ---------------------------------------- 1 file changed, 386 deletions(-) delete mode 100644 src/game/crash_screen.c diff --git a/src/game/crash_screen.c b/src/game/crash_screen.c deleted file mode 100644 index 613956d3..00000000 --- a/src/game/crash_screen.c +++ /dev/null @@ -1,386 +0,0 @@ -#include -#include -#include - -#include "sm64.h" - -#if defined(TARGET_N64) && (defined(VERSION_EU) || defined(VERSION_SH)) - -s32 _Printf(char *(*prout)(char *, const char *, size_t), char *dst, const char *fmt, va_list args); - -u8 gCrashScreenCharToGlyph[128] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, 43, -1, -1, 37, 38, -1, 42, - -1, 39, 44, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 36, -1, -1, -1, -1, 40, -1, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -}; - -// Bit-compressed font. '#' = 1, '.' = 0 -u32 gCrashScreenFont[7 * 9 + 1] = { - 0x70871c30, // .###.. ..#... .###.. .###.. ..##.. .. - 0x8988a250, // #...#. .##... #...#. #...#. .#.#.. .. - 0x88808290, // #...#. ..#... ....#. ....#. #..#.. .. - 0x88831c90, // #...#. ..#... ..##.. .###.. #..#.. .. - 0x888402f8, // #...#. ..#... .#.... ....#. #####. .. - 0x88882210, // #...#. ..#... #..... #...#. ...#.. .. - 0x71cf9c10, // .###.. .###.. #####. .###.. ...#.. .. - - 0xf9cf9c70, // #####. .###.. #####. .###.. .###.. .. - 0x8228a288, // #..... #...#. #...#. #...#. #...#. .. - 0xf200a288, // ####.. #..... ....#. #...#. #...#. .. - 0x0bc11c78, // ....#. ####.. ...#.. .###.. .####. .. - 0x0a222208, // ....#. #...#. ..#... #...#. ....#. .. - 0x8a222288, // #...#. #...#. ..#... #...#. #...#. .. - 0x71c21c70, // .###.. .###.. ..#... .###.. .###.. .. - - 0x23c738f8, // ..#... ####.. .###.. ###... #####. .. - 0x5228a480, // .#.#.. #...#. #...#. #..#.. #..... .. - 0x8a282280, // #...#. #...#. #..... #...#. #..... .. - 0x8bc822f0, // #...#. ####.. #..... #...#. ####.. .. - 0xfa282280, // #####. #...#. #..... #...#. #..... .. - 0x8a28a480, // #...#. #...#. #...#. #..#.. #..... .. - 0x8bc738f8, // #...#. ####.. .###.. ###... #####. .. - - 0xf9c89c08, // #####. .###.. #...#. .###.. ....#. .. - 0x82288808, // #..... #...#. #...#. ..#... ....#. .. - 0x82088808, // #..... #..... #...#. ..#... ....#. .. - 0xf2ef8808, // ####.. #.###. #####. ..#... ....#. .. - 0x82288888, // #..... #...#. #...#. ..#... #...#. .. - 0x82288888, // #..... #...#. #...#. ..#... #...#. .. - 0x81c89c70, // #..... .###.. #...#. .###.. .###.. .. - - 0x8a08a270, // #...#. #..... #...#. #...#. .###.. .. - 0x920da288, // #..#.. #..... ##.##. #...#. #...#. .. - 0xa20ab288, // #.#... #..... #.#.#. ##..#. #...#. .. - 0xc20aaa88, // ##.... #..... #.#.#. #.#.#. #...#. .. - 0xa208a688, // #.#... #..... #...#. #..##. #...#. .. - 0x9208a288, // #..#.. #..... #...#. #...#. #...#. .. - 0x8be8a270, // #...#. #####. #...#. #...#. .###.. .. - - 0xf1cf1cf8, // ####.. .###.. ####.. .###.. #####. .. - 0x8a28a220, // #...#. #...#. #...#. #...#. ..#... .. - 0x8a28a020, // #...#. #...#. #...#. #..... ..#... .. - 0xf22f1c20, // ####.. #...#. ####.. .###.. ..#... .. - 0x82aa0220, // #..... #.#.#. #.#... ....#. ..#... .. - 0x82492220, // #..... #..#.. #..#.. #...#. ..#... .. - 0x81a89c20, // #..... .##.#. #...#. .###.. ..#... .. - - 0x8a28a288, // #...#. #...#. #...#. #...#. #...#. .. - 0x8a28a288, // #...#. #...#. #...#. #...#. #...#. .. - 0x8a289488, // #...#. #...#. #...#. .#.#.. #...#. .. - 0x8a2a8850, // #...#. #...#. #.#.#. ..#... .#.#.. .. - 0x894a9420, // #...#. .#.#.. #.#.#. .#.#.. ..#... .. - 0x894aa220, // #...#. .#.#.. #.#.#. #...#. ..#... .. - 0x70852220, // .###.. ..#... .#.#.. #...#. ..#... .. - - 0xf8011000, // #####. ...... ...#.. .#.... ...... .. - 0x08020800, // ....#. ...... ..#... ..#... ...... .. - 0x10840400, // ...#.. ..#... .#.... ...#.. ...... .. - 0x20040470, // ..#... ...... .#.... ...#.. .###.. .. - 0x40840400, // .#.... ..#... .#.... ...#.. ...... .. - 0x80020800, // #..... ...... ..#... ..#... ...... .. - 0xf8011000, // #####. ...... ...#.. .#.... ...... .. - - 0x70800000, // .###.. ..#... ...... ...... ...... .. - 0x88822200, // #...#. ..#... ..#... #...#. ...... .. - 0x08820400, // ....#. ..#... ..#... ...#.. ...... .. - 0x108f8800, // ...#.. ..#... #####. ..#... ...... .. - 0x20821000, // ..#... ..#... ..#... .#.... ...... .. - 0x00022200, // ...... ...... ..#... #...#. ...... .. - 0x20800020, // ..#... ..#... ...... ...... ..#... .. - 0x00000000, -}; - - -char *gCauseDesc[18] = { - "Interrupt", - "TLB modification", - "TLB exception on load", - "TLB exception on store", - "Address error on load", - "Address error on store", - "Bus error on inst.", - "Bus error on data", - "System call exception", - "Breakpoint exception", - "Reserved instruction", - "Coprocessor unusable", - "Arithmetic overflow", - "Trap exception", - "Virtual coherency on inst.", - "Floating point exception", - "Watchpoint exception", - "Virtual coherency on data", -}; - -char *gFpcsrDesc[6] = { - "Unimplemented operation", "Invalid operation", "Division by zero", "Overflow", "Underflow", - "Inexact operation", -}; - - - -extern u64 osClockRate; - -struct { - OSThread thread; - u64 stack[0x800 / sizeof(u64)]; - OSMesgQueue mesgQueue; - OSMesg mesg; - u16 *framebuffer; - u16 width; - u16 height; -} gCrashScreen; - -void crash_screen_draw_rect(s32 x, s32 y, s32 w, s32 h) { - u16 *ptr; - s32 i, j; - - ptr = gCrashScreen.framebuffer + gCrashScreen.width * y + x; - for (i = 0; i < h; i++) { - for (j = 0; j < w; j++) { - // 0xe738 = 0b1110011100111000 - *ptr = ((*ptr & 0xe738) >> 2) | 1; - ptr++; - } - ptr += gCrashScreen.width - w; - } -} - -void crash_screen_draw_glyph(s32 x, s32 y, s32 glyph) { - const u32 *data; - u16 *ptr; - u32 bit; - u32 rowMask; - s32 i, j; - - data = &gCrashScreenFont[glyph / 5 * 7]; - ptr = gCrashScreen.framebuffer + gCrashScreen.width * y + x; - - for (i = 0; i < 7; i++) { - bit = 0x80000000U >> ((glyph % 5) * 6); - rowMask = *data++; - - for (j = 0; j < 6; j++) { - *ptr++ = (bit & rowMask) ? 0xffff : 1; - bit >>= 1; - } - ptr += gCrashScreen.width - 6; - } -} - -static char *write_to_buf(char *buffer, const char *data, size_t size) { - return (char *) memcpy(buffer, data, size) + size; -} - -void crash_screen_print(s32 x, s32 y, const char *fmt, ...) { - char *ptr; - u32 glyph; - s32 size; - char buf[0x100]; - - va_list args; - va_start(args, fmt); - - size = _Printf(write_to_buf, buf, fmt, args); - - if (size > 0) { - ptr = buf; - -#ifdef VERSION_SH - while (size > 0) { -#else - while (*ptr) { -#endif - - glyph = gCrashScreenCharToGlyph[*ptr & 0x7f]; - - if (glyph != 0xff) { - crash_screen_draw_glyph(x, y, glyph); - } - -#ifdef VERSION_SH - size--; -#endif - - ptr++; - x += 6; - } - } - - va_end(args); -} - -void crash_screen_sleep(s32 ms) { - u64 cycles = ms * 1000LL * osClockRate / 1000000ULL; - osSetTime(0); - while (osGetTime() < cycles) { - } -} - -void crash_screen_print_float_reg(s32 x, s32 y, s32 regNum, void *addr) { - u32 bits; - s32 exponent; - - bits = *(u32 *) addr; - exponent = ((bits & 0x7f800000U) >> 0x17) - 0x7f; - if ((exponent >= -0x7e && exponent <= 0x7f) || bits == 0) { - crash_screen_print(x, y, "F%02d:%.3e", regNum, *(f32 *) addr); - } else { - crash_screen_print(x, y, "F%02d:---------", regNum); - } -} - -void crash_screen_print_fpcsr(u32 fpcsr) { - s32 i; - u32 bit; - - bit = 1 << 17; - crash_screen_print(30, 155, "FPCSR:%08XH", fpcsr); - for (i = 0; i < 6; i++) { - if (fpcsr & bit) { - crash_screen_print(132, 155, "(%s)", gFpcsrDesc[i]); - return; - } - bit >>= 1; - } -} - -void draw_crash_screen(OSThread *thread) { - s16 cause; - __OSThreadContext *tc = &thread->context; - - cause = (tc->cause >> 2) & 0x1f; - if (cause == 23) // EXC_WATCH - { - cause = 16; - } - if (cause == 31) // EXC_VCED - { - cause = 17; - } - -#ifdef VERSION_SH - osWritebackDCacheAll(); -#endif - - crash_screen_draw_rect(25, 20, 270, 25); - crash_screen_print(30, 25, "THREAD:%d (%s)", thread->id, gCauseDesc[cause]); - crash_screen_print(30, 35, "PC:%08XH SR:%08XH VA:%08XH", tc->pc, tc->sr, tc->badvaddr); -#ifdef VERSION_EU - osWritebackDCacheAll(); -#endif - crash_screen_sleep(2000); - crash_screen_draw_rect(25, 45, 270, 185); - crash_screen_print(30, 50, "AT:%08XH V0:%08XH V1:%08XH", (u32) tc->at, (u32) tc->v0, - (u32) tc->v1); - crash_screen_print(30, 60, "A0:%08XH A1:%08XH A2:%08XH", (u32) tc->a0, (u32) tc->a1, - (u32) tc->a2); - crash_screen_print(30, 70, "A3:%08XH T0:%08XH T1:%08XH", (u32) tc->a3, (u32) tc->t0, - (u32) tc->t1); - crash_screen_print(30, 80, "T2:%08XH T3:%08XH T4:%08XH", (u32) tc->t2, (u32) tc->t3, - (u32) tc->t4); - crash_screen_print(30, 90, "T5:%08XH T6:%08XH T7:%08XH", (u32) tc->t5, (u32) tc->t6, - (u32) tc->t7); - crash_screen_print(30, 100, "S0:%08XH S1:%08XH S2:%08XH", (u32) tc->s0, (u32) tc->s1, - (u32) tc->s2); - crash_screen_print(30, 110, "S3:%08XH S4:%08XH S5:%08XH", (u32) tc->s3, (u32) tc->s4, - (u32) tc->s5); - crash_screen_print(30, 120, "S6:%08XH S7:%08XH T8:%08XH", (u32) tc->s6, (u32) tc->s7, - (u32) tc->t8); - crash_screen_print(30, 130, "T9:%08XH GP:%08XH SP:%08XH", (u32) tc->t9, (u32) tc->gp, - (u32) tc->sp); - crash_screen_print(30, 140, "S8:%08XH RA:%08XH", (u32) tc->s8, (u32) tc->ra); - crash_screen_print_fpcsr(tc->fpcsr); -#ifdef VERSION_EU - osWritebackDCacheAll(); -#endif - crash_screen_print_float_reg(30, 170, 0, &tc->fp0.f.f_even); - crash_screen_print_float_reg(120, 170, 2, &tc->fp2.f.f_even); - crash_screen_print_float_reg(210, 170, 4, &tc->fp4.f.f_even); - crash_screen_print_float_reg(30, 180, 6, &tc->fp6.f.f_even); - crash_screen_print_float_reg(120, 180, 8, &tc->fp8.f.f_even); - crash_screen_print_float_reg(210, 180, 10, &tc->fp10.f.f_even); - crash_screen_print_float_reg(30, 190, 12, &tc->fp12.f.f_even); - crash_screen_print_float_reg(120, 190, 14, &tc->fp14.f.f_even); - crash_screen_print_float_reg(210, 190, 16, &tc->fp16.f.f_even); - crash_screen_print_float_reg(30, 200, 18, &tc->fp18.f.f_even); - crash_screen_print_float_reg(120, 200, 20, &tc->fp20.f.f_even); - crash_screen_print_float_reg(210, 200, 22, &tc->fp22.f.f_even); - crash_screen_print_float_reg(30, 210, 24, &tc->fp24.f.f_even); - crash_screen_print_float_reg(120, 210, 26, &tc->fp26.f.f_even); - crash_screen_print_float_reg(210, 210, 28, &tc->fp28.f.f_even); - crash_screen_print_float_reg(30, 220, 30, &tc->fp30.f.f_even); -#ifdef VERSION_EU - osWritebackDCacheAll(); -#endif - osViBlack(FALSE); - osViSwapBuffer(gCrashScreen.framebuffer); -} - -OSThread *get_crashed_thread(void) { - OSThread *thread; - - thread = __osGetCurrFaultedThread(); - while (thread->priority != -1) { - if (thread->priority > OS_PRIORITY_IDLE && thread->priority < OS_PRIORITY_APPMAX - && (thread->flags & 3) != 0) { - return thread; - } - thread = thread->tlnext; - } - return NULL; -} - -void thread2_crash_screen(UNUSED void *arg) { - OSMesg mesg; - OSThread *thread; - - osSetEventMesg(OS_EVENT_CPU_BREAK, &gCrashScreen.mesgQueue, (OSMesg) 1); - osSetEventMesg(OS_EVENT_FAULT, &gCrashScreen.mesgQueue, (OSMesg) 2); - do { - osRecvMesg(&gCrashScreen.mesgQueue, &mesg, 1); - thread = get_crashed_thread(); - } while (thread == NULL); - draw_crash_screen(thread); - for (;;) { - } -} - -void crash_screen_set_framebuffer(u16 *framebuffer, s16 width, s16 height) { -#ifdef VERSION_EU - gCrashScreen.framebuffer = framebuffer; -#else - gCrashScreen.framebuffer = (u16 *)((uintptr_t)framebuffer | 0xa0000000); -#endif - gCrashScreen.width = width; - gCrashScreen.height = height; -} - -void crash_screen_init(void) { -#ifdef VERSION_EU - gCrashScreen.framebuffer = (u16 *) (osMemSize | 0x80000000) - SCREEN_WIDTH * SCREEN_HEIGHT; -#else - gCrashScreen.framebuffer = (u16 *) (osMemSize | 0xA0000000) - SCREEN_WIDTH * SCREEN_HEIGHT; -#endif - gCrashScreen.width = SCREEN_WIDTH; -#ifdef VERSION_EU - gCrashScreen.height = SCREEN_HEIGHT; -#else - gCrashScreen.height = 0x10; -#endif - osCreateMesgQueue(&gCrashScreen.mesgQueue, &gCrashScreen.mesg, 1); - osCreateThread(&gCrashScreen.thread, 2, thread2_crash_screen, NULL, - (u8 *) gCrashScreen.stack + sizeof(gCrashScreen.stack), -#ifdef VERSION_EU - OS_PRIORITY_APPMAX -#else - OS_PRIORITY_RMON -#endif - ); - osStartThread(&gCrashScreen.thread); -} - -#endif From 71d7750d45f26cab132c9e2a4ed568091ad7e655 Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Sun, 17 May 2020 08:19:04 -0300 Subject: [PATCH 006/166] Makefile updated to thanos TARGET_N64 --- Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile b/Makefile index 6767bf89..00aae4c7 100644 --- a/Makefile +++ b/Makefile @@ -18,8 +18,6 @@ GRUCODE ?= f3d_old COMPARE ?= 1 # If NON_MATCHING is 1, define the NON_MATCHING and AVOID_UB macros when building (recommended) NON_MATCHING ?= 1 -# Sane default until N64 build scripts rm'd -TARGET_N64 = 0 # Build and optimize for Raspberry Pi(s) TARGET_RPI ?= 0 From e24473ee17b7e6a1097b4beccc7c976722ec6a24 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Mon, 18 May 2020 17:44:21 +0900 Subject: [PATCH 007/166] Support for text-based savefiles --- .gitignore | 1 + src/game/save_file.c | 297 ++++++++++++++++++++++++++++++++++++++++++- src/game/save_file.h | 8 ++ src/pc/ini.c | 265 ++++++++++++++++++++++++++++++++++++++ src/pc/ini.h | 25 ++++ 5 files changed, 589 insertions(+), 7 deletions(-) create mode 100644 src/pc/ini.c create mode 100644 src/pc/ini.h diff --git a/.gitignore b/.gitignore index 2f56cebf..0caa3e08 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,7 @@ build/* *.mio0 *.z64 *.map +*.sav .assets-local.txt sm64_save_file.bin sm64config.txt diff --git a/src/game/save_file.c b/src/game/save_file.c index b5112eb5..698c6837 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -1,5 +1,5 @@ #include - +#include #include "sm64.h" #include "game_init.h" #include "main.h" @@ -11,6 +11,7 @@ #include "level_table.h" #include "course_table.h" #include "thread6.h" +#include "pc/ini.h" #define MENU_DATA_MAGIC 0x4849 #define SAVE_FILE_MAGIC 0x4441 @@ -50,6 +51,69 @@ s8 gLevelToCourseNumTable[] = { STATIC_ASSERT(ARRAY_COUNT(gLevelToCourseNumTable) == LEVEL_COUNT - 1, "change this array if you are adding levels"); +/* Flag key */ +const char *sav_flags[NUM_FLAGS] = { + "file_exists", "wing_cap", "metal_cap", "vanish_cap", "key_1", "key_2", + "basement_door", "upstairs_door", "ddd_moved_back", "moat_drained", + "pps_door", "wf_door", "ccm_door", "jrb_door", "bitdw_door", + "bitfs_door", "", "", "", "", "50star_door" +}; + +/* Main course keys */ +const char *sav_courses[NUM_COURSES] = { + "bob", "wf", "jrb", "ccm", "bbh", "hmc", "lll", + "ssl", "ddd", "sl", "wdw", "ttm", "thi", "ttc", "rr" +}; + +/* Bonus courses keys (including Castle Course) */ +const char *sav_bonus_courses[NUM_BONUS_COURSES] = { + "hub", "bitdw", "bitfs", "bits", "pss", "cotmc", + "totwc", "vcutm", "wmotr", "sa", +}; + +/* Mario's cap type keys */ +const char *cap_on_types[NUM_CAP_ON] = { + "ground", "klepto", "ukiki", "mrblizzard" +}; + +/* Get current timestamp */ +static void get_timestamp(char* buffer) +{ + time_t timer; + struct tm* tm_info; + + timer = time(NULL); + tm_info = localtime(&timer); + + strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info); +} + +/* Convert 'binary' integer to decimal integer */ +static u32 bin_to_int(u32 n) +{ + s32 dec = 0, i = 0, rem; + while (n != 0) { + rem = n % 10; + n /= 10; + dec += rem * (1 << i); + ++i; + } + return dec; +} + +/* Convert decimal integer to 'binary' integer */ +static u32 int_to_bin(u32 n) +{ + s32 bin = 0, rem, i = 1; + while (n != 0) { + rem = n % 2; + n /= 2; + bin += rem * i; + i *= 10; + } + return bin; +} + // This was probably used to set progress to 100% for debugging, but // it was removed from the release ROM. static void stub_save_file_1(void) { @@ -178,6 +242,208 @@ static inline s32 write_eeprom_menudata(const u32 slot, const u32 num) { #endif } +/** + * Write SaveFile and MainMenuSaveData structs to a text-based savefile. + */ +static s32 write_text_save(s32 fileIndex) +{ + FILE* file; + char *filename, *value; + struct SaveFile *savedata; + struct MainMenuSaveData *menudata; + + u32 i, flags, coins, stars, starFlags; + + /* Define savefile's name */ + filename = (char*)malloc(14 * sizeof(char)); + if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) + { + return -1; + } + + file = fopen(filename, "wt"); + if (file == NULL) { + return -1; + } + + /* Write header */ + fprintf(file, "# Super Mario 64 save file\n"); + fprintf(file, "# Comment starts with #\n"); + fprintf(file, "# True = 1, False = 0\n"); + + /* Write current timestamp */ + value = (char*)malloc(26 * sizeof(char)); + get_timestamp(value); + fprintf(file, "# %s\n", value); + + /* Write MainMenuSaveData info */ + menudata = &gSaveBuffer.menuData[0]; + fprintf(file, "\n[menu]\n"); + fprintf(file, "coin_score_age = %d\n", menudata->coinScoreAges[fileIndex]); + fprintf(file, "sound_mode = %u\n", menudata->soundMode); + + /* Write all flags */ + fprintf(file, "\n[flags]\n"); + for (i = 1; i < NUM_FLAGS; i++) { + if (strcmp(sav_flags[i], "")) { + flags = save_file_get_flags(); + flags = (flags & (1 << i)); /* Get a specific bit */ + flags = (flags) ? 1 : 0; /* Determine if bit is set or not */ + + fprintf(file, "%s = %d\n", sav_flags[i], flags); + } + } + + /* Write coin count and star flags from each course (except Castle Grounds) */ + fprintf(file, "\n[courses]\n"); + for (i = 0; i < NUM_COURSES; i++) { + stars = save_file_get_star_flags(fileIndex, i); + coins = save_file_get_course_coin_score(fileIndex, i); + starFlags = int_to_bin(stars); /* 63 -> 111111 */ + + fprintf(file, "%s = \"%d, %07d\"\n", sav_courses[i], coins, starFlags); + } + + /* Write star flags from each bonus cource (including Castle Grounds) */ + fprintf(file, "\n[bonus]\n"); + for (i = 0; i < NUM_BONUS_COURSES; i++) { + if (i == 0) { + stars = save_file_get_star_flags(fileIndex, -1); + } else { + stars = save_file_get_star_flags(fileIndex, i+15); + } + starFlags = int_to_bin(stars); + + fprintf(file, "%s = %d\n", sav_bonus_courses[i], starFlags); + } + + /* Write who steal Mario's cap */ + fprintf(file, "\n[cap]\n"); + for (i = 0; i < NUM_CAP_ON; i++) { + flags = save_file_get_flags(); // Read all flags + flags = (flags & (1 << (i+16))); // Get `cap` flags + flags = (flags) ? 1 : 0; // Determine if bit is set or not + if (flags) { + fprintf(file, "type = %s\n", cap_on_types[i]); + break; + } + } + + /* Write in what course and area Mario losted its cap, and cap's position */ + savedata = &gSaveBuffer.files[fileIndex][0]; + fprintf(file, "level = %d\n", savedata->capLevel); + fprintf(file, "area = %d\n", savedata->capArea); + + fclose(file); + return 1; +} + +/** + * Read gSaveBuffer data from a text-based savefile. + */ +static s32 read_text_save(s32 fileIndex) +{ + char *filename, *temp; + const char *value; + ini_t *savedata; + + u32 i, flag, coins, stars, starFlags; + u32 capLevel, capArea; + Vec3s capPos; + + /* Define savefile's name */ + filename = (char*)malloc(14 * sizeof(char)); + if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) + { + return -1; + } + + /* Try to open the file */ + savedata = ini_load(filename); + if (savedata == NULL) { + return -1; + } + else { + /* Good, file exists for gSaveBuffer */ + gSaveBuffer.files[fileIndex][0].flags |= SAVE_FLAG_FILE_EXISTS; + } + + /* Read coin score age for selected file and sound mode */ + ini_sget(savedata, "menu", "coin_score_age", "%d", + &gSaveBuffer.menuData[0].coinScoreAges[fileIndex]); + ini_sget(savedata, "menu", "sound_mode", "%u", + &gSaveBuffer.menuData[0].soundMode); // Can override 4 times! + + /* Parse main flags */ + for (i = 1; i < NUM_FLAGS; i++) { + value = ini_get(savedata, "flags", sav_flags[i]); + + if (value) { + flag = strtol(value, &temp, 10); + if (flag) { + flag = 1 << i; /* Look #define in header.. */ + gSaveBuffer.files[fileIndex][0].flags |= flag; + } + } + } + + /* Parse coin and star values for each main course */ + for (i = 0; i < NUM_COURSES; i++) { + value = ini_get(savedata, "courses", sav_courses[i]); + if (value) { + sscanf(value, "%d, %d", &coins, &stars); + starFlags = bin_to_int(stars); /* 111111 -> 63 */ + + save_file_set_star_flags(fileIndex, i, starFlags); + gSaveBuffer.files[fileIndex][0].courseCoinScores[i] = coins; + } + } + + /* Parse star values for each bonus course */ + for (i = 0; i < NUM_BONUS_COURSES; i++) { + value = ini_get(savedata, "bonus", sav_bonus_courses[i]); + if (value) { + sscanf(value, "%d", &stars); + starFlags = bin_to_int(stars); + + if (strlen(value) == 5) { + /* Process Castle Grounds */ + save_file_set_star_flags(fileIndex, -1, starFlags); + } + else if (strlen(value) == 2) { + /* Process Princess's Secret Slide */ + save_file_set_star_flags(fileIndex, COURSE_PSS, starFlags); + } + else { + /* Process another shitty bonus course */ + save_file_set_star_flags(fileIndex, i+15, starFlags); + } + } + } + + /* Find, who steal Mario's cap ... */ + for (i = 0; i < NUM_CAP_ON; i++) { + value = ini_get(savedata, "cap", "type"); + if (value) { + if (!strcmp(value, cap_on_types[i])) { + flag = (1 << (16 + i)); + gSaveBuffer.files[fileIndex][0].flags |= flag; + break; + } + } + } + + /* ... also it's position, area and level */ + sscanf(ini_get(savedata, "cap", "level"), "%d", &capLevel); + sscanf(ini_get(savedata, "cap", "area"), "%d", &capArea); + + gSaveBuffer.files[fileIndex][0].capLevel = capLevel; + gSaveBuffer.files[fileIndex][0].capArea = capArea; + + /* Cleaning up after ourselves */ + ini_free(savedata); + return 1; +} /** * Sum the bytes in data to data + size - 2. The last two bytes are ignored @@ -242,7 +508,7 @@ static void save_main_menu_data(void) { bcopy(&gSaveBuffer.menuData[0], &gSaveBuffer.menuData[1], sizeof(gSaveBuffer.menuData[1])); // Write to EEPROM - write_eeprom_menudata(0, 2); + write_eeprom_menudata(0, 2); gMainMenuDataModified = FALSE; } @@ -350,7 +616,16 @@ static void save_file_bswap(struct SaveBuffer *buf) { } void save_file_do_save(s32 fileIndex) { - if (gSaveFileModified) { + if (gSaveFileModified) +#ifdef TEXTSAVES + { + // Write to text file + write_text_save(fileIndex); + gSaveFileModified = FALSE; + gMainMenuDataModified = FALSE; + } +#else + { // Compute checksum add_save_block_signature(&gSaveBuffer.files[fileIndex][0], sizeof(gSaveBuffer.files[fileIndex][0]), SAVE_FILE_MAGIC); @@ -361,11 +636,11 @@ void save_file_do_save(s32 fileIndex) { // Write to EEPROM write_eeprom_savefile(fileIndex, 0, 2); - + gSaveFileModified = FALSE; } - save_main_menu_data(); +#endif } void save_file_erase(s32 fileIndex) { @@ -396,6 +671,14 @@ void save_file_load_all(void) { gSaveFileModified = FALSE; bzero(&gSaveBuffer, sizeof(gSaveBuffer)); + +#ifdef TEXTSAVES + for (file = 0; file < NUM_SAVE_FILES; file++) { + read_text_save(file); + } + gSaveFileModified = TRUE; + gMainMenuDataModified = TRUE; +#else read_eeprom_data(&gSaveBuffer, sizeof(gSaveBuffer)); if (save_file_need_bswap(&gSaveBuffer)) @@ -432,7 +715,7 @@ void save_file_load_all(void) { break; } } - +#endif stub_save_file_1(); } @@ -739,4 +1022,4 @@ s32 check_warp_checkpoint(struct WarpNode *warpNode) { } return isWarpCheckpointActive; -} +} \ No newline at end of file diff --git a/src/game/save_file.h b/src/game/save_file.h index 198748de..373b732d 100644 --- a/src/game/save_file.h +++ b/src/game/save_file.h @@ -160,4 +160,12 @@ void eu_set_language(u16 language); u16 eu_get_language(void); #endif +#ifdef TEXTSAVES +#define FILENAME_FORMAT "save_file_%d.sav" +#define NUM_COURSES 15 +#define NUM_BONUS_COURSES 10 +#define NUM_FLAGS 21 +#define NUM_CAP_ON 4 +#endif + #endif diff --git a/src/pc/ini.c b/src/pc/ini.c new file mode 100644 index 00000000..71d6d408 --- /dev/null +++ b/src/pc/ini.c @@ -0,0 +1,265 @@ +/** + * Copyright (c) 2016 rxi + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include +#include +#include +#include +#include "ini.h" + +/* Case insensitive string compare */ +static int strcmpci(const char *a, const char *b) { + for (;;) { + int d = tolower(*a) - tolower(*b); + if (d != 0 || !*a) { + return d; + } + a++, b++; + } +} + +/* Returns the next string in the split data */ +static char* next(ini_t *ini, char *p) { + p += strlen(p); + while (p < ini->end && *p == '\0') { + p++; + } + return p; +} + +static void trim_back(ini_t *ini, char *p) { + while (p >= ini->data && (*p == ' ' || *p == '\t' || *p == '\r')) { + *p-- = '\0'; + } +} + +static char* discard_line(ini_t *ini, char *p) { + while (p < ini->end && *p != '\n') { + *p++ = '\0'; + } + return p; +} + + +static char *unescape_quoted_value(ini_t *ini, char *p) { + /* Use `q` as write-head and `p` as read-head, `p` is always ahead of `q` + * as escape sequences are always larger than their resultant data */ + char *q = p; + p++; + while (p < ini->end && *p != '"' && *p != '\r' && *p != '\n') { + if (*p == '\\') { + /* Handle escaped char */ + p++; + switch (*p) { + default : *q = *p; break; + case 'r' : *q = '\r'; break; + case 'n' : *q = '\n'; break; + case 't' : *q = '\t'; break; + case '\r' : + case '\n' : + case '\0' : goto end; + } + + } else { + /* Handle normal char */ + *q = *p; + } + q++, p++; + } +end: + return q; +} + + +/* Splits data in place into strings containing section-headers, keys and + * values using one or more '\0' as a delimiter. Unescapes quoted values */ +static void split_data(ini_t *ini) { + char *value_start, *line_start; + char *p = ini->data; + + while (p < ini->end) { + switch (*p) { + case '\r': + case '\n': + case '\t': + case ' ': + *p = '\0'; + /* Fall through */ + + case '\0': + p++; + break; + + case '[': + p += strcspn(p, "]\n"); + *p = '\0'; + break; + + case ';': + p = discard_line(ini, p); + break; + + default: + line_start = p; + p += strcspn(p, "=\n"); + + /* Is line missing a '='? */ + if (*p != '=') { + p = discard_line(ini, line_start); + break; + } + trim_back(ini, p - 1); + + /* Replace '=' and whitespace after it with '\0' */ + do { + *p++ = '\0'; + } while (*p == ' ' || *p == '\r' || *p == '\t'); + + /* Is a value after '=' missing? */ + if (*p == '\n' || *p == '\0') { + p = discard_line(ini, line_start); + break; + } + + if (*p == '"') { + /* Handle quoted string value */ + value_start = p; + p = unescape_quoted_value(ini, p); + + /* Was the string empty? */ + if (p == value_start) { + p = discard_line(ini, line_start); + break; + } + + /* Discard the rest of the line after the string value */ + p = discard_line(ini, p); + + } else { + /* Handle normal value */ + p += strcspn(p, "\n"); + trim_back(ini, p - 1); + } + break; + } + } +} + + + +ini_t* ini_load(const char *filename) { + ini_t *ini = NULL; + FILE *fp = NULL; + int n, sz; + + /* Init ini struct */ + ini = malloc(sizeof(*ini)); + if (!ini) { + goto fail; + } + memset(ini, 0, sizeof(*ini)); + + /* Open file */ + fp = fopen(filename, "rb"); + if (!fp) { + goto fail; + } + + /* Get file size */ + fseek(fp, 0, SEEK_END); + sz = ftell(fp); + rewind(fp); + + /* Load file content into memory, null terminate, init end var */ + ini->data = malloc(sz + 1); + ini->data[sz] = '\0'; + ini->end = ini->data + sz; + n = fread(ini->data, 1, sz, fp); + if (n != sz) { + goto fail; + } + + /* Prepare data */ + split_data(ini); + + /* Clean up and return */ + fclose(fp); + return ini; + +fail: + if (fp) fclose(fp); + if (ini) ini_free(ini); + return NULL; +} + +void ini_free(ini_t *ini) { + free(ini->data); + free(ini); +} + +const char* ini_get(ini_t *ini, const char *section, const char *key) { + char *current_section = ""; + char *val; + char *p = ini->data; + + if (*p == '\0') { + p = next(ini, p); + } + + while (p < ini->end) { + if (*p == '[') { + /* Handle section */ + current_section = p + 1; + + } else { + /* Handle key */ + val = next(ini, p); + if (!section || !strcmpci(section, current_section)) { + if (!strcmpci(p, key)) { + return val; + } + } + p = val; + } + + p = next(ini, p); + } + + return NULL; +} + + +int ini_sget( + ini_t *ini, const char *section, const char *key, + const char *scanfmt, void *dst +) { + const char *val = ini_get(ini, section, key); + if (!val) { + return 0; + } + if (scanfmt) { + sscanf(val, scanfmt, dst); + } else { + *((const char**) dst) = val; + } + return 1; +} diff --git a/src/pc/ini.h b/src/pc/ini.h new file mode 100644 index 00000000..ca5b89bb --- /dev/null +++ b/src/pc/ini.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2016 rxi + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the MIT license. See `ini.c` for details. + */ + +#ifndef INI_H +#define INI_H + +#define INI_VERSION "0.1.1" + +typedef struct ini_t ini_t; + +struct ini_t { + char *data; + char *end; +}; + +ini_t* ini_load(const char *filename); +void ini_free(ini_t *ini); +const char* ini_get(ini_t *ini, const char *section, const char *key); +int ini_sget(ini_t *ini, const char *section, const char *key, const char *scanfmt, void *dst); + +#endif \ No newline at end of file From 2417004d204c1e2b0cc6f5bee163f630c9cc91a1 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Mon, 18 May 2020 17:45:28 +0900 Subject: [PATCH 008/166] Added flag to support only text-based savefiles --- Makefile | 7 ++++ build.sh | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 build.sh diff --git a/Makefile b/Makefile index 6767bf89..105cfd29 100644 --- a/Makefile +++ b/Makefile @@ -35,6 +35,8 @@ NODRAWINGDISTANCE ?= 0 TEXTURE_FIX ?= 0 # Enable extended options menu by default EXT_OPTIONS_MENU ?= 1 +# Disable text-based save-files by default +TEXTSAVES ?= 0 # Build for Emscripten/WebGL TARGET_WEB ?= 0 @@ -490,6 +492,11 @@ ifeq ($(BETTERCAMERA),1) EXT_OPTIONS_MENU := 1 endif +ifeq ($(TEXTSAVES),1) + CC_CHECK += -DTEXTSAVES + CFLAGS += -DTEXTSAVES +endif + # Check for no drawing distance option ifeq ($(NODRAWINGDISTANCE),1) CC_CHECK += -DNODRAWINGDISTANCE diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..d5429ce5 --- /dev/null +++ b/build.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +# Directories and Files +LIBDIR=./tools/lib/ +LIBAFA=libaudiofile.a +LIBAFLA=libaudiofile.la +AUDDIR=./tools/audiofile-0.3.6 + +# Command line options +OPTIONS=("Analog Camera" "No Draw Distance" "Text-saves" "Smoke Texture Fix" "Clean build") +EXTRA=("BETTERCAMERA=1" "NODRAWINGDISTANCE=1" "TEXTSAVES=1" "TEXTURE_FIX=1" "clean") + +# Colors +RED=$(tput setaf 1) +GREEN=$(tput setaf 2) +YELLOW=$(tput setaf 3) +CYAN=$(tput setaf 6) +RESET=$(tput sgr0) + +# Checks to see if the libaudio directory and files exist +if [ -d "$LIBDIR" -a -e "${LIBDIR}$LIBAFA" -a -e "${LIBDIR}$LIBAFLA" ]; then + printf "\n${GREEN}libaudio files exist, going straight to compiling.${RESET}\n" +else + printf "\n${GREEN}libaudio files not found, starting initialization process.${RESET}\n\n" + + printf "${YELLOW} Changing directory to: ${CYAN}${AUDDIR}${RESET}\n\n" + cd $AUDDIR + + printf "${YELLOW} Executing: ${CYAN}autoreconf -i${RESET}\n\n" + autoreconf -i + + printf "\n${YELLOW} Executing: ${CYAN}./configure --disable-docs${RESET}\n\n" + PATH=/mingw64/bin:/mingw32/bin:$PATH LIBS=-lstdc++ ./configure --disable-docs + + printf "\n${YELLOW} Executing: ${CYAN}make -j${RESET}\n\n" + PATH=/mingw64/bin:/mingw32/bin:$PATH make -j + + printf "\n${YELLOW} Making new directory ${CYAN}../lib${RESET}\n\n" + mkdir ../lib + + + printf "${YELLOW} Copying libaudio files to ${CYAN}../lib${RESET}\n\n" + cp libaudiofile/.libs/libaudiofile.a ../lib/ + cp libaudiofile/.libs/libaudiofile.la ../lib/ + + printf "${YELLOW} Going up one directory.${RESET}\n\n" + cd ../ + + printf "${GREEN}Notepad will now open, please follow the instructions carefully.\n\n" + printf "${YELLOW}Locate the line: " + printf "${CYAN}tabledesign_CFLAGS := -Wno-uninitialized -laudiofile\n" + printf "${YELLOW}Then add at the end: ${CYAN}-lstdc++\n" + printf "${YELLOW}So it reads: " + printf "${CYAN}tabledesign_CFLAGS := -Wno-uninitialized -laudiofile -lstdc++\n\n" + notepad "Makefile" + read -n 1 -r -s -p $'\e[32mPRESS ENTER TO CONTINUE...\e[0m\n' + + printf "${YELLOW} Executing: ${CYAN}make -j${RESET}\n\n" + PATH=/mingw64/bin:/mingw32/bin:$PATH make -j + + printf "\n${YELLOW} Going up one directory.${RESET}\n" + cd ../ +fi + +menu() { + printf "\nAvaliable options:\n" + for i in ${!OPTIONS[@]}; do + printf "%3d%s) %s\n" $((i+1)) "${choices[i]:- }" "${OPTIONS[i]}" + done + if [[ "$msg" ]]; then echo "$msg"; fi + printf "${YELLOW}Please do not select \"Clean build\" with any other option.\n" + printf "Leave all options unchecked for a Vanilla build.\n${RESET}" +} + +prompt="Check an option (again to uncheck, press ENTER):" +while menu && read -rp "$prompt" num && [[ "$num" ]]; do + [[ "$num" != *[![:digit:]]* ]] && + (( num > 0 && num <= ${#OPTIONS[@]} )) || + { msg="Invalid option: $num"; continue; } + ((num--)); # msg="${OPTIONS[num]} was ${choices[num]:+un}checked" + [[ "${choices[num]}" ]] && choices[num]="" || choices[num]="+" +done + +for i in ${!OPTIONS[@]}; do + [[ "${choices[i]}" ]] && { CMDL+=" ${EXTRA[i]}"; } +done + +printf "\n${YELLOW} Executing: ${CYAN}make ${CMDL} -j${RESET}\n\n" +PATH=/mingw32/bin:/mingw64/bin:$PATH make $CMDL -j -d + +if [ "${CMDL}" != " clean" ]; then + + printf "\n${GREEN}If all went well you should have a compiled .EXE in the 'builds/us_pc/' folder.\n" + printf "${CYAN}Would you like to run the game? [y or n]: ${RESET}" + read TEST + + if [ "${TEST}" = "y" ]; then + exec ./build/us_pc/sm64.us.f3dex2e.exe + fi +else + printf "\nYour build is now clean\n" +fi \ No newline at end of file From bea8e2233e73a508b7666822feea453fe9a3b90f Mon Sep 17 00:00:00 2001 From: Zerocker Date: Mon, 18 May 2020 19:17:04 +0900 Subject: [PATCH 009/166] Added savefile format documentation --- SAVE_FORMAT.MD | 158 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 SAVE_FORMAT.MD diff --git a/SAVE_FORMAT.MD b/SAVE_FORMAT.MD new file mode 100644 index 00000000..c11d9194 --- /dev/null +++ b/SAVE_FORMAT.MD @@ -0,0 +1,158 @@ +# Text-based savefile format +This small document describes a new, TOML-like text format for game saves. This format allows the user to use a simple text editor to change the data necessary for the game (for example, special saves for speedrun training). + +All data is stored in pairs (*key = value*). Pairs can be placed arbitrarily within a single section. The format of values may differ for each section. + +Each savefile (4 total) must be named `save_file_X.sav`, where X - save slot (0, 1, 2 or 3). + +> **Note**: The game creates the savefile only when you are saved in the game after completing a course! +___ +## Header +The header is automatically generated by the game when saving progress. It mainly contains information about the value of the 0 and 1 flags, the character that the comment starts with, and the time when the file content changed. + +Example: +``` +# Super Mario 64 save file +# Comment starts with # +# True = 1, False = 0 +# 2020-05-18 17:37:07 +``` + +___ +## Commenting +All comment lines starts with `#` character. Comments can be located on a separate line or as part of another line. When the game reads the save, comments are ignored. + +Example: +``` +# This is a comment +coin_score_age = ?? # This is a comment too! +``` + +___ +## Menu Section - [menu] +This section contains two flags for menu. + +| Flag | Value | Description | +|---|---|---| +| coin_score_age | ?? | Each save file has a 2 bit "age" for each course. The higher this value, the older the high score is. This is used for tie-breaking when displaying on the high score screen +| sound_mode | ?? | Sound mode for the game: stereo, mono, or headset + +Example: +``` +[menu] +coin_score_age = ?? +sound_mode = ?? +``` +___ +## Flags Section - [flags] +This section contains all main game flags (walkthought milestones). +> **Note**: The value can be only 0 (False) or 1 (True). + +| Flag | Description | +|---|---| +| wing_cap | **Red Switch** is pressed +| metal_cap | **Green Switch** is pressed +| vanish_cap | **Blue Switch** is pressed. +| key_1 | Key is found in **Bowser in the Dark World** +| key_2 | Key is found in **Bowser in the Fire Sea** +| basement_door | Mario unlocked castle's basement door +| upstairs_door | Mario unlocked castle's upper floors +| ddd_moved_back | **Dire Dire Docks** painting is moved back +| moat_drained | Water is drained in the moat of the castle +| pps_door | **Princess's Secret Slide** window is unlocked +| wf_door | **Whomp's Fortress door** is unlocked +| ccm_door | **Cool, Cool Mountain door** is unlocked +| jrb_door | **Jolly Roger Bay door** is unlocked +| bitdw_door | **Bowser in the Dark World door** door is unlocked +| bitfs_door | **Bowser in the Fire Sea** door is unlocked +| 50star_door | **Endless Staircase** is not endless anymore + +Example: +``` +[flags] +wing_cap = 1 +metal_cap = 1 +vanish_cap = 0 +key_1 = 1 +key_2 = 1 +``` +___ +## Main Courses Section - [courses] +This section contains all stars and coins that Mario collected in each main course. + +The first value stores the number of coins collected. +> **Warning!**: Make sure that coins count will not exceed 255! + +The second value stores the stars (or completed missions). Each mission (6 main + 1 bonus) is must be marked `0` (not completed) and `1` (completed). +> **Warning!**: The sequence of stars' missions goes from **RIGHT** to **LEFT**! +> **Note**: Last star flag is **100 coins star** + +| Flag | Short for | +|---|---| +| bob | Bob-omb Battlefield | +| wf | Whomp's Fortress +| jrb | Jolly Roger Bay +| ccm | Cool, Cool Mountain +| bbh | Big Boo's Haunt +| hmc | Hazy Maze Cave +| lll | Lethal Lava Land +| ssl | Shifting Sand Land +| ddd | Dire, Dire Docks +| sl | Snowman's Land +| wdw | Wet-Dry World +| ttm | Tall, Tall Mountain +| thi | Tiny-Huge Island +| ttc | Tick Tock Clock +| rr | Rainbow Ride + +Example: +``` +[courses] +bob = "3, 0000011" +wf = "3, 0000101" +jrb = "0, 1000000" +ccm = "1, 1111111" +``` +___ +## Bonus Section - [bonus] +This section contains all bonus stars that Mario collected in the castle and all bonus courses. +> **Note**: The game takes into account only the number of bonus stars collected, the order of stars flags can be arbitrary + +| Flag | Stars | Description | +|---|---|---| +| hub | 5 | MIPS' stars and Toads' stars +| bitdw | 1 | Bowser in the Dark World +| bitfs | 1 | Bowser in the Fire Sea +| bits | 1 | Bowser in the Sky +| pss | 2 | The Princess's Secret Slide +| cotmc | 1 | Cavern of the Metal Cap +| totwc | 1 | Tower of the Wing Cap +| vcutm | 1 | Vanish Cap Under the Moat +| wmotr | 1 | Wing Mario Over the Rainbow +| sa | 1 | The Secret Aquarium + +Example: +``` +[bonus] +hub = 11101 +bitdw = 1 +bitfs = 0 +bits = 1 +pss = 10 +``` +___ +## Cap Section - [cap] +This section contains information about where Mario lost his cap and who take it. +| Flag | Value | Description | +|---|---|---| +| type | ground, klepto, ukiki, mrblizzard | The one who or what took the cap from Mario. +| level | ?? | Specifies the course where the cap is located. +| area | ?? | Specifies the area in the course. + +Example: +``` +[cap] +type = onground +level = 5 +area = 0 +``` \ No newline at end of file From 8586c7657ae804d845bf03a8b577068658b1ee05 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 18 May 2020 17:51:53 +0100 Subject: [PATCH 010/166] Added "Exit course at any time", "Huge Mario" and "Tiny Mario" cheats The exit course at any time cheat clears up one of the TODO items while keeping purists happy since it's optional :) --- include/text_strings.h.in | 4 +++- src/game/ingame_menu.c | 6 ++++-- src/game/mario.c | 17 ++++++++++++++++- src/game/options_menu.c | 6 ++++++ src/pc/cheats.h | 3 +++ 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/include/text_strings.h.in b/include/text_strings.h.in index 06173692..50c47785 100644 --- a/include/text_strings.h.in +++ b/include/text_strings.h.in @@ -53,7 +53,9 @@ #define TEXT_OPT_CHEAT4 _("Infinite lives") #define TEXT_OPT_CHEAT5 _("Super speed") #define TEXT_OPT_CHEAT6 _("Super responsive controls") - +#define TEXT_OPT_CHEAT7 _("Exit course at any time") +#define TEXT_OPT_CHEAT8 _("Huge Mario") +#define TEXT_OPT_CHEAT9 _("Tiny Mario") /** * Global Symbols */ diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index baaeaf71..4ef6ecf8 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -19,6 +19,7 @@ #include "print.h" #include "engine/math_util.h" #include "course_table.h" +#include "pc/cheats.h" #ifdef BETTERCAMERA #include "bettercamera.h" #endif @@ -2629,8 +2630,9 @@ s16 render_pause_courses_and_castle(void) { shade_screen(); render_pause_my_score_coins(); render_pause_red_coins(); - - if (gMarioStates[0].action & ACT_FLAG_PAUSE_EXIT) { + +/* Added support for the "Exit course at any time" cheat */ + if ((gMarioStates[0].action & ACT_FLAG_PAUSE_EXIT) || (Cheats.EnableCheats && Cheats.ExitAnywhere)) { render_pause_course_options(99, 93, &gDialogLineNum, 15); } diff --git a/src/game/mario.c b/src/game/mario.c index afeab9ae..e00d6e60 100644 --- a/src/game/mario.c +++ b/src/game/mario.c @@ -1215,8 +1215,23 @@ u8 sSquishScaleOverTime[16] = { 0x46, 0x32, 0x32, 0x3C, 0x46, 0x50, 0x50, 0x3C, void squish_mario_model(struct MarioState *m) { if (m->squishTimer != 0xFF) { // If no longer squished, scale back to default. + // Also handles the Tiny Mario and Huge Mario cheats. if (m->squishTimer == 0) { - vec3f_set(m->marioObj->header.gfx.scale, 1.0f, 1.0f, 1.0f); + if (Cheats.EnableCheats) { + if (Cheats.HugeMario) { + vec3f_set(m->marioObj->header.gfx.scale, 2.5f, 2.5f, 2.5f); + } + else if (Cheats.TinyMario) { + vec3f_set(m->marioObj->header.gfx.scale, 0.2f, 0.2f, 0.2f); + } + else { + vec3f_set(m->marioObj->header.gfx.scale, 1.0f, 1.0f, 1.0f); + } + } + else { + vec3f_set(m->marioObj->header.gfx.scale, 1.0f, 1.0f, 1.0f); + } + } // If timer is less than 16, rubber-band Mario's size scale up and down. else if (m->squishTimer <= 16) { diff --git a/src/game/options_menu.c b/src/game/options_menu.c index b9033bee..f8c2af3a 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -86,6 +86,9 @@ static const u8 optsCheatsStr[][64] = { { TEXT_OPT_CHEAT4 }, { TEXT_OPT_CHEAT5 }, { TEXT_OPT_CHEAT6 }, + { TEXT_OPT_CHEAT7 }, + { TEXT_OPT_CHEAT8 }, + { TEXT_OPT_CHEAT9 }, }; static const u8 bindStr[][32] = { @@ -232,6 +235,9 @@ static struct Option optsCheats[] = { DEF_OPT_TOGGLE( optsCheatsStr[3], &Cheats.InfiniteLives ), DEF_OPT_TOGGLE( optsCheatsStr[4], &Cheats.SuperSpeed), DEF_OPT_TOGGLE( optsCheatsStr[5], &Cheats.Responsive), + DEF_OPT_TOGGLE( optsCheatsStr[6], &Cheats.ExitAnywhere), + DEF_OPT_TOGGLE( optsCheatsStr[7], &Cheats.HugeMario), + DEF_OPT_TOGGLE( optsCheatsStr[8], &Cheats.TinyMario), }; diff --git a/src/pc/cheats.h b/src/pc/cheats.h index 01a7264b..4941a465 100644 --- a/src/pc/cheats.h +++ b/src/pc/cheats.h @@ -8,6 +8,9 @@ struct CheatList bool InfiniteLives; bool SuperSpeed; bool Responsive; + bool ExitAnywhere; + bool HugeMario; + bool TinyMario; }; extern struct CheatList Cheats; From 1046cc1301314a029c44edf6902bff7166f36e1b Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 18 May 2020 22:38:19 +0300 Subject: [PATCH 011/166] Merge pull request #179 from dernett/fix-fullscreen-text Fix fullscreen text --- bin/segment2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/segment2.c b/bin/segment2.c index d7e807fd..5d5398aa 100644 --- a/bin/segment2.c +++ b/bin/segment2.c @@ -2107,7 +2107,7 @@ const Gfx dl_hud_img_load_tex_block[] = { gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD), gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC), gsSPEndDisplayList(), }; @@ -2144,7 +2144,7 @@ const Gfx dl_rgba16_load_tex_block[] = { gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD), gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC), gsSPEndDisplayList(), }; From e97d25c2c67b318f53dca32fce8a114e36a48920 Mon Sep 17 00:00:00 2001 From: "U-ALTTP-PC\\ALTTP" Date: Tue, 19 May 2020 03:24:51 -0300 Subject: [PATCH 012/166] option to hide the hud --- include/text_strings.h.in | 1 + src/game/hud.c | 14 ++++++++------ src/game/options_menu.c | 2 ++ src/pc/configfile.c | 1 + src/pc/configfile.h | 1 + 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/text_strings.h.in b/include/text_strings.h.in index 9b70acf6..d4ec173a 100644 --- a/include/text_strings.h.in +++ b/include/text_strings.h.in @@ -30,6 +30,7 @@ #define TEXT_OPT_VSYNC _("Vertical Sync") #define TEXT_OPT_DOUBLE _("Double") #define TEXT_RESET_WINDOW _("Reset Window") +#define TEXT_OPT_HUD _("HUD") #define TEXT_OPT_UNBOUND _("NONE") #define TEXT_OPT_PRESSKEY _("...") diff --git a/src/game/hud.c b/src/game/hud.c index 277806b5..cf3dee0f 100644 --- a/src/game/hud.c +++ b/src/game/hud.c @@ -1,4 +1,5 @@ #include +#include #include "sm64.h" #include "gfx_dimensions.h" @@ -56,6 +57,7 @@ static struct UnusedHUDStruct sUnusedHUDValues = { 0x00, 0x0A, 0x00 }; static struct CameraHUD sCameraHUD = { CAM_STATUS_NONE }; +extern bool configHUD; /** * Renders a rgba16 16x16 glyph texture from a table list. */ @@ -450,28 +452,28 @@ void render_hud(void) { render_hud_cannon_reticle(); } - if (hudDisplayFlags & HUD_DISPLAY_FLAG_LIVES) { + if (hudDisplayFlags & HUD_DISPLAY_FLAG_LIVES && configHUD) { render_hud_mario_lives(); } - if (hudDisplayFlags & HUD_DISPLAY_FLAG_COIN_COUNT) { + if (hudDisplayFlags & HUD_DISPLAY_FLAG_COIN_COUNT && configHUD) { render_hud_coins(); } - if (hudDisplayFlags & HUD_DISPLAY_FLAG_STAR_COUNT) { + if (hudDisplayFlags & HUD_DISPLAY_FLAG_STAR_COUNT && configHUD) { render_hud_stars(); } - if (hudDisplayFlags & HUD_DISPLAY_FLAG_KEYS) { + if (hudDisplayFlags & HUD_DISPLAY_FLAG_KEYS && configHUD) { render_hud_keys(); } - if (hudDisplayFlags & HUD_DISPLAY_FLAG_CAMERA_AND_POWER) { + if (hudDisplayFlags & HUD_DISPLAY_FLAG_CAMERA_AND_POWER && configHUD) { render_hud_power_meter(); render_hud_camera_status(); } - if (hudDisplayFlags & HUD_DISPLAY_FLAG_TIMER) { + if (hudDisplayFlags & HUD_DISPLAY_FLAG_TIMER && configHUD) { render_hud_timer(); } } diff --git a/src/game/options_menu.c b/src/game/options_menu.c index ab7da294..37b1a5a5 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -75,6 +75,7 @@ static const u8 optsVideoStr[][32] = { { TEXT_RESET_WINDOW }, { TEXT_OPT_VSYNC }, { TEXT_OPT_DOUBLE }, + { TEXT_OPT_HUD }, }; static const u8 optsAudioStr[][32] = { @@ -235,6 +236,7 @@ static struct Option optsVideo[] = { DEF_OPT_CHOICE( optsVideoStr[5], &configWindow.vsync, vsyncChoices ), DEF_OPT_CHOICE( optsVideoStr[1], &configFiltering, filterChoices ), DEF_OPT_BUTTON( optsVideoStr[4], optvideo_reset_window ), + DEF_OPT_TOGGLE( optsVideoStr[7], &configHUD ), }; static struct Option optsAudio[] = { diff --git a/src/pc/configfile.c b/src/pc/configfile.c index ce9a08ad..26211305 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -78,6 +78,7 @@ bool configEnableCamera = false; bool configCameraMouse = false; #endif unsigned int configSkipIntro = 0; +bool configHUD = true; static const struct ConfigOption options[] = { {.name = "fullscreen", .type = CONFIG_TYPE_BOOL, .boolValue = &configWindow.fullscreen}, diff --git a/src/pc/configfile.h b/src/pc/configfile.h index cafd272f..17a7e25d 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -46,6 +46,7 @@ extern bool configCameraInvertY; extern bool configEnableCamera; extern bool configCameraMouse; #endif +extern bool configHUD; void configfile_load(const char *filename); void configfile_save(const char *filename); From ee795fa7af4baf6118004fda6d9b02fb44a1c6dc Mon Sep 17 00:00:00 2001 From: yksoft1 Date: Tue, 19 May 2020 20:15:25 +0800 Subject: [PATCH 013/166] My hacks to cliopts.h is not necessary anymore. --- src/pc/cliopts.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/pc/cliopts.h b/src/pc/cliopts.h index 75d78e8b..d20dcb4f 100644 --- a/src/pc/cliopts.h +++ b/src/pc/cliopts.h @@ -1,13 +1,14 @@ -#include -#include "sm64.h" +#ifndef _CLIOPTS_H +#define _CLIOPTS_H -struct PCCLIOptions -{ - u8 SkipIntro; - u8 FullScreen; - char * ConfigFile; +struct PCCLIOptions { + unsigned int SkipIntro; + unsigned int FullScreen; + char ConfigFile[1024]; }; extern struct PCCLIOptions gCLIOpts; void parse_cli_opts(int argc, char* argv[]); + +#endif // _CLIOPTS_H From 5cb3bfd2f6e66cabdd703b2e648b5cc1413adb83 Mon Sep 17 00:00:00 2001 From: yksoft1 Date: Tue, 19 May 2020 20:39:01 +0800 Subject: [PATCH 014/166] Fix types.h include guard to avoid any conflict with . --- include/types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/types.h b/include/types.h index 483c894f..870223eb 100644 --- a/include/types.h +++ b/include/types.h @@ -1,5 +1,5 @@ -#ifndef _TYPES_H_ -#define _TYPES_H_ +#ifndef _SM64_TYPES_H_ +#define _SM64_TYPES_H_ // This file contains various data types used in Super Mario 64 that don't yet // have an appropriate header. From b0081e8d608451380913e02c9f1aebc3c5bf85bb Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Tue, 19 May 2020 10:14:44 -0300 Subject: [PATCH 015/166] Refactor PR #151 --- include/libc/stdlib.h | 8 ++++++++ src/engine/math_util.h | 4 ++++ src/game/mario_actions_cutscene.c | 1 - src/game/options_menu.c | 1 + 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/libc/stdlib.h b/include/libc/stdlib.h index c23b4542..783ccf52 100644 --- a/include/libc/stdlib.h +++ b/include/libc/stdlib.h @@ -1,6 +1,8 @@ #ifndef STDLIB_H #define STDLIB_H +#ifndef TARGET_WEB + typedef struct lldiv_t { long long quot; @@ -16,4 +18,10 @@ typedef struct ldiv_t lldiv_t lldiv(long long num, long long denom); ldiv_t ldiv(long num, long denom); +#else + +#include + +#endif + #endif diff --git a/src/engine/math_util.h b/src/engine/math_util.h index b8b7f1b8..99727a73 100644 --- a/src/engine/math_util.h +++ b/src/engine/math_util.h @@ -29,7 +29,11 @@ extern f32 gCosineTable[]; #define sqr(x) ((x) * (x)) +#ifndef TARGET_WEB #define abs(x) ((x) < 0 ? -(x) : (x)) +#else +#include "../../include/libc/stdlib.h" +#endif void *vec3f_copy(Vec3f dest, Vec3f src); void *vec3f_set(Vec3f dest, f32 x, f32 y, f32 z); diff --git a/src/game/mario_actions_cutscene.c b/src/game/mario_actions_cutscene.c index 6c3a8b0a..ef413cd9 100644 --- a/src/game/mario_actions_cutscene.c +++ b/src/game/mario_actions_cutscene.c @@ -3,7 +3,6 @@ #include "prevent_bss_reordering.h" #include "sm64.h" #include "gfx_dimensions.h" -//#include "game.h" #include "game_init.h" #include "sound_init.h" #include "level_update.h" diff --git a/src/game/options_menu.c b/src/game/options_menu.c index ab7da294..b5dbfedb 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -23,6 +23,7 @@ #include "pc/controller/controller_api.h" #include +#include "../../include/libc/stdlib.h" u8 optmenu_open = 0; From 9230cb832dbb6646d9bedcd924164f135d249a1d Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Tue, 19 May 2020 10:32:01 -0300 Subject: [PATCH 016/166] Refactor PR #156 --- Makefile | 35 ++++++++++++++++++++++++++++------- include/PR/os_libc.h | 2 +- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 6767bf89..598320ef 100644 --- a/Makefile +++ b/Makefile @@ -35,18 +35,33 @@ NODRAWINGDISTANCE ?= 0 TEXTURE_FIX ?= 0 # Enable extended options menu by default EXT_OPTIONS_MENU ?= 1 +# Disable no bzero/bcopy workaround by default +# Enable by default for MXE builds +ifeq ($(WINDOWS_BUILD),1) + ifeq ($(CROSS),i686-w64-mingw32.static-) + NO_BZERO_BCOPY := 1 + else ifeq ($(CROSS),x86_64-w64-mingw32.static-) + NO_BZERO_BCOPY := 1 + else + NO_BZERO_BCOPY ?= 0 + endif +else + NO_BZERO_BCOPY ?= 0 +endif # Build for Emscripten/WebGL TARGET_WEB ?= 0 # Specify the target you are building for, 0 means native -TARGET_ARCH ?= native - -ifeq ($(CROSS),i686-w64-mingw32.static-) - TARGET_ARCH = i386pe -else ifeq ($(CROSS),x86_64-w64-mingw32.static-) - TARGET_ARCH = i386pe +ifeq ($(WINDOWS_BUILD),1) + ifeq ($(CROSS),i686-w64-mingw32.static-) + TARGET_ARCH = i386pe + else ifeq ($(CROSS),x86_64-w64-mingw32.static-) + TARGET_ARCH = i386pe + else + TARGET_ARCH ?= native + endif else - TARGET_ARCH = native + TARGET_ARCH ?= native endif TARGET_BITS ?= 0 @@ -508,6 +523,12 @@ ifeq ($(EXT_OPTIONS_MENU),1) CFLAGS += -DEXT_OPTIONS_MENU endif +# Check for no bzero/bcopy workaround option +ifeq ($(NO_BZERO_BCOPY),1) + CC_CHECK += -DNO_BZERO_BCOPY + CFLAGS += -DNO_BZERO_BCOPY +endif + ASFLAGS := -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) ifeq ($(TARGET_WEB),1) diff --git a/include/PR/os_libc.h b/include/PR/os_libc.h index e7567516..9eb872e7 100644 --- a/include/PR/os_libc.h +++ b/include/PR/os_libc.h @@ -10,7 +10,7 @@ // macOS libc has them #include -#elif defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L) +#elif defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L) || defined(NO_BZERO_BCOPY) // there's no way that shit's defined, use memcpy/memset #include From 41828987f27ff28112e51367a018fdd913cf48e4 Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Tue, 19 May 2020 10:38:08 -0300 Subject: [PATCH 017/166] Made the game even easier to compile in MXE. --- Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 598320ef..361e8261 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,17 @@ else TARGET_ARCH ?= native endif -TARGET_BITS ?= 0 +ifeq ($(WINDOWS_BUILD),1) + ifeq ($(CROSS),i686-w64-mingw32.static-) + TARGET_BITS = 32 + else ifeq ($(CROSS),x86_64-w64-mingw32.static-) + TARGET_BITS = 64 + else + TARGET_BITS ?= 0 + endif +else + TARGET_BITS ?= 0 +endif ifneq ($(TARGET_BITS),0) BITS := -m$(TARGET_BITS) From 08ad740b1cb85b387ff92e2561430d4bac351ca6 Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Tue, 19 May 2020 10:51:49 -0300 Subject: [PATCH 018/166] Refactor PR #176 --- src/game/bettercamera.inc.h | 4 ++-- src/pc/configfile.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index f585447c..7d0175b1 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -216,9 +216,9 @@ static int ivrt(u8 axis) if (axis == 0) { if (newcam_invertX == 0) - return 1; - else return -1; + else + return 1; } else { diff --git a/src/pc/configfile.c b/src/pc/configfile.c index ce9a08ad..c4bf889b 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -72,7 +72,7 @@ unsigned int configCameraYSens = 50; unsigned int configCameraAggr = 0; unsigned int configCameraPan = 0; unsigned int configCameraDegrade = 10; // 0 - 100% -bool configCameraInvertX = false; +bool configCameraInvertX = true; bool configCameraInvertY = false; bool configEnableCamera = false; bool configCameraMouse = false; From 2904658341603120e675eaad7179f468d9dd9542 Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Tue, 19 May 2020 11:04:46 -0300 Subject: [PATCH 019/166] Add MSYS2 build fix/simplification Adds the CFLAG normally added during building in MSYS2 to make MSYS2 builds easier to perform. --- tools/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/Makefile b/tools/Makefile index 1809ab92..0d8e6dd7 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -30,7 +30,7 @@ aifc_decode_CFLAGS := -O2 # both runs and compiles faster than -O3 aiff_extract_codebook_SOURCES := aiff_extract_codebook.c tabledesign_SOURCES := sdk-tools/tabledesign/codebook.c sdk-tools/tabledesign/estimate.c sdk-tools/tabledesign/print.c sdk-tools/tabledesign/tabledesign.c -tabledesign_CFLAGS := -Wno-uninitialized -laudiofile +tabledesign_CFLAGS := -Wno-uninitialized -laudiofile -lstdc++ vadpcm_enc_SOURCES := sdk-tools/adpcm/vadpcm_enc.c sdk-tools/adpcm/vpredictor.c sdk-tools/adpcm/quant.c sdk-tools/adpcm/util.c sdk-tools/adpcm/vencode.c vadpcm_enc_CFLAGS := -Wno-unused-result -Wno-uninitialized -Wno-sign-compare -Wno-absolute-value From f0c45a772e8344913a3647c031e6a0e01ecb28de Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Tue, 19 May 2020 12:00:33 -0300 Subject: [PATCH 020/166] Update the README --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0e28a0b2..b6cae6d9 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ OpenGL adaptation of [n64decomp/sm64](https://github.com/n64decomp/sm64). Feel free to report bugs and contribute, but remember, there must be **no upload of any copyrighted asset**. -Run `./extract_assets.py --clean && make clean` or `make distclean` to remove ROM-originated content. This port has been made possible mostly thanks to [Emill](https://github.com/Emill) and his [n64-fast32-engine](https://github.com/Emill/n64-fast3d-engine/) renderer. +Run `./extract_assets.py --clean && make clean` or `make distclean` to remove ROM-originated content. This port has been made possible mostly thanks to [Emill](https://github.com/Emill) and his [n64-fast3d-engine](https://github.com/Emill/n64-fast3d-engine/) renderer. Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm64pc/tree/nightly/). New functionality will be merged to master once they're considered to be well-tested. @@ -16,8 +16,10 @@ Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm * Native xinput controller support. On Linux, DualShock 4 has been confirmed to work plug-and-play. * Analog camera control and mouse look. (Activate with `make BETTERCAMERA=1`.) * An option to disable drawing distances. (Activate with `make NODRAWINGDISTANCE=1`.) - * In-game control binding, currently available on the `testing` branch. + * Model and texture fixes. (Activate with `make TEXTURE_FIX=1`.) + * In-game control binding. * Skip introductory Peach & Lakitu cutscenes with the `--skip-intro` CLI option + * Disabling the HUD. * Cheats menu in Options. (Activate with `--cheats`) Please note that if a cheat asks you to press "L" it's referring to the N64 button. Check your bindings and make sure you have the "L" button mapped to a button in your controller. ## Building From fee577cedd1a2c992eb517e66ed515a91d9da98e Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Tue, 19 May 2020 12:27:15 -0300 Subject: [PATCH 021/166] Update to add text-save support mention --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b6cae6d9..f8b0d6a4 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm * Skip introductory Peach & Lakitu cutscenes with the `--skip-intro` CLI option * Disabling the HUD. * Cheats menu in Options. (Activate with `--cheats`) Please note that if a cheat asks you to press "L" it's referring to the N64 button. Check your bindings and make sure you have the "L" button mapped to a button in your controller. + * Text-based save support. (Activate with `make TEXTSAVES=1`.) ## Building For building instructions, please refer to the [wiki](https://github.com/sm64pc/sm64pc/wiki). From 1590976046b89db2ef54ddee3293d48d3ee454e9 Mon Sep 17 00:00:00 2001 From: Leon422 Date: Tue, 19 May 2020 18:31:01 +0100 Subject: [PATCH 022/166] Cheats can be enabled by pressing the L trigger 3 times while in the options menu. Also plays a sound to confirm the user that it worked. --- src/game/options_menu.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/game/options_menu.c b/src/game/options_menu.c index de0e04f4..61d8978d 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -30,6 +30,9 @@ u8 optmenu_open = 0; static u8 optmenu_binding = 0; static u8 optmenu_bind_idx = 0; +/* Keeps track of how many times the user has pressed L while in the options menu, so cheats can be unlocked */ +static s32 l_counter = 0; + // How to add stuff: // strings: add them to include/text_strings.h.in // and to menuStr[] / opts*Str[] @@ -481,6 +484,9 @@ void optmenu_toggle(void) { currentMenu = &menuMain; optmenu_open = 1; + + /* Resets l_counter to 0 every time the options menu is open */ + l_counter = 0; } else { #ifndef nosound play_sound(SOUND_MENU_MARIO_CASTLE_WARP2, gDefaultSoundArgs); @@ -510,7 +516,19 @@ void optmenu_check_buttons(void) { if (gPlayer1Controller->buttonPressed & R_TRIG) optmenu_toggle(); - + + /* Enables cheats if the user press the L trigger 3 times while in the options menu. Also plays a sound. */ + + if (gPlayer1Controller->buttonPressed & L_TRIG && !Cheats.EnableCheats){ + if (l_counter == 2){ + Cheats.EnableCheats = true; + play_sound(SOUND_MENU_STAR_SOUND, gDefaultSoundArgs); + l_counter = 0; + } else { + l_counter++; + } + } + if (!optmenu_open) return; u8 allowInput = 0; From c0a79af79cc6b889ca0a957029ef38a61c671cd6 Mon Sep 17 00:00:00 2001 From: Leon422 Date: Tue, 19 May 2020 19:15:20 +0100 Subject: [PATCH 023/166] Fixed spacing, added brackets. Ready to merge --- src/game/options_menu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 61d8978d..6c9c1a1c 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -519,8 +519,8 @@ void optmenu_check_buttons(void) { /* Enables cheats if the user press the L trigger 3 times while in the options menu. Also plays a sound. */ - if (gPlayer1Controller->buttonPressed & L_TRIG && !Cheats.EnableCheats){ - if (l_counter == 2){ + if ((gPlayer1Controller->buttonPressed & L_TRIG) && !Cheats.EnableCheats) { + if (l_counter == 2) { Cheats.EnableCheats = true; play_sound(SOUND_MENU_STAR_SOUND, gDefaultSoundArgs); l_counter = 0; From 06f02dc210974e63048354d7071127fbe4fe4de1 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 19 May 2020 21:56:23 +0300 Subject: [PATCH 024/166] separate text saves; fix build without TEXTSAVE --- src/game/save_file.c | 268 +-------------------------------------- src/game/save_file.h | 10 +- src/game/text_save.inc.h | 258 +++++++++++++++++++++++++++++++++++++ 3 files changed, 263 insertions(+), 273 deletions(-) create mode 100644 src/game/text_save.inc.h diff --git a/src/game/save_file.c b/src/game/save_file.c index 698c6837..d7899314 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -51,68 +51,11 @@ s8 gLevelToCourseNumTable[] = { STATIC_ASSERT(ARRAY_COUNT(gLevelToCourseNumTable) == LEVEL_COUNT - 1, "change this array if you are adding levels"); -/* Flag key */ -const char *sav_flags[NUM_FLAGS] = { - "file_exists", "wing_cap", "metal_cap", "vanish_cap", "key_1", "key_2", - "basement_door", "upstairs_door", "ddd_moved_back", "moat_drained", - "pps_door", "wf_door", "ccm_door", "jrb_door", "bitdw_door", - "bitfs_door", "", "", "", "", "50star_door" -}; +#ifdef TEXTSAVES -/* Main course keys */ -const char *sav_courses[NUM_COURSES] = { - "bob", "wf", "jrb", "ccm", "bbh", "hmc", "lll", - "ssl", "ddd", "sl", "wdw", "ttm", "thi", "ttc", "rr" -}; +#include "text_save.inc.h" -/* Bonus courses keys (including Castle Course) */ -const char *sav_bonus_courses[NUM_BONUS_COURSES] = { - "hub", "bitdw", "bitfs", "bits", "pss", "cotmc", - "totwc", "vcutm", "wmotr", "sa", -}; - -/* Mario's cap type keys */ -const char *cap_on_types[NUM_CAP_ON] = { - "ground", "klepto", "ukiki", "mrblizzard" -}; - -/* Get current timestamp */ -static void get_timestamp(char* buffer) -{ - time_t timer; - struct tm* tm_info; - - timer = time(NULL); - tm_info = localtime(&timer); - - strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info); -} - -/* Convert 'binary' integer to decimal integer */ -static u32 bin_to_int(u32 n) -{ - s32 dec = 0, i = 0, rem; - while (n != 0) { - rem = n % 10; - n /= 10; - dec += rem * (1 << i); - ++i; - } - return dec; -} - -/* Convert decimal integer to 'binary' integer */ -static u32 int_to_bin(u32 n) -{ - s32 bin = 0, rem, i = 1; - while (n != 0) { - rem = n % 2; - n /= 2; - bin += rem * i; - i *= 10; - } - return bin; -} +#endif // This was probably used to set progress to 100% for debugging, but // it was removed from the release ROM. @@ -242,209 +185,6 @@ static inline s32 write_eeprom_menudata(const u32 slot, const u32 num) { #endif } -/** - * Write SaveFile and MainMenuSaveData structs to a text-based savefile. - */ -static s32 write_text_save(s32 fileIndex) -{ - FILE* file; - char *filename, *value; - struct SaveFile *savedata; - struct MainMenuSaveData *menudata; - - u32 i, flags, coins, stars, starFlags; - - /* Define savefile's name */ - filename = (char*)malloc(14 * sizeof(char)); - if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) - { - return -1; - } - - file = fopen(filename, "wt"); - if (file == NULL) { - return -1; - } - - /* Write header */ - fprintf(file, "# Super Mario 64 save file\n"); - fprintf(file, "# Comment starts with #\n"); - fprintf(file, "# True = 1, False = 0\n"); - - /* Write current timestamp */ - value = (char*)malloc(26 * sizeof(char)); - get_timestamp(value); - fprintf(file, "# %s\n", value); - - /* Write MainMenuSaveData info */ - menudata = &gSaveBuffer.menuData[0]; - fprintf(file, "\n[menu]\n"); - fprintf(file, "coin_score_age = %d\n", menudata->coinScoreAges[fileIndex]); - fprintf(file, "sound_mode = %u\n", menudata->soundMode); - - /* Write all flags */ - fprintf(file, "\n[flags]\n"); - for (i = 1; i < NUM_FLAGS; i++) { - if (strcmp(sav_flags[i], "")) { - flags = save_file_get_flags(); - flags = (flags & (1 << i)); /* Get a specific bit */ - flags = (flags) ? 1 : 0; /* Determine if bit is set or not */ - - fprintf(file, "%s = %d\n", sav_flags[i], flags); - } - } - - /* Write coin count and star flags from each course (except Castle Grounds) */ - fprintf(file, "\n[courses]\n"); - for (i = 0; i < NUM_COURSES; i++) { - stars = save_file_get_star_flags(fileIndex, i); - coins = save_file_get_course_coin_score(fileIndex, i); - starFlags = int_to_bin(stars); /* 63 -> 111111 */ - - fprintf(file, "%s = \"%d, %07d\"\n", sav_courses[i], coins, starFlags); - } - - /* Write star flags from each bonus cource (including Castle Grounds) */ - fprintf(file, "\n[bonus]\n"); - for (i = 0; i < NUM_BONUS_COURSES; i++) { - if (i == 0) { - stars = save_file_get_star_flags(fileIndex, -1); - } else { - stars = save_file_get_star_flags(fileIndex, i+15); - } - starFlags = int_to_bin(stars); - - fprintf(file, "%s = %d\n", sav_bonus_courses[i], starFlags); - } - - /* Write who steal Mario's cap */ - fprintf(file, "\n[cap]\n"); - for (i = 0; i < NUM_CAP_ON; i++) { - flags = save_file_get_flags(); // Read all flags - flags = (flags & (1 << (i+16))); // Get `cap` flags - flags = (flags) ? 1 : 0; // Determine if bit is set or not - if (flags) { - fprintf(file, "type = %s\n", cap_on_types[i]); - break; - } - } - - /* Write in what course and area Mario losted its cap, and cap's position */ - savedata = &gSaveBuffer.files[fileIndex][0]; - fprintf(file, "level = %d\n", savedata->capLevel); - fprintf(file, "area = %d\n", savedata->capArea); - - fclose(file); - return 1; -} - -/** - * Read gSaveBuffer data from a text-based savefile. - */ -static s32 read_text_save(s32 fileIndex) -{ - char *filename, *temp; - const char *value; - ini_t *savedata; - - u32 i, flag, coins, stars, starFlags; - u32 capLevel, capArea; - Vec3s capPos; - - /* Define savefile's name */ - filename = (char*)malloc(14 * sizeof(char)); - if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) - { - return -1; - } - - /* Try to open the file */ - savedata = ini_load(filename); - if (savedata == NULL) { - return -1; - } - else { - /* Good, file exists for gSaveBuffer */ - gSaveBuffer.files[fileIndex][0].flags |= SAVE_FLAG_FILE_EXISTS; - } - - /* Read coin score age for selected file and sound mode */ - ini_sget(savedata, "menu", "coin_score_age", "%d", - &gSaveBuffer.menuData[0].coinScoreAges[fileIndex]); - ini_sget(savedata, "menu", "sound_mode", "%u", - &gSaveBuffer.menuData[0].soundMode); // Can override 4 times! - - /* Parse main flags */ - for (i = 1; i < NUM_FLAGS; i++) { - value = ini_get(savedata, "flags", sav_flags[i]); - - if (value) { - flag = strtol(value, &temp, 10); - if (flag) { - flag = 1 << i; /* Look #define in header.. */ - gSaveBuffer.files[fileIndex][0].flags |= flag; - } - } - } - - /* Parse coin and star values for each main course */ - for (i = 0; i < NUM_COURSES; i++) { - value = ini_get(savedata, "courses", sav_courses[i]); - if (value) { - sscanf(value, "%d, %d", &coins, &stars); - starFlags = bin_to_int(stars); /* 111111 -> 63 */ - - save_file_set_star_flags(fileIndex, i, starFlags); - gSaveBuffer.files[fileIndex][0].courseCoinScores[i] = coins; - } - } - - /* Parse star values for each bonus course */ - for (i = 0; i < NUM_BONUS_COURSES; i++) { - value = ini_get(savedata, "bonus", sav_bonus_courses[i]); - if (value) { - sscanf(value, "%d", &stars); - starFlags = bin_to_int(stars); - - if (strlen(value) == 5) { - /* Process Castle Grounds */ - save_file_set_star_flags(fileIndex, -1, starFlags); - } - else if (strlen(value) == 2) { - /* Process Princess's Secret Slide */ - save_file_set_star_flags(fileIndex, COURSE_PSS, starFlags); - } - else { - /* Process another shitty bonus course */ - save_file_set_star_flags(fileIndex, i+15, starFlags); - } - } - } - - /* Find, who steal Mario's cap ... */ - for (i = 0; i < NUM_CAP_ON; i++) { - value = ini_get(savedata, "cap", "type"); - if (value) { - if (!strcmp(value, cap_on_types[i])) { - flag = (1 << (16 + i)); - gSaveBuffer.files[fileIndex][0].flags |= flag; - break; - } - } - } - - /* ... also it's position, area and level */ - sscanf(ini_get(savedata, "cap", "level"), "%d", &capLevel); - sscanf(ini_get(savedata, "cap", "area"), "%d", &capArea); - - gSaveBuffer.files[fileIndex][0].capLevel = capLevel; - gSaveBuffer.files[fileIndex][0].capArea = capArea; - - /* Cleaning up after ourselves */ - ini_free(savedata); - return 1; -} - /** * Sum the bytes in data to data + size - 2. The last two bytes are ignored * because that is where the checksum is stored. @@ -715,7 +455,7 @@ void save_file_load_all(void) { break; } } -#endif +#endif // TEXTSAVES stub_save_file_1(); } diff --git a/src/game/save_file.h b/src/game/save_file.h index 373b732d..6271b116 100644 --- a/src/game/save_file.h +++ b/src/game/save_file.h @@ -160,12 +160,4 @@ void eu_set_language(u16 language); u16 eu_get_language(void); #endif -#ifdef TEXTSAVES -#define FILENAME_FORMAT "save_file_%d.sav" -#define NUM_COURSES 15 -#define NUM_BONUS_COURSES 10 -#define NUM_FLAGS 21 -#define NUM_CAP_ON 4 -#endif - -#endif +#endif // _SAVE_FILE_H_ diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h new file mode 100644 index 00000000..b84ab1b2 --- /dev/null +++ b/src/game/text_save.inc.h @@ -0,0 +1,258 @@ +#include + +#define FILENAME_FORMAT "save_file_%d.sav" +#define NUM_COURSES 15 +#define NUM_BONUS_COURSES 10 +#define NUM_FLAGS 21 +#define NUM_CAP_ON 4 + +/* Flag key */ +const char *sav_flags[NUM_FLAGS] = { + "file_exists", "wing_cap", "metal_cap", "vanish_cap", "key_1", "key_2", + "basement_door", "upstairs_door", "ddd_moved_back", "moat_drained", + "pps_door", "wf_door", "ccm_door", "jrb_door", "bitdw_door", + "bitfs_door", "", "", "", "", "50star_door" +}; + +/* Main course keys */ +const char *sav_courses[NUM_COURSES] = { + "bob", "wf", "jrb", "ccm", "bbh", "hmc", "lll", + "ssl", "ddd", "sl", "wdw", "ttm", "thi", "ttc", "rr" +}; + +/* Bonus courses keys (including Castle Course) */ +const char *sav_bonus_courses[NUM_BONUS_COURSES] = { + "hub", "bitdw", "bitfs", "bits", "pss", "cotmc", + "totwc", "vcutm", "wmotr", "sa", +}; + +/* Mario's cap type keys */ +const char *cap_on_types[NUM_CAP_ON] = { + "ground", "klepto", "ukiki", "mrblizzard" +}; + +/* Get current timestamp */ +static void get_timestamp(char* buffer) { + time_t timer; + struct tm* tm_info; + + timer = time(NULL); + tm_info = localtime(&timer); + + strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info); +} + +/* Convert 'binary' integer to decimal integer */ +static u32 bin_to_int(u32 n) { + s32 dec = 0, i = 0, rem; + while (n != 0) { + rem = n % 10; + n /= 10; + dec += rem * (1 << i); + ++i; + } + return dec; +} + +/* Convert decimal integer to 'binary' integer */ +static u32 int_to_bin(u32 n) { + s32 bin = 0, rem, i = 1; + while (n != 0) { + rem = n % 2; + n /= 2; + bin += rem * i; + i *= 10; + } + return bin; +} + +/** + * Write SaveFile and MainMenuSaveData structs to a text-based savefile. + */ +static s32 write_text_save(s32 fileIndex) { + FILE* file; + struct SaveFile *savedata; + struct MainMenuSaveData *menudata; + char filename[32] = { 0 }; + char value[32] = { 0 }; + u32 i, flags, coins, stars, starFlags; + + /* Define savefile's name */ + if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) + return -1; + + file = fopen(filename, "wt"); + if (file == NULL) + return -1; + + /* Write header */ + fprintf(file, "# Super Mario 64 save file\n"); + fprintf(file, "# Comment starts with #\n"); + fprintf(file, "# True = 1, False = 0\n"); + + /* Write current timestamp */ + get_timestamp(value); + fprintf(file, "# %s\n", value); + + /* Write MainMenuSaveData info */ + menudata = &gSaveBuffer.menuData[0]; + fprintf(file, "\n[menu]\n"); + fprintf(file, "coin_score_age = %d\n", menudata->coinScoreAges[fileIndex]); + fprintf(file, "sound_mode = %u\n", menudata->soundMode); + + /* Write all flags */ + fprintf(file, "\n[flags]\n"); + for (i = 1; i < NUM_FLAGS; i++) { + if (strcmp(sav_flags[i], "")) { + flags = save_file_get_flags(); + flags = (flags & (1 << i)); /* Get a specific bit */ + flags = (flags) ? 1 : 0; /* Determine if bit is set or not */ + + fprintf(file, "%s = %d\n", sav_flags[i], flags); + } + } + + /* Write coin count and star flags from each course (except Castle Grounds) */ + fprintf(file, "\n[courses]\n"); + for (i = 0; i < NUM_COURSES; i++) { + stars = save_file_get_star_flags(fileIndex, i); + coins = save_file_get_course_coin_score(fileIndex, i); + starFlags = int_to_bin(stars); /* 63 -> 111111 */ + + fprintf(file, "%s = \"%d, %07d\"\n", sav_courses[i], coins, starFlags); + } + + /* Write star flags from each bonus cource (including Castle Grounds) */ + fprintf(file, "\n[bonus]\n"); + for (i = 0; i < NUM_BONUS_COURSES; i++) { + if (i == 0) { + stars = save_file_get_star_flags(fileIndex, -1); + } else { + stars = save_file_get_star_flags(fileIndex, i+15); + } + starFlags = int_to_bin(stars); + + fprintf(file, "%s = %d\n", sav_bonus_courses[i], starFlags); + } + + /* Write who steal Mario's cap */ + fprintf(file, "\n[cap]\n"); + for (i = 0; i < NUM_CAP_ON; i++) { + flags = save_file_get_flags(); // Read all flags + flags = (flags & (1 << (i+16))); // Get `cap` flags + flags = (flags) ? 1 : 0; // Determine if bit is set or not + if (flags) { + fprintf(file, "type = %s\n", cap_on_types[i]); + break; + } + } + + /* Write in what course and area Mario losted its cap, and cap's position */ + savedata = &gSaveBuffer.files[fileIndex][0]; + fprintf(file, "level = %d\n", savedata->capLevel); + fprintf(file, "area = %d\n", savedata->capArea); + + fclose(file); + return 1; +} + +/** + * Read gSaveBuffer data from a text-based savefile. + */ +static s32 read_text_save(s32 fileIndex) { + char filename[32] = { 0 }; + char temp[32] = { 0 }; + const char *value; + ini_t *savedata; + + u32 i, flag, coins, stars, starFlags; + u32 capLevel, capArea; + Vec3s capPos; + + /* Define savefile's name */ + if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) + return -1; + + /* Try to open the file */ + savedata = ini_load(filename); + if (savedata == NULL) { + return -1; + } else { + /* Good, file exists for gSaveBuffer */ + gSaveBuffer.files[fileIndex][0].flags |= SAVE_FLAG_FILE_EXISTS; + } + + /* Read coin score age for selected file and sound mode */ + ini_sget(savedata, "menu", "coin_score_age", "%d", + &gSaveBuffer.menuData[0].coinScoreAges[fileIndex]); + ini_sget(savedata, "menu", "sound_mode", "%u", + &gSaveBuffer.menuData[0].soundMode); // Can override 4 times! + + /* Parse main flags */ + for (i = 1; i < NUM_FLAGS; i++) { + value = ini_get(savedata, "flags", sav_flags[i]); + + if (value) { + flag = strtol(value, &temp, 10); + if (flag) { + flag = 1 << i; /* Look #define in header.. */ + gSaveBuffer.files[fileIndex][0].flags |= flag; + } + } + } + + /* Parse coin and star values for each main course */ + for (i = 0; i < NUM_COURSES; i++) { + value = ini_get(savedata, "courses", sav_courses[i]); + if (value) { + sscanf(value, "%d, %d", &coins, &stars); + starFlags = bin_to_int(stars); /* 111111 -> 63 */ + + save_file_set_star_flags(fileIndex, i, starFlags); + gSaveBuffer.files[fileIndex][0].courseCoinScores[i] = coins; + } + } + + /* Parse star values for each bonus course */ + for (i = 0; i < NUM_BONUS_COURSES; i++) { + value = ini_get(savedata, "bonus", sav_bonus_courses[i]); + if (value) { + sscanf(value, "%d", &stars); + starFlags = bin_to_int(stars); + + if (strlen(value) == 5) { + /* Process Castle Grounds */ + save_file_set_star_flags(fileIndex, -1, starFlags); + } else if (strlen(value) == 2) { + /* Process Princess's Secret Slide */ + save_file_set_star_flags(fileIndex, COURSE_PSS, starFlags); + } else { + /* Process another shitty bonus course */ + save_file_set_star_flags(fileIndex, i+15, starFlags); + } + } + } + + /* Find, who steal Mario's cap ... */ + for (i = 0; i < NUM_CAP_ON; i++) { + value = ini_get(savedata, "cap", "type"); + if (value) { + if (!strcmp(value, cap_on_types[i])) { + flag = (1 << (16 + i)); + gSaveBuffer.files[fileIndex][0].flags |= flag; + break; + } + } + } + + /* ... also it's position, area and level */ + sscanf(ini_get(savedata, "cap", "level"), "%d", &capLevel); + sscanf(ini_get(savedata, "cap", "area"), "%d", &capArea); + + gSaveBuffer.files[fileIndex][0].capLevel = capLevel; + gSaveBuffer.files[fileIndex][0].capArea = capArea; + + /* Cleaning up after ourselves */ + ini_free(savedata); + return 1; +} From c57bacdfd781fc263084cfa0183b8e1ce8836451 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 19 May 2020 22:22:52 +0300 Subject: [PATCH 025/166] clean up some toolchain compatibility fixes also rename the abs() macro to not cause any fucking conflicts ever again --- Makefile | 91 +++++++++++++++------------------- include/libc/stdlib.h | 8 +-- lib/src/ldiv.c | 8 +-- src/engine/math_util.h | 6 +-- src/engine/surface_collision.c | 6 +-- 5 files changed, 52 insertions(+), 67 deletions(-) diff --git a/Makefile b/Makefile index 3b0de0af..8898f604 100644 --- a/Makefile +++ b/Makefile @@ -22,9 +22,16 @@ NON_MATCHING ?= 1 # Build and optimize for Raspberry Pi(s) TARGET_RPI ?= 0 +# Build for Emscripten/WebGL +TARGET_WEB ?= 0 + # Makeflag to enable OSX fixes OSX_BUILD ?= 0 +# Specify the target you are building for, TARGET_BITS=0 means native +TARGET_ARCH ?= native +TARGET_BITS ?= 0 + # Disable better camera by default BETTERCAMERA ?= 0 # Disable no drawing distance by default @@ -36,45 +43,35 @@ EXT_OPTIONS_MENU ?= 1 # Disable text-based save-files by default TEXTSAVES ?= 0 -# Disable no bzero/bcopy workaround by default -# Enable by default for MXE builds -ifeq ($(WINDOWS_BUILD),1) - ifeq ($(CROSS),i686-w64-mingw32.static-) - NO_BZERO_BCOPY := 1 - else ifeq ($(CROSS),x86_64-w64-mingw32.static-) - NO_BZERO_BCOPY := 1 - else - NO_BZERO_BCOPY ?= 0 - endif -else - NO_BZERO_BCOPY ?= 0 +# Various workarounds for weird toolchains + +NO_BZERO_BCOPY ?= 0 +NO_LDIV ?= 0 + +# Automatic settings for PC port(s) + +NON_MATCHING := 1 +GRUCODE := f3dex2e +WINDOWS_BUILD ?= 0 + +ifeq ($(TARGET_WEB),0) +ifeq ($(OS),Windows_NT) +WINDOWS_BUILD := 1 +endif endif -# Build for Emscripten/WebGL -TARGET_WEB ?= 0 -# Specify the target you are building for, 0 means native -ifeq ($(WINDOWS_BUILD),1) - ifeq ($(CROSS),i686-w64-mingw32.static-) - TARGET_ARCH = i386pe - else ifeq ($(CROSS),x86_64-w64-mingw32.static-) - TARGET_ARCH = i386pe - else - TARGET_ARCH ?= native - endif -else - TARGET_ARCH ?= native -endif +# MXE overrides ifeq ($(WINDOWS_BUILD),1) ifeq ($(CROSS),i686-w64-mingw32.static-) + TARGET_ARCH = i386pe TARGET_BITS = 32 + NO_BZERO_BCOPY := 1 else ifeq ($(CROSS),x86_64-w64-mingw32.static-) + TARGET_ARCH = i386pe TARGET_BITS = 64 - else - TARGET_BITS ?= 0 + NO_BZERO_BCOPY := 1 endif -else - TARGET_BITS ?= 0 endif ifneq ($(TARGET_BITS),0) @@ -83,18 +80,6 @@ else BITS := endif -# Automatic settings for PC port(s) - -NON_MATCHING := 1 -GRUCODE := f3dex2e -WINDOWS_BUILD := 0 - -ifeq ($(TARGET_WEB),0) -ifeq ($(OS),Windows_NT) -WINDOWS_BUILD := 1 -endif -endif - # Release (version) flag defs ifeq ($(VERSION),jp) @@ -449,7 +434,7 @@ ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth # Huge deleted N64 section was here -AS := as +AS := $(CROSS)as ifeq ($(OSX_BUILD),1) AS := i686-w64-mingw32-as @@ -462,6 +447,8 @@ else CC := emcc endif +LD := $(CC) + ifeq ($(WINDOWS_BUILD),1) ifeq ($(CROSS),i686-w64-mingw32.static-) # fixes compilation in MXE on Linux and WSL LD := $(CC) @@ -470,25 +457,21 @@ ifeq ($(WINDOWS_BUILD),1) else LD := $(CXX) endif -else - LD := $(CC) endif ifeq ($(WINDOWS_BUILD),1) # fixes compilation in MXE on Linux and WSL CPP := cpp -P OBJCOPY := objcopy OBJDUMP := $(CROSS)objdump -else -ifeq ($(OSX_BUILD),1) - CPP := cpp-9 -P - OBJDUMP := i686-w64-mingw32-objdump - OBJCOPY := i686-w64-mingw32-objcopy +else ifeq ($(OSX_BUILD),1) + CPP := cpp-9 -P + OBJDUMP := i686-w64-mingw32-objdump + OBJCOPY := i686-w64-mingw32-objcopy else # Linux & other builds CPP := $(CROSS)cpp -P OBJCOPY := $(CROSS)objcopy OBJDUMP := $(CROSS)objdump endif -endif PYTHON := python3 SDLCONFIG := $(CROSS)sdl2-config @@ -545,6 +528,12 @@ ifeq ($(NO_BZERO_BCOPY),1) CFLAGS += -DNO_BZERO_BCOPY endif +# Use internal ldiv()/lldiv() +ifeq ($(NO_LDIV),1) + CC_CHECK += -DNO_LDIV + CFLAGS += -DNO_LDIV +endif + ASFLAGS := -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) ifeq ($(TARGET_WEB),1) diff --git a/include/libc/stdlib.h b/include/libc/stdlib.h index 783ccf52..1aaa2702 100644 --- a/include/libc/stdlib.h +++ b/include/libc/stdlib.h @@ -1,8 +1,9 @@ #ifndef STDLIB_H #define STDLIB_H -#ifndef TARGET_WEB +#include +#ifdef NO_LDIV typedef struct lldiv_t { long long quot; @@ -17,11 +18,6 @@ typedef struct ldiv_t lldiv_t lldiv(long long num, long long denom); ldiv_t ldiv(long num, long denom); - -#else - -#include - #endif #endif diff --git a/lib/src/ldiv.c b/lib/src/ldiv.c index b7c28efa..869807e2 100644 --- a/lib/src/ldiv.c +++ b/lib/src/ldiv.c @@ -1,7 +1,8 @@ #include "libultra_internal.h" -#include +#include "stdlib.h" + +#ifdef NO_LDIV -#ifndef OSX_BUILD lldiv_t lldiv(long long num, long long denom) { lldiv_t ret; @@ -14,7 +15,6 @@ lldiv_t lldiv(long long num, long long denom) { return ret; } -#endif // OSX_BUILD cannot use this ldiv_t ldiv(long num, long denom) { ldiv_t ret; @@ -28,3 +28,5 @@ ldiv_t ldiv(long num, long denom) { return ret; } + +#endif diff --git a/src/engine/math_util.h b/src/engine/math_util.h index 99727a73..f28799d2 100644 --- a/src/engine/math_util.h +++ b/src/engine/math_util.h @@ -29,11 +29,9 @@ extern f32 gCosineTable[]; #define sqr(x) ((x) * (x)) -#ifndef TARGET_WEB -#define abs(x) ((x) < 0 ? -(x) : (x)) -#else +#define absx(x) ((x) < 0 ? -(x) : (x)) + #include "../../include/libc/stdlib.h" -#endif void *vec3f_copy(Vec3f dest, Vec3f src); void *vec3f_set(Vec3f dest, f32 x, f32 y, f32 z); diff --git a/src/engine/surface_collision.c b/src/engine/surface_collision.c index 5eee60ed..c0e97dda 100644 --- a/src/engine/surface_collision.c +++ b/src/engine/surface_collision.c @@ -925,10 +925,10 @@ void find_surface_on_ray(Vec3f orig, Vec3f dir, struct Surface **hit_surface, Ve } // Get cells we cross using DDA - if (abs(dir[0]) >= abs(dir[2])) - step = abs(dir[0]) / CELL_SIZE; + if (absx(dir[0]) >= absx(dir[2])) + step = absx(dir[0]) / CELL_SIZE; else - step = abs(dir[2]) / CELL_SIZE; + step = absx(dir[2]) / CELL_SIZE; dx = dir[0] / step / CELL_SIZE; dz = dir[2] / step / CELL_SIZE; From fb706c42f668b4947ab11a4b5180e87c323d970d Mon Sep 17 00:00:00 2001 From: IvanDSM Date: Tue, 19 May 2020 21:22:05 -0300 Subject: [PATCH 026/166] CLI improvements --- src/pc/cliopts.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pc/cliopts.c b/src/pc/cliopts.c index ee35bf60..0a0e6a55 100644 --- a/src/pc/cliopts.c +++ b/src/pc/cliopts.c @@ -13,10 +13,11 @@ struct PCCLIOptions gCLIOpts; static void print_help(void) { printf("Super Mario 64 PC Port\n"); - printf("%-20s\tSkips the Peach and Castle intro when starting a new game.\n", "--skip-intro"); - printf("%-20s\tStarts the game in full screen mode.\n", "--fullscreen"); - printf("%-20s\tStarts the game in windowed mode.\n", "--windowed"); + printf("%-20s\tEnables the cheat menu.\n", "--cheats"); printf("%-20s\tSaves the configuration file as CONFIGNAME.\n", "--configfile CONFIGNAME"); + printf("%-20s\tStarts the game in full screen mode.\n", "--fullscreen"); + printf("%-20s\tSkips the Peach and Castle intro when starting a new game.\n", "--skip-intro"); + printf("%-20s\tStarts the game in windowed mode.\n", "--windowed"); } void parse_cli_opts(int argc, char* argv[]) { @@ -53,6 +54,9 @@ void parse_cli_opts(int argc, char* argv[]) { gCLIOpts.ConfigFile[arglen] = '\0'; } } + + // Skip the next string since it's the configuration file name. + i++; } } } From 26095da73c6f0959cddbda9091213ce55005b0f4 Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Tue, 19 May 2020 21:58:15 -0300 Subject: [PATCH 027/166] Updating Bettercamera --- src/game/bettercamera.inc.h | 55 +++++++++++++++++++++++++------------ src/game/camera.c | 6 ++++ 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index db8c04f8..f83770ab 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -74,9 +74,9 @@ struct newcam_hardpos newcam_fixedcam[] = #endif // noaccel s16 newcam_yaw; //Z axis rotation -s8 newcam_yaw_acc; +f32 newcam_yaw_acc; s16 newcam_tilt = 1500; //Y axis rotation -s8 newcam_tilt_acc; +f32 newcam_tilt_acc; u16 newcam_distance = 750; //The distance the camera stays from the player u16 newcam_distance_target = 750; //The distance the player camera tries to reach. f32 newcam_pos_target[3]; //The position the camera is basing calculations off. *usually* Mario. @@ -189,12 +189,18 @@ void newcam_diagnostics(void) static s16 newcam_adjust_value(s16 var, s16 val) { - var += val; - if (var > 100) - var = 100; - if (var < -100) - var = -100; - + if (val > 0) + { + var += val; + if (var > max) + var = max; + } + else if (val < 0) + { + var += val; + if (var < max) + var = max; + } return var; } @@ -234,6 +240,8 @@ static int ivrt(u8 axis) static void newcam_rotate_button(void) { + f32 intendedXMag; + f32 intendedYMag; if ((newcam_modeflags & NC_FLAG_8D || newcam_modeflags & NC_FLAG_4D) && newcam_modeflags & NC_FLAG_XTURN) //8 directional camera rotation input for buttons. { if ((gPlayer1Controller->buttonPressed & L_CBUTTONS) && newcam_analogue == 0) @@ -264,27 +272,33 @@ static void newcam_rotate_button(void) if (newcam_modeflags & NC_FLAG_XTURN) { if ((gPlayer1Controller->buttonDown & L_CBUTTONS) && newcam_analogue == 0) - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,accel); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,accel, 100); else if ((gPlayer1Controller->buttonDown & R_CBUTTONS) && newcam_analogue == 0) - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-accel); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-accel, -100); else + if (!newcam_analogue) + { #ifdef noaccel newcam_yaw_acc = 0; #else newcam_yaw_acc -= (newcam_yaw_acc*newcam_degrade); #endif + } } if (gPlayer1Controller->buttonDown & U_CBUTTONS && newcam_modeflags & NC_FLAG_YTURN && newcam_analogue == 0) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,accel); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,accel, 100); else if (gPlayer1Controller->buttonDown & D_CBUTTONS && newcam_modeflags & NC_FLAG_YTURN && newcam_analogue == 0) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-accel); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-accel, -100); else + if (!newcam_analogue) + { #ifdef noaccel newcam_tilt_acc = 0; #else newcam_tilt_acc -= (newcam_tilt_acc*newcam_degrade); #endif + } newcam_framessincec[0] += 1; newcam_framessincec[1] += 1; @@ -316,6 +330,8 @@ static void newcam_rotate_button(void) if (newcam_analogue == 1) //There's not much point in keeping this behind a check, but it wouldn't hurt, just incase any 2player shenanigans ever happen, it makes it easy to disable. { //The joystick values cap at 80, so divide by 8 to get the same net result at maximum turn as the button + intendedXMag = gPlayer2Controller->rawStickX*1.25; + intendedYMag = gPlayer2Controller->rawStickY*1.25; if (ABS(gPlayer2Controller->stickX) > 20 && newcam_modeflags & NC_FLAG_XTURN) { if (newcam_modeflags & NC_FLAG_8D) @@ -344,18 +360,23 @@ static void newcam_rotate_button(void) } } else - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,(-gPlayer2Controller->stickX/4)); - } + { + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,gPlayer2Controller->stickX/8, intendedXMag); + } else + if (newcam_analogue) { newcam_cstick_down = 0; newcam_yaw_acc -= (newcam_yaw_acc*newcam_degrade); } if (ABS(gPlayer2Controller->stickY) > 20 && newcam_modeflags & NC_FLAG_YTURN) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,(-gPlayer2Controller->stickY/4)); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,(-gPlayer2Controller->stickY/8, intendedYMag)); else + if (newcam_analogue) + { newcam_tilt_acc -= (newcam_tilt_acc*newcam_degrade); + } } if (newcam_mouse == 1) @@ -417,9 +438,9 @@ static void newcam_update_values(void) {//For tilt, this just limits it so it doesn't go further than 90 degrees either way. 90 degrees is actually 16384, but can sometimes lead to issues, so I just leave it shy of 90. u8 waterflag = 0; if (newcam_modeflags & NC_FLAG_XTURN) - newcam_yaw += (ivrt(0)*(newcam_yaw_acc*(newcam_sensitivityX/10))); + newcam_yaw += ((ivrt(0)*(newcam_yaw_acc*(newcam_sensitivityX/10)))); if (((newcam_tilt < 12000 && newcam_tilt_acc*ivrt(1) > 0) || (newcam_tilt > -12000 && newcam_tilt_acc*ivrt(1) < 0)) && newcam_modeflags & NC_FLAG_YTURN) - newcam_tilt += (ivrt(1)*(newcam_tilt_acc*(newcam_sensitivityY/10))); + newcam_tilt += ((ivrt(1)*(newcam_tilt_acc*(newcam_sensitivityY/10)))); else { if (newcam_tilt > 12000) diff --git a/src/game/camera.c b/src/game/camera.c index deddc6d5..e337c815 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -3080,6 +3080,12 @@ void update_camera(struct Camera *c) { sCButtonsPressed = find_c_buttons_pressed(sCButtonsPressed, gPlayer1Controller->buttonPressed,gPlayer1Controller->buttonDown); #ifdef BETTERCAMERA } + + if (gMarioState->action == ACT_SHOT_FROM_CANNON && newcam_active) + { + gMarioState->area->camera->mode = CAM_MODE_NEWCAM; + gLakituState.mode = CAM_MODE_NEWCAM; + } #endif if (c->cutscene != 0) { From 68374ca330e3b8d18f636a4274b791812775d834 Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Tue, 19 May 2020 22:05:35 -0300 Subject: [PATCH 028/166] Minor fix --- src/game/bettercamera.inc.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index f83770ab..9a365a7a 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -330,8 +330,8 @@ static void newcam_rotate_button(void) if (newcam_analogue == 1) //There's not much point in keeping this behind a check, but it wouldn't hurt, just incase any 2player shenanigans ever happen, it makes it easy to disable. { //The joystick values cap at 80, so divide by 8 to get the same net result at maximum turn as the button - intendedXMag = gPlayer2Controller->rawStickX*1.25; - intendedYMag = gPlayer2Controller->rawStickY*1.25; + intendedXMag = gPlayer2Controller->stickX*1.25; + intendedYMag = gPlayer2Controller->stickY*1.25; if (ABS(gPlayer2Controller->stickX) > 20 && newcam_modeflags & NC_FLAG_XTURN) { if (newcam_modeflags & NC_FLAG_8D) From f9d798c321b02fd816f0dd97f33d8ccec67c8b83 Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Tue, 19 May 2020 22:08:45 -0300 Subject: [PATCH 029/166] Another minor fix --- src/game/bettercamera.inc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index 9a365a7a..9e92dd3e 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -361,7 +361,7 @@ static void newcam_rotate_button(void) } else { - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,gPlayer2Controller->stickX/8, intendedXMag); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,(-gPlayer2Controller->stickX/8), intendedXMag); } else if (newcam_analogue) From 560800e97a6b22dd1fd729abf21c25e100a8638d Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Tue, 19 May 2020 22:10:47 -0300 Subject: [PATCH 030/166] Formatting fixes. --- src/game/bettercamera.inc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index 9e92dd3e..6f3decbf 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -361,7 +361,7 @@ static void newcam_rotate_button(void) } else { - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,(-gPlayer2Controller->stickX/8), intendedXMag); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,(-gPlayer2Controller->stickX/8, intendedXMag)); } else if (newcam_analogue) From c540712154e6825e189f586b67117388b2006052 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 20 May 2020 06:58:35 +0300 Subject: [PATCH 031/166] add GL1.3 (or 1.2 with some extensions) rendering backend there are still some graphical glitches and no fog --- Makefile | 10 + src/pc/gfx/gfx_opengl.c | 4 + src/pc/gfx/gfx_opengl_legacy.c | 519 +++++++++++++++++++++++++++++++++ 3 files changed, 533 insertions(+) create mode 100644 src/pc/gfx/gfx_opengl_legacy.c diff --git a/Makefile b/Makefile index 8898f604..ae8b01a4 100644 --- a/Makefile +++ b/Makefile @@ -48,6 +48,10 @@ TEXTSAVES ?= 0 NO_BZERO_BCOPY ?= 0 NO_LDIV ?= 0 +# Use OpenGL 1.3 renderer + +LEGACY_GL ?= 0 + # Automatic settings for PC port(s) NON_MATCHING := 1 @@ -534,6 +538,12 @@ ifeq ($(NO_LDIV),1) CFLAGS += -DNO_LDIV endif +# Use OpenGL 1.3 +ifeq ($(LEGACY_GL),1) + CC_CHECK += -DLEGACY_GL + CFLAGS += -DLEGACY_GL +endif + ASFLAGS := -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) ifeq ($(TARGET_WEB),1) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 76d584cb..7909d341 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -1,3 +1,5 @@ +#ifndef LEGACY_GL + #include #include @@ -526,3 +528,5 @@ struct GfxRenderingAPI gfx_opengl_api = { gfx_opengl_start_frame, gfx_opengl_shutdown }; + +#endif // !LEGACY_GL diff --git a/src/pc/gfx/gfx_opengl_legacy.c b/src/pc/gfx/gfx_opengl_legacy.c new file mode 100644 index 00000000..aebe91b0 --- /dev/null +++ b/src/pc/gfx/gfx_opengl_legacy.c @@ -0,0 +1,519 @@ +#ifdef LEGACY_GL + +#include +#include +#include + +#ifndef _LANGUAGE_C +#define _LANGUAGE_C +#endif +#include + +#ifdef __MINGW32__ +#define FOR_WINDOWS 1 +#else +#define FOR_WINDOWS 0 +#endif + +#include + +#if FOR_WINDOWS || defined(OSX_BUILD) +#define GLEW_STATIC +#include +#endif + +#define GL_GLEXT_PROTOTYPES 1 +#include + +#include "gfx_cc.h" +#include "gfx_rendering_api.h" +#include "macros.h" + +enum MixFlags { + SH_MF_OVERRIDE_ALPHA = 1, + + SH_MF_MULTIPLY = 2, + SH_MF_MIX = 4, + SH_MF_SINGLE = 8, + + SH_MF_MULTIPLY_ALPHA = 16, + SH_MF_MIX_ALPHA = 32, + SH_MF_SINGLE_ALPHA = 64, + + SH_MF_INPUT_ALPHA = 128, +}; + +enum MixType { + SH_MT_NONE, + SH_MT_TEXTURE, + SH_MT_COLOR, + SH_MT_TEXTURE_TEXTURE, + SH_MT_TEXTURE_COLOR, + SH_MT_COLOR_COLOR, +}; + +struct ShaderProgram { + uint32_t shader_id; + enum MixType mix; + uint32_t mix_flags; + bool texture_used[2]; + int num_inputs; +}; + +static struct ShaderProgram shader_program_pool[64]; +static uint8_t shader_program_pool_size; +static struct ShaderProgram *cur_shader = NULL; + +static const float *cur_buf = NULL; +static size_t cur_buf_size = 0; +static size_t cur_buf_num_tris = 0; +static size_t cur_buf_stride = 0; + +static const float c_white[] = { 1.f, 1.f, 1.f, 1.f }; + +static bool gfx_opengl_z_is_from_0_to_1(void) { + return false; +} + +#define TEXENV_COMBINE_ON() glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE) +#define TEXENV_COMBINE_OFF() glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE) + +#define TEXENV_COMBINE_OP(num, cval, aval) \ + do { \ + glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND ## num ## _RGB, cval); \ + glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND ## num ## _ALPHA, aval); \ + } while (0) + +#define TEXENV_COMBINE_SET1(what, mode, val) \ + do { \ + glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ ## what, mode); \ + glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ ## what, val); \ + } while (0) + +#define TEXENV_COMBINE_SET2(what, mode, val1, val2) \ + do { \ + glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ ## what, mode); \ + glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ ## what, val1); \ + glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ ## what, val2); \ + } while (0) + +#define TEXENV_COMBINE_SET3(what, mode, val1, val2, val3) \ + do { \ + glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ ## what, mode); \ + glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ ## what, val1); \ + glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ ## what, val2); \ + glTexEnvi(GL_TEXTURE_ENV, GL_SRC2_ ## what, val3); \ + } while (0) + +static inline void texenv_set_texture_color(struct ShaderProgram *prg) { + glActiveTexture(GL_TEXTURE0); + + if (prg->mix_flags & SH_MF_OVERRIDE_ALPHA) { + TEXENV_COMBINE_ON(); + if (prg->mix_flags & SH_MF_SINGLE_ALPHA) { + if (prg->mix_flags & SH_MF_MULTIPLY) { + // keep the alpha but modulate the color + const GLenum alphasrc = (prg->mix_flags & SH_MF_INPUT_ALPHA) ? GL_PRIMARY_COLOR : GL_TEXTURE; + TEXENV_COMBINE_SET2(RGB, GL_MODULATE, GL_TEXTURE, GL_PRIMARY_COLOR); + TEXENV_COMBINE_SET1(ALPHA, GL_REPLACE, alphasrc); + } else { + // somehow makes it keep the color while taking the alpha from primary color + TEXENV_COMBINE_SET1(RGB, GL_REPLACE, GL_TEXTURE); + } + } else { // if (prg->mix_flags & SH_MF_SINGLE) { + if (prg->mix_flags & SH_MF_MULTIPLY_ALPHA) { + // modulate the alpha but keep the color + TEXENV_COMBINE_SET2(ALPHA, GL_MODULATE, GL_TEXTURE, GL_PRIMARY_COLOR); + TEXENV_COMBINE_SET1(RGB, GL_REPLACE, GL_TEXTURE); + } else { + // somehow makes it keep the alpha + TEXENV_COMBINE_SET1(ALPHA, GL_REPLACE, GL_TEXTURE); + } + } + // TODO: MIX and the other one + } else if (prg->mix_flags & SH_MF_MULTIPLY) { + // TODO: is this right? + TEXENV_COMBINE_OFF(); + } else if (prg->mix_flags & SH_MF_MIX) { + TEXENV_COMBINE_ON(); + // HACK: determine this using flags and not this crap + if (prg->num_inputs > 1) { + // out.rgb = mix(color0.rgb, color1.rgb, texel0.rgb); + // no color1 tho, so mix with white (texenv color is set in init()) + TEXENV_COMBINE_OP(2, GL_SRC_COLOR, GL_SRC_ALPHA); + TEXENV_COMBINE_SET3(RGB, GL_INTERPOLATE, GL_CONSTANT, GL_PRIMARY_COLOR, GL_TEXTURE); + TEXENV_COMBINE_SET1(ALPHA, GL_REPLACE, GL_CONSTANT); + } else { + // out.rgb = mix(color0.rgb, texel0.rgb, texel0.a); + TEXENV_COMBINE_OP(2, GL_SRC_ALPHA, GL_SRC_ALPHA); + TEXENV_COMBINE_SET3(RGB, GL_INTERPOLATE, GL_TEXTURE, GL_PRIMARY_COLOR, GL_TEXTURE); + } + } else { + TEXENV_COMBINE_OFF(); + } +} + +static inline void texenv_set_texture_texture(UNUSED struct ShaderProgram *prg) { + glActiveTexture(GL_TEXTURE0); + TEXENV_COMBINE_OFF(); + glActiveTexture(GL_TEXTURE1); + TEXENV_COMBINE_ON(); + // out.rgb = mix(texel0.rgb, texel1.rgb, color0.rgb); + TEXENV_COMBINE_OP(2, GL_SRC_COLOR, GL_SRC_ALPHA); + TEXENV_COMBINE_SET3(RGB, GL_INTERPOLATE, GL_PREVIOUS, GL_TEXTURE, GL_PRIMARY_COLOR); + // out.a = texel0.a; + TEXENV_COMBINE_SET1(ALPHA, GL_REPLACE, GL_PREVIOUS); +} + +static void gfx_opengl_apply_shader(struct ShaderProgram *prg) { + const float *ofs = cur_buf; + + // vertices are always there + glVertexPointer(4, GL_FLOAT, cur_buf_stride, ofs); + ofs += 4; + + // have texture(s), specify same texcoords for every active texture + for (int i = 0; i < 2; ++i) { + if (prg->texture_used[i]) { + glEnable(GL_TEXTURE0 + i); + glClientActiveTexture(GL_TEXTURE0 + i); + glActiveTexture(GL_TEXTURE0 + i); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glTexCoordPointer(2, GL_FLOAT, cur_buf_stride, ofs); + glEnable(GL_TEXTURE_2D); + ofs += 2; + } + } + + if (prg->shader_id & SHADER_OPT_FOG) { + // have fog, but fog colors are the same for every vertex + // TODO: alpha ain't the same, maybe use glSecondaryColorPointer? + // TODO: or pass start and end from gsSPFogPosition somehow or calculate them from z0, w0 and a0? + // TODO: or alpha blend solid triangles on top, using the fog factor as alpha + // glEnable(GL_FOG); + // glFogi(GL_FOG_MODE, GL_LINEAR); + // glFogfv(GL_FOG_COLOR, ofs); + ofs += 4; + } + + if (prg->num_inputs) { + // have colors + // TODO: more than one color (maybe glSecondaryColorPointer?) + // HACK: if there's a texture and two colors, one of them is likely for speculars or some shit (see mario head) + // if there's two colors but no texture, the real color is likely the second one + const int hack = (prg->num_inputs > 1) * (4 - (int)prg->texture_used[0]); + glEnableClientState(GL_COLOR_ARRAY); + glColorPointer(4, GL_FLOAT, cur_buf_stride, ofs + hack); + ofs += 4 * prg->num_inputs; + } + + if (prg->shader_id & SHADER_OPT_TEXTURE_EDGE) { + // (horrible) alpha discard + glEnable(GL_ALPHA_TEST); + glAlphaFunc(GL_GREATER, 0.3f); + } + + // configure formulae + switch (prg->mix) { + case SH_MT_TEXTURE: + glActiveTexture(GL_TEXTURE0); + TEXENV_COMBINE_OFF(); + break; + + case SH_MT_TEXTURE_COLOR: + texenv_set_texture_color(prg); + break; + + case SH_MT_TEXTURE_TEXTURE: + texenv_set_texture_texture(prg); + break; + + default: + break; + } +} + +static void gfx_opengl_unload_shader(struct ShaderProgram *old_prg) { + if (cur_shader == old_prg || old_prg == NULL) + cur_shader = NULL; + + glClientActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE0); + glDisable(GL_TEXTURE_2D); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + + glClientActiveTexture(GL_TEXTURE1); + glActiveTexture(GL_TEXTURE1); + glDisable(GL_TEXTURE_2D); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + + glDisable(GL_TEXTURE1); + glDisable(GL_TEXTURE0); + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + + glDisableClientState(GL_COLOR_ARRAY); +} + +static void gfx_opengl_load_shader(struct ShaderProgram *new_prg) { + cur_shader = new_prg; + // gfx_opengl_apply_shader(cur_shader); +} + +static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shader_id) { + uint8_t c[2][4]; + for (int i = 0; i < 4; i++) { + c[0][i] = (shader_id >> (i * 3)) & 7; + c[1][i] = (shader_id >> (12 + i * 3)) & 7; + } + + bool used_textures[2] = {0, 0}; + int num_inputs = 0; + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 4; j++) { + if (c[i][j] >= SHADER_INPUT_1 && c[i][j] <= SHADER_INPUT_4) { + if (c[i][j] > num_inputs) { + num_inputs = c[i][j]; + } + } + if (c[i][j] == SHADER_TEXEL0 || c[i][j] == SHADER_TEXEL0A) { + used_textures[0] = true; + } + if (c[i][j] == SHADER_TEXEL1) { + used_textures[1] = true; + } + } + } + + const bool color_alpha_same = (shader_id & 0xfff) == ((shader_id >> 12) & 0xfff); + const bool do_multiply[2] = {c[0][1] == 0 && c[0][3] == 0, c[1][1] == 0 && c[1][3] == 0}; + const bool do_mix[2] = {c[0][1] == c[0][3], c[1][1] == c[1][3]}; + const bool do_single[2] = {c[0][2] == 0, c[1][2] == 0}; + + struct ShaderProgram *prg = &shader_program_pool[shader_program_pool_size++]; + + prg->shader_id = shader_id; + prg->num_inputs = num_inputs; + prg->texture_used[0] = used_textures[0]; + prg->texture_used[1] = used_textures[1]; + + if (used_textures[0] && used_textures[1]) + prg->mix = SH_MT_TEXTURE_TEXTURE; + else if (used_textures[0] && num_inputs) + prg->mix = SH_MT_TEXTURE_COLOR; + else if (used_textures[0]) + prg->mix = SH_MT_TEXTURE; + else if (num_inputs > 1) + prg->mix = SH_MT_COLOR_COLOR; + else if (num_inputs) + prg->mix = SH_MT_COLOR; + + if (do_single[0]) prg->mix_flags |= SH_MF_SINGLE; + if (do_multiply[0]) prg->mix_flags |= SH_MF_MULTIPLY; + if (do_mix[0]) prg->mix_flags |= SH_MF_MIX; + + if (!color_alpha_same && (shader_id & SHADER_OPT_ALPHA)) { + prg->mix_flags |= SH_MF_OVERRIDE_ALPHA; + if (do_single[1]) prg->mix_flags |= SH_MF_SINGLE_ALPHA; + if (do_multiply[1]) prg->mix_flags |= SH_MF_MULTIPLY_ALPHA; + if (do_mix[1]) prg->mix_flags |= SH_MF_MIX_ALPHA; + if (c[1][3] < SHADER_TEXEL0) prg->mix_flags |= SH_MF_INPUT_ALPHA; + } + + gfx_opengl_load_shader(prg); + + return prg; +} + +static struct ShaderProgram *gfx_opengl_lookup_shader(uint32_t shader_id) { + for (size_t i = 0; i < shader_program_pool_size; i++) { + if (shader_program_pool[i].shader_id == shader_id) { + return &shader_program_pool[i]; + } + } + return NULL; +} + +static void gfx_opengl_shader_get_info(struct ShaderProgram *prg, uint8_t *num_inputs, bool used_textures[2]) { + *num_inputs = prg->num_inputs; + used_textures[0] = prg->texture_used[0]; + used_textures[1] = prg->texture_used[1]; +} + +static GLuint gfx_opengl_new_texture(void) { + GLuint ret; + glGenTextures(1, &ret); + return ret; +} + +static void gfx_opengl_select_texture(int tile, GLuint texture_id) { + glActiveTexture(GL_TEXTURE0 + tile); + glBindTexture(GL_TEXTURE_2D, texture_id); +} + +static void gfx_opengl_upload_texture(uint8_t *rgba32_buf, int width, int height) { + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, rgba32_buf); +} + +static uint32_t gfx_cm_to_opengl(uint32_t val) { + if (val & G_TX_CLAMP) + return GL_CLAMP_TO_EDGE; + return (val & G_TX_MIRROR) ? GL_MIRRORED_REPEAT : GL_REPEAT; +} + +static void gfx_opengl_set_sampler_parameters(int tile, bool linear_filter, uint32_t cms, uint32_t cmt) { + const GLenum filter = linear_filter ? GL_LINEAR : GL_NEAREST; + glActiveTexture(GL_TEXTURE0 + tile); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gfx_cm_to_opengl(cms)); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gfx_cm_to_opengl(cmt)); +} + +static void gfx_opengl_set_depth_test(bool depth_test) { + if (depth_test) { + glEnable(GL_DEPTH_TEST); + } else { + glDisable(GL_DEPTH_TEST); + } +} + +static void gfx_opengl_set_depth_mask(bool z_upd) { + glDepthMask(z_upd ? GL_TRUE : GL_FALSE); +} + +static void gfx_opengl_set_zmode_decal(bool zmode_decal) { + if (zmode_decal) { + glPolygonOffset(-2, -2); + glEnable(GL_POLYGON_OFFSET_FILL); + } else { + glPolygonOffset(0, 0); + glDisable(GL_POLYGON_OFFSET_FILL); + } +} + +static void gfx_opengl_set_viewport(int x, int y, int width, int height) { + glViewport(x, y, width, height); +} + +static void gfx_opengl_set_scissor(int x, int y, int width, int height) { + glScissor(x, y, width, height); +} + +static void gfx_opengl_set_use_alpha(bool use_alpha) { + if (use_alpha) { + glEnable(GL_BLEND); + } else { + glDisable(GL_BLEND); + } +} + +static void gfx_opengl_draw_triangles(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris) { + //printf("flushing %d tris\n", buf_vbo_num_tris); + + cur_buf = buf_vbo; + cur_buf_size = buf_vbo_len * 4; + cur_buf_num_tris = buf_vbo_num_tris; + cur_buf_stride = cur_buf_size / (3 * cur_buf_num_tris); + + gfx_opengl_apply_shader(cur_shader); + + glDrawArrays(GL_TRIANGLES, 0, 3 * buf_vbo_num_tris); +} + +static inline bool gl_check_ext(const char *name) { + static const char *extstr = NULL; + + if (extstr == NULL) + extstr = (const char *)glGetString(GL_EXTENSIONS); + + if (!strstr(extstr, name)) { + fprintf(stderr, "Required GL extension not supported: %s\n", name); + return false; + } + + return true; +} + +static inline bool gl_get_version(int *major, int *minor, bool *is_es) { + const char *vstr = (const char *)glGetString(GL_VERSION); + if (!vstr || !vstr[0]) return false; + + if (!strncmp(vstr, "OpenGL ES ", 10)) { + vstr += 10; + *is_es = true; + } else if (!strncmp(vstr, "OpenGL ES-CM ", 13)) { + vstr += 13; + *is_es = true; + } + + return (sscanf(vstr, "%d.%d", major, minor) == 2); +} + +static void gfx_opengl_init(void) { +#if FOR_WINDOWS || defined(OSX_BUILD) + glewInit(); +#endif + + // check GL version + int vmajor, vminor; + bool is_es = false; + gl_get_version(&vmajor, &vminor, &is_es); + if (vmajor < 2 && vminor < 2 && !is_es) { + fprintf(stderr, "OpenGL 1.2+ is required. Reported version: %s%d.%d\n", is_es ? "ES" : "", vmajor, vminor); + abort(); + } + + // check extensions that we need + bool supported = + gl_check_ext("GL_ARB_multitexture") && + gl_check_ext("GL_ARB_texture_env_combine"); + + if (!supported) abort(); + + printf("GL_VERSION = %s\n", glGetString(GL_VERSION)); + printf("GL_EXTENSIONS =\n%s\n", glGetString(GL_EXTENSIONS)); + + // these never change + glEnableClientState(GL_VERTEX_ARRAY); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, c_white); + TEXENV_COMBINE_OP(0, GL_SRC_COLOR, GL_SRC_ALPHA); + TEXENV_COMBINE_OP(1, GL_SRC_COLOR, GL_SRC_ALPHA); +} + +static void gfx_opengl_start_frame(void) { + glDisable(GL_SCISSOR_TEST); + glDepthMask(GL_TRUE); // Must be set to clear Z-buffer + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glEnable(GL_SCISSOR_TEST); +} + +static void gfx_opengl_shutdown(void) { +} + +struct GfxRenderingAPI gfx_opengl_api = { + gfx_opengl_z_is_from_0_to_1, + gfx_opengl_unload_shader, + gfx_opengl_load_shader, + gfx_opengl_create_and_load_new_shader, + gfx_opengl_lookup_shader, + gfx_opengl_shader_get_info, + gfx_opengl_new_texture, + gfx_opengl_select_texture, + gfx_opengl_upload_texture, + gfx_opengl_set_sampler_parameters, + gfx_opengl_set_depth_test, + gfx_opengl_set_depth_mask, + gfx_opengl_set_zmode_decal, + gfx_opengl_set_viewport, + gfx_opengl_set_scissor, + gfx_opengl_set_use_alpha, + gfx_opengl_draw_triangles, + gfx_opengl_init, + gfx_opengl_start_frame, + gfx_opengl_shutdown +}; + +#endif // LEGACY_GL From 89bab59fbf32fddd2497210ec6ffb407cea778ec Mon Sep 17 00:00:00 2001 From: Zerocker Date: Wed, 20 May 2020 23:28:04 +0900 Subject: [PATCH 032/166] Added appropriate flags for sound mode and cap level. Documentation has been updated. --- SAVE_FORMAT.MD | 20 ++++---- src/game/save_file.c | 2 - src/game/text_save.inc.h | 106 +++++++++++++++++++++++++++++++++------ 3 files changed, 102 insertions(+), 26 deletions(-) diff --git a/SAVE_FORMAT.MD b/SAVE_FORMAT.MD index c11d9194..5f44a011 100644 --- a/SAVE_FORMAT.MD +++ b/SAVE_FORMAT.MD @@ -34,14 +34,14 @@ This section contains two flags for menu. | Flag | Value | Description | |---|---|---| -| coin_score_age | ?? | Each save file has a 2 bit "age" for each course. The higher this value, the older the high score is. This is used for tie-breaking when displaying on the high score screen -| sound_mode | ?? | Sound mode for the game: stereo, mono, or headset +| coin_score_age | 0, 1, 2, 3 | Each save file has a 2 bit "age" for each course. The higher this value, the older the high score is. This is used for tie-breaking when displaying on the high score screen +| sound_mode | stereo, mono, headset | Sound mode for the game Example: ``` [menu] -coin_score_age = ?? -sound_mode = ?? +coin_score_age = 0 +sound_mode = stereo ``` ___ ## Flags Section - [flags] @@ -145,14 +145,14 @@ ___ This section contains information about where Mario lost his cap and who take it. | Flag | Value | Description | |---|---|---| -| type | ground, klepto, ukiki, mrblizzard | The one who or what took the cap from Mario. -| level | ?? | Specifies the course where the cap is located. -| area | ?? | Specifies the area in the course. +| type | ground, klepto, ukiki, mrblizzard | The one who or what took the cap from Mario. Default flag is **"ground"** +| level | ssl, sl, ttm, none | Specifies the course where the cap is located. Default flag is **"none"**. +| area | 1, 2 | Specifies the area in the course. Example: ``` [cap] -type = onground -level = 5 -area = 0 +type = ground +level = ssl +area = 1 ``` \ No newline at end of file diff --git a/src/game/save_file.c b/src/game/save_file.c index d7899314..333257c2 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -1,5 +1,4 @@ #include -#include #include "sm64.h" #include "game_init.h" #include "main.h" @@ -11,7 +10,6 @@ #include "level_table.h" #include "course_table.h" #include "thread6.h" -#include "pc/ini.h" #define MENU_DATA_MAGIC 0x4849 #define SAVE_FILE_MAGIC 0x4441 diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index b84ab1b2..870a4aea 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -1,4 +1,8 @@ #include +#include +#include +#include "course_table.h" +#include "pc/ini.h" #define FILENAME_FORMAT "save_file_%d.sav" #define NUM_COURSES 15 @@ -6,7 +10,7 @@ #define NUM_FLAGS 21 #define NUM_CAP_ON 4 -/* Flag key */ +/* Flag keys */ const char *sav_flags[NUM_FLAGS] = { "file_exists", "wing_cap", "metal_cap", "vanish_cap", "key_1", "key_2", "basement_door", "upstairs_door", "ddd_moved_back", "moat_drained", @@ -31,6 +35,11 @@ const char *cap_on_types[NUM_CAP_ON] = { "ground", "klepto", "ukiki", "mrblizzard" }; +/* Sound modes */ +const char *sound_modes[3] = { + "stereo", "mono", "headset" +}; + /* Get current timestamp */ static void get_timestamp(char* buffer) { time_t timer; @@ -75,7 +84,7 @@ static s32 write_text_save(s32 fileIndex) { struct MainMenuSaveData *menudata; char filename[32] = { 0 }; char value[32] = { 0 }; - u32 i, flags, coins, stars, starFlags; + u32 i, bit, flags, coins, stars, starFlags; /* Define savefile's name */ if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) @@ -84,6 +93,8 @@ static s32 write_text_save(s32 fileIndex) { file = fopen(filename, "wt"); if (file == NULL) return -1; + else + printf("Updating savefile in '%s'\n", filename); /* Write header */ fprintf(file, "# Super Mario 64 save file\n"); @@ -98,8 +109,22 @@ static s32 write_text_save(s32 fileIndex) { menudata = &gSaveBuffer.menuData[0]; fprintf(file, "\n[menu]\n"); fprintf(file, "coin_score_age = %d\n", menudata->coinScoreAges[fileIndex]); - fprintf(file, "sound_mode = %u\n", menudata->soundMode); - + + /* Sound mode */ + if (menudata->soundMode == 0) { + fprintf(file, "sound_mode = %s\n", sound_modes[0]); // stereo + } + else if (menudata->soundMode == 3) { + fprintf(file, "sound_mode = %s\n", sound_modes[1]); // mono + } + else if (menudata->soundMode == 1) { + fprintf(file, "sound_mode = %s\n", sound_modes[2]); // headset + } + else { + printf("Undefined sound mode!"); + return -1; + } + /* Write all flags */ fprintf(file, "\n[flags]\n"); for (i = 1; i < NUM_FLAGS; i++) { @@ -139,7 +164,8 @@ static s32 write_text_save(s32 fileIndex) { fprintf(file, "\n[cap]\n"); for (i = 0; i < NUM_CAP_ON; i++) { flags = save_file_get_flags(); // Read all flags - flags = (flags & (1 << (i+16))); // Get `cap` flags + bit = (1 << (i+16)); // Determine current flag + flags = (flags & bit); // Get `cap` flag flags = (flags) ? 1 : 0; // Determine if bit is set or not if (flags) { fprintf(file, "type = %s\n", cap_on_types[i]); @@ -149,7 +175,20 @@ static s32 write_text_save(s32 fileIndex) { /* Write in what course and area Mario losted its cap, and cap's position */ savedata = &gSaveBuffer.files[fileIndex][0]; - fprintf(file, "level = %d\n", savedata->capLevel); + switch(savedata->capLevel) { + case COURSE_SSL: + fprintf(file, "level = %s\n", "ssl"); + break; + case COURSE_SL: + fprintf(file, "level = %s\n", "sl"); + break; + case COURSE_TTM: + fprintf(file, "level = %s\n", "ttm"); + break; + default: + fprintf(file, "level = %s\n", "none"); + break; + } fprintf(file, "area = %d\n", savedata->capArea); fclose(file); @@ -178,6 +217,7 @@ static s32 read_text_save(s32 fileIndex) { if (savedata == NULL) { return -1; } else { + printf("Loading savefile from '%s'\n", filename); /* Good, file exists for gSaveBuffer */ gSaveBuffer.files[fileIndex][0].flags |= SAVE_FLAG_FILE_EXISTS; } @@ -185,8 +225,24 @@ static s32 read_text_save(s32 fileIndex) { /* Read coin score age for selected file and sound mode */ ini_sget(savedata, "menu", "coin_score_age", "%d", &gSaveBuffer.menuData[0].coinScoreAges[fileIndex]); - ini_sget(savedata, "menu", "sound_mode", "%u", - &gSaveBuffer.menuData[0].soundMode); // Can override 4 times! + + value = ini_get(savedata, "menu", "sound_mode"); + if (value) { + if (strcmp(value, sound_modes[0]) == 0) { + gSaveBuffer.menuData[0].soundMode = 0; // stereo + } + else if (strcmp(value, sound_modes[1]) == 0) { + gSaveBuffer.menuData[0].soundMode = 3; // mono + } + else if (strcmp(value, sound_modes[2]) == 0) { + gSaveBuffer.menuData[0].soundMode = 1; // headset + } + } + else { + printf("Invalid 'menu:sound_mode' flag!\n"); + return -1; + } + /* Parse main flags */ for (i = 1; i < NUM_FLAGS; i++) { @@ -245,13 +301,35 @@ static s32 read_text_save(s32 fileIndex) { } } - /* ... also it's position, area and level */ - sscanf(ini_get(savedata, "cap", "level"), "%d", &capLevel); - sscanf(ini_get(savedata, "cap", "area"), "%d", &capArea); + /* ... it's level ... */ + value = ini_get(savedata, "cap", "level"); + if (strcmp(value, "ssl") == 0) { + gSaveBuffer.files[fileIndex][0].capLevel = 8; // ssl + } + else if (strcmp(value, "sl") == 0) { + gSaveBuffer.files[fileIndex][0].capLevel = 10; // sl + } + else if (strcmp(value, "ttm") == 0) { + gSaveBuffer.files[fileIndex][0].capLevel = 12; // ttm + } + else if (strcmp(value, "none") == 0) { + gSaveBuffer.files[fileIndex][0].capLevel = 0; + } + else { + printf("Invalid 'cap:level' flag!\n"); + return -1; + } + + /* ... and it's area */ + sscanf(ini_get(savedata, "cap", "area"), "%d", &capArea); + if (capArea > 1 && capArea < 2) { + printf("Invalid 'cap:area' flag: %d!\n", capArea); + return -1; + } + else { + gSaveBuffer.files[fileIndex][0].capArea = capArea; + } - gSaveBuffer.files[fileIndex][0].capLevel = capLevel; - gSaveBuffer.files[fileIndex][0].capArea = capArea; - /* Cleaning up after ourselves */ ini_free(savedata); return 1; From f99298943c359bb9b55ef159971b6debd8ba14af Mon Sep 17 00:00:00 2001 From: Mario Reder Date: Wed, 20 May 2020 16:50:05 +0200 Subject: [PATCH 033/166] fix non mingw builds resolves #230 --- include/PR/ultratypes.h | 1 + src/pc/gfx/gfx_pc.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h index ddff2827..7c35d291 100644 --- a/include/PR/ultratypes.h +++ b/include/PR/ultratypes.h @@ -31,6 +31,7 @@ typedef double f64; #include #include +#include #if defined(__MINGW32__) #include <_mingw.h> #if !defined(__MINGW64_VERSION_MAJOR) diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 01bea71f..51fe919a 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -40,6 +40,8 @@ #define MAX_LIGHTS 2 #define MAX_VERTICES 64 +#define CLOCK_MONOTONIC 0 + struct RGBA { uint8_t r, g, b, a; }; @@ -159,7 +161,6 @@ static struct GfxRenderingAPI *gfx_rapi; #include <_mingw.h> #if !defined(__MINGW64_VERSION_MAJOR) #include -#define CLOCK_MONOTONIC 0 //https://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows struct timespec { long tv_sec; long tv_nsec; }; //header part int clock_gettime(int arg, struct timespec *spec) //C-file part From 2714708ca916f5e40166407b4a8824248ff2a20c Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 20 May 2020 17:56:35 +0300 Subject: [PATCH 034/166] avoid redefining CLOCK_MONOTONIC and shit --- include/PR/ultratypes.h | 4 +++- src/pc/gfx/gfx_pc.c | 44 ++++++++++++++++++++++++++--------------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h index 7c35d291..1ebde775 100644 --- a/include/PR/ultratypes.h +++ b/include/PR/ultratypes.h @@ -32,6 +32,7 @@ typedef double f64; #include #include #include + #if defined(__MINGW32__) #include <_mingw.h> #if !defined(__MINGW64_VERSION_MAJOR) @@ -40,4 +41,5 @@ typedef long ssize_t; typedef ptrdiff_t ssize_t; #endif #endif -#endif + +#endif // _ULTRA64_TYPES_H_ diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 51fe919a..e2aadfa1 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -40,8 +40,6 @@ #define MAX_LIGHTS 2 #define MAX_VERTICES 64 -#define CLOCK_MONOTONIC 0 - struct RGBA { uint8_t r, g, b, a; }; @@ -157,23 +155,37 @@ static size_t buf_vbo_num_tris; static struct GfxWindowManagerAPI *gfx_wapi; static struct GfxRenderingAPI *gfx_rapi; -#if defined(__MINGW32__) -#include <_mingw.h> -#if !defined(__MINGW64_VERSION_MAJOR) +#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && !defined(__APPLE__) +// old mingw +# include <_mingw.h> +# define NO_CLOCK_GETTIME +#endif + +#ifdef NO_CLOCK_GETTIME + +#if defined(_WIN32) #include -//https://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows -struct timespec { long tv_sec; long tv_nsec; }; //header part -int clock_gettime(int arg, struct timespec *spec) //C-file part -{ __int64 wintime; GetSystemTimeAsFileTime((FILETIME*)&wintime); - wintime -=116444736000000000LL; //1jan1601 to 1jan1970 - spec->tv_sec =wintime / 10000000LL; //seconds - spec->tv_nsec =wintime % 10000000LL*100; //nano-seconds - return 0; +#define CLOCK_MONOTONIC 0 +// https://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows +struct timespec { long tv_sec; long tv_nsec; }; +int clock_gettime(int arg, struct timespec *spec) { + __int64 wintime; + GetSystemTimeAsFileTime((FILETIME*)&wintime); + wintime -= 116444736000000000LL; //1jan1601 to 1jan1970 + spec->tv_sec = wintime / 10000000LL; //seconds + spec->tv_nsec = wintime % 10000000LL*100; //nano-seconds + return 0; } -#else +#else // _WIN32 +#error "Add a clock_gettime() impl for your platform!" +#endif // _WIN32 + +#else // NO_CLOCK_GETTIME + #include -#endif -#endif + +#endif // NO_CLOCK_GETTIME + static unsigned long get_time(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); From 6e936174b0b8145087e6470ea0a71c9c5baa2d66 Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Wed, 20 May 2020 16:52:52 -0300 Subject: [PATCH 035/166] Resolve a few errors with the new additions. --- src/game/bettercamera.inc.h | 4 ++-- src/game/camera.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index 6f3decbf..81ec9d07 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -187,7 +187,7 @@ void newcam_diagnostics(void) print_text_fmt_int(32,32,"DISTANCE %d",newcam_distance); } -static s16 newcam_adjust_value(s16 var, s16 val) +static s16 newcam_adjust_value(s16 var, s16 val, s8 max) { if (val > 0) { @@ -337,7 +337,7 @@ static void newcam_rotate_button(void) if (newcam_modeflags & NC_FLAG_8D) { if (newcam_cstick_down == 0) - { + { newcam_cstick_down = 1; newcam_centering = 1; #ifndef nosound diff --git a/src/game/camera.c b/src/game/camera.c index e337c815..5ae68805 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -3083,8 +3083,8 @@ void update_camera(struct Camera *c) { if (gMarioState->action == ACT_SHOT_FROM_CANNON && newcam_active) { - gMarioState->area->camera->mode = CAM_MODE_NEWCAM; - gLakituState.mode = CAM_MODE_NEWCAM; + gMarioState->area->camera->mode = CAMERA_MODE_NEWCAM; + gLakituState.mode = CAMERA_MODE_NEWCAM; } #endif From f7355b91ab547785526cd1654659fcb755ebf6ec Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Wed, 20 May 2020 20:54:25 -0300 Subject: [PATCH 036/166] Add minor sparkle texture fixes Controlled by TEXTURE_FIX as mandated by the Koopa shorts issues/PRs --- src/goddard/renderer.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/goddard/renderer.c b/src/goddard/renderer.c index 821f9aff..1b94de4c 100644 --- a/src/goddard/renderer.c +++ b/src/goddard/renderer.c @@ -569,6 +569,7 @@ static Gfx gd_dl_red_sparkle_4[] = { gsSPBranchList(gd_dl_sparkle), }; +#ifndef TEXTURE_FIX static Gfx gd_dl_red_sparkle_4_dup[] ={ gsDPPipeSync(), gsSPDisplayList(gd_dl_sparkle_red_color), @@ -576,6 +577,15 @@ static Gfx gd_dl_red_sparkle_4_dup[] ={ gsSPBranchList(gd_dl_sparkle), }; +#else +static Gfx gd_dl_red_sparkle_5[] ={ + gsDPPipeSync(), + gsSPDisplayList(gd_dl_sparkle_red_color), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_5), + gsSPBranchList(gd_dl_sparkle), +}; +#endif + static Gfx gd_dl_silver_sparkle_0[] = { gsDPPipeSync(), gsSPDisplayList(gd_dl_sparkle_white_color), @@ -611,6 +621,7 @@ static Gfx gd_dl_silver_sparkle_4[] = { gsSPBranchList(gd_dl_sparkle), }; +#ifndef TEXTURE_FIX static Gfx gd_dl_silver_sparkle_4_dup[] = { gsDPPipeSync(), gsSPDisplayList(gd_dl_sparkle_white_color), @@ -618,6 +629,15 @@ static Gfx gd_dl_silver_sparkle_4_dup[] = { gsSPBranchList(gd_dl_sparkle), }; +#else +static Gfx gd_dl_silver_sparkle_5[] = { + gsDPPipeSync(), + gsSPDisplayList(gd_dl_sparkle_white_color), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_5), + gsSPBranchList(gd_dl_sparkle), +}; +#endif + static Gfx *gd_red_sparkle_dl_array[] = { gd_dl_red_sparkle_4, gd_dl_red_sparkle_4, @@ -629,8 +649,13 @@ static Gfx *gd_red_sparkle_dl_array[] = { gd_dl_red_sparkle_1, gd_dl_red_sparkle_0, gd_dl_red_sparkle_0, +#ifndef TEXTURE_FIX gd_dl_red_sparkle_4_dup, gd_dl_red_sparkle_4_dup, +#else + gd_dl_red_sparkle_5, + gd_dl_red_sparkle_5, +#endif }; static Gfx *gd_silver_sparkle_dl_array[] = { @@ -644,8 +669,13 @@ static Gfx *gd_silver_sparkle_dl_array[] = { gd_dl_silver_sparkle_1, gd_dl_silver_sparkle_0, gd_dl_silver_sparkle_0, +#ifndef TEXTURE_FIX gd_dl_silver_sparkle_4_dup, gd_dl_silver_sparkle_4_dup, +#else + gd_dl_silver_sparkle_5, + gd_dl_silver_sparkle_5, +#endif }; static Gfx gd_texture3_dummy_aligner1[] = { From ba8345377eeca40a048556ae27f5b38f5ea1359a Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Wed, 20 May 2020 20:59:16 -0300 Subject: [PATCH 037/166] Added info that sparkle texture 5 was fixed --- src/goddard/renderer.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/goddard/renderer.c b/src/goddard/renderer.c index 1b94de4c..4fa77986 100644 --- a/src/goddard/renderer.c +++ b/src/goddard/renderer.c @@ -493,6 +493,7 @@ ALIGNED8 static u8 gd_texture_sparkle_4[] = { //! No reference to this texture. Two DL's uses the same previous texture // instead of using this texture. +// Fixed via setting TEXTURE_FIX to 1. ALIGNED8 static u8 gd_texture_sparkle_5[] = { #include "textures/intro_raw/sparkle_5.rgba16.inc.c" }; From 9805dcab32d1de14317ad9b277fd3772e63a7bd7 Mon Sep 17 00:00:00 2001 From: Colton Rushton Date: Wed, 20 May 2020 21:10:00 -0300 Subject: [PATCH 038/166] Minor fix to updated bettercamera --- src/game/bettercamera.inc.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index 81ec9d07..1dbe2f3b 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -361,8 +361,9 @@ static void newcam_rotate_button(void) } else { - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,(-gPlayer2Controller->stickX/8, intendedXMag)); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-gPlayer2Controller->stickX/8, intendedXMag); } + } else if (newcam_analogue) { @@ -371,7 +372,7 @@ static void newcam_rotate_button(void) } if (ABS(gPlayer2Controller->stickY) > 20 && newcam_modeflags & NC_FLAG_YTURN) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,(-gPlayer2Controller->stickY/8, intendedYMag)); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-gPlayer2Controller->stickY/8, intendedYMag); else if (newcam_analogue) { From 0724f0ed09a4c12d7a6971e13cc1c120fdf61785 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 21 May 2020 03:12:51 +0300 Subject: [PATCH 039/166] add fog to GL1.3 renderer uses two different methods, with the first one taking priority if it's available: a) use the fog factor supplied in the fog colors as a GL_FOG_COORD; GL_FOG_COORD is only available in GL1.4+ or when GL_EXT_fog_coord is present just blend the same triangles a second time, but replace the color with fog color and multiply the alpha by fog alpha --- src/pc/gfx/gfx_opengl_legacy.c | 107 +++++++++++++++++++++++++++++---- 1 file changed, 96 insertions(+), 11 deletions(-) diff --git a/src/pc/gfx/gfx_opengl_legacy.c b/src/pc/gfx/gfx_opengl_legacy.c index aebe91b0..21dc4a00 100644 --- a/src/pc/gfx/gfx_opengl_legacy.c +++ b/src/pc/gfx/gfx_opengl_legacy.c @@ -25,6 +25,21 @@ #define GL_GLEXT_PROTOTYPES 1 #include +// redefine this if using a different GL loader +#define mglGetProcAddress(name) SDL_GL_GetProcAddress(name) + +// we'll define and load it manually in init, just in case +typedef void (*PFNMGLFOGCOORDPOINTERPROC)(GLenum type, GLsizei stride, const void *pointer); +static PFNMGLFOGCOORDPOINTERPROC mglFogCoordPointer = NULL; + +// since these can have different names, might as well redefine them to a single one +#undef GL_FOG_COORD_SRC +#undef GL_FOG_COORD +#undef GL_FOG_COORD_ARRAY +#define GL_FOG_COORD_SRC 0x8450 +#define GL_FOG_COORD 0x8451 +#define GL_FOG_COORD_ARRAY 0x8457 + #include "gfx_cc.h" #include "gfx_rendering_api.h" #include "macros.h" @@ -65,9 +80,12 @@ static uint8_t shader_program_pool_size; static struct ShaderProgram *cur_shader = NULL; static const float *cur_buf = NULL; +static const float *cur_fog_ofs = NULL; static size_t cur_buf_size = 0; static size_t cur_buf_num_tris = 0; static size_t cur_buf_stride = 0; +static bool gl_blend = false; +static bool gl_adv_fog = false; static const float c_white[] = { 1.f, 1.f, 1.f, 1.f }; @@ -186,13 +204,18 @@ static void gfx_opengl_apply_shader(struct ShaderProgram *prg) { } if (prg->shader_id & SHADER_OPT_FOG) { - // have fog, but fog colors are the same for every vertex - // TODO: alpha ain't the same, maybe use glSecondaryColorPointer? - // TODO: or pass start and end from gsSPFogPosition somehow or calculate them from z0, w0 and a0? - // TODO: or alpha blend solid triangles on top, using the fog factor as alpha - // glEnable(GL_FOG); - // glFogi(GL_FOG_MODE, GL_LINEAR); - // glFogfv(GL_FOG_COLOR, ofs); + // fog requested, we can deal with it in one of two ways + if (gl_adv_fog) { + // if GL_EXT_fog_coord is available, use the provided fog factor as scaled depth for GL fog + const float fogrgb[] = { ofs[0], ofs[1], ofs[2] }; + glEnable(GL_FOG); + glFogfv(GL_FOG_COLOR, fogrgb); // color is the same for all verts, only intensity is different + glEnableClientState(GL_FOG_COORD_ARRAY); + mglFogCoordPointer(GL_FLOAT, cur_buf_stride, ofs + 3); // point it to alpha, which is fog factor + } else { + // if there's no fog coords available, blend it on top of normal tris later + cur_fog_ofs = ofs; + } ofs += 4; } @@ -251,8 +274,11 @@ static void gfx_opengl_unload_shader(struct ShaderProgram *old_prg) { glDisable(GL_TEXTURE0); glDisable(GL_TEXTURE_2D); glDisable(GL_ALPHA_TEST); + glDisable(GL_FOG); + cur_fog_ofs = NULL; // clear fog colors glDisableClientState(GL_COLOR_ARRAY); + if (gl_adv_fog) glDisableClientState(GL_FOG_COORD_ARRAY); } static void gfx_opengl_load_shader(struct ShaderProgram *new_prg) { @@ -401,6 +427,7 @@ static void gfx_opengl_set_scissor(int x, int y, int width, int height) { } static void gfx_opengl_set_use_alpha(bool use_alpha) { + gl_blend = use_alpha; if (use_alpha) { glEnable(GL_BLEND); } else { @@ -408,6 +435,32 @@ static void gfx_opengl_set_use_alpha(bool use_alpha) { } } +// draws the same triangles as plain fog color + fog intensity as alpha +// on top of the normal tris and blends them to achieve sort of the same effect +// as fog would +static inline void gfx_opengl_blend_fog_tris(void) { + // if a texture was used, replace it with fog color instead, but still keep the alpha + if (cur_shader->texture_used[0]) { + glActiveTexture(GL_TEXTURE0); + TEXENV_COMBINE_ON(); + // out.rgb = input0.rgb + TEXENV_COMBINE_SET1(RGB, GL_REPLACE, GL_PRIMARY_COLOR); + // out.a = texel0.a * input0.a + TEXENV_COMBINE_SET2(ALPHA, GL_MODULATE, GL_TEXTURE, GL_PRIMARY_COLOR); + } + + glEnableClientState(GL_COLOR_ARRAY); // enable color array temporarily + glColorPointer(4, GL_FLOAT, cur_buf_stride, cur_fog_ofs); // set fog colors as primary colors + if (!gl_blend) glEnable(GL_BLEND); // enable blending temporarily + glDepthFunc(GL_LEQUAL); // Z is the same as the base triangles + + glDrawArrays(GL_TRIANGLES, 0, 3 * cur_buf_num_tris); + + glDepthFunc(GL_LESS); // set back to default + if (!gl_blend) glDisable(GL_BLEND); // disable blending if it was disabled + glDisableClientState(GL_COLOR_ARRAY); // will get reenabled later anyway +} + static void gfx_opengl_draw_triangles(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris) { //printf("flushing %d tris\n", buf_vbo_num_tris); @@ -418,7 +471,10 @@ static void gfx_opengl_draw_triangles(float buf_vbo[], size_t buf_vbo_len, size_ gfx_opengl_apply_shader(cur_shader); - glDrawArrays(GL_TRIANGLES, 0, 3 * buf_vbo_num_tris); + glDrawArrays(GL_TRIANGLES, 0, 3 * cur_buf_num_tris); + + // cur_fog_ofs is only set if GL_EXT_fog_coord isn't used + if (cur_fog_ofs) gfx_opengl_blend_fog_tris(); } static inline bool gl_check_ext(const char *name) { @@ -428,10 +484,11 @@ static inline bool gl_check_ext(const char *name) { extstr = (const char *)glGetString(GL_EXTENSIONS); if (!strstr(extstr, name)) { - fprintf(stderr, "Required GL extension not supported: %s\n", name); + fprintf(stderr, "GL extension not supported: %s\n", name); return false; } + printf("GL extension detected: %s\n", name); return true; } @@ -465,16 +522,44 @@ static void gfx_opengl_init(void) { } // check extensions that we need - bool supported = + const bool supported = gl_check_ext("GL_ARB_multitexture") && gl_check_ext("GL_ARB_texture_env_combine"); if (!supported) abort(); + gl_adv_fog = false; + + // check whether we can use advanced fog shit + const bool fog_ext = + vmajor > 1 || vminor > 3 || + gl_check_ext("GL_EXT_fog_coord") || + gl_check_ext("GL_ARB_fog_coord"); + + if (fog_ext) { + // try to load manually, as this might be an extension, and even then the ext list may lie + mglFogCoordPointer = mglGetProcAddress("glFogCoordPointer"); + if (!mglFogCoordPointer) mglFogCoordPointer = mglGetProcAddress("glFogCoordPointerEXT"); + if (!mglFogCoordPointer) mglFogCoordPointer = mglGetProcAddress("glFogCoordPointerARB"); + if (!mglFogCoordPointer) + printf("glFogCoordPointer is not actually available, it won't be used.\n"); + else + gl_adv_fog = true; // appears to be all good + } + printf("GL_VERSION = %s\n", glGetString(GL_VERSION)); printf("GL_EXTENSIONS =\n%s\n", glGetString(GL_EXTENSIONS)); - // these never change + if (gl_adv_fog) { + // set fog params, they never change + printf("GL_EXT_fog_coord available, using that for fog\n"); + glFogi(GL_FOG_COORD_SRC, GL_FOG_COORD); + glFogi(GL_FOG_MODE, GL_LINEAR); + glFogf(GL_FOG_START, 0.0f); + glFogf(GL_FOG_END, 1.0f); + } + + // these also never change glEnableClientState(GL_VERTEX_ARRAY); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, c_white); From a6f7cefe96a306e357e4916b29e408b31a336ab8 Mon Sep 17 00:00:00 2001 From: IvanDSM Date: Wed, 20 May 2020 22:39:07 -0300 Subject: [PATCH 040/166] Quick fix for NODRAWINGDISTANCE=1 hanging fix --- src/game/object_list_processor.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/game/object_list_processor.h b/src/game/object_list_processor.h index 1bb5cb61..fde29d65 100644 --- a/src/game/object_list_processor.h +++ b/src/game/object_list_processor.h @@ -21,7 +21,12 @@ struct SpawnInfo; /** * The maximum number of objects that can be loaded at once. */ + +#ifdef NODRAWINGDISTANCE +#define OBJECT_POOL_CAPACITY 960 +#else #define OBJECT_POOL_CAPACITY 240 +#endif /** * Every object is categorized into an object list, which controls the order From 4cc5ffff32ac34c8402b39c5af6cf015da51c6e3 Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Thu, 21 May 2020 12:52:40 -0300 Subject: [PATCH 041/166] Undo the bettercamera update This screwed up the bettercamera for whatever reason. Urgent hotfix. Please test --- src/game/bettercamera.inc.h | 57 +++++++++++-------------------------- 1 file changed, 16 insertions(+), 41 deletions(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index 1dbe2f3b..9e34a656 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -74,9 +74,9 @@ struct newcam_hardpos newcam_fixedcam[] = #endif // noaccel s16 newcam_yaw; //Z axis rotation -f32 newcam_yaw_acc; +s8 newcam_yaw_acc; s16 newcam_tilt = 1500; //Y axis rotation -f32 newcam_tilt_acc; +s8 newcam_tilt_acc; u16 newcam_distance = 750; //The distance the camera stays from the player u16 newcam_distance_target = 750; //The distance the player camera tries to reach. f32 newcam_pos_target[3]; //The position the camera is basing calculations off. *usually* Mario. @@ -187,20 +187,13 @@ void newcam_diagnostics(void) print_text_fmt_int(32,32,"DISTANCE %d",newcam_distance); } -static s16 newcam_adjust_value(s16 var, s16 val, s8 max) +static s16 newcam_adjust_value(s16 var, s16 val) { - if (val > 0) - { - var += val; - if (var > max) - var = max; - } - else if (val < 0) - { - var += val; - if (var < max) - var = max; - } + var += val; + if (var > 100) + var = 100; + if (var < -100) + var = -100; return var; } @@ -240,8 +233,6 @@ static int ivrt(u8 axis) static void newcam_rotate_button(void) { - f32 intendedXMag; - f32 intendedYMag; if ((newcam_modeflags & NC_FLAG_8D || newcam_modeflags & NC_FLAG_4D) && newcam_modeflags & NC_FLAG_XTURN) //8 directional camera rotation input for buttons. { if ((gPlayer1Controller->buttonPressed & L_CBUTTONS) && newcam_analogue == 0) @@ -272,33 +263,27 @@ static void newcam_rotate_button(void) if (newcam_modeflags & NC_FLAG_XTURN) { if ((gPlayer1Controller->buttonDown & L_CBUTTONS) && newcam_analogue == 0) - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,accel, 100); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,accel); else if ((gPlayer1Controller->buttonDown & R_CBUTTONS) && newcam_analogue == 0) - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-accel, -100); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-accel); else - if (!newcam_analogue) - { #ifdef noaccel newcam_yaw_acc = 0; #else newcam_yaw_acc -= (newcam_yaw_acc*newcam_degrade); #endif - } } if (gPlayer1Controller->buttonDown & U_CBUTTONS && newcam_modeflags & NC_FLAG_YTURN && newcam_analogue == 0) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,accel, 100); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,accel); else if (gPlayer1Controller->buttonDown & D_CBUTTONS && newcam_modeflags & NC_FLAG_YTURN && newcam_analogue == 0) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-accel, -100); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-accel); else - if (!newcam_analogue) - { #ifdef noaccel newcam_tilt_acc = 0; #else newcam_tilt_acc -= (newcam_tilt_acc*newcam_degrade); #endif - } newcam_framessincec[0] += 1; newcam_framessincec[1] += 1; @@ -330,8 +315,6 @@ static void newcam_rotate_button(void) if (newcam_analogue == 1) //There's not much point in keeping this behind a check, but it wouldn't hurt, just incase any 2player shenanigans ever happen, it makes it easy to disable. { //The joystick values cap at 80, so divide by 8 to get the same net result at maximum turn as the button - intendedXMag = gPlayer2Controller->stickX*1.25; - intendedYMag = gPlayer2Controller->stickY*1.25; if (ABS(gPlayer2Controller->stickX) > 20 && newcam_modeflags & NC_FLAG_XTURN) { if (newcam_modeflags & NC_FLAG_8D) @@ -360,24 +343,16 @@ static void newcam_rotate_button(void) } } else - { - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-gPlayer2Controller->stickX/8, intendedXMag); - } + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,(-gPlayer2Controller->stickX/4)); } else - if (newcam_analogue) - { newcam_cstick_down = 0; newcam_yaw_acc -= (newcam_yaw_acc*newcam_degrade); - } if (ABS(gPlayer2Controller->stickY) > 20 && newcam_modeflags & NC_FLAG_YTURN) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-gPlayer2Controller->stickY/8, intendedYMag); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,(-gPlayer2Controller->stickY/4)); else - if (newcam_analogue) - { newcam_tilt_acc -= (newcam_tilt_acc*newcam_degrade); - } } if (newcam_mouse == 1) @@ -439,9 +414,9 @@ static void newcam_update_values(void) {//For tilt, this just limits it so it doesn't go further than 90 degrees either way. 90 degrees is actually 16384, but can sometimes lead to issues, so I just leave it shy of 90. u8 waterflag = 0; if (newcam_modeflags & NC_FLAG_XTURN) - newcam_yaw += ((ivrt(0)*(newcam_yaw_acc*(newcam_sensitivityX/10)))); + newcam_yaw += (ivrt(0)*(newcam_yaw_acc*(newcam_sensitivityX/10))); if (((newcam_tilt < 12000 && newcam_tilt_acc*ivrt(1) > 0) || (newcam_tilt > -12000 && newcam_tilt_acc*ivrt(1) < 0)) && newcam_modeflags & NC_FLAG_YTURN) - newcam_tilt += ((ivrt(1)*(newcam_tilt_acc*(newcam_sensitivityY/10)))); + newcam_tilt += (ivrt(1)*(newcam_tilt_acc*(newcam_sensitivityY/10))); else { if (newcam_tilt > 12000) From d139e23177f9d7f97348286f995f32426742979e Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Thu, 21 May 2020 13:40:02 -0300 Subject: [PATCH 042/166] Unrevert the bettercamera update but this time actually fix it --- src/game/bettercamera.inc.h | 57 ++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index 9e34a656..e6d3bf6f 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -74,9 +74,9 @@ struct newcam_hardpos newcam_fixedcam[] = #endif // noaccel s16 newcam_yaw; //Z axis rotation -s8 newcam_yaw_acc; +s16 newcam_yaw_acc; s16 newcam_tilt = 1500; //Y axis rotation -s8 newcam_tilt_acc; +s16 newcam_tilt_acc; u16 newcam_distance = 750; //The distance the camera stays from the player u16 newcam_distance_target = 750; //The distance the player camera tries to reach. f32 newcam_pos_target[3]; //The position the camera is basing calculations off. *usually* Mario. @@ -187,13 +187,20 @@ void newcam_diagnostics(void) print_text_fmt_int(32,32,"DISTANCE %d",newcam_distance); } -static s16 newcam_adjust_value(s16 var, s16 val) +static s16 newcam_adjust_value(s16 var, s16 val, s16 max) { - var += val; - if (var > 100) - var = 100; - if (var < -100) - var = -100; + if (val > 0) + { + var += val; + if (var > max) + var = max; + } + else if (val < 0) + { + var += val; + if (var < max) + var = max; + } return var; } @@ -233,6 +240,8 @@ static int ivrt(u8 axis) static void newcam_rotate_button(void) { + f32 intendedXMag; + f32 intendedYMag; if ((newcam_modeflags & NC_FLAG_8D || newcam_modeflags & NC_FLAG_4D) && newcam_modeflags & NC_FLAG_XTURN) //8 directional camera rotation input for buttons. { if ((gPlayer1Controller->buttonPressed & L_CBUTTONS) && newcam_analogue == 0) @@ -263,27 +272,33 @@ static void newcam_rotate_button(void) if (newcam_modeflags & NC_FLAG_XTURN) { if ((gPlayer1Controller->buttonDown & L_CBUTTONS) && newcam_analogue == 0) - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,accel); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,accel, 100); else if ((gPlayer1Controller->buttonDown & R_CBUTTONS) && newcam_analogue == 0) - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-accel); + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-accel, -100); else + if (!newcam_analogue) + { #ifdef noaccel newcam_yaw_acc = 0; #else newcam_yaw_acc -= (newcam_yaw_acc*newcam_degrade); #endif + } } if (gPlayer1Controller->buttonDown & U_CBUTTONS && newcam_modeflags & NC_FLAG_YTURN && newcam_analogue == 0) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,accel); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,accel, 100); else if (gPlayer1Controller->buttonDown & D_CBUTTONS && newcam_modeflags & NC_FLAG_YTURN && newcam_analogue == 0) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-accel); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-accel, -100); else + if (!newcam_analogue) + { #ifdef noaccel newcam_tilt_acc = 0; #else newcam_tilt_acc -= (newcam_tilt_acc*newcam_degrade); #endif + } newcam_framessincec[0] += 1; newcam_framessincec[1] += 1; @@ -315,6 +330,8 @@ static void newcam_rotate_button(void) if (newcam_analogue == 1) //There's not much point in keeping this behind a check, but it wouldn't hurt, just incase any 2player shenanigans ever happen, it makes it easy to disable. { //The joystick values cap at 80, so divide by 8 to get the same net result at maximum turn as the button + intendedXMag = gPlayer2Controller->stickX*1.25; + intendedYMag = gPlayer2Controller->stickY*1.25; if (ABS(gPlayer2Controller->stickX) > 20 && newcam_modeflags & NC_FLAG_XTURN) { if (newcam_modeflags & NC_FLAG_8D) @@ -343,16 +360,24 @@ static void newcam_rotate_button(void) } } else - newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,(-gPlayer2Controller->stickX/4)); + { + newcam_yaw_acc = newcam_adjust_value(newcam_yaw_acc,-gPlayer2Controller->stickX/8, intendedXMag); + } } else + if (newcam_analogue) + { newcam_cstick_down = 0; newcam_yaw_acc -= (newcam_yaw_acc*newcam_degrade); + } if (ABS(gPlayer2Controller->stickY) > 20 && newcam_modeflags & NC_FLAG_YTURN) - newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,(-gPlayer2Controller->stickY/4)); + newcam_tilt_acc = newcam_adjust_value(newcam_tilt_acc,-gPlayer2Controller->stickY/8, intendedYMag); else + if (newcam_analogue) + { newcam_tilt_acc -= (newcam_tilt_acc*newcam_degrade); + } } if (newcam_mouse == 1) @@ -414,9 +439,9 @@ static void newcam_update_values(void) {//For tilt, this just limits it so it doesn't go further than 90 degrees either way. 90 degrees is actually 16384, but can sometimes lead to issues, so I just leave it shy of 90. u8 waterflag = 0; if (newcam_modeflags & NC_FLAG_XTURN) - newcam_yaw += (ivrt(0)*(newcam_yaw_acc*(newcam_sensitivityX/10))); + newcam_yaw += ((ivrt(0)*(newcam_yaw_acc*(newcam_sensitivityX/10)))); if (((newcam_tilt < 12000 && newcam_tilt_acc*ivrt(1) > 0) || (newcam_tilt > -12000 && newcam_tilt_acc*ivrt(1) < 0)) && newcam_modeflags & NC_FLAG_YTURN) - newcam_tilt += (ivrt(1)*(newcam_tilt_acc*(newcam_sensitivityY/10))); + newcam_tilt += ((ivrt(1)*(newcam_tilt_acc*(newcam_sensitivityY/10)))); else { if (newcam_tilt > 12000) From 1298cd601734bfd5a1455f4d241272da74d7a429 Mon Sep 17 00:00:00 2001 From: IvanDSM Date: Thu, 21 May 2020 14:19:20 -0300 Subject: [PATCH 043/166] Add commit hash to window title for nightly builds. This also adds a flag for detecting nightly builds in the code. --- Makefile | 9 +++++++++ src/pc/gfx/gfx_sdl2.c | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ae8b01a4..9356281c 100644 --- a/Makefile +++ b/Makefile @@ -123,6 +123,15 @@ endif endif endif +# Stuff for showing the git hash in the intro on nightly builds +# From https://stackoverflow.com/questions/44038428/include-git-commit-hash-and-or-branch-name-in-c-c-source +ifeq ($(shell git rev-parse --abbrev-ref HEAD),nightly) + $(info Hello Caldera!!! I'm here all week!) + GIT_HASH=`git rev-parse --short HEAD` + COMPILE_TIME=`date -u +'%Y-%m-%d %H:%M:%S UTC'` + VERSION_CFLAGS += -DNIGHTLY -DGIT_HASH="\"$(GIT_HASH)\"" -DCOMPILE_TIME="\"$(COMPILE_TIME)\"" +endif + # Microcode ifeq ($(GRUCODE),f3dex) # Fast3DEX diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index e86a100c..19ef621f 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -156,13 +156,18 @@ static void gfx_sdl_init(void) { else if (gCLIOpts.FullScreen == 2) configWindow.fullscreen = false; - const char* window_title = + const char window_title[96] = #ifndef USE_GLES "Super Mario 64 PC port (OpenGL)"; #else "Super Mario 64 PC port (OpenGL_ES2)"; #endif + #ifdef NIGHTLY + strcat(window_title, " nightly "); + strcat(window_title, GIT_HASH); + #endif + wnd = SDL_CreateWindow( window_title, configWindow.x, configWindow.y, configWindow.w, configWindow.h, From aaf6eab582b7f1642effcb3de519e963a989fb9c Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 22 May 2020 00:27:51 +0300 Subject: [PATCH 044/166] fix text rendering on JP and (maybe) EU also cache converted IA1 characters so it wouldn't reconvert them every goddamn time they're rendered --- include/macros.h | 16 +++++++++++ src/game/ingame_menu.c | 62 +++++++++++++++++++++++++----------------- src/game/save_file.c | 7 +---- 3 files changed, 54 insertions(+), 31 deletions(-) diff --git a/include/macros.h b/include/macros.h index bcace7fb..478d6ce2 100644 --- a/include/macros.h +++ b/include/macros.h @@ -51,4 +51,20 @@ #define PHYSICAL_TO_VIRTUAL(addr) ((uintptr_t)(addr)) #define VIRTUAL_TO_PHYSICAL2(addr) ((void *)(addr)) +// Byteswap macros +#define BSWAP16(x) \ + ( (((x) >> 8) & 0x00FF) | (((x) << 8) & 0xFF00) ) +#define BSWAP32(x) \ + ( (((x) >> 24) & 0x000000FF) | (((x) >> 8) & 0x0000FF00) | \ + (((x) << 8) & 0x00FF0000) | (((x) << 24) & 0xFF000000) ) + +// Convenience macros for endian conversions +#if IS_BIG_ENDIAN +#define BE_TO_HOST16(x) (x) +#define BE_TO_HOST32(x) (x) +#else +#define BE_TO_HOST16(x) BSWAP16(x) +#define BE_TO_HOST32(x) BSWAP32(x) +#endif + #endif diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index 4ef6ecf8..8661568e 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -19,6 +19,7 @@ #include "print.h" #include "engine/math_util.h" #include "course_table.h" +#include "macros.h" #include "pc/cheats.h" #ifdef BETTERCAMERA #include "bettercamera.h" @@ -127,6 +128,16 @@ u8 gMenuHoldKeyIndex = 0; u8 gMenuHoldKeyTimer = 0; s32 gDialogResponse = 0; +#if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU) +#ifdef VERSION_EU +#define CHCACHE_BUFLEN (8 * 8) // EU only converts 8x8 characters +#else +#define CHCACHE_BUFLEN (8 * 16) // JP only converts 8x16 or 16x8 characters +#endif +// stores char data unpacked from ia1 to ia8 or ia1 to ia4 +// so that it won't be reconverted every time a character is rendered +static struct CachedChar { u8 used; u8 data[CHCACHE_BUFLEN]; } charCache[256]; +#endif // VERSION void create_dl_identity_matrix(void) { Mtx *matrix = (Mtx *) alloc_display_list(sizeof(Mtx)); @@ -206,23 +217,19 @@ void create_dl_ortho_matrix(void) { gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH) } -static u8 *alloc_ia8_text_from_i1(u16 *in, s16 width, s16 height) { +#if defined(VERSION_JP) || defined(VERSION_SH) +static inline void alloc_ia8_text_from_i1(u8 *out, u16 *in, s16 width, s16 height) { s32 inPos; u16 bitMask; - u8 *out; + u16 inWord; s16 outPos = 0; - out = alloc_display_list((u32) width * (u32) height); - - if (out == NULL) { - return NULL; - } - for (inPos = 0; inPos < (width * height) / 16; inPos++) { + inWord = BE_TO_HOST16(in[inPos]); bitMask = 0x8000; while (bitMask != 0) { - if (in[inPos] & bitMask) { + if (inWord & bitMask) { out[outPos] = 0xFF; } else { out[outPos] = 0x00; @@ -232,10 +239,17 @@ static u8 *alloc_ia8_text_from_i1(u16 *in, s16 width, s16 height) { outPos++; } } - - return out; } +static inline u8 *convert_ia8_char(u8 c, u16 *tex, s16 w, s16 h) { + if (!charCache[c].used) { + charCache[c].used = 1; + alloc_ia8_text_from_i1(charCache[c].data, tex, w, h); + } + return charCache[c].data; +} +#endif + void render_generic_char(u8 c) { void **fontLUT; void *packedTexture; @@ -247,7 +261,7 @@ void render_generic_char(u8 c) { packedTexture = segmented_to_virtual(fontLUT[c]); #if defined(VERSION_JP) || defined(VERSION_SH) - unpackedTexture = alloc_ia8_text_from_i1(packedTexture, 8, 16); + unpackedTexture = convert_ia8_char(c, packedTexture, 8, 16); gDPPipeSync(gDisplayListHead++); gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_8b, 1, VIRTUAL_TO_PHYSICAL(unpackedTexture)); @@ -265,20 +279,12 @@ void render_generic_char(u8 c) { } #ifdef VERSION_EU -u8 *alloc_ia4_tex_from_i1(u8 *in, s16 width, s16 height) { +static inline void alloc_ia4_tex_from_i1(u8 *out, u8 *in, s16 width, s16 height) { u32 size = (u32) width * (u32) height; - u8 *out; s32 inPos; - s16 outPos; + s16 outPos = 0; u8 bitMask; - outPos = 0; - out = (u8 *) alloc_display_list(size); - - if (out == NULL) { - return NULL; - } - for (inPos = 0; inPos < (width * height) / 4; inPos++) { bitMask = 0x80; while (bitMask != 0) { @@ -289,8 +295,14 @@ u8 *alloc_ia4_tex_from_i1(u8 *in, s16 width, s16 height) { outPos++; } } +} - return out; +static inline u8 *convert_ia4_char(u8 c, u8 *tex, s16 w, s16 h) { + if (!charCache[c].used) { + charCache[c].used = 1; + alloc_ia4_tex_from_i1(charCache[c].data, tex, w, h); + } + return charCache[c].data; } void render_generic_char_at_pos(s16 xPos, s16 yPos, u8 c) { @@ -300,7 +312,7 @@ void render_generic_char_at_pos(s16 xPos, s16 yPos, u8 c) { fontLUT = segmented_to_virtual(main_font_lut); packedTexture = segmented_to_virtual(fontLUT[c]); - unpackedTexture = alloc_ia4_tex_from_i1(packedTexture, 8, 8); + unpackedTexture = convert_ia4_char(c, packedTexture, 8, 8); gDPPipeSync(gDisplayListHead++); gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, VIRTUAL_TO_PHYSICAL(unpackedTexture)); @@ -1025,7 +1037,7 @@ void render_generic_dialog_char_at_pos(struct DialogEntry *dialog, s16 x, s16 y, fontLUT = segmented_to_virtual(main_font_lut); packedTexture = segmented_to_virtual(fontLUT[c]); - unpackedTexture = alloc_ia4_tex_from_i1(packedTexture, 8, 8); + unpackedTexture = convert_ia4_char(c, packedTexture, 8, 8); gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, VIRTUAL_TO_PHYSICAL(unpackedTexture)); gSPDisplayList(gDisplayListHead++, dl_ia_text_tex_settings); diff --git a/src/game/save_file.c b/src/game/save_file.c index d7899314..9facaf3c 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -11,17 +11,12 @@ #include "level_table.h" #include "course_table.h" #include "thread6.h" +#include "macros.h" #include "pc/ini.h" #define MENU_DATA_MAGIC 0x4849 #define SAVE_FILE_MAGIC 0x4441 -#define BSWAP16(x) \ - ( (((x) >> 8) & 0x00FF) | (((x) << 8) & 0xFF00) ) -#define BSWAP32(x) \ - ( (((x) >> 24) & 0x000000FF) | (((x) >> 8) & 0x0000FF00) | \ - (((x) << 8) & 0x00FF0000) | (((x) << 24) & 0xFF000000) ) - STATIC_ASSERT(sizeof(struct SaveBuffer) == EEPROM_SIZE, "eeprom buffer size must match"); extern struct SaveBuffer gSaveBuffer; From a9d16ea76adf4106492b8f96d173cdfd9712a1c1 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 22 May 2020 01:35:26 +0300 Subject: [PATCH 045/166] unfuck BSWAP16 macro, replace it with BE_TO_HOST16() in audio --- include/macros.h | 5 ++--- src/audio/data.c | 6 +++--- src/audio/effects.c | 8 ++++---- src/audio/effects.h | 10 ++++------ src/game/ingame_menu.c | 8 ++++---- 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/include/macros.h b/include/macros.h index 478d6ce2..f93642fb 100644 --- a/include/macros.h +++ b/include/macros.h @@ -52,9 +52,8 @@ #define VIRTUAL_TO_PHYSICAL2(addr) ((void *)(addr)) // Byteswap macros -#define BSWAP16(x) \ - ( (((x) >> 8) & 0x00FF) | (((x) << 8) & 0xFF00) ) -#define BSWAP32(x) \ +#define BSWAP16(x) (((x) & 0xFF) << 8 | (((x) >> 8) & 0xFF)) +#define BSWAP32(x) \ ( (((x) >> 24) & 0x000000FF) | (((x) >> 8) & 0x0000FF00) | \ (((x) << 8) & 0x00FF0000) | (((x) << 24) & 0xFF000000) ) diff --git a/src/audio/data.c b/src/audio/data.c index 10bbe19c..711ee847 100644 --- a/src/audio/data.c +++ b/src/audio/data.c @@ -175,9 +175,9 @@ s8 gVibratoCurve[16] = { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, #endif struct AdsrEnvelope gDefaultEnvelope[] = { - { BSWAP16(4), BSWAP16(32000) }, // go from 0 to 32000 over the course of 16ms - { BSWAP16(1000), BSWAP16(32000) }, // stay there for 4.16 seconds - { BSWAP16(ADSR_HANG), 0 } // then continue staying there + { BE_TO_HOST16(4), BE_TO_HOST16(32000) }, // go from 0 to 32000 over the course of 16ms + { BE_TO_HOST16(1000), BE_TO_HOST16(32000) }, // stay there for 4.16 seconds + { BE_TO_HOST16(ADSR_HANG), 0 } // then continue staying there }; #ifdef VERSION_EU diff --git a/src/audio/effects.c b/src/audio/effects.c index 29446094..2218fba7 100644 --- a/src/audio/effects.c +++ b/src/audio/effects.c @@ -391,7 +391,7 @@ s32 adsr_update(struct AdsrState *adsr) { // fallthrough case ADSR_STATE_LOOP: - adsr->delay = BSWAP16(adsr->envelope[adsr->envIndex].delay); + adsr->delay = BE_TO_HOST16(adsr->envelope[adsr->envIndex].delay); switch (adsr->delay) { case ADSR_DISABLE: adsr->state = ADSR_STATE_DISABLED; @@ -400,7 +400,7 @@ s32 adsr_update(struct AdsrState *adsr) { adsr->state = ADSR_STATE_HANG; break; case ADSR_GOTO: - adsr->envIndex = BSWAP16(adsr->envelope[adsr->envIndex].arg); + adsr->envIndex = BE_TO_HOST16(adsr->envelope[adsr->envIndex].arg); break; case ADSR_RESTART: adsr->state = ADSR_STATE_INITIAL; @@ -411,11 +411,11 @@ s32 adsr_update(struct AdsrState *adsr) { if (adsr->delay >= 4) { adsr->delay = adsr->delay * gAudioBufferParameters.updatesPerFrame / 4; } - adsr->target = (f32) BSWAP16(adsr->envelope[adsr->envIndex].arg) / 32767.0; + adsr->target = (f32) BE_TO_HOST16(adsr->envelope[adsr->envIndex].arg) / 32767.0; adsr->target = adsr->target * adsr->target; adsr->velocity = (adsr->target - adsr->current) / adsr->delay; #else - adsr->target = BSWAP16(adsr->envelope[adsr->envIndex].arg); + adsr->target = BE_TO_HOST16(adsr->envelope[adsr->envIndex].arg); adsr->velocity = ((adsr->target - adsr->current) << 0x10) / adsr->delay; #endif adsr->state = ADSR_STATE_FADE; diff --git a/src/audio/effects.h b/src/audio/effects.h index bb842c77..425eff57 100644 --- a/src/audio/effects.h +++ b/src/audio/effects.h @@ -3,6 +3,7 @@ #include "internal.h" #include "platform_info.h" +#include "macros.h" #define ADSR_STATE_DISABLED 0 #define ADSR_STATE_INITIAL 1 @@ -24,12 +25,9 @@ #define ADSR_RESTART -3 // Envelopes are always stored as big endian, to match sequence files which are -// byte blobs and can embed envelopes. Hence this byteswapping macro. -#if IS_BIG_ENDIAN -#define BSWAP16(x) (x) -#else -#define BSWAP16(x) (((x) & 0xff) << 8 | (((x) >> 8) & 0xff)) -#endif +// byte blobs and can embed envelopes. +// BSWAP16() definition has been moved to macros.h. Use BE_TO_HOST16() for the +// same effect in the future. void sequence_player_process_sound(struct SequencePlayer *seqPlayer); void note_vibrato_update(struct Note *note); diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index 8661568e..d7de9d4e 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -130,11 +130,11 @@ s32 gDialogResponse = 0; #if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU) #ifdef VERSION_EU -#define CHCACHE_BUFLEN (8 * 8) // EU only converts 8x8 characters +#define CHCACHE_BUFLEN (8 * 8) // EU only converts 8x8 #else #define CHCACHE_BUFLEN (8 * 16) // JP only converts 8x16 or 16x8 characters #endif -// stores char data unpacked from ia1 to ia8 or ia1 to ia4 +// stores char data unpacked from ia1 to ia8 or ia4 // so that it won't be reconverted every time a character is rendered static struct CachedChar { u8 used; u8 data[CHCACHE_BUFLEN]; } charCache[256]; #endif // VERSION @@ -279,7 +279,7 @@ void render_generic_char(u8 c) { } #ifdef VERSION_EU -static inline void alloc_ia4_tex_from_i1(u8 *out, u8 *in, s16 width, s16 height) { +static void alloc_ia4_tex_from_i1(u8 *out, u8 *in, s16 width, s16 height) { u32 size = (u32) width * (u32) height; s32 inPos; s16 outPos = 0; @@ -297,7 +297,7 @@ static inline void alloc_ia4_tex_from_i1(u8 *out, u8 *in, s16 width, s16 height) } } -static inline u8 *convert_ia4_char(u8 c, u8 *tex, s16 w, s16 h) { +static u8 *convert_ia4_char(u8 c, u8 *tex, s16 w, s16 h) { if (!charCache[c].used) { charCache[c].used = 1; alloc_ia4_tex_from_i1(charCache[c].data, tex, w, h); From 686ea5be7b805498088fe0131837a62bb6298906 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 22 May 2020 01:36:39 +0300 Subject: [PATCH 046/166] separate options menu strings and add JP strings --- Makefile | 4 + include/text_options_strings.h.in | 138 ++++++++++++++++++++++++++++++ include/text_strings.h.in | 62 ++------------ src/game/options_menu.c | 2 +- 4 files changed, 148 insertions(+), 58 deletions(-) create mode 100644 include/text_options_strings.h.in diff --git a/Makefile b/Makefile index 9356281c..4acdb9de 100644 --- a/Makefile +++ b/Makefile @@ -639,6 +639,9 @@ $(BUILD_DIR)/include/text_strings.h: include/text_strings.h.in $(BUILD_DIR)/include/text_menu_strings.h: include/text_menu_strings.h.in $(TEXTCONV) charmap_menu.txt $< $@ +$(BUILD_DIR)/include/text_options_strings.h: include/text_options_strings.h.in + $(TEXTCONV) charmap.txt $< $@ + ifeq ($(VERSION),eu) TEXT_DIRS := text/de text/us text/fr @@ -678,6 +681,7 @@ ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS) $(GOD DUMMY != mkdir -p $(ALL_DIRS) $(BUILD_DIR)/include/text_strings.h: $(BUILD_DIR)/include/text_menu_strings.h +$(BUILD_DIR)/include/text_strings.h: $(BUILD_DIR)/include/text_options_strings.h ifeq ($(VERSION),eu) $(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in new file mode 100644 index 00000000..7580ec9e --- /dev/null +++ b/include/text_options_strings.h.in @@ -0,0 +1,138 @@ +#ifndef TEXT_OPTIONS_STRINGS_H +#define TEXT_OPTIONS_STRINGS_H + +/* Extended options menu text */ + +// Menu title strings + +#define TEXT_OPT_OPTIONS _("OPTIONS") +#define TEXT_OPT_CAMERA _("CAMERA") +#define TEXT_OPT_CONTROLS _("CONTROLS") +#define TEXT_OPT_VIDEO _("DISPLAY") +#define TEXT_OPT_AUDIO _("SOUND") +#define TEXT_OPT_CHEATS _("CHEATS") + +// Markers + +#define TEXT_OPT_HIGHLIGHT _("O") +#define TEXT_OPT_UNBOUND _("NONE") + +// Language specific strings + +#if defined(VERSION_JP) || defined(VERSION_SH) + +// TODO: Actually translate this to JP + +// No . in JP + +#define TEXT_OPT_PRESSKEY _("・・・") + +// Option strings + +#define TEXT_OPT_BUTTON1 _("R OPTIONS") +#define TEXT_OPT_BUTTON2 _("R RETURN") +#define TEXT_OPT_ENABLED _("ENABLED") +#define TEXT_OPT_DISABLED _("DISABLED") +#define TEXT_OPT_CAMX _("CAMERA X SENSITIVITY") +#define TEXT_OPT_CAMY _("CAMERA Y SENSITIVITY") +#define TEXT_OPT_INVERTX _("INVERT X AXIS") +#define TEXT_OPT_INVERTY _("INVERT Y AXIS") +#define TEXT_OPT_CAMC _("CAMERA CENTRE AGGRESSION") +#define TEXT_OPT_CAMP _("CAMERA PAN LEVEL") +#define TEXT_OPT_CAMD _("CAMERA DECELERATION") +#define TEXT_OPT_ANALOGUE _("ANALOGUE CAMERA") +#define TEXT_OPT_MOUSE _("MOUSE LOOK") +#define TEXT_OPT_TEXFILTER _("TEXTURE FILTERING") +#define TEXT_OPT_FSCREEN _("FULLSCREEN") +#define TEXT_OPT_NEAREST _("NEAREST") +#define TEXT_OPT_LINEAR _("LINEAR") +#define TEXT_OPT_MVOLUME _("MASTER VOLUME") +#define TEXT_OPT_VSYNC _("VERTICAL SYNC") +#define TEXT_OPT_DOUBLE _("DOUBLE") +#define TEXT_RESET_WINDOW _("RESET WINDOW") +#define TEXT_OPT_HUD _("HUD") + +#define TEXT_BIND_A _("A BUTTON") +#define TEXT_BIND_B _("B BUTTON") +#define TEXT_BIND_START _("START BUTTON") +#define TEXT_BIND_L _("L TRIGGER") +#define TEXT_BIND_R _("R TRIGGER") +#define TEXT_BIND_Z _("Z TRIGGER") +#define TEXT_BIND_C_UP _("C-UP") +#define TEXT_BIND_C_DOWN _("C-DOWN") +#define TEXT_BIND_C_LEFT _("C-LEFT") +#define TEXT_BIND_C_RIGHT _("C-RIGHT") +#define TEXT_BIND_UP _("STICK UP") +#define TEXT_BIND_DOWN _("STICK DOWN") +#define TEXT_BIND_LEFT _("STICK LEFT") +#define TEXT_BIND_RIGHT _("STICK RIGHT") + +#define TEXT_OPT_CHEAT1 _("ENABLE CHEATS") +#define TEXT_OPT_CHEAT2 _("MOONJUMP (PRESS L)") +#define TEXT_OPT_CHEAT3 _("INVINCIBLE MARIO") +#define TEXT_OPT_CHEAT4 _("INFINITE LIVES") +#define TEXT_OPT_CHEAT5 _("SUPER SPEED") +#define TEXT_OPT_CHEAT6 _("SUPER RESPONSIVE CONTROLS") +#define TEXT_OPT_CHEAT7 _("EXIT COURSE AT ANY TIME") +#define TEXT_OPT_CHEAT8 _("HUGE MARIO") +#define TEXT_OPT_CHEAT9 _("TINY MARIO") + +#else // VERSION + +// Markers + +#define TEXT_OPT_PRESSKEY _("...") + +// Option strings + +#define TEXT_OPT_BUTTON1 _("[R] Options") +#define TEXT_OPT_BUTTON2 _("[R] Return") +#define TEXT_OPT_ENABLED _("Enabled") +#define TEXT_OPT_DISABLED _("Disabled") +#define TEXT_OPT_CAMX _("Camera X Sensitivity") +#define TEXT_OPT_CAMY _("Camera Y Sensitivity") +#define TEXT_OPT_INVERTX _("Invert X Axis") +#define TEXT_OPT_INVERTY _("Invert Y Axis") +#define TEXT_OPT_CAMC _("Camera Centre Aggression") +#define TEXT_OPT_CAMP _("Camera Pan Level") +#define TEXT_OPT_CAMD _("Camera Deceleration") +#define TEXT_OPT_ANALOGUE _("Analogue Camera") +#define TEXT_OPT_MOUSE _("Mouse Look") +#define TEXT_OPT_TEXFILTER _("Texture Filtering") +#define TEXT_OPT_FSCREEN _("Fullscreen") +#define TEXT_OPT_NEAREST _("Nearest") +#define TEXT_OPT_LINEAR _("Linear") +#define TEXT_OPT_MVOLUME _("Master Volume") +#define TEXT_OPT_VSYNC _("Vertical Sync") +#define TEXT_OPT_DOUBLE _("Double") +#define TEXT_RESET_WINDOW _("Reset Window") +#define TEXT_OPT_HUD _("HUD") + +#define TEXT_BIND_A _("A Button") +#define TEXT_BIND_B _("B Button") +#define TEXT_BIND_START _("Start Button") +#define TEXT_BIND_L _("L Trigger") +#define TEXT_BIND_R _("R Trigger") +#define TEXT_BIND_Z _("Z Trigger") +#define TEXT_BIND_C_UP _("C-Up") +#define TEXT_BIND_C_DOWN _("C-Down") +#define TEXT_BIND_C_LEFT _("C-Left") +#define TEXT_BIND_C_RIGHT _("C-Right") +#define TEXT_BIND_UP _("Stick Up") +#define TEXT_BIND_DOWN _("Stick Down") +#define TEXT_BIND_LEFT _("Stick Left") +#define TEXT_BIND_RIGHT _("Stick Right") + +#define TEXT_OPT_CHEAT1 _("Enable cheats") +#define TEXT_OPT_CHEAT2 _("Moonjump (Press L)") +#define TEXT_OPT_CHEAT3 _("Invincible Mario") +#define TEXT_OPT_CHEAT4 _("Infinite lives") +#define TEXT_OPT_CHEAT5 _("Super speed") +#define TEXT_OPT_CHEAT6 _("Super responsive controls") +#define TEXT_OPT_CHEAT7 _("Exit course at any time") +#define TEXT_OPT_CHEAT8 _("Huge Mario") +#define TEXT_OPT_CHEAT9 _("Tiny Mario") + +#endif // VERSION + +#endif // TEXT_OPTIONS_STRINGS_H diff --git a/include/text_strings.h.in b/include/text_strings.h.in index d4ec173a..786e3a36 100644 --- a/include/text_strings.h.in +++ b/include/text_strings.h.in @@ -1,64 +1,12 @@ - #ifndef TEXT_STRINGS_H +#ifndef TEXT_STRINGS_H #define TEXT_STRINGS_H #include "text_menu_strings.h" -#define TEXT_OPT_CAMX _("Camera X Sensitivity") -#define TEXT_OPT_CAMY _("Camera Y Sensitivity") -#define TEXT_OPT_INVERTX _("Invert X Axis") -#define TEXT_OPT_INVERTY _("Invert Y Axis") -#define TEXT_OPT_CAMC _("Camera Centre Aggression") -#define TEXT_OPT_CAMP _("Camera Pan Level") -#define TEXT_OPT_CAMD _("Camera Deceleration") -#define TEXT_OPT_ENABLED _("Enabled") -#define TEXT_OPT_DISABLED _("Disabled") -#define TEXT_OPT_BUTTON1 _("[R]: Options") -#define TEXT_OPT_BUTTON2 _("[R]: Return") -#define TEXT_OPT_OPTIONS _("OPTIONS") -#define TEXT_OPT_CAMERA _("CAMERA") -#define TEXT_OPT_CONTROLS _("CONTROLS") -#define TEXT_OPT_VIDEO _("DISPLAY") -#define TEXT_OPT_AUDIO _("SOUND") -#define TEXT_OPT_HIGHLIGHT _("O") -#define TEXT_OPT_ANALOGUE _("Analogue Camera") -#define TEXT_OPT_MOUSE _("Mouse Look") -#define TEXT_OPT_TEXFILTER _("Texture Filtering") -#define TEXT_OPT_FSCREEN _("Fullscreen") -#define TEXT_OPT_NEAREST _("Nearest") -#define TEXT_OPT_LINEAR _("Linear") -#define TEXT_OPT_MVOLUME _("Master Volume") -#define TEXT_OPT_VSYNC _("Vertical Sync") -#define TEXT_OPT_DOUBLE _("Double") -#define TEXT_RESET_WINDOW _("Reset Window") -#define TEXT_OPT_HUD _("HUD") +#ifdef EXT_OPTIONS_MENU +#include "text_options_strings.h" +#endif -#define TEXT_OPT_UNBOUND _("NONE") -#define TEXT_OPT_PRESSKEY _("...") -#define TEXT_BIND_A _("A Button") -#define TEXT_BIND_B _("B Button") -#define TEXT_BIND_START _("Start Button") -#define TEXT_BIND_L _("L Trigger") -#define TEXT_BIND_R _("R Trigger") -#define TEXT_BIND_Z _("Z Trigger") -#define TEXT_BIND_C_UP _("C-Up") -#define TEXT_BIND_C_DOWN _("C-Down") -#define TEXT_BIND_C_LEFT _("C-Left") -#define TEXT_BIND_C_RIGHT _("C-Right") -#define TEXT_BIND_UP _("Stick Up") -#define TEXT_BIND_DOWN _("Stick Down") -#define TEXT_BIND_LEFT _("Stick Left") -#define TEXT_BIND_RIGHT _("Stick Right") - -#define TEXT_OPT_CHEATS _("CHEATS") -#define TEXT_OPT_CHEAT1 _("Enable cheats") -#define TEXT_OPT_CHEAT2 _("Moonjump (Press L)") -#define TEXT_OPT_CHEAT3 _("Invincible Mario") -#define TEXT_OPT_CHEAT4 _("Infinite lives") -#define TEXT_OPT_CHEAT5 _("Super speed") -#define TEXT_OPT_CHEAT6 _("Super responsive controls") -#define TEXT_OPT_CHEAT7 _("Exit course at any time") -#define TEXT_OPT_CHEAT8 _("Huge Mario") -#define TEXT_OPT_CHEAT9 _("Tiny Mario") /** * Global Symbols */ @@ -146,7 +94,7 @@ #define TEXT_COURSE _("コース") #define TEXT_MYSCORE _("マイスコア") #define TEXT_CONTINUE _("つづけて マリオする?") -#define TEXT_EXIT_GAME _("ゲームをしゅうりょうする?") +#define TEXT_EXIT_GAME _("ゲームをしゅうりょうする") #define TEXT_EXIT_COURSE _("コースからでる?") #define TEXT_CAMERA_ANGLE_R _("Rボタンのカメラきりかえ") diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 6c9c1a1c..8d1661bf 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -462,7 +462,7 @@ void optmenu_draw(void) { //This has been separated for interesting reasons. Don't question it. void optmenu_draw_prompt(void) { gSPDisplayList(gDisplayListHead++, dl_ia_text_begin); - optmenu_draw_text(278, 212, menuStr[1 + optmenu_open], 0); + optmenu_draw_text(264, 212, menuStr[1 + optmenu_open], 0); gSPDisplayList(gDisplayListHead++, dl_ia_text_end); } From 4bbde37464e736e38ba526a3edfd7c47986d00d8 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 22 May 2020 01:42:07 +0300 Subject: [PATCH 047/166] this ain't const anymore --- src/pc/gfx/gfx_sdl2.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index 19ef621f..58ef09af 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -156,7 +156,7 @@ static void gfx_sdl_init(void) { else if (gCLIOpts.FullScreen == 2) configWindow.fullscreen = false; - const char window_title[96] = + char window_title[96] = #ifndef USE_GLES "Super Mario 64 PC port (OpenGL)"; #else @@ -164,8 +164,7 @@ static void gfx_sdl_init(void) { #endif #ifdef NIGHTLY - strcat(window_title, " nightly "); - strcat(window_title, GIT_HASH); + strcat(window_title, " nightly " GIT_HASH); #endif wnd = SDL_CreateWindow( From 37ff33b0a2c5493933b4d4d49cbcc3887f78733f Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 24 May 2020 23:49:49 +0900 Subject: [PATCH 048/166] Added blank SDL functions for rumble support. --- src/pc/controller/controller_entry_point.c | 13 ++++++++++++- src/pc/controller/controller_sdl.c | 12 ++++++++++++ src/pc/controller/controller_sdl.h | 4 ++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/pc/controller/controller_entry_point.c b/src/pc/controller/controller_entry_point.c index 90c10c1d..4887c6ff 100644 --- a/src/pc/controller/controller_entry_point.c +++ b/src/pc/controller/controller_entry_point.c @@ -3,7 +3,6 @@ #include "controller_recorded_tas.h" #include "controller_keyboard.h" - #include "controller_sdl.h" // Analog camera movement by Pathétique (github.com/vrmiguel), y0shin and Mors @@ -28,6 +27,18 @@ s32 osContInit(OSMesgQueue *mq, u8 *controllerBits, OSContStatus *status) { return 0; } +s32 osMotorStart(void *pfs) { + return controller_rumble_play(0.5, 1000); +} + +s32 osMotorStop(void *pfs) { + return controller_rumble_stop(); +} + +u32 osMotorInit(OSMesgQueue *mq, void *pfs, s32 port) { + return controller_rumble_init(); +} + s32 osContStartReadData(OSMesgQueue *mesg) { return 0; } diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index cbdd6178..7690e785 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -217,6 +217,18 @@ static void controller_sdl_shutdown(void) { init_ok = false; } +s32 controller_rumble_init(void) { + return 0; +} + +s32 controller_rumble_play(f32 strength, u32 length) { + return 0; +} + +s32 controller_rumble_stop(void) { + return 0; +} + struct ControllerAPI controller_sdl = { VK_BASE_SDL_GAMEPAD, controller_sdl_init, diff --git a/src/pc/controller/controller_sdl.h b/src/pc/controller/controller_sdl.h index bbe8a62c..8a3a587c 100644 --- a/src/pc/controller/controller_sdl.h +++ b/src/pc/controller/controller_sdl.h @@ -7,4 +7,8 @@ extern struct ControllerAPI controller_sdl; +s32 controller_rumble_init(void); +s32 controller_rumble_play(f32 strength, u32 length); +s32 controller_rumble_stop(void); + #endif From 19990cde389aac999290483ee2f0070e28df9508 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 24 May 2020 23:50:55 +0900 Subject: [PATCH 049/166] Secret Cheat was added --- include/text_options_strings.h.in | 8 ++++++++ include/text_strings.h.in | 2 +- src/game/options_menu.c | 9 ++++++++- src/pc/cheats.h | 4 ++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 7580ec9e..92edd6b1 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -76,6 +76,10 @@ #define TEXT_OPT_CHEAT7 _("EXIT COURSE AT ANY TIME") #define TEXT_OPT_CHEAT8 _("HUGE MARIO") #define TEXT_OPT_CHEAT9 _("TINY MARIO") +#define TEXT_OPT_CHEAT10 _("UNKNOWN 1") +#define TEXT_OPT_CHEAT11 _("UNKNOWN 2") +#define TEXT_OPT_CHEAT12 _("UNKNOWN 3") +#define TEXT_OPT_CHEAT13 _("SUPER SECRET CHEAT") #else // VERSION @@ -132,6 +136,10 @@ #define TEXT_OPT_CHEAT7 _("Exit course at any time") #define TEXT_OPT_CHEAT8 _("Huge Mario") #define TEXT_OPT_CHEAT9 _("Tiny Mario") +#define TEXT_OPT_CHEAT10 _("Unknown 1") +#define TEXT_OPT_CHEAT11 _("Unknown 2") +#define TEXT_OPT_CHEAT12 _("Unknown 3") +#define TEXT_OPT_CHEAT13 _("Super Secret Cheat") #endif // VERSION diff --git a/include/text_strings.h.in b/include/text_strings.h.in index 786e3a36..a259af22 100644 --- a/include/text_strings.h.in +++ b/include/text_strings.h.in @@ -484,4 +484,4 @@ #define TEXT_MENU_STARS_DE _(" GEHEIME STERNE") #endif -#endif +#endif \ No newline at end of file diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 8d1661bf..b2b30583 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -96,6 +96,10 @@ static const u8 optsCheatsStr[][64] = { { TEXT_OPT_CHEAT7 }, { TEXT_OPT_CHEAT8 }, { TEXT_OPT_CHEAT9 }, + { TEXT_OPT_CHEAT10 }, + { TEXT_OPT_CHEAT11 }, + { TEXT_OPT_CHEAT12 }, + { TEXT_OPT_CHEAT13 }, }; static const u8 bindStr[][32] = { @@ -257,7 +261,10 @@ static struct Option optsCheats[] = { DEF_OPT_TOGGLE( optsCheatsStr[6], &Cheats.ExitAnywhere ), DEF_OPT_TOGGLE( optsCheatsStr[7], &Cheats.HugeMario ), DEF_OPT_TOGGLE( optsCheatsStr[8], &Cheats.TinyMario ), - + DEF_OPT_TOGGLE( optsCheatsStr[9], &Cheats.Unknown1 ), + DEF_OPT_TOGGLE( optsCheatsStr[10], &Cheats.Unknown2 ), + DEF_OPT_TOGGLE( optsCheatsStr[11], &Cheats.Unknown3 ), + DEF_OPT_TOGGLE( optsCheatsStr[12], &Cheats.DisableBLJ), }; /* submenu definitions */ diff --git a/src/pc/cheats.h b/src/pc/cheats.h index eaf71ab4..201925bd 100644 --- a/src/pc/cheats.h +++ b/src/pc/cheats.h @@ -13,6 +13,10 @@ struct CheatList { bool ExitAnywhere; bool HugeMario; bool TinyMario; + bool Unknown1; + bool Unknown2; + bool Unknown3; + bool DisableBLJ; }; extern struct CheatList Cheats; From ce864043c109b72a2cf215717b94dcfa1e3e19fb Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 24 May 2020 23:52:03 +0900 Subject: [PATCH 050/166] Enabled rumble for all versions. --- build.sh | 2 +- include/types.h | 2 - src/game/behaviors/capswitch.inc.c | 2 - src/game/behaviors/exclamation_box.inc.c | 2 - src/game/behaviors/purple_switch.inc.c | 2 - src/game/behaviors/star_door.inc.c | 4 -- src/game/behaviors/water_pillar.inc.c | 2 - src/game/behaviors/wdw_water_level.inc.c | 2 - src/game/game_init.c | 10 +---- src/game/interaction.c | 40 +++-------------- src/game/level_update.c | 7 +-- src/game/main.c | 15 +++---- src/game/main.h | 8 ++-- src/game/mario.c | 6 --- src/game/mario_actions_airborne.c | 55 ++++-------------------- src/game/mario_actions_automatic.c | 16 ------- src/game/mario_actions_cutscene.c | 16 ------- src/game/mario_actions_moving.c | 27 ++++-------- src/game/mario_actions_object.c | 14 ------ src/game/mario_actions_stationary.c | 4 -- src/game/mario_actions_submerged.c | 10 +---- src/game/save_file.c | 8 ---- src/game/sound_init.c | 3 +- src/game/spawn_sound.c | 3 +- src/game/thread6.c | 52 ++++++---------------- src/game/thread6.h | 6 +-- src/pc/pc_main.c | 10 ++++- 27 files changed, 63 insertions(+), 265 deletions(-) diff --git a/build.sh b/build.sh index d5429ce5..87d3597b 100644 --- a/build.sh +++ b/build.sh @@ -86,7 +86,7 @@ for i in ${!OPTIONS[@]}; do done printf "\n${YELLOW} Executing: ${CYAN}make ${CMDL} -j${RESET}\n\n" -PATH=/mingw32/bin:/mingw64/bin:$PATH make $CMDL -j -d +PATH=/mingw32/bin:/mingw64/bin:$PATH make $CMDL -j if [ "${CMDL}" != " clean" ]; then diff --git a/include/types.h b/include/types.h index 870223eb..48b4fcd0 100644 --- a/include/types.h +++ b/include/types.h @@ -30,9 +30,7 @@ struct Controller /*0x12*/ u16 buttonPressed; /*0x14*/ OSContStatus *statusData; /*0x18*/ OSContPad *controllerData; -#ifdef VERSION_SH /*0x1C*/ int port; -#endif }; typedef f32 Vec2f[2]; diff --git a/src/game/behaviors/capswitch.inc.c b/src/game/behaviors/capswitch.inc.c index 7b8cae57..ab745560 100644 --- a/src/game/behaviors/capswitch.inc.c +++ b/src/game/behaviors/capswitch.inc.c @@ -31,9 +31,7 @@ void cap_switch_act_2(void) { cur_obj_shake_screen(SHAKE_POS_SMALL); spawn_mist_particles(); spawn_triangle_break_particles(60, 139, 0.3f, o->oBehParams2ndByte); -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif } } else { sp1C = cur_obj_update_dialog_with_cutscene(1, 0x0C, CUTSCENE_CAP_SWITCH_PRESS, 0); diff --git a/src/game/behaviors/exclamation_box.inc.c b/src/game/behaviors/exclamation_box.inc.c index 86486c35..8034dd3d 100644 --- a/src/game/behaviors/exclamation_box.inc.c +++ b/src/game/behaviors/exclamation_box.inc.c @@ -78,9 +78,7 @@ void exclamation_box_act_2(void) { o->oGravity = -8.0f; o->oFloorHeight = o->oPosY; o->oAction = 3; -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif } load_object_collision_model(); } diff --git a/src/game/behaviors/purple_switch.inc.c b/src/game/behaviors/purple_switch.inc.c index 3035bd6b..9c210acc 100644 --- a/src/game/behaviors/purple_switch.inc.c +++ b/src/game/behaviors/purple_switch.inc.c @@ -32,9 +32,7 @@ void bhv_purple_switch_loop(void) { cur_obj_play_sound_2(SOUND_GENERAL2_PURPLE_SWITCH); o->oAction = PURPLE_SWITCH_TICKING; cur_obj_shake_screen(SHAKE_POS_SMALL); -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif } break; /** diff --git a/src/game/behaviors/star_door.inc.c b/src/game/behaviors/star_door.inc.c index 2d7dad1f..4390efcb 100644 --- a/src/game/behaviors/star_door.inc.c +++ b/src/game/behaviors/star_door.inc.c @@ -22,9 +22,7 @@ void bhv_star_door_loop(void) { case 1: if (o->oTimer == 0 && (s16)(o->oMoveAngleYaw) >= 0) { cur_obj_play_sound_2(SOUND_GENERAL_STAR_DOOR_OPEN); -#ifdef VERSION_SH queue_rumble_data(35, 30); -#endif } cur_obj_become_intangible(); o->oUnkBC = -8.0f; @@ -39,9 +37,7 @@ void bhv_star_door_loop(void) { case 3: if (o->oTimer == 0 && (s16)(o->oMoveAngleYaw) >= 0) { cur_obj_play_sound_2(SOUND_GENERAL_STAR_DOOR_CLOSE); -#ifdef VERSION_SH queue_rumble_data(35, 30); -#endif } o->oUnkBC = 8.0f; star_door_update_pos(); diff --git a/src/game/behaviors/water_pillar.inc.c b/src/game/behaviors/water_pillar.inc.c index 801069ca..498e9bd0 100644 --- a/src/game/behaviors/water_pillar.inc.c +++ b/src/game/behaviors/water_pillar.inc.c @@ -40,9 +40,7 @@ void water_level_pillar_undrained(void) { (s32) approach_f32_symmetric(gEnvironmentLevels[2], -2450.0f, 5.0f); gEnvironmentLevels[0] = (s32) approach_f32_symmetric(gEnvironmentLevels[0], -2450.0f, 5.0f); -#ifdef VERSION_SH reset_rumble_timers_2(2); -#endif } else o->oAction++; break; diff --git a/src/game/behaviors/wdw_water_level.inc.c b/src/game/behaviors/wdw_water_level.inc.c index 6a8a346b..63d58fc7 100644 --- a/src/game/behaviors/wdw_water_level.inc.c +++ b/src/game/behaviors/wdw_water_level.inc.c @@ -49,9 +49,7 @@ void bhv_water_level_diamond_loop(void) { cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN); // same as above } o->oAngleVelYaw = 0x800; -#ifdef VERSION_SH reset_rumble_timers_2(2); -#endif } break; case WATER_LEVEL_DIAMOND_ACT_IDLE_SPINNING: diff --git a/src/game/game_init.c b/src/game/game_init.c index ffcf7a18..9afd28a6 100644 --- a/src/game/game_init.c +++ b/src/game/game_init.c @@ -564,9 +564,7 @@ void init_controllers(void) { // into any port in order to play the game. this was probably // so if any of the ports didnt work, you can have controllers // plugged into any of them and it will work. -#ifdef VERSION_SH gControllers[cont].port = port; -#endif gControllers[cont].statusData = &gControllerStatuses[port]; gControllers[cont++].controllerData = &gControllerPads[port]; } @@ -606,13 +604,9 @@ static struct LevelCommand *levelCommandAddr; void thread5_game_loop(UNUSED void *arg) { setup_game_memory(); -#ifdef VERSION_SH init_rumble_pak_scheduler_queue(); -#endif init_controllers(); -#ifdef VERSION_SH create_thread_6(); -#endif save_file_load_all(); set_vblank_handler(2, &gGameVblankHandler, &gGameVblankQueue, (OSMesg) 1); @@ -638,9 +632,7 @@ void game_loop_one_iteration(void) { // read_controller_inputs is called later. if (gControllerBits) { -#ifdef VERSION_SH - block_until_rumble_pak_free(); -#endif + // block_until_rumble_pak_free(); osContStartReadData(&gSIEventMesgQueue); } diff --git a/src/game/interaction.c b/src/game/interaction.c index b8f3f881..199911fb 100644 --- a/src/game/interaction.c +++ b/src/game/interaction.c @@ -697,9 +697,7 @@ u32 take_damage_from_interact_object(struct MarioState *m) { m->hurtCounter += 4 * damage; -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif set_camera_shake_from_hit(shake); return damage; } @@ -747,11 +745,10 @@ u32 interact_coin(struct MarioState *m, UNUSED u32 interactType, struct Object * && m->numCoins >= 100) { bhv_spawn_star_no_level_exit(6); } -#ifdef VERSION_SH + if (o->oDamageOrCoinValue >= 2) { queue_rumble_data(5, 80); } -#endif return FALSE; } @@ -770,9 +767,7 @@ u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct O if (m->health >= 0x100) { mario_stop_riding_and_holding(m); -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif if (!noExit) { m->hurtCounter = 0; @@ -874,7 +869,6 @@ u32 interact_warp(struct MarioState *m, UNUSED u32 interactType, struct Object * m->interactObj = o; m->usedObj = o; -#ifdef VERSION_SH if (o->collisionData == segmented_to_virtual(warp_pipe_seg3_collision_03009AC8)) { play_sound(SOUND_MENU_ENTER_PIPE, m->marioObj->header.gfx.cameraToObject); queue_rumble_data(15, 80); @@ -882,12 +876,6 @@ u32 interact_warp(struct MarioState *m, UNUSED u32 interactType, struct Object * play_sound(SOUND_MENU_ENTER_HOLE, m->marioObj->header.gfx.cameraToObject); queue_rumble_data(12, 80); } -#else - play_sound(o->collisionData == segmented_to_virtual(warp_pipe_seg3_collision_03009AC8) - ? SOUND_MENU_ENTER_PIPE - : SOUND_MENU_ENTER_HOLE, - m->marioObj->header.gfx.cameraToObject); -#endif mario_stop_riding_object(m); return set_mario_action(m, ACT_DISAPPEARED, (WARP_OP_WARP_OBJECT << 16) + 2); @@ -1098,9 +1086,8 @@ u32 interact_tornado(struct MarioState *m, UNUSED u32 interactType, struct Objec marioObj->oMarioTornadoPosY = m->pos[1] - o->oPosY; play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH queue_rumble_data(30, 60); -#endif + return set_mario_action(m, ACT_TORNADO_TWIRLING, m->action == ACT_TWIRLING); } @@ -1121,9 +1108,8 @@ u32 interact_whirlpool(struct MarioState *m, UNUSED u32 interactType, struct Obj marioObj->oMarioWhirlpoolPosY = m->pos[1] - o->oPosY; play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH queue_rumble_data(30, 60); -#endif + return set_mario_action(m, ACT_CAUGHT_IN_WHIRLPOOL, 0); } @@ -1157,9 +1143,8 @@ u32 interact_flame(struct MarioState *m, UNUSED u32 interactType, struct Object if (!sInvulnerable && !(m->flags & MARIO_METAL_CAP) && !(m->flags & MARIO_VANISH_CAP) && !(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif + o->oInteractStatus = INT_STATUS_INTERACTED; m->interactObj = o; @@ -1235,9 +1220,7 @@ u32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object m->interactObj = o; if (interaction & INT_ATTACK_NOT_FROM_BELOW) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif push_mario_out_of_object(m, o, 5.0f); m->forwardVel = -16.0f; @@ -1260,9 +1243,8 @@ u32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object push_mario_out_of_object(m, o, 5.0f); drop_and_set_mario_action(m, bully_knock_back_mario(m), 0); -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif + return TRUE; } @@ -1279,9 +1261,7 @@ u32 interact_shock(struct MarioState *m, UNUSED u32 interactType, struct Object take_damage_from_interact_object(m); play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH queue_rumble_data(70, 60); -#endif if (m->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) { return drop_and_set_mario_action(m, ACT_WATER_SHOCKED, 0); @@ -1327,9 +1307,7 @@ u32 interact_hit_from_below(struct MarioState *m, UNUSED u32 interactType, struc } if (interaction & INT_ANY_ATTACK) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif attack_object(o, interaction); bounce_back_from_attack(m, interaction); @@ -1368,9 +1346,7 @@ u32 interact_bounce_top(struct MarioState *m, UNUSED u32 interactType, struct Ob } if (interaction & INT_ATTACK_NOT_FROM_BELOW) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif attack_object(o, interaction); bounce_back_from_attack(m, interaction); @@ -1487,9 +1463,7 @@ u32 check_object_grab_mario(struct MarioState *m, UNUSED u32 interactType, struc update_mario_sound_and_camera(m); play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif return set_mario_action(m, ACT_GRABBED, 0); } } @@ -1538,9 +1512,7 @@ u32 interact_pole(struct MarioState *m, UNUSED u32 interactType, struct Object * marioObj->oMarioPoleYawVel = (s32)(m->forwardVel * 0x100 + 0x1000); #endif reset_mario_pitch(m); -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif return set_mario_action(m, ACT_GRAB_POLE_FAST, 0); } } @@ -1560,9 +1532,7 @@ u32 interact_hoot(struct MarioState *m, UNUSED u32 interactType, struct Object * m->interactObj = o; m->usedObj = o; -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif update_mario_sound_and_camera(m); return set_mario_action(m, ACT_RIDING_HOOT, 0); } diff --git a/src/game/level_update.c b/src/game/level_update.c index 052959c4..bbbebed0 100644 --- a/src/game/level_update.c +++ b/src/game/level_update.c @@ -687,10 +687,8 @@ void initiate_painting_warp(void) { play_sound(SOUND_MENU_STAR_SOUND, gDefaultSoundArgs); fadeout_music(398); -#ifdef VERSION_SH queue_rumble_data(80, 70); func_sh_8024C89C(1); -#endif } } } @@ -1005,9 +1003,7 @@ s32 play_mode_normal(void) { set_play_mode(PLAY_MODE_CHANGE_AREA); } else if (pressed_pause()) { lower_background_noise(1); -#ifdef VERSION_SH cancel_rumble(); -#endif gCameraMovementFlags |= CAM_MOVE_PAUSE_SCREEN; set_play_mode(PLAY_MODE_PAUSED); } @@ -1225,11 +1221,10 @@ s32 init_level(void) { set_background_music(gCurrentArea->musicParam, gCurrentArea->musicParam2, 0); } } -#ifdef VERSION_SH + if (gCurrDemoInput == NULL) { cancel_rumble(); } -#endif if (gMarioState->action == ACT_INTRO_CUTSCENE) { sound_banks_disable(2, 0x0330); diff --git a/src/game/main.c b/src/game/main.c index 2d6bf1d9..6f4ad77b 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -25,7 +25,7 @@ OSThread gIdleThread; OSThread gMainThread; OSThread gGameLoopThread; OSThread gSoundThread; -#ifdef VERSION_SH +#ifndef VERSION_SH OSThread gRumblePakThread; s32 gRumblePakPfs; // Actually an OSPfs but we don't have that header yet @@ -38,7 +38,7 @@ OSMesgQueue gSIEventMesgQueue; OSMesgQueue gPIMesgQueue; OSMesgQueue gIntrMesgQueue; OSMesgQueue gSPTaskMesgQueue; -#ifdef VERSION_SH +#ifndef VERSION_SH OSMesgQueue gRumblePakSchedulerMesgQueue; OSMesgQueue gRumbleThreadVIMesgQueue; #endif @@ -47,7 +47,7 @@ OSMesg gPIMesgBuf[32]; OSMesg gSIEventMesgBuf[1]; OSMesg gIntrMesgBuf[16]; OSMesg gUnknownMesgBuf[16]; -#ifdef VERSION_SH +#ifndef VERSION_SH OSMesg gRumblePakSchedulerMesgBuf[1]; OSMesg gRumbleThreadVIMesgBuf[1]; @@ -152,7 +152,7 @@ void create_thread(OSThread *thread, OSId id, void (*entry)(void *), void *arg, osCreateThread(thread, id, entry, arg, sp, pri); } -#ifdef VERSION_SH +#ifndef VERSION_SH extern void func_sh_802F69CC(void); #endif @@ -162,7 +162,7 @@ void handle_nmi_request(void) { func_80320890(); sound_banks_disable(2, 0x037A); fadeout_music(90); -#ifdef VERSION_SH +#ifndef VERSION_SH func_sh_802F69CC(); #endif } @@ -233,7 +233,7 @@ void handle_vblank(void) { stub_main_3(); sNumVblanks++; -#ifdef VERSION_SH +#ifndef VERSION_SH if (gResetTimer > 0 && gResetTimer < 100) { gResetTimer++; } @@ -268,9 +268,8 @@ void handle_vblank(void) { start_sptask(M_GFXTASK); } } -#ifdef VERSION_SH + rumble_thread_update_vi(); -#endif // Notify the game loop about the vblank. if (gVblankHandler1 != NULL) { diff --git a/src/game/main.h b/src/game/main.h index 901b1c0a..e00cee30 100644 --- a/src/game/main.h +++ b/src/game/main.h @@ -24,7 +24,7 @@ extern OSThread gIdleThread; extern OSThread gMainThread; extern OSThread gGameLoopThread; extern OSThread gSoundThread; -#ifdef VERSION_SH +#ifndef VERSION_SH extern OSThread gRumblePakThread; extern s32 gRumblePakPfs; // Actually an OSPfs but we don't have that header yet @@ -33,7 +33,7 @@ extern s32 gRumblePakPfs; // Actually an OSPfs but we don't have that header yet extern OSMesgQueue gPIMesgQueue; extern OSMesgQueue gIntrMesgQueue; extern OSMesgQueue gSPTaskMesgQueue; -#ifdef VERSION_SH +#ifndef VERSION_SH extern OSMesgQueue gRumblePakSchedulerMesgQueue; extern OSMesgQueue gRumbleThreadVIMesgQueue; #endif @@ -46,7 +46,7 @@ extern OSIoMesg gDmaIoMesg; extern OSMesg D_80339BEC; extern OSMesgQueue gDmaMesgQueue; extern OSMesgQueue gSIEventMesgQueue; -#ifdef VERSION_SH +#ifndef VERSION_SH extern OSMesg gRumblePakSchedulerMesgBuf[1]; extern OSMesg gRumbleThreadVIMesgBuf[1]; @@ -73,6 +73,6 @@ extern s8 gShowDebugText; extern void set_vblank_handler(s32 a, struct VblankHandler *b, OSMesgQueue *queue, OSMesg *msg); extern void dispatch_audio_sptask(struct SPTask *spTask); extern void send_display_list(struct SPTask *a); -extern void main(void); +// extern void main(void); #endif diff --git a/src/game/mario.c b/src/game/mario.c index e00d6e60..9da30d59 100644 --- a/src/game/mario.c +++ b/src/game/mario.c @@ -1534,7 +1534,6 @@ void update_mario_health(struct MarioState *m) { // Play a noise to alert the player when Mario is close to drowning. if (((m->action & ACT_GROUP_MASK) == ACT_GROUP_SUBMERGED) && (m->health < 0x300)) { play_sound(SOUND_MOVING_ALMOST_DROWNING, gDefaultSoundArgs); -#ifdef VERSION_SH if (!gRumblePakTimer) { gRumblePakTimer = 36; if (is_rumble_finished_and_queue_empty()) { @@ -1543,7 +1542,6 @@ void update_mario_health(struct MarioState *m) { } } else { gRumblePakTimer = 0; -#endif } } } @@ -1721,7 +1719,6 @@ static void debug_update_mario_cap(u16 button, s32 flags, u16 capTimer, u16 capM } } -#ifdef VERSION_SH void func_sh_8025574C(void) { if (gMarioState->particleFlags & PARTICLE_HORIZONTAL_STAR) { queue_rumble_data(5, 80); @@ -1734,7 +1731,6 @@ void func_sh_8025574C(void) { reset_rumble_timers(); } } -#endif /** * Main function for executing Mario's behavior. @@ -1831,9 +1827,7 @@ s32 execute_mario_action(UNUSED struct Object *o) { play_infinite_stairs_music(); gMarioState->marioObj->oInteractStatus = 0; -#ifdef VERSION_SH func_sh_8025574C(); -#endif return gMarioState->particleFlags; } diff --git a/src/game/mario_actions_airborne.c b/src/game/mario_actions_airborne.c index 451035ae..9289fd6c 100644 --- a/src/game/mario_actions_airborne.c +++ b/src/game/mario_actions_airborne.c @@ -83,18 +83,15 @@ s32 check_fall_damage(struct MarioState *m, u32 hardFallAction) { if (m->vel[1] < -55.0f) { if (fallHeight > 3000.0f) { m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 16 : 24; -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif set_camera_shake_from_hit(SHAKE_FALL_DAMAGE); play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject); return drop_and_set_mario_action(m, hardFallAction, 4); } else if (fallHeight > damageHeight && !mario_floor_is_slippery(m)) { m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 8 : 12; m->squishTimer = 30; -#ifdef VERSION_SH + queue_rumble_data(5, 80); -#endif set_camera_shake_from_hit(SHAKE_FALL_DAMAGE); play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject); } @@ -136,9 +133,8 @@ s32 check_fall_damage_or_get_stuck(struct MarioState *m, u32 hardFallAction) { #endif m->particleFlags |= PARTICLE_MIST_CIRCLE; drop_and_set_mario_action(m, ACT_FEET_STUCK_IN_GROUND, 0); -#ifdef VERSION_SH + queue_rumble_data(5, 80); -#endif return TRUE; } @@ -388,9 +384,7 @@ u32 common_air_action_step(struct MarioState *m, u32 landAction, s32 animation, set_mario_animation(m, animation); if (m->forwardVel > 16.0f) { -#ifdef VERSION_SH queue_rumble_data(5, 40); -#endif mario_bonk_reflection(m, FALSE); m->faceAngle[1] += 0x8000; @@ -496,11 +490,9 @@ s32 act_triple_jump(struct MarioState *m) { #endif common_air_action_step(m, ACT_TRIPLE_JUMP_LAND, MARIO_ANIM_TRIPLE_JUMP, 0); -#ifdef VERSION_SH if (m->action == ACT_TRIPLE_JUMP_LAND) { queue_rumble_data(5, 40); } -#endif play_flip_sounds(m, 2, 8, 20); return FALSE; } @@ -512,11 +504,10 @@ s32 act_backflip(struct MarioState *m) { play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAH_WAH_HOO); common_air_action_step(m, ACT_BACKFLIP_LAND, MARIO_ANIM_BACKFLIP, 0); -#ifdef VERSION_SH + if (m->action == ACT_BACKFLIP_LAND) { queue_rumble_data(5, 40); } -#endif play_flip_sounds(m, 2, 3, 17); return FALSE; } @@ -644,11 +635,10 @@ s32 act_long_jump(struct MarioState *m) { } common_air_action_step(m, ACT_LONG_JUMP_LAND, animation, AIR_STEP_CHECK_LEDGE_GRAB); -#ifdef VERSION_SH + if (m->action == ACT_LONG_JUMP_LAND) { queue_rumble_data(5, 40); } -#endif return FALSE; } @@ -749,9 +739,7 @@ s32 act_dive(struct MarioState *m) { case AIR_STEP_LANDED: if (should_get_stuck_in_ground(m) && m->faceAngle[0] == -0x2AAA) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif #ifdef VERSION_JP play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject); #else @@ -947,9 +935,7 @@ s32 act_ground_pound(struct MarioState *m) { stepResult = perform_air_step(m, 0); if (stepResult == AIR_STEP_LANDED) { if (should_get_stuck_in_ground(m)) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif #ifdef VERSION_JP play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject); #else @@ -998,9 +984,8 @@ s32 act_burning_jump(struct MarioState *m) { if (m->health < 0x100) { m->health = 0xFF; } -#ifdef VERSION_SH + reset_rumble_timers(); -#endif return FALSE; } @@ -1020,9 +1005,8 @@ s32 act_burning_fall(struct MarioState *m) { if (m->health < 0x100) { m->health = 0xFF; } -#ifdef VERSION_SH + reset_rumble_timers(); -#endif return FALSE; } @@ -1071,9 +1055,7 @@ s32 act_crazy_box_bounce(struct MarioState *m) { m->heldObj = NULL; set_mario_action(m, ACT_STOMACH_SLIDE, 0); } -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif m->particleFlags |= PARTICLE_MIST_CIRCLE; break; @@ -1103,11 +1085,9 @@ u32 common_air_knockback_step(struct MarioState *m, u32 landAction, u32 hardFall break; case AIR_STEP_LANDED: -#ifdef VERSION_SH if (m->action == ACT_SOFT_BONK) { queue_rumble_data(5, 80); } -#endif if (!check_fall_damage_or_get_stuck(m, hardFallAction)) { #ifndef VERSION_JP if (m->action == ACT_THROWN_FORWARD || m->action == ACT_THROWN_BACKWARD) { @@ -1506,14 +1486,11 @@ s32 act_hold_butt_slide_air(struct MarioState *m) { } s32 act_lava_boost(struct MarioState *m) { -#ifdef VERSION_SH if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) { play_sound_if_no_flag(m, SOUND_MARIO_ON_FIRE, MARIO_MARIO_SOUND_PLAYED); queue_rumble_data(5, 80); } -#else play_sound_if_no_flag(m, SOUND_MARIO_ON_FIRE, MARIO_MARIO_SOUND_PLAYED); -#endif if (!(m->input & INPUT_NONZERO_ANALOG)) { m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.35f, 0.35f); @@ -1530,9 +1507,7 @@ s32 act_lava_boost(struct MarioState *m) { } m->vel[1] = 84.0f; play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif } else { play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND); if (m->actionState < 2 && m->vel[1] < 0.0f) { @@ -1568,9 +1543,8 @@ s32 act_lava_boost(struct MarioState *m) { } m->marioBodyState->eyeState = MARIO_EYES_DEAD; -#ifdef VERSION_SH + reset_rumble_timers(); -#endif return FALSE; } @@ -1690,9 +1664,7 @@ s32 act_shot_from_cannon(struct MarioState *m) { gLakituState.mode = CAMERA_MODE_NEWCAM; } #endif -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif break; case AIR_STEP_HIT_WALL: @@ -1734,9 +1706,8 @@ s32 act_shot_from_cannon(struct MarioState *m) { if (m->vel[1] > 0.0f) { m->particleFlags |= PARTICLE_DUST; } -#ifdef VERSION_SH + reset_rumble_timers(); -#endif return FALSE; } @@ -1839,9 +1810,7 @@ s32 act_flying(struct MarioState *m) { gLakituState.mode = CAMERA_MODE_NEWCAM; } #endif -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif break; case AIR_STEP_HIT_WALL: @@ -1904,9 +1873,7 @@ s32 act_flying(struct MarioState *m) { play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((gAudioRandom % 5) << 16), m->marioObj->header.gfx.cameraToObject); #endif -#ifdef VERSION_SH queue_rumble_data(50, 40); -#endif } play_sound(SOUND_MOVING_FLYING, m->marioObj->header.gfx.cameraToObject); @@ -1920,9 +1887,7 @@ s32 act_riding_hoot(struct MarioState *m) { m->usedObj->oHootMarioReleaseTime = gGlobalTimer; play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED); -#ifdef VERSION_SH queue_rumble_data(4, 40); -#endif return set_mario_action(m, ACT_FREEFALL, 0); } @@ -1988,9 +1953,7 @@ s32 act_flying_triple_jump(struct MarioState *m) { if (is_anim_past_end(m)) { set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING); -#ifdef VERSION_SH queue_rumble_data(8, 80); -#endif m->actionState = 1; } } @@ -2063,9 +2026,7 @@ s32 act_vertical_wind(struct MarioState *m) { set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING_FLIP); if (m->marioObj->header.gfx.unk38.animFrame == 1) { play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH queue_rumble_data(8, 80); -#endif } if (is_anim_past_end(m)) { diff --git a/src/game/mario_actions_automatic.c b/src/game/mario_actions_automatic.c index d2a36491..bc94f489 100644 --- a/src/game/mario_actions_automatic.c +++ b/src/game/mario_actions_automatic.c @@ -171,9 +171,7 @@ s32 act_holding_pole(struct MarioState *m) { } } play_climbing_sounds(m, 2); -#ifdef VERSION_SH reset_rumble_timers(); -#endif func_80320A4C(1, marioObj->oMarioPoleYawVel / 0x100 * 2); } else { marioObj->oMarioPoleYawVel = 0; @@ -385,13 +383,9 @@ void update_hang_stationary(struct MarioState *m) { } s32 act_start_hanging(struct MarioState *m) { -#ifdef VERSION_SH if (m->actionTimer++ == 0) { queue_rumble_data(5, 80); } -#else - m->actionTimer++; -#endif if ((m->input & INPUT_NONZERO_ANALOG) && m->actionTimer >= 31) { return set_mario_action(m, ACT_HANGING, 0); @@ -470,9 +464,7 @@ s32 act_hang_moving(struct MarioState *m) { if (m->marioObj->header.gfx.unk38.animFrame == 12) { play_sound(SOUND_ACTION_HANGING_STEP, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH queue_rumble_data(5, 30); -#endif } if (is_anim_past_end(m)) { @@ -662,9 +654,7 @@ s32 act_grabbed(struct MarioState *m) { m->faceAngle[1] = m->usedObj->oMoveAngleYaw; vec3f_copy(m->pos, m->marioObj->header.gfx.pos); -#ifdef VERSION_SH queue_rumble_data(5, 60); -#endif return set_mario_action(m, (m->forwardVel >= 0.0f) ? ACT_THROWN_FORWARD : ACT_THROWN_BACKWARD, thrown); @@ -744,17 +734,13 @@ s32 act_in_cannon(struct MarioState *m) { m->marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE; set_mario_action(m, ACT_SHOT_FROM_CANNON, 0); -#ifdef VERSION_SH queue_rumble_data(60, 70); -#endif m->usedObj->oAction = 2; return FALSE; } else { if (m->faceAngle[0] != startFacePitch || m->faceAngle[1] != startFaceYaw) { play_sound(SOUND_MOVING_AIM_CANNON, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH reset_rumble_timers_2(0); -#endif } } } @@ -840,9 +826,7 @@ s32 act_tornado_twirling(struct MarioState *m) { vec3f_copy(m->marioObj->header.gfx.pos, m->pos); vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1] + m->twirlYaw, 0); -#ifdef VERSION_SH reset_rumble_timers(); -#endif return FALSE; } diff --git a/src/game/mario_actions_cutscene.c b/src/game/mario_actions_cutscene.c index ef413cd9..30c0033a 100644 --- a/src/game/mario_actions_cutscene.c +++ b/src/game/mario_actions_cutscene.c @@ -1178,9 +1178,7 @@ s32 act_death_exit(struct MarioState *m) { #else play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject); #endif -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif m->numLives--; // restore 7.75 units of health m->healCounter = 31; @@ -1213,9 +1211,7 @@ s32 act_falling_death_exit(struct MarioState *m) { #else play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject); #endif -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif m->numLives--; // restore 7.75 units of health m->healCounter = 31; @@ -1260,9 +1256,7 @@ s32 act_special_death_exit(struct MarioState *m) { } if (launch_mario_until_land(m, ACT_HARD_BACKWARD_GROUND_KB, MARIO_ANIM_BACKWARD_AIR_KB, -24.0f)) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif m->numLives--; m->healCounter = 31; } @@ -1346,9 +1340,7 @@ s32 act_bbh_enter_spin(struct MarioState *m) { m->flags &= ~MARIO_UNKNOWN_08; if (perform_air_step(m, 0) == AIR_STEP_LANDED) { level_trigger_warp(m, WARP_OP_UNKNOWN_02); -#ifdef VERSION_SH queue_rumble_data(15, 80); -#endif m->actionState = 4; } if (m->actionState == 2) { @@ -1414,12 +1406,10 @@ s32 act_teleport_fade_out(struct MarioState *m) { set_mario_animation(m, m->prevAction == ACT_CROUCHING ? MARIO_ANIM_CROUCHING : MARIO_ANIM_FIRST_PERSON); -#ifdef VERSION_SH if (m->actionTimer == 0) { queue_rumble_data(30, 70); func_sh_8024C89C(2); } -#endif m->flags |= MARIO_TELEPORTING; @@ -1440,12 +1430,10 @@ s32 act_teleport_fade_in(struct MarioState *m) { play_sound_if_no_flag(m, SOUND_ACTION_TELEPORT, MARIO_ACTION_SOUND_PLAYED); set_mario_animation(m, MARIO_ANIM_FIRST_PERSON); -#ifdef VERSION_SH if (m->actionTimer == 0) { queue_rumble_data(30, 70); func_sh_8024C89C(2); } -#endif if (m->actionTimer < 32) { m->flags |= MARIO_TELEPORTING; @@ -1534,9 +1522,7 @@ s32 act_squished(struct MarioState *m) { // Both of the 1.8's are really floats, but one of them has to // be written as a double for this to match on EU. vec3f_set(m->marioObj->header.gfx.scale, 1.8, 0.05f, 1.8f); -#ifdef VERSION_SH queue_rumble_data(10, 80); -#endif m->actionState = 1; } break; @@ -1638,9 +1624,7 @@ void stuck_in_ground_handler(struct MarioState *m, s32 animation, s32 unstuckFra if (animFrame == -1) { play_sound_and_spawn_particles(m, SOUND_ACTION_TERRAIN_STUCK_IN_GROUND, 1); } else if (animFrame == unstuckFrame) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif play_sound_and_spawn_particles(m, SOUND_ACTION_UNSTUCK_FROM_GROUND, 1); } else if (animFrame == target2 || animFrame == target3) { play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING); diff --git a/src/game/mario_actions_moving.c b/src/game/mario_actions_moving.c index 5b4dbb80..f7d517b1 100644 --- a/src/game/mario_actions_moving.c +++ b/src/game/mario_actions_moving.c @@ -1252,9 +1252,8 @@ s32 act_riding_shell_ground(struct MarioState *m) { } adjust_sound_for_speed(m); -#ifdef VERSION_SH + reset_rumble_timers(); -#endif return FALSE; } @@ -1358,9 +1357,8 @@ s32 act_burning_ground(struct MarioState *m) { } m->marioBodyState->eyeState = MARIO_EYES_DEAD; -#ifdef VERSION_SH + reset_rumble_timers(); -#endif return FALSE; } @@ -1376,9 +1374,7 @@ void common_slide_action(struct MarioState *m, u32 endAction, u32 airAction, s32 vec3f_copy(val14, m->pos); play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject); -#ifdef VERSION_SH reset_rumble_timers(); -#endif adjust_sound_for_speed(m); @@ -1502,9 +1498,7 @@ s32 act_crouch_slide(struct MarioState *m) { s32 act_slide_kick_slide(struct MarioState *m) { if (m->input & INPUT_A_PRESSED) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif return set_jumping_action(m, ACT_FORWARD_ROLLOUT, 0); } @@ -1534,9 +1528,7 @@ s32 act_slide_kick_slide(struct MarioState *m) { s32 stomach_slide_action(struct MarioState *m, u32 stopAction, u32 airAction, s32 animation) { if (m->actionTimer == 5) { if (!(m->input & INPUT_ABOVE_SLIDE) && (m->input & (INPUT_A_PRESSED | INPUT_B_PRESSED))) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif return drop_and_set_mario_action( m, m->forwardVel >= 0.0f ? ACT_FORWARD_ROLLOUT : ACT_BACKWARD_ROLLOUT, 0); } @@ -1570,9 +1562,7 @@ s32 act_hold_stomach_slide(struct MarioState *m) { s32 act_dive_slide(struct MarioState *m) { if (!(m->input & INPUT_ABOVE_SLIDE) && (m->input & (INPUT_A_PRESSED | INPUT_B_PRESSED))) { -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif return set_mario_action(m, m->forwardVel > 0.0f ? ACT_FORWARD_ROLLOUT : ACT_BACKWARD_ROLLOUT, 0); } @@ -1857,13 +1847,14 @@ s32 act_hold_freefall_land(struct MarioState *m) { } s32 act_long_jump_land(struct MarioState *m) { -#ifdef VERSION_SH - // BLJ (Backwards Long Jump) speed build up fix, crushing SimpleFlips's dreams since July 1997 - if (m->forwardVel < 0.0f) { - m->forwardVel = 0.0f; + // Stop right there criminal scum! + if (Cheats.EnableCheats == TRUE && Cheats.DisableBLJ == TRUE) { + // BLJ (Backwards Long Jump) speed build up fix, crushing SimpleFlips's dreams since July 1997 + if (m->forwardVel < 0.0f) { + m->forwardVel = 0.0f; + } } -#endif - + if (!(m->input & INPUT_Z_DOWN)) { m->input &= ~INPUT_A_PRESSED; } diff --git a/src/game/mario_actions_object.c b/src/game/mario_actions_object.c index 5c71e962..d01a6c67 100644 --- a/src/game/mario_actions_object.c +++ b/src/game/mario_actions_object.c @@ -265,9 +265,7 @@ s32 act_throwing(struct MarioState *m) { mario_throw_held_object(m); play_sound_if_no_flag(m, SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED); play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED); -#ifdef VERSION_SH queue_rumble_data(3, 50); -#endif } animated_stationary_ground_step(m, MARIO_ANIM_GROUND_THROW, ACT_IDLE); @@ -287,9 +285,7 @@ s32 act_heavy_throw(struct MarioState *m) { mario_drop_held_object(m); play_sound_if_no_flag(m, SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED); play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED); -#ifdef VERSION_SH queue_rumble_data(3, 50); -#endif } animated_stationary_ground_step(m, MARIO_ANIM_HEAVY_THROW, ACT_IDLE); @@ -319,9 +315,7 @@ s32 act_picking_up_bowser(struct MarioState *m) { m->angleVel[1] = 0; m->marioBodyState->grabPos = GRAB_POS_BOWSER; mario_grab_used_object(m); -#ifdef VERSION_SH queue_rumble_data(5, 80); -#endif play_sound(SOUND_MARIO_HRMM, m->marioObj->header.gfx.cameraToObject); } @@ -397,15 +391,11 @@ s32 act_holding_bowser(struct MarioState *m) { // play sound on overflow if (m->angleVel[1] <= -0x100 && spin < m->faceAngle[1]) { -#ifdef VERSION_SH queue_rumble_data(4, 20); -#endif play_sound(SOUND_OBJ_BOWSER_SPINNING, m->marioObj->header.gfx.cameraToObject); } if (m->angleVel[1] >= 0x100 && spin > m->faceAngle[1]) { -#ifdef VERSION_SH queue_rumble_data(4, 20); -#endif play_sound(SOUND_OBJ_BOWSER_SPINNING, m->marioObj->header.gfx.cameraToObject); } @@ -422,14 +412,10 @@ s32 act_holding_bowser(struct MarioState *m) { s32 act_releasing_bowser(struct MarioState *m) { if (++m->actionTimer == 1) { if (m->actionArg == 0) { -#ifdef VERSION_SH queue_rumble_data(4, 50); -#endif mario_throw_held_object(m); } else { -#ifdef VERSION_SH queue_rumble_data(4, 50); -#endif mario_drop_held_object(m); } } diff --git a/src/game/mario_actions_stationary.c b/src/game/mario_actions_stationary.c index 33d2919d..e7ef3583 100644 --- a/src/game/mario_actions_stationary.c +++ b/src/game/mario_actions_stationary.c @@ -798,16 +798,12 @@ s32 act_shockwave_bounce(struct MarioState *m) { f32 sp18; if (m->marioObj->oInteractStatus & 0x10) { -#ifdef VERSION_SH queue_rumble_data(70, 40); -#endif return hurt_and_set_mario_action(m, ACT_SHOCKED, 0, 4); } if (m->actionTimer == 0) { -#ifdef VERSION_SH queue_rumble_data(70, 40); -#endif if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_UNK1) { return hurt_and_set_mario_action(m, ACT_BACKWARD_GROUND_KB, 0, 0xc); } diff --git a/src/game/mario_actions_submerged.c b/src/game/mario_actions_submerged.c index d563bd17..a2af592b 100644 --- a/src/game/mario_actions_submerged.c +++ b/src/game/mario_actions_submerged.c @@ -554,11 +554,9 @@ static s32 act_breaststroke(struct MarioState *m) { reset_float_globals(m); } -#ifdef VERSION_SH if (m->actionTimer < 6) { func_sh_8024CA04(); } -#endif set_mario_animation(m, MARIO_ANIM_SWIM_PART1); common_swimming_step(m, sSwimStrength); @@ -802,9 +800,7 @@ static s32 act_water_throw(struct MarioState *m) { if (m->actionTimer++ == 5) { mario_throw_held_object(m); -#ifdef VERSION_SH queue_rumble_data(3, 50); -#endif } if (is_anim_at_end(m)) { @@ -978,11 +974,9 @@ static s32 act_water_plunge(struct MarioState *m) { m->particleFlags |= PARTICLE_WATER_SPLASH; m->actionState = 1; -#ifdef VERSION_SH if (m->prevAction & ACT_FLAG_AIR) { queue_rumble_data(5, 80); } -#endif } if (stepResult == WATER_STEP_HIT_FLOOR || m->vel[1] >= endVSpeed || m->actionTimer > 20) { @@ -1087,10 +1081,8 @@ static s32 act_caught_in_whirlpool(struct MarioState *m) { set_mario_animation(m, MARIO_ANIM_GENERAL_FALL); vec3f_copy(m->marioObj->header.gfx.pos, m->pos); vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0); -#ifdef VERSION_SH + reset_rumble_timers(); -#endif - return FALSE; } diff --git a/src/game/save_file.c b/src/game/save_file.c index 9facaf3c..1b460bb8 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -104,14 +104,10 @@ static s32 read_eeprom_data(void *buffer, s32 size) { u32 offset = (u32)((u8 *) buffer - (u8 *) &gSaveBuffer) / 8; do { -#ifdef VERSION_SH block_until_rumble_pak_free(); -#endif triesLeft--; status = osEepromLongRead(&gSIEventMesgQueue, offset, buffer, size); -#ifdef VERSION_SH release_rumble_pak_control(); -#endif } while (triesLeft > 0 && status != 0); } @@ -132,14 +128,10 @@ static s32 write_eeprom_data(void *buffer, s32 size, const uintptr_t baseofs) { u32 offset = (u32)baseofs >> 3; do { -#ifdef VERSION_SH block_until_rumble_pak_free(); -#endif triesLeft--; status = osEepromLongWrite(&gSIEventMesgQueue, offset, buffer, size); -#ifdef VERSION_SH release_rumble_pak_control(); -#endif } while (triesLeft > 0 && status != 0); } diff --git a/src/game/sound_init.c b/src/game/sound_init.c index ec5dfcbc..ce1042c4 100644 --- a/src/game/sound_init.c +++ b/src/game/sound_init.c @@ -153,11 +153,10 @@ void play_menu_sounds(s16 soundMenuFlags) { if (soundMenuFlags & 0x100) { play_menu_sounds_extra(20, NULL); } -#ifdef VERSION_SH + if ((soundMenuFlags & 0x20) != 0) { queue_rumble_data(10, 60); } -#endif } /** diff --git a/src/game/spawn_sound.c b/src/game/spawn_sound.c index c7812b25..d23be075 100644 --- a/src/game/spawn_sound.c +++ b/src/game/spawn_sound.c @@ -68,7 +68,7 @@ void cur_obj_play_sound_1(s32 soundMagic) { void cur_obj_play_sound_2(s32 soundMagic) { if (gCurrentObject->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) { play_sound(soundMagic, gCurrentObject->header.gfx.cameraToObject); -#ifdef VERSION_SH + if (soundMagic == SOUND_OBJ_BOWSER_WALK) { queue_rumble_data(3, 60); } @@ -78,7 +78,6 @@ void cur_obj_play_sound_2(s32 soundMagic) { if (soundMagic == SOUND_OBJ_WHOMP_LOWPRIO) { queue_rumble_data(5, 80); } -#endif } } diff --git a/src/game/thread6.c b/src/game/thread6.c index 40984407..f388cc5b 100644 --- a/src/game/thread6.c +++ b/src/game/thread6.c @@ -5,8 +5,6 @@ #include "main.h" #include "thread6.h" -#ifdef VERSION_SH - static s8 D_SH_8030CCB4; static s32 sUnusedDisableRumble; static s32 sRumblePakThreadActive; @@ -15,22 +13,18 @@ static s32 sRumblePakErrorCount; s32 gRumblePakTimer; // These void* are OSPfs* but we don't have that header +// And in general, it is not necessary =) extern s32 osMotorStop(void *); extern s32 osMotorStart(void *); extern u32 osMotorInit(OSMesgQueue *, void *, s32); void init_rumble_pak_scheduler_queue(void) { - osCreateMesgQueue(&gRumblePakSchedulerMesgQueue, gRumblePakSchedulerMesgBuf, 1); - osSendMesg(&gRumblePakSchedulerMesgQueue, (OSMesg) 0, OS_MESG_NOBLOCK); } void block_until_rumble_pak_free(void) { - OSMesg msg; - osRecvMesg(&gRumblePakSchedulerMesgQueue, &msg, OS_MESG_BLOCK); } void release_rumble_pak_control(void) { - osSendMesg(&gRumblePakSchedulerMesgQueue, (OSMesg) 0, OS_MESG_NOBLOCK); } static void start_rumble(void) { @@ -225,32 +219,21 @@ void func_sh_8024CA04(void) { gCurrRumbleSettings.unk0C = 4; } -static void thread6_rumble_loop(UNUSED void *a0) { - OSMesg msg; +void thread6_rumble_loop(UNUSED void *a0) { + update_rumble_data_queue(); + update_rumble_pak(); - cancel_rumble(); - - sRumblePakThreadActive = TRUE; - - while (TRUE) { - // Block until VI - osRecvMesg(&gRumbleThreadVIMesgQueue, &msg, OS_MESG_BLOCK); - - update_rumble_data_queue(); - update_rumble_pak(); - - if (sRumblePakActive) { - if (sRumblePakErrorCount >= 30) { - sRumblePakActive = FALSE; - } - } else if (gGlobalTimer % 60 == 0) { - sRumblePakActive = osMotorInit(&gSIEventMesgQueue, &gRumblePakPfs, gPlayer1Controller->port) < 1; - sRumblePakErrorCount = 0; + if (sRumblePakActive) { + if (sRumblePakErrorCount >= 30) { + sRumblePakActive = FALSE; } + } else if (gGlobalTimer % 60 == 0) { + sRumblePakActive = osMotorInit(&gSIEventMesgQueue, &gRumblePakPfs, gPlayer1Controller->port) < 1; + sRumblePakErrorCount = 0; + } - if (gRumblePakTimer > 0) { - gRumblePakTimer--; - } + if (gRumblePakTimer > 0) { + gRumblePakTimer--; } } @@ -272,17 +255,10 @@ void cancel_rumble(void) { } void create_thread_6(void) { - osCreateMesgQueue(&gRumbleThreadVIMesgQueue, gRumbleThreadVIMesgBuf, 1); - osCreateThread(&gRumblePakThread, 6, thread6_rumble_loop, NULL, gThread6Stack + 0x2000, 30); - osStartThread(&gRumblePakThread); } void rumble_thread_update_vi(void) { if (sRumblePakThreadActive == FALSE) { return; } - - osSendMesg(&gRumbleThreadVIMesgQueue, (OSMesg) 0x56525443, OS_MESG_NOBLOCK); -} - -#endif +} \ No newline at end of file diff --git a/src/game/thread6.h b/src/game/thread6.h index 92418635..06586e62 100644 --- a/src/game/thread6.h +++ b/src/game/thread6.h @@ -1,8 +1,6 @@ #ifndef _THREAD_6_H #define _THREAD_6_H -#ifdef VERSION_SH - extern s32 gRumblePakTimer; extern void init_rumble_pak_scheduler_queue(void); @@ -18,6 +16,4 @@ extern void cancel_rumble(void); extern void create_thread_6(void); extern void rumble_thread_update_vi(void); -#endif - -#endif +#endif // _THREAD_6_H \ No newline at end of file diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index c4162c32..a2960fd8 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -23,6 +23,9 @@ #include "configfile.h" #include "controller/controller_api.h" +#include "game/main.h" +#include "game/thread6.h" + OSMesg D_80339BEC; OSMesgQueue gSIEventMesgQueue; @@ -32,6 +35,10 @@ s8 gDebugLevelSelect; s8 gShowProfiler; s8 gShowDebugText; +s32 gRumblePakPfs; +struct RumbleData gRumbleDataQueue[3]; +struct StructSH8031D9B0 gCurrRumbleSettings; + static struct AudioAPI *audio_api; static struct GfxWindowManagerAPI *wm_api; static struct GfxRenderingAPI *rendering_api; @@ -60,6 +67,7 @@ void send_display_list(struct SPTask *spTask) { void produce_one_frame(void) { gfx_start_frame(); game_loop_one_iteration(); + thread6_rumble_loop(); int samples_left = audio_api->buffered(); u32 num_audio_samples = samples_left < audio_api->get_desired_buffered() ? 544 : 528; @@ -162,7 +170,7 @@ void main_func(void) { sound_init(); thread5_game_loop(NULL); - + inited = true; #ifdef TARGET_WEB From eeca3b0ec0e895d9f50f2a55b33021cc75b86c59 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 25 May 2020 00:58:43 +0300 Subject: [PATCH 051/166] remove debug print in Makefile --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 4acdb9de..2444468c 100644 --- a/Makefile +++ b/Makefile @@ -126,7 +126,6 @@ endif # Stuff for showing the git hash in the intro on nightly builds # From https://stackoverflow.com/questions/44038428/include-git-commit-hash-and-or-branch-name-in-c-c-source ifeq ($(shell git rev-parse --abbrev-ref HEAD),nightly) - $(info Hello Caldera!!! I'm here all week!) GIT_HASH=`git rev-parse --short HEAD` COMPILE_TIME=`date -u +'%Y-%m-%d %H:%M:%S UTC'` VERSION_CFLAGS += -DNIGHTLY -DGIT_HASH="\"$(GIT_HASH)\"" -DCOMPILE_TIME="\"$(COMPILE_TIME)\"" From 87d6f30a08a501ac348242df3bd6af77f1bdfa6c Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 25 May 2020 02:25:13 +0300 Subject: [PATCH 052/166] fix skyconv --write-tiles --type sky --- tools/skyconv.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/skyconv.c b/tools/skyconv.c index 2dcdf33a..4fb0523e 100644 --- a/tools/skyconv.c +++ b/tools/skyconv.c @@ -216,7 +216,6 @@ static void assign_tile_positions() { void write_tiles() { const ImageProps props = IMAGE_PROPERTIES[type][true]; char buffer[PATH_MAX]; - char skyboxName[PATH_MAX]; if (realpath(writeDir, buffer) == NULL) { fprintf(stderr, "err: Could not find find img dir %s", writeDir); From 9825b02f505e3b17d53a2d28effaae5561a6e84f Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 25 May 2020 04:21:36 +0300 Subject: [PATCH 053/166] add option to load textures from external files this stores the null terminated texture name instead of the texture data activated with EXTERNAL_TEXTURES=1 --- Makefile | 29 +++++++++++++++- Makefile.split | 8 ++--- {tools => include}/stb/stb_image.h | 0 {tools => include}/stb/stb_image_write.h | 0 src/pc/configfile.h | 1 + src/pc/gfx/gfx_pc.c | 24 ++++++++++++++ tools/Makefile | 2 +- tools/n64graphics_ci_dir/n64graphics_ci.c | 4 +-- tools/skyconv.c | 40 ++++++++++++++++++----- 9 files changed, 91 insertions(+), 17 deletions(-) rename {tools => include}/stb/stb_image.h (100%) rename {tools => include}/stb/stb_image_write.h (100%) diff --git a/Makefile b/Makefile index 2444468c..e9ebc5d0 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,8 @@ TEXTURE_FIX ?= 0 EXT_OPTIONS_MENU ?= 1 # Disable text-based save-files by default TEXTSAVES ?= 0 +# Load textures from external PNG files +EXTERNAL_TEXTURES ?= 0 # Various workarounds for weird toolchains @@ -552,6 +554,14 @@ ifeq ($(LEGACY_GL),1) CFLAGS += -DLEGACY_GL endif +# Load external textures +ifeq ($(EXTERNAL_TEXTURES),1) + CC_CHECK += -DEXTERNAL_TEXTURES + CFLAGS += -DEXTERNAL_TEXTURES + # tell skyconv to write names instead of actual texture data and save the split tiles so we can use them later + SKYCONV_ARGS := --store-names --write-tiles "$(BUILD_DIR)/textures/skybox_tiles" +endif + ASFLAGS := -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) ifeq ($(TARGET_WEB),1) @@ -606,6 +616,16 @@ SHA1SUM = sha1sum all: $(EXE) +ifeq ($(EXTERNAL_TEXTURES),1) +# prepares the resource folder for external data +res: $(EXE) + @mkdir -p $(BUILD_DIR)/res + @cp -r -f textures/ $(BUILD_DIR)/res/ + @cp -r -f $(BUILD_DIR)/textures/skybox_tiles/ $(BUILD_DIR)/res/textures/ + @find actors -name \*.png -exec cp --parents {} $(BUILD_DIR)/res/ \; + @find levels -name \*.png -exec cp --parents {} $(BUILD_DIR)/res/ \; +endif + clean: $(RM) -r $(BUILD_DIR_BASE) @@ -700,13 +720,19 @@ endif ################################################################ # RGBA32, RGBA16, IA16, IA8, IA4, IA1, I8, I4 +ifeq ($(EXTERNAL_TEXTURES),1) +$(BUILD_DIR)/%: %.png + printf "%s%b" "$(patsubst %.png,%,$^)" '\x00' > $@ +else $(BUILD_DIR)/%: %.png $(N64GRAPHICS) -i $@ -g $< -f $(lastword $(subst ., ,$@)) +endif $(BUILD_DIR)/%.inc.c: $(BUILD_DIR)/% %.png hexdump -v -e '1/1 "0x%X,"' $< > $@ echo >> $@ +ifeq ($(EXTERNAL_TEXTURES),0) # Color Index CI8 $(BUILD_DIR)/%.ci8: %.ci8.png $(N64GRAPHICS_CI) -i $@ -g $< -f ci8 @@ -714,6 +740,7 @@ $(BUILD_DIR)/%.ci8: %.ci8.png # Color Index CI4 $(BUILD_DIR)/%.ci4: %.ci4.png $(N64GRAPHICS_CI) -i $@ -g $< -f ci4 +endif ################################################################ @@ -857,7 +884,7 @@ $(BUILD_DIR)/%.o: %.s $(EXE): $(O_FILES) $(MIO0_FILES:.mio0=.o) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(LD) -L $(BUILD_DIR) -o $@ $(O_FILES) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(LDFLAGS) -.PHONY: all clean distclean default diff test load libultra +.PHONY: all clean distclean default diff test load libultra res .PRECIOUS: $(BUILD_DIR)/bin/%.elf $(SOUND_BIN_DIR)/%.ctl $(SOUND_BIN_DIR)/%.tbl $(SOUND_SAMPLE_TABLES) $(SOUND_BIN_DIR)/%.s $(BUILD_DIR)/% .DELETE_ON_ERROR: diff --git a/Makefile.split b/Makefile.split index 9619c603..c7bdaa2e 100644 --- a/Makefile.split +++ b/Makefile.split @@ -5,7 +5,7 @@ # obtain a list of segments from the *.c files in bin directory SEGMENTS := $(notdir $(basename $(wildcard bin/*.c))) $(addprefix $(VERSION)/,$(notdir $(basename $(wildcard bin/$(VERSION)/*.c)))) $(addsuffix _skybox,$(notdir $(basename $(wildcard textures/skyboxes/*.png)))) ACTORS := $(filter %/,$(wildcard actors/*/)) -TEXTURE_DIRS := $(addprefix textures/,$(SEGMENTS)) $(ACTORS) textures/intro_raw +TEXTURE_DIRS := $(addprefix textures/,$(SEGMENTS)) $(ACTORS) textures/intro_raw textures/skybox_tiles # NOTE: textures assume naming convention "texture..png" generates "texture." @@ -165,9 +165,9 @@ $(eval $(call level_rules,menu,generic)) # Menu (File Select) # Ending cake textures are generated in a special way $(BUILD_DIR)/levels/ending/cake_eu.inc.c: levels/ending/cake_eu.png - $(SKYCONV) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending + $(SKYCONV) $(SKYCONV_ARGS) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending $(BUILD_DIR)/levels/ending/cake.inc.c: levels/ending/cake.png - $(SKYCONV) --type cake --split $^ $(BUILD_DIR)/levels/ending + $(SKYCONV) $(SKYCONV_ARGS) --type cake --split $^ $(BUILD_DIR)/levels/ending # -------------------------------------- # Texture Bin Rules @@ -235,7 +235,7 @@ $(BUILD_DIR)/bin/eu/translation_fr.elf: SEGMENT_ADDRESS := 0x19000000 # -------------------------------------- $(BUILD_DIR)/bin/%_skybox.c: textures/skyboxes/%.png - $(SKYCONV) --type sky --split $^ $(BUILD_DIR)/bin + $(SKYCONV) $(SKYCONV_ARGS) --type sky --split $^ $(BUILD_DIR)/bin $(BUILD_DIR)/bin/%_skybox.elf: SEGMENT_ADDRESS := 0x0A000000 diff --git a/tools/stb/stb_image.h b/include/stb/stb_image.h similarity index 100% rename from tools/stb/stb_image.h rename to include/stb/stb_image.h diff --git a/tools/stb/stb_image_write.h b/include/stb/stb_image_write.h similarity index 100% rename from tools/stb/stb_image_write.h rename to include/stb/stb_image_write.h diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 17a7e25d..6f2c4a25 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -4,6 +4,7 @@ #include #define CONFIGFILE_DEFAULT "sm64config.txt" +#define DATAPATH_DEFAULT "res" #define MAX_BINDS 3 #define MAX_VOLUME 127 diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index e2aadfa1..210c34ff 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -5,6 +5,11 @@ #include #include +#ifdef EXTERNAL_TEXTURES +#define STB_IMAGE_IMPLEMENTATION +#include +#endif + #ifndef _LANGUAGE_C #define _LANGUAGE_C #endif @@ -315,6 +320,7 @@ static bool gfx_texture_cache_lookup(int tile, struct TextureHashmapNode **n, co return false; } +#ifndef EXTERNAL_TEXTURES static void import_texture_rgba32(int tile) { uint32_t width = rdp.texture_tile.line_size_bytes / 2; uint32_t height = (rdp.loaded_texture[tile].size_bytes / 2) / rdp.texture_tile.line_size_bytes; @@ -486,6 +492,7 @@ static void import_texture_ci8(int tile) { gfx_rapi->upload_texture(rgba32_buf, width, height); } +#endif // EXTERNAL_TEXTURES static void import_texture(int tile) { uint8_t fmt = rdp.texture_tile.fmt; @@ -495,6 +502,22 @@ static void import_texture(int tile) { return; } +#ifdef EXTERNAL_TEXTURES + // the "texture data" is actually a C string with the path to our texture in it + // load it from an external image in our data path + static char fpath[1024]; + int w, h; + const char *texname = (const char*)rdp.loaded_texture[tile].addr; + snprintf(fpath, sizeof(fpath), "%s/%s.png", DATAPATH_DEFAULT, texname); + u8 *data = stbi_load(fpath, &w, &h, NULL, 4); + if (!data) { + fprintf(stderr, "texture not found: `%s`\n", fpath); + abort(); + } + gfx_rapi->upload_texture(data, w, h); + stbi_image_free(data); // don't need this anymore +#else + // the texture data is actual texture data int t0 = get_time(); if (fmt == G_IM_FMT_RGBA) { if (siz == G_IM_SIZ_32b) { @@ -536,6 +559,7 @@ static void import_texture(int tile) { } int t1 = get_time(); //printf("Time diff: %d\n", t1 - t0); +#endif } static void gfx_normalize_vector(float v[3]) { diff --git a/tools/Makefile b/tools/Makefile index 0d8e6dd7..d81f5f9a 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -4,7 +4,7 @@ ifeq ($(UNAME),Darwin) endif CC := gcc -CFLAGS := -Llib -Iinclude -I . -Wall -Wextra -Wno-unused-parameter $(OSX_BUILD) -pedantic -std=c99 -O3 -s +CFLAGS := -Llib -I../include -I . -Wall -Wextra -Wno-unused-parameter $(OSX_BUILD) -pedantic -std=c99 -O3 -s PROGRAMS := n64graphics n64graphics_ci mio0 n64cksum textconv patch_libultra_math iplfontutil aifc_decode aiff_extract_codebook vadpcm_enc tabledesign extract_data_for_mio skyconv n64graphics_SOURCES := n64graphics.c utils.c diff --git a/tools/n64graphics_ci_dir/n64graphics_ci.c b/tools/n64graphics_ci_dir/n64graphics_ci.c index 6ec4476a..05fe88aa 100644 --- a/tools/n64graphics_ci_dir/n64graphics_ci.c +++ b/tools/n64graphics_ci_dir/n64graphics_ci.c @@ -6,9 +6,9 @@ #define STBI_NO_HDR #define STBI_NO_TGA #define STB_IMAGE_IMPLEMENTATION -#include "../stb/stb_image.h" +#include #define STB_IMAGE_WRITE_IMPLEMENTATION -#include "../stb/stb_image_write.h" +#include #include "exoquant/exoquant.h" diff --git a/tools/skyconv.c b/tools/skyconv.c index 4fb0523e..a66c5c1b 100644 --- a/tools/skyconv.c +++ b/tools/skyconv.c @@ -75,6 +75,7 @@ char *writeDir; char skyboxName[256]; bool expanded = false; bool writeTiles; +bool storeNamesOnly = false; static void allocate_tiles() { const ImageProps props = IMAGE_PROPERTIES[type][true]; @@ -291,11 +292,18 @@ static void write_skybox_c() { /* write c data to disc */ for (int i = 0; i < props.numRows * props.numCols; i++) { if (!tiles[i].useless) { - fprintf(cFile, "ALIGNED8 static const u8 %s_skybox_texture_%05X[] = {\n", skyboxName, tiles[i].pos); - - print_raw_data(cFile, &tiles[i]); - - fputs("};\n\n", cFile); + if (storeNamesOnly) { + fprintf( + cFile, + "ALIGNED8 static const u8 %s_skybox_texture_%05X[] = " + "\"textures/skybox_tiles/%s.%d.rgba16\";\n\n", + skyboxName, tiles[i].pos, skyboxName, tiles[i].pos + ); + } else { + fprintf(cFile, "ALIGNED8 static const u8 %s_skybox_texture_%05X[] = {\n", skyboxName, tiles[i].pos); + print_raw_data(cFile, &tiles[i]); + fputs("};\n\n", cFile); + } } } @@ -334,9 +342,18 @@ static void write_cake_c() { int numTiles = TABLE_DIMENSIONS[type].cols * TABLE_DIMENSIONS[type].rows; for (int i = 0; i < numTiles; ++i) { - fprintf(cFile, "ALIGNED8 static const u8 cake_end_texture_%s%d[] = {\n", euSuffx, i); - print_raw_data(cFile, &tiles[i]); - fputs("};\n\n", cFile); + if (storeNamesOnly) { + fprintf( + cFile, + "ALIGNED8 static const u8 cake_end_texture_%s%d[] = " + "\"textures/skybox_tiles/cake%s.%d.rgba16\";\n\n", + euSuffx, i, *euSuffx ? "_eu" : "", tiles[i].pos + ); + } else { + fprintf(cFile, "ALIGNED8 static const u8 cake_end_texture_%s%d[] = {\n", euSuffx, i); + print_raw_data(cFile, &tiles[i]); + fputs("};\n\n", cFile); + } } fclose(cFile); } @@ -473,7 +490,8 @@ static void usage() { "Usage: %s --type sky|cake|cake_eu {--combine INPUT OUTPUT | --split INPUT OUTPUT}\n" "\n" "Optional arguments:\n" - " --write-tiles OUTDIR Also create the individual tiles' PNG files\n", programName); + " --write-tiles OUTDIR Also create the individual tiles' PNG files\n" + " --store-names Store texture file names instead of actual data\n", programName); } // Modified from n64split @@ -529,6 +547,10 @@ static int parse_arguments(int argc, char *argv[]) { writeTiles = true; writeDir = argv[i]; } + + if (strcmp(argv[i], "--store-names") == 0) { + storeNamesOnly = true; + } } return 1; From 1873f7aba57513d6ea5cb2577e827be2cd4b4397 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 25 May 2020 07:17:10 +0300 Subject: [PATCH 054/166] game now uses non-working directory paths by default saves by default go into XDG_DATA_HOME/sm64pc external data is read from the executable directory, if it's not found there on Unix systems the game will attempt to read it from some paths like /usr/local/share/sm64pc both save data and readonly data fall back to other options in case of a problem behavior can be overridden by specifying --datapath and --savepath on the CLI both of those will expand the exclamation point ('!') to the executable path, e. g. --savepath '!/save' --- Makefile | 8 +- src/game/options_menu.c | 2 +- src/pc/cliopts.c | 39 ++++---- src/pc/cliopts.h | 6 +- src/pc/configfile.c | 14 +++ src/pc/configfile.h | 2 +- src/pc/gfx/gfx_pc.c | 5 +- src/pc/pc_main.c | 4 +- src/pc/platform.c | 158 ++++++++++++++++++++++++++++++++ src/pc/platform.h | 16 ++++ src/pc/ultra_reimplementation.c | 9 +- 11 files changed, 234 insertions(+), 29 deletions(-) create mode 100644 src/pc/platform.c create mode 100644 src/pc/platform.h diff --git a/Makefile b/Makefile index e9ebc5d0..17b93a55 100644 --- a/Makefile +++ b/Makefile @@ -491,8 +491,8 @@ PYTHON := python3 SDLCONFIG := $(CROSS)sdl2-config ifeq ($(WINDOWS_BUILD),1) -CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) `$(SDLCONFIG) --cflags` -CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv `$(SDLCONFIG) --cflags` +CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) `$(SDLCONFIG) --cflags` -DUSE_SDL=2 +CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv `$(SDLCONFIG) --cflags` -DUSE_SDL=2 else ifeq ($(TARGET_WEB),1) CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -s USE_SDL=2 @@ -500,8 +500,8 @@ CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fn # Linux / Other builds below else -CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) `$(SDLCONFIG) --cflags` -CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv `$(SDLCONFIG) --cflags` +CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) `$(SDLCONFIG) --cflags` -DUSE_SDL=2 +CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv `$(SDLCONFIG) --cflags` -DUSE_SDL=2 endif # Check for enhancement options diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 8d1661bf..4e08dbdb 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -496,7 +496,7 @@ void optmenu_toggle(void) { newcam_init_settings(); // load bettercam settings from config vars #endif controller_reconfigure(); // rebind using new config values - configfile_save(gCLIOpts.ConfigFile); + configfile_save(configfile_name()); } } diff --git a/src/pc/cliopts.c b/src/pc/cliopts.c index 0a0e6a55..bff335a2 100644 --- a/src/pc/cliopts.c +++ b/src/pc/cliopts.c @@ -2,6 +2,7 @@ #include "configfile.h" #include "cheats.h" #include "pc_main.h" +#include "platform.h" #include #include @@ -15,15 +16,27 @@ static void print_help(void) { printf("Super Mario 64 PC Port\n"); printf("%-20s\tEnables the cheat menu.\n", "--cheats"); printf("%-20s\tSaves the configuration file as CONFIGNAME.\n", "--configfile CONFIGNAME"); + printf("%-20s\tOverrides the default read-only data path ('!' expands to executable path).\n", "--datapath DATAPATH"); + printf("%-20s\tOverrides the default save/config path ('!' expands to executable path).\n", "--savepath SAVEPATH"); printf("%-20s\tStarts the game in full screen mode.\n", "--fullscreen"); printf("%-20s\tSkips the Peach and Castle intro when starting a new game.\n", "--skip-intro"); printf("%-20s\tStarts the game in windowed mode.\n", "--windowed"); } +static inline int arg_string(const char *name, const char *value, char *target) { + const unsigned int arglen = strlen(value); + if (arglen >= SYS_MAX_PATH) { + fprintf(stderr, "Supplied value for `%s` is too long.\n", name); + return 0; + } + strncpy(target, value, arglen); + target[arglen] = '\0'; + return 1; +} + void parse_cli_opts(int argc, char* argv[]) { // Initialize options with false values. memset(&gCLIOpts, 0, sizeof(gCLIOpts)); - strncpy(gCLIOpts.ConfigFile, CONFIGFILE_DEFAULT, sizeof(gCLIOpts.ConfigFile)); for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "--skip-intro") == 0) // Skip Peach Intro @@ -38,25 +51,19 @@ void parse_cli_opts(int argc, char* argv[]) { else if (strcmp(argv[i], "--cheats") == 0) // Enable cheats menu Cheats.EnableCheats = true; + else if (strcmp(argv[i], "--configfile") == 0 && (i + 1) < argc) + arg_string("--configfile", argv[++i], gCLIOpts.ConfigFile); + + else if (strcmp(argv[i], "--datapath") == 0 && (i + 1) < argc) + arg_string("--datapath", argv[++i], gCLIOpts.DataPath); + + else if (strcmp(argv[i], "--savepath") == 0 && (i + 1) < argc) + arg_string("--savepath", argv[++i], gCLIOpts.SavePath); + // Print help else if (strcmp(argv[i], "--help") == 0) { print_help(); game_exit(); } - - else if (strcmp(argv[i], "--configfile") == 0) { - if (i+1 < argc) { - const unsigned int arglen = strlen(argv[i+1]); - if (arglen >= sizeof(gCLIOpts.ConfigFile)) { - fprintf(stderr, "Configuration file supplied has a name too long.\n"); - } else { - strncpy(gCLIOpts.ConfigFile, argv[i+1], arglen); - gCLIOpts.ConfigFile[arglen] = '\0'; - } - } - - // Skip the next string since it's the configuration file name. - i++; - } } } diff --git a/src/pc/cliopts.h b/src/pc/cliopts.h index d20dcb4f..2d084eda 100644 --- a/src/pc/cliopts.h +++ b/src/pc/cliopts.h @@ -1,10 +1,14 @@ #ifndef _CLIOPTS_H #define _CLIOPTS_H +#include "platform.h" + struct PCCLIOptions { unsigned int SkipIntro; unsigned int FullScreen; - char ConfigFile[1024]; + char ConfigFile[SYS_MAX_PATH]; + char SavePath[SYS_MAX_PATH]; + char DataPath[SYS_MAX_PATH]; }; extern struct PCCLIOptions gCLIOpts; diff --git a/src/pc/configfile.c b/src/pc/configfile.c index c1983855..588d075a 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -7,7 +7,9 @@ #include #include +#include "platform.h" #include "configfile.h" +#include "cliopts.h" #include "gfx/gfx_screen_config.h" #include "controller/controller_api.h" @@ -192,6 +194,18 @@ static unsigned int tokenize_string(char *str, int maxTokens, char **tokens) { return count; } +// Gets the config file path and caches it +const char *configfile_name(void) { + static char cfgpath[SYS_MAX_PATH] = { 0 }; + if (!cfgpath[0]) { + if (gCLIOpts.ConfigFile[0]) + snprintf(cfgpath, sizeof(cfgpath), "%s", gCLIOpts.ConfigFile); + else + snprintf(cfgpath, sizeof(cfgpath), "%s/%s", sys_save_path(), CONFIGFILE_DEFAULT); + } + return cfgpath; +} + // Loads the config file specified by 'filename' void configfile_load(const char *filename) { FILE *file; diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 6f2c4a25..263d3907 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -4,7 +4,6 @@ #include #define CONFIGFILE_DEFAULT "sm64config.txt" -#define DATAPATH_DEFAULT "res" #define MAX_BINDS 3 #define MAX_VOLUME 127 @@ -51,5 +50,6 @@ extern bool configHUD; void configfile_load(const char *filename); void configfile_save(const char *filename); +const char *configfile_name(void); #endif diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 210c34ff..5abe91e3 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -23,6 +23,7 @@ #include "gfx_rendering_api.h" #include "gfx_screen_config.h" +#include "../platform.h" #include "../configfile.h" #define SUPPORT_CHECK(x) assert(x) @@ -505,10 +506,10 @@ static void import_texture(int tile) { #ifdef EXTERNAL_TEXTURES // the "texture data" is actually a C string with the path to our texture in it // load it from an external image in our data path - static char fpath[1024]; + static char fpath[SYS_MAX_PATH]; int w, h; const char *texname = (const char*)rdp.loaded_texture[tile].addr; - snprintf(fpath, sizeof(fpath), "%s/%s.png", DATAPATH_DEFAULT, texname); + snprintf(fpath, sizeof(fpath), "%s/%s.png", sys_data_path(), texname); u8 *data = stbi_load(fpath, &w, &h, NULL, 4); if (!data) { fprintf(stderr, "texture not found: `%s`\n", fpath); diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index c4162c32..ddb83ce4 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -92,7 +92,7 @@ void audio_shutdown(void) { } void game_deinit(void) { - configfile_save(gCLIOpts.ConfigFile);; + configfile_save(configfile_name()); controller_shutdown(); audio_shutdown(); gfx_shutdown(); @@ -145,7 +145,7 @@ void main_func(void) { main_pool_init(pool, pool + sizeof(pool) / sizeof(pool[0])); gEffectsMemoryPool = mem_pool_init(0x4000, MEMORY_POOL_LEFT); - configfile_load(gCLIOpts.ConfigFile); + configfile_load(configfile_name()); wm_api = &gfx_sdl; rendering_api = &gfx_opengl_api; diff --git a/src/pc/platform.c b/src/pc/platform.c new file mode 100644 index 00000000..720c91c1 --- /dev/null +++ b/src/pc/platform.c @@ -0,0 +1,158 @@ +#include +#include +#include +#include +#include +#include +#include +#ifdef _WIN32 +#include +#endif + +#include "cliopts.h" + +static inline bool dir_exists(const char *path) { + struct stat st; + return (stat(path, &st) == 0 && S_ISDIR(st.st_mode)); +} + +bool sys_mkdir(const char *name) { + #ifdef _WIN32 + return _mkdir(name) == 0; + #else + return mkdir(name, 0777) == 0; + #endif +} + +#if USE_SDL + +// we can just ask SDL for most of this shit if we have it +#include + +const char *sys_data_path(void) { + static char path[SYS_MAX_PATH] = { 0 }; + + if (!path[0]) { + // prefer the override, if it is set + // "!" expands to executable path + if (gCLIOpts.DataPath[0]) { + if (gCLIOpts.DataPath[0] == '!') + snprintf(path, sizeof(path), "%s%s", sys_exe_path(), gCLIOpts.DataPath + 1); + else + snprintf(path, sizeof(path), "%s", gCLIOpts.DataPath); + if (dir_exists(path)) return path; + printf("Warning: Specified data path ('%s') doesn't exist\n", path); + } + + // then the executable directory + snprintf(path, sizeof(path), "%s/" DATADIR, sys_exe_path()); + if (dir_exists(path)) return path; + + // then the save path + snprintf(path, sizeof(path), "%s/" DATADIR, sys_save_path()); + if (dir_exists(path)) return path; + + #if defined(__linux__) || defined(__unix__) + // on Linux/BSD try some common paths for read-only data + const char *try[] = { + "/usr/local/share/sm64pc/" DATADIR, + "/usr/share/sm64pc/" DATADIR, + "/opt/sm64pc/" DATADIR, + }; + for (unsigned i = 0; i < sizeof(try) / sizeof(try[0]); ++i) { + if (dir_exists(try[i])) { + strcpy(path, try[i]); + return path; + } + } + #endif + + // hope for the best + strcpy(path, "./" DATADIR); + } + + return path; +} + +const char *sys_save_path(void) { + static char path[SYS_MAX_PATH] = { 0 }; + + if (!path[0]) { + // if the override is set, use that + // "!" expands to executable path + if (gCLIOpts.SavePath[0]) { + if (gCLIOpts.SavePath[0] == '!') + snprintf(path, sizeof(path), "%s%s", sys_exe_path(), gCLIOpts.SavePath + 1); + else + snprintf(path, sizeof(path), "%s", gCLIOpts.SavePath); + if (!dir_exists(path) && !sys_mkdir(path)) { + printf("Warning: Specified save path ('%s') doesn't exist and can't be created\n", path); + path[0] = 0; // doesn't exist and no write access + } + } + + // didn't work? get it from SDL + if (!path[0]) { + char *sdlpath = SDL_GetPrefPath("", "sm64pc"); + if (sdlpath) { + const unsigned int len = strlen(sdlpath); + strncpy(path, sdlpath, sizeof(path)); + path[sizeof(path)-1] = 0; + SDL_free(sdlpath); + if (path[len-1] == '/' || path[len-1] == '\\') + path[len-1] = 0; // strip the trailing separator + if (!dir_exists(path) && !sys_mkdir(path)) + path[0] = 0; + } + } + + // if all else fails, just store near the EXE + if (!path[0]) + strcpy(path, sys_exe_path()); + + printf("Save path set to '%s'\n", path); + } + + return path; +} + +const char *sys_exe_path(void) { + static char path[SYS_MAX_PATH] = { 0 }; + + if (!path[0]) { + char *sdlpath = SDL_GetBasePath(); + if (sdlpath) { + // use the SDL path if it exists + const unsigned int len = strlen(sdlpath); + strncpy(path, sdlpath, sizeof(path)); + path[sizeof(path)-1] = 0; + SDL_free(sdlpath); + if (path[len-1] == '/' || path[len-1] == '\\') + path[len-1] = 0; // strip the trailing separator + } else { + // hope for the best + strcpy(path, "."); + } + printf("Executable path set to '%s'\n", path); + } + + return path; +} + +#else + +#warning "You might want to implement these functions for your platform" + +const char *sys_data_path(void) { + return "."; +} + +const char *sys_save_path(void) { + return "."; +} + +const char *sys_exe_path(void) { + return "."; +} + +#endif // platform switch diff --git a/src/pc/platform.h b/src/pc/platform.h new file mode 100644 index 00000000..dae51bf9 --- /dev/null +++ b/src/pc/platform.h @@ -0,0 +1,16 @@ +#ifndef _SM64_PLATFORM_H_ +#define _SM64_PLATFORM_H_ + +#include + +/* Platform-specific functions and whatnot */ + +#define DATADIR "res" +#define SYS_MAX_PATH 1024 // FIXME: define this on different platforms + +bool sys_mkdir(const char *name); // creates with 0777 by default +const char *sys_data_path(void); +const char *sys_save_path(void); +const char *sys_exe_path(void); + +#endif // _SM64_PLATFORM_H_ diff --git a/src/pc/ultra_reimplementation.c b/src/pc/ultra_reimplementation.c index 476e3590..c28894f6 100644 --- a/src/pc/ultra_reimplementation.c +++ b/src/pc/ultra_reimplementation.c @@ -2,6 +2,7 @@ #include #include "lib/src/libultra_internal.h" #include "macros.h" +#include "platform.h" #ifdef TARGET_WEB #include @@ -119,7 +120,9 @@ s32 osEepromLongRead(UNUSED OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) ret = 0; } #else - FILE *fp = fopen("sm64_save_file.bin", "rb"); + char save_path[SYS_MAX_PATH] = { 0 }; + snprintf(save_path, sizeof(save_path), "%s/sm64_save_file.bin", sys_save_path()); + FILE *fp = fopen(save_path, "rb"); if (fp == NULL) { return -1; } @@ -149,7 +152,9 @@ s32 osEepromLongWrite(UNUSED OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes }, content); s32 ret = 0; #else - FILE* fp = fopen("sm64_save_file.bin", "wb"); + char save_path[SYS_MAX_PATH] = { 0 }; + snprintf(save_path, sizeof(save_path), "%s/sm64_save_file.bin", sys_save_path()); + FILE *fp = fopen(save_path, "wb"); if (fp == NULL) { return -1; } From 6166402626250b19c94a2d23d6f2b4c880ba7a05 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Mon, 25 May 2020 17:06:50 +0900 Subject: [PATCH 055/166] Removed ifndefs from main --- src/game/debug.c | 4 ++-- src/game/main.c | 28 +++++++++++++++------------- src/game/main.h | 19 ++++++++----------- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/game/debug.c b/src/game/debug.c index 2a364605..1f6fc799 100644 --- a/src/game/debug.c +++ b/src/game/debug.c @@ -391,7 +391,7 @@ static void try_change_debug_page(void) { * sDebugSysCursor. This is used to adjust enemy and effect behaviors * on the fly. (unused) */ -#ifndef VERSION_SH +#ifdef VERSION_SH static #endif void try_modify_debug_controls(void) { @@ -524,7 +524,7 @@ void try_do_mario_debug_object_spawn(void) { } // TODO: figure out what this is -#ifndef VERSION_SH +#ifdef VERSION_SH static #endif void debug_print_obj_move_flags(void) { diff --git a/src/game/main.c b/src/game/main.c index 6f4ad77b..78bf55aa 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -13,6 +13,12 @@ #include "main.h" #include "thread6.h" +/** + * WARNING! + * This entry point is deprecated because TARGET_N64 is no longer required for building PC version. + * The new entry point is located in 'pc/pc_main.c' + **/ + // Message IDs #define MESG_SP_COMPLETE 100 #define MESG_DP_COMPLETE 101 @@ -25,11 +31,6 @@ OSThread gIdleThread; OSThread gMainThread; OSThread gGameLoopThread; OSThread gSoundThread; -#ifndef VERSION_SH -OSThread gRumblePakThread; - -s32 gRumblePakPfs; // Actually an OSPfs but we don't have that header yet -#endif OSIoMesg gDmaIoMesg; OSMesg D_80339BEC; @@ -38,19 +39,20 @@ OSMesgQueue gSIEventMesgQueue; OSMesgQueue gPIMesgQueue; OSMesgQueue gIntrMesgQueue; OSMesgQueue gSPTaskMesgQueue; -#ifndef VERSION_SH -OSMesgQueue gRumblePakSchedulerMesgQueue; -OSMesgQueue gRumbleThreadVIMesgQueue; -#endif OSMesg gDmaMesgBuf[1]; OSMesg gPIMesgBuf[32]; OSMesg gSIEventMesgBuf[1]; OSMesg gIntrMesgBuf[16]; OSMesg gUnknownMesgBuf[16]; -#ifndef VERSION_SH + +#ifdef VERSION_SH +OSThread gRumblePakThread; +OSMesgQueue gRumblePakSchedulerMesgQueue; +OSMesgQueue gRumbleThreadVIMesgQueue; OSMesg gRumblePakSchedulerMesgBuf[1]; OSMesg gRumbleThreadVIMesgBuf[1]; +s32 gRumblePakPfs; // Actually an OSPfs but we don't have that header yet struct RumbleData gRumbleDataQueue[3]; struct StructSH8031D9B0 gCurrRumbleSettings; #endif @@ -152,7 +154,7 @@ void create_thread(OSThread *thread, OSId id, void (*entry)(void *), void *arg, osCreateThread(thread, id, entry, arg, sp, pri); } -#ifndef VERSION_SH +#ifdef VERSION_SH extern void func_sh_802F69CC(void); #endif @@ -162,7 +164,7 @@ void handle_nmi_request(void) { func_80320890(); sound_banks_disable(2, 0x037A); fadeout_music(90); -#ifndef VERSION_SH +#ifdef VERSION_SH func_sh_802F69CC(); #endif } @@ -233,7 +235,7 @@ void handle_vblank(void) { stub_main_3(); sNumVblanks++; -#ifndef VERSION_SH +#ifdef VERSION_SH if (gResetTimer > 0 && gResetTimer < 100) { gResetTimer++; } diff --git a/src/game/main.h b/src/game/main.h index e00cee30..5746164f 100644 --- a/src/game/main.h +++ b/src/game/main.h @@ -24,19 +24,11 @@ extern OSThread gIdleThread; extern OSThread gMainThread; extern OSThread gGameLoopThread; extern OSThread gSoundThread; -#ifndef VERSION_SH -extern OSThread gRumblePakThread; - -extern s32 gRumblePakPfs; // Actually an OSPfs but we don't have that header yet -#endif extern OSMesgQueue gPIMesgQueue; extern OSMesgQueue gIntrMesgQueue; extern OSMesgQueue gSPTaskMesgQueue; -#ifndef VERSION_SH -extern OSMesgQueue gRumblePakSchedulerMesgQueue; -extern OSMesgQueue gRumbleThreadVIMesgQueue; -#endif + extern OSMesg gDmaMesgBuf[1]; extern OSMesg gPIMesgBuf[32]; extern OSMesg gSIEventMesgBuf[1]; @@ -46,13 +38,18 @@ extern OSIoMesg gDmaIoMesg; extern OSMesg D_80339BEC; extern OSMesgQueue gDmaMesgQueue; extern OSMesgQueue gSIEventMesgQueue; -#ifndef VERSION_SH + +#ifdef VERSION_SH +extern OSThread gRumblePakThread; extern OSMesg gRumblePakSchedulerMesgBuf[1]; extern OSMesg gRumbleThreadVIMesgBuf[1]; +extern OSMesgQueue gRumblePakSchedulerMesgQueue; +extern OSMesgQueue gRumbleThreadVIMesgQueue; +#endif +extern s32 gRumblePakPfs; // Actually an OSPfs but we don't have that header yet extern struct RumbleData gRumbleDataQueue[3]; extern struct StructSH8031D9B0 gCurrRumbleSettings; -#endif extern struct VblankHandler *gVblankHandler1; extern struct VblankHandler *gVblankHandler2; From f8139cce6da5a25657ac45f3ba24f20f9585adaf Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 26 May 2020 00:47:08 +0300 Subject: [PATCH 056/166] fix tools Makefile --- tools/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/Makefile b/tools/Makefile index d81f5f9a..28ff49bf 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -4,7 +4,7 @@ ifeq ($(UNAME),Darwin) endif CC := gcc -CFLAGS := -Llib -I../include -I . -Wall -Wextra -Wno-unused-parameter $(OSX_BUILD) -pedantic -std=c99 -O3 -s +CFLAGS := -Llib -Iinclude -I../include -I . -Wall -Wextra -Wno-unused-parameter $(OSX_BUILD) -pedantic -std=c99 -O3 -s PROGRAMS := n64graphics n64graphics_ci mio0 n64cksum textconv patch_libultra_math iplfontutil aifc_decode aiff_extract_codebook vadpcm_enc tabledesign extract_data_for_mio skyconv n64graphics_SOURCES := n64graphics.c utils.c From 655c381d6fa48a044f4aa2ec70d32e9a024ff259 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 26 May 2020 00:54:51 +0300 Subject: [PATCH 057/166] add texture preloading when EXTERNAL_TEXTURES is defined, the texture hashmap in gfx_pc.c uses texture names as keys all textures are precached on startup if EXTERNAL_TEXTURES is defined and 'precache' is true in the config --- src/pc/configfile.c | 7 +- src/pc/configfile.h | 3 + src/pc/gfx/gfx_pc.c | 163 +++++++++++++++++++++++++++++++++----------- src/pc/platform.c | 86 ++++++++++++++++++++--- src/pc/platform.h | 18 +++++ 5 files changed, 230 insertions(+), 47 deletions(-) diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 588d075a..2baf96cf 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -66,7 +66,9 @@ unsigned int configKeyStickUp[MAX_BINDS] = { 0x0011, VK_INVALID, VK_INVALID unsigned int configKeyStickDown[MAX_BINDS] = { 0x001F, VK_INVALID, VK_INVALID }; unsigned int configKeyStickLeft[MAX_BINDS] = { 0x001E, VK_INVALID, VK_INVALID }; unsigned int configKeyStickRight[MAX_BINDS] = { 0x0020, VK_INVALID, VK_INVALID }; - +#ifdef EXTERNAL_TEXTURES +bool configPrecacheRes = false; +#endif #ifdef BETTERCAMERA // BetterCamera settings unsigned int configCameraXSens = 50; @@ -105,6 +107,9 @@ static const struct ConfigOption options[] = { {.name = "key_stickdown", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickDown}, {.name = "key_stickleft", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickLeft}, {.name = "key_stickright", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickRight}, + #ifdef EXTERNAL_TEXTURES + {.name = "precache", .type = CONFIG_TYPE_BOOL, .boolValue = &configPrecacheRes}, + #endif #ifdef BETTERCAMERA {.name = "bettercam_enable", .type = CONFIG_TYPE_BOOL, .boolValue = &configEnableCamera}, {.name = "bettercam_mouse_look", .type = CONFIG_TYPE_BOOL, .boolValue = &configCameraMouse}, diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 263d3907..1ae38f84 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -35,6 +35,9 @@ extern unsigned int configKeyStickUp[]; extern unsigned int configKeyStickDown[]; extern unsigned int configKeyStickLeft[]; extern unsigned int configKeyStickRight[]; +#ifdef EXTERNAL_TEXTURES +extern bool configPrecacheRes; +#endif #ifdef BETTERCAMERA extern unsigned int configCameraXSens; extern unsigned int configCameraYSens; diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 5abe91e3..c0900831 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -46,6 +46,17 @@ #define MAX_LIGHTS 2 #define MAX_VERTICES 64 +#ifdef EXTERNAL_TEXTURES +# define MAX_CACHED_TEXTURES 4096 // for preloading purposes +# define HASH_SHIFT 0 +#else +# define MAX_CACHED_TEXTURES 512 +# define HASH_SHIFT 5 +#endif + +#define HASHMAP_LEN (MAX_CACHED_TEXTURES * 2) +#define HASH_MASK (HASHMAP_LEN - 1) + struct RGBA { uint8_t r, g, b, a; }; @@ -72,8 +83,8 @@ struct TextureHashmapNode { bool linear_filter; }; static struct { - struct TextureHashmapNode *hashmap[1024]; - struct TextureHashmapNode pool[512]; + struct TextureHashmapNode *hashmap[HASHMAP_LEN]; + struct TextureHashmapNode pool[MAX_CACHED_TEXTURES]; uint32_t pool_pos; } gfx_texture_cache; @@ -161,41 +172,17 @@ static size_t buf_vbo_num_tris; static struct GfxWindowManagerAPI *gfx_wapi; static struct GfxRenderingAPI *gfx_rapi; -#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && !defined(__APPLE__) -// old mingw -# include <_mingw.h> -# define NO_CLOCK_GETTIME +#ifdef EXTERNAL_TEXTURES +static inline size_t string_hash(const uint8_t *str) { + size_t h = 0; + for (const uint8_t *p = str; *p; p++) + h = 31 * h + *p; + return h; +} #endif -#ifdef NO_CLOCK_GETTIME - -#if defined(_WIN32) -#include -#define CLOCK_MONOTONIC 0 -// https://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows -struct timespec { long tv_sec; long tv_nsec; }; -int clock_gettime(int arg, struct timespec *spec) { - __int64 wintime; - GetSystemTimeAsFileTime((FILETIME*)&wintime); - wintime -= 116444736000000000LL; //1jan1601 to 1jan1970 - spec->tv_sec = wintime / 10000000LL; //seconds - spec->tv_nsec = wintime % 10000000LL*100; //nano-seconds - return 0; -} -#else // _WIN32 -#error "Add a clock_gettime() impl for your platform!" -#endif // _WIN32 - -#else // NO_CLOCK_GETTIME - -#include - -#endif // NO_CLOCK_GETTIME - static unsigned long get_time(void) { - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - return (unsigned long)ts.tv_sec * 1000000 + ts.tv_nsec / 1000; + return 0; } static void gfx_flush(void) { @@ -287,11 +274,19 @@ static struct ColorCombiner *gfx_lookup_or_create_color_combiner(uint32_t cc_id) } static bool gfx_texture_cache_lookup(int tile, struct TextureHashmapNode **n, const uint8_t *orig_addr, uint32_t fmt, uint32_t siz) { + #ifdef EXTERNAL_TEXTURES // hash and compare the data (i.e. the texture name) itself + size_t hash = string_hash(orig_addr); + #define CMPADDR(x, y) (x && !sys_strcasecmp(x, y)) + #else // hash and compare the address size_t hash = (uintptr_t)orig_addr; - hash = (hash >> 5) & 0x3ff; + #define CMPADDR(x, y) x == y + #endif + + hash = (hash >> HASH_SHIFT) & HASH_MASK; + struct TextureHashmapNode **node = &gfx_texture_cache.hashmap[hash]; while (*node != NULL && *node - gfx_texture_cache.pool < gfx_texture_cache.pool_pos) { - if ((*node)->texture_addr == orig_addr && (*node)->fmt == fmt && (*node)->siz == siz) { + if (CMPADDR((*node)->texture_addr, orig_addr) && (*node)->fmt == fmt && (*node)->siz == siz) { gfx_rapi->select_texture(tile, (*node)->texture_id); *n = *node; return true; @@ -302,7 +297,7 @@ static bool gfx_texture_cache_lookup(int tile, struct TextureHashmapNode **n, co // Pool is full. We just invalidate everything and start over. gfx_texture_cache.pool_pos = 0; node = &gfx_texture_cache.hashmap[hash]; - //puts("Clearing texture cache"); + // puts("Clearing texture cache"); } *node = &gfx_texture_cache.pool[gfx_texture_cache.pool_pos++]; if ((*node)->texture_addr == NULL) { @@ -319,9 +314,11 @@ static bool gfx_texture_cache_lookup(int tile, struct TextureHashmapNode **n, co (*node)->siz = siz; *n = *node; return false; + #undef CMPADDR } #ifndef EXTERNAL_TEXTURES + static void import_texture_rgba32(int tile) { uint32_t width = rdp.texture_tile.line_size_bytes / 2; uint32_t height = (rdp.loaded_texture[tile].size_bytes / 2) / rdp.texture_tile.line_size_bytes; @@ -493,6 +490,89 @@ static void import_texture_ci8(int tile) { gfx_rapi->upload_texture(rgba32_buf, width, height); } + +#else // EXTERNAL_TEXTURES + +// this is taken straight from n64graphics +static bool texname_to_texformat(const char *name, u8 *fmt, u8 *siz) { + static const struct { + const char *name; + const u8 format; + const u8 size; + } fmt_table[] = { + { "rgba16", G_IM_FMT_RGBA, G_IM_SIZ_16b }, + { "rgba32", G_IM_FMT_RGBA, G_IM_SIZ_32b }, + { "ia1", G_IM_FMT_IA, G_IM_SIZ_8b }, // uhh + { "ia4", G_IM_FMT_IA, G_IM_SIZ_4b }, + { "ia8", G_IM_FMT_IA, G_IM_SIZ_8b }, + { "ia16", G_IM_FMT_IA, G_IM_SIZ_16b }, + { "i4", G_IM_FMT_I, G_IM_SIZ_4b }, + { "i8", G_IM_FMT_I, G_IM_SIZ_8b }, + { "ci8", G_IM_FMT_I, G_IM_SIZ_8b }, + { "ci16", G_IM_FMT_I, G_IM_SIZ_16b }, + }; + + char *fstr = strrchr(name, '.'); + if (!fstr) return false; // no format string? + fstr++; + + for (unsigned i = 0; i < sizeof(fmt_table) / sizeof(fmt_table[0]); ++i) { + if (!sys_strcasecmp(fstr, fmt_table[i].name)) { + *fmt = fmt_table[i].format; + *siz = fmt_table[i].size; + return true; + } + } + + return false; +} + +// calls import_texture() on every texture in the res folder +// we can get the format and size from the texture files +// and then cache them using gfx_texture_cache_lookup +static bool preload_texture(const char *path) { + // strip off the extension + char texname[SYS_MAX_PATH]; + strncpy(texname, path, sizeof(texname)); + texname[sizeof(texname)-1] = 0; + char *dot = strrchr(texname, '.'); + if (dot) *dot = 0; + + // get the format and size from filename + u8 fmt, siz; + if (!texname_to_texformat(texname, &fmt, &siz)) { + fprintf(stderr, "unknown texture format: `%s`, skipping\n", texname); + return true; // just skip it, might be a stray skybox or something + } + + // strip off the data path + const char *datapath = sys_data_path(); + const unsigned int datalen = strlen(datapath); + const char *actualname = (!strncmp(texname, datapath, datalen)) ? + texname + datalen + 1 : texname; + // skip any separators + while (*actualname == '/' || *actualname == '\\') ++actualname; + // this will be stored in the hashtable, so make a copy + actualname = sys_strdup(actualname); + assert(actualname); + + struct TextureHashmapNode *n; + if (!gfx_texture_cache_lookup(0, &n, actualname, fmt, siz)) { + // new texture, load it + int w, h; + u8 *data = stbi_load(path, &w, &h, NULL, 4); + if (!data) { + fprintf(stderr, "could not load texture: `%s`\n", path); + return false; + } + // upload it + gfx_rapi->upload_texture(data, w, h); + stbi_image_free(data); + } + + return true; +} + #endif // EXTERNAL_TEXTURES static void import_texture(int tile) { @@ -512,7 +592,7 @@ static void import_texture(int tile) { snprintf(fpath, sizeof(fpath), "%s/%s.png", sys_data_path(), texname); u8 *data = stbi_load(fpath, &w, &h, NULL, 4); if (!data) { - fprintf(stderr, "texture not found: `%s`\n", fpath); + fprintf(stderr, "could not load texture: `%s`\n", fpath); abort(); } gfx_rapi->upload_texture(data, w, h); @@ -1663,6 +1743,13 @@ void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi) { for (size_t i = 0; i < sizeof(precomp_shaders) / sizeof(uint32_t); i++) { gfx_lookup_or_create_shader_program(precomp_shaders[i]); } + #ifdef EXTERNAL_TEXTURES + // preload all textures if needed + if (configPrecacheRes) { + printf("Precaching textures from `%s`\n", sys_data_path()); + sys_dir_walk(sys_data_path(), preload_texture, true); + } + #endif } void gfx_start_frame(void) { diff --git a/src/pc/platform.c b/src/pc/platform.c index 720c91c1..00cfa289 100644 --- a/src/pc/platform.c +++ b/src/pc/platform.c @@ -5,15 +5,85 @@ #include #include #include +#include +#include #ifdef _WIN32 #include #endif #include "cliopts.h" -static inline bool dir_exists(const char *path) { +/* these are not available on some platforms, so might as well */ + +char *sys_strlwr(char *src) { + for (unsigned char *p = (unsigned char *)src; *p; p++) + *p = tolower(*p); + return src; +} + +char *sys_strdup(const char *src) { + const unsigned len = strlen(src) + 1; + char *newstr = malloc(len); + if (newstr) memcpy(newstr, src, len); + return newstr; +} + +int sys_strcasecmp(const char *s1, const char *s2) { + const unsigned char *p1 = (const unsigned char *) s1; + const unsigned char *p2 = (const unsigned char *) s2; + int result; + if (p1 == p2) + return 0; + while ((result = tolower(*p1) - tolower(*p2++)) == 0) + if (*p1++ == '\0') + break; + return result; +} + +/* file system stuff */ + +bool sys_file_exists(const char *name) { struct stat st; - return (stat(path, &st) == 0 && S_ISDIR(st.st_mode)); + return (stat(name, &st) == 0 && S_ISREG(st.st_mode)); +} + +bool sys_dir_exists(const char *name) { + struct stat st; + return (stat(name, &st) == 0 && S_ISDIR(st.st_mode)); +} + +bool sys_dir_walk(const char *base, walk_fn_t walk, const bool recur) { + char fullpath[SYS_MAX_PATH]; + DIR *dir; + struct dirent *ent; + + if (!(dir = opendir(base))) { + fprintf(stderr, "sys_dir_walk(): could not open `%s`\n", base); + return false; + } + + bool ret = true; + + while ((ent = readdir(dir)) != NULL) { + if (ent->d_name[0] == 0 || ent->d_name[0] == '.') continue; // skip ./.. and hidden files + snprintf(fullpath, sizeof(fullpath), "%s/%s", base, ent->d_name); + if (sys_dir_exists(fullpath)) { + if (recur) { + if (!sys_dir_walk(fullpath, walk, recur)) { + ret = false; + break; + } + } + } else { + if (!walk(fullpath)) { + ret = false; + break; + } + } + } + + closedir(dir); + return ret; } bool sys_mkdir(const char *name) { @@ -40,17 +110,17 @@ const char *sys_data_path(void) { snprintf(path, sizeof(path), "%s%s", sys_exe_path(), gCLIOpts.DataPath + 1); else snprintf(path, sizeof(path), "%s", gCLIOpts.DataPath); - if (dir_exists(path)) return path; + if (sys_dir_exists(path)) return path; printf("Warning: Specified data path ('%s') doesn't exist\n", path); } // then the executable directory snprintf(path, sizeof(path), "%s/" DATADIR, sys_exe_path()); - if (dir_exists(path)) return path; + if (sys_dir_exists(path)) return path; // then the save path snprintf(path, sizeof(path), "%s/" DATADIR, sys_save_path()); - if (dir_exists(path)) return path; + if (sys_dir_exists(path)) return path; #if defined(__linux__) || defined(__unix__) // on Linux/BSD try some common paths for read-only data @@ -60,7 +130,7 @@ const char *sys_data_path(void) { "/opt/sm64pc/" DATADIR, }; for (unsigned i = 0; i < sizeof(try) / sizeof(try[0]); ++i) { - if (dir_exists(try[i])) { + if (sys_dir_exists(try[i])) { strcpy(path, try[i]); return path; } @@ -85,7 +155,7 @@ const char *sys_save_path(void) { snprintf(path, sizeof(path), "%s%s", sys_exe_path(), gCLIOpts.SavePath + 1); else snprintf(path, sizeof(path), "%s", gCLIOpts.SavePath); - if (!dir_exists(path) && !sys_mkdir(path)) { + if (!sys_dir_exists(path) && !sys_mkdir(path)) { printf("Warning: Specified save path ('%s') doesn't exist and can't be created\n", path); path[0] = 0; // doesn't exist and no write access } @@ -101,7 +171,7 @@ const char *sys_save_path(void) { SDL_free(sdlpath); if (path[len-1] == '/' || path[len-1] == '\\') path[len-1] = 0; // strip the trailing separator - if (!dir_exists(path) && !sys_mkdir(path)) + if (!sys_dir_exists(path) && !sys_mkdir(path)) path[0] = 0; } } diff --git a/src/pc/platform.h b/src/pc/platform.h index dae51bf9..9b498470 100644 --- a/src/pc/platform.h +++ b/src/pc/platform.h @@ -2,13 +2,31 @@ #define _SM64_PLATFORM_H_ #include +#include +#include /* Platform-specific functions and whatnot */ #define DATADIR "res" #define SYS_MAX_PATH 1024 // FIXME: define this on different platforms +// crossplatform impls of misc stuff +char *sys_strdup(const char *src); +char *sys_strlwr(char *src); +int sys_strcasecmp(const char *s1, const char *s2); + +// filesystem stuff bool sys_mkdir(const char *name); // creates with 0777 by default +bool sys_file_exists(const char *name); +bool sys_dir_exists(const char *name); + +// receives the full path +// should return `true` if traversal should continue +typedef bool (*walk_fn_t)(const char *); +// returns `true` if the directory was successfully opened and walk() didn't ever return false +bool sys_dir_walk(const char *base, walk_fn_t walk, const bool recur); + +// path stuff const char *sys_data_path(void); const char *sys_save_path(void); const char *sys_exe_path(void); From 9f9e79ed9d972e34f73342e6f20e8de84dae1b74 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 26 May 2020 02:18:09 +0300 Subject: [PATCH 058/166] build the res target by default when EXTERNAL_TEXTURES is enabled --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 17b93a55..c862101d 100644 --- a/Makefile +++ b/Makefile @@ -617,6 +617,9 @@ SHA1SUM = sha1sum all: $(EXE) ifeq ($(EXTERNAL_TEXTURES),1) +# depend on resources as well +all: res + # prepares the resource folder for external data res: $(EXE) @mkdir -p $(BUILD_DIR)/res From e3401f15472c62274f2e3baf0d9de5452206cbdf Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 26 May 2020 02:59:38 +0300 Subject: [PATCH 059/166] use a script to output zero-terminated strings instead of bash printf --- Makefile | 3 ++- tools/zeroterm.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 tools/zeroterm.py diff --git a/Makefile b/Makefile index c862101d..56404185 100644 --- a/Makefile +++ b/Makefile @@ -607,6 +607,7 @@ EMU_FLAGS = --noosd LOADER = loader64 LOADER_FLAGS = -vwf SHA1SUM = sha1sum +ZEROTERM = $(PYTHON) $(TOOLS_DIR)/zeroterm.py ###################### Dependency Check ##################### @@ -725,7 +726,7 @@ endif # RGBA32, RGBA16, IA16, IA8, IA4, IA1, I8, I4 ifeq ($(EXTERNAL_TEXTURES),1) $(BUILD_DIR)/%: %.png - printf "%s%b" "$(patsubst %.png,%,$^)" '\x00' > $@ + $(ZEROTERM) "$(patsubst %.png,%,$^)" > $@ else $(BUILD_DIR)/%: %.png $(N64GRAPHICS) -i $@ -g $< -f $(lastword $(subst ., ,$@)) diff --git a/tools/zeroterm.py b/tools/zeroterm.py new file mode 100644 index 00000000..7675017a --- /dev/null +++ b/tools/zeroterm.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 +import sys +if len(sys.argv) < 2: + print("usage: zeroterm ") +else: + sys.stdout.buffer.write(bytes(sys.argv[1], 'ascii') + b'\x00') From b5b5aab076b0b35005335a67cc0a368be8470474 Mon Sep 17 00:00:00 2001 From: "Colton G. Rushton" Date: Tue, 26 May 2020 15:28:36 -0300 Subject: [PATCH 060/166] Fix a minor error with bettercamera The bettercamera code set when the player goes to THI is actually supposed to be set when the player goes to TTM. This small PR fixes this minor bug. --- src/game/bettercamera.inc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index e6d3bf6f..c2003347 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -129,7 +129,7 @@ void newcam_init(struct Camera *c, u8 dv) case LEVEL_CCM: if (gCurrAreaIndex == 1) {newcam_yaw = -0x4000; newcam_tilt = 2000; newcam_distance_target = newcam_distance_values[1];} else newcam_mode = NC_MODE_SLIDE; break; case LEVEL_WDW: newcam_yaw = 0x2000; newcam_tilt = 3000; newcam_distance_target = newcam_distance_values[1]; break; case 27: newcam_mode = NC_MODE_SLIDE; break; - case LEVEL_THI: if (gCurrAreaIndex == 2) newcam_mode = NC_MODE_SLIDE; break; + case LEVEL_TTM: if (gCurrAreaIndex == 2) newcam_mode = NC_MODE_SLIDE; break; } newcam_distance = newcam_distance_target; From 62e78a74c0b3379e951c069cf8ba113e7338659d Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 27 May 2020 02:51:05 +0300 Subject: [PATCH 061/166] fix crashes with EXTERNAL_TEXTURES on JP/EU and Bowser related to two huge textures and fonts --- actors/bowser_flame/model.inc.c | 51 ++++++++++++--------------------- actors/impact_smoke/model.inc.c | 20 ++++++------- src/game/ingame_menu.c | 10 ++++++- 3 files changed, 35 insertions(+), 46 deletions(-) diff --git a/actors/bowser_flame/model.inc.c b/actors/bowser_flame/model.inc.c index e5c1beeb..2551342e 100644 --- a/actors/bowser_flame/model.inc.c +++ b/actors/bowser_flame/model.inc.c @@ -78,10 +78,10 @@ static const Vtx flame_seg6_vertex_0601C000[] = { {{{ 150, 150, 0}, 0, { 2016, 992}, {0xff, 0xff, 0xff, 0xff}}}, {{{ 150, 300, 0}, 0, { 2016, 0}, {0xff, 0xff, 0xff, 0xff}}}, {{{ -150, 300, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ -150, 0, 0}, 0, { 0, 992}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 150, 0, 0}, 0, { 2016, 992}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 150, 150, 0}, 0, { 2016, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ -150, 150, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ -150, 0, 0}, 0, { 0, 2016}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 150, 0, 0}, 0, { 2016, 2016}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 150, 150, 0}, 0, { 2016, 992}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ -150, 150, 0}, 0, { 0, 992}, {0xff, 0xff, 0xff, 0xff}}}, }; // 0x0601C080 - 0x0601C0B0 @@ -117,10 +117,9 @@ const Gfx flame_seg6_dl_0601C0E0[] = { // 0x0601C108 - 0x0601C1A8 const Gfx flame_seg6_dl_0601C108[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06000000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -129,10 +128,9 @@ const Gfx flame_seg6_dl_0601C108[] = { // 0x0601C1A8 - 0x0601C248 const Gfx flame_seg6_dl_0601C1A8[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06002000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06002000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06002000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -141,10 +139,9 @@ const Gfx flame_seg6_dl_0601C1A8[] = { // 0x0601C248 - 0x0601C2E8 const Gfx flame_seg6_dl_0601C248[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06004000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06004000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06004000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -153,10 +150,9 @@ const Gfx flame_seg6_dl_0601C248[] = { // 0x0601C2E8 - 0x0601C388 const Gfx flame_seg6_dl_0601C2E8[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06006000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06006000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06006000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -165,10 +161,9 @@ const Gfx flame_seg6_dl_0601C2E8[] = { // 0x0601C388 - 0x0601C428 const Gfx flame_seg6_dl_0601C388[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06008000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06008000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06008000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -177,10 +172,9 @@ const Gfx flame_seg6_dl_0601C388[] = { // 0x0601C428 - 0x0601C4C8 const Gfx flame_seg6_dl_0601C428[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_0600A000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_0600A000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_0600A000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -189,10 +183,8 @@ const Gfx flame_seg6_dl_0601C428[] = { // 0x0601C4C8 - 0x0601C568 const Gfx flame_seg6_dl_0601C4C8[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_0600C000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_0600C000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), - gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_0600C000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -201,10 +193,9 @@ const Gfx flame_seg6_dl_0601C4C8[] = { // 0x0601C568 - 0x0601C608 const Gfx flame_seg6_dl_0601C568[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_0600E000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_0600E000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_0600E000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -213,10 +204,9 @@ const Gfx flame_seg6_dl_0601C568[] = { // 0x0601C608 - 0x0601C6A8 const Gfx flame_seg6_dl_0601C608[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06010000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06010000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06010000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -225,10 +215,9 @@ const Gfx flame_seg6_dl_0601C608[] = { // 0x0601C6A8 - 0x0601C748 const Gfx flame_seg6_dl_0601C6A8[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06012000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06012000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06012000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -237,10 +226,9 @@ const Gfx flame_seg6_dl_0601C6A8[] = { // 0x0601C748 - 0x0601C7E8 const Gfx flame_seg6_dl_0601C748[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06014000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06014000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06014000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -249,10 +237,9 @@ const Gfx flame_seg6_dl_0601C748[] = { // 0x0601C7E8 - 0x0601C888 const Gfx flame_seg6_dl_0601C7E8[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06016000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06016000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06016000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -261,10 +248,9 @@ const Gfx flame_seg6_dl_0601C7E8[] = { // 0x0601C888 - 0x0601C928 const Gfx flame_seg6_dl_0601C888[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_06018000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_06018000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_06018000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), @@ -273,10 +259,9 @@ const Gfx flame_seg6_dl_0601C888[] = { // 0x0601C928 - 0x0601C9C8 const Gfx flame_seg6_dl_0601C928[] = { gsSPDisplayList(flame_seg6_dl_0601C080), - gsDPLoadTextureBlock(flame_seg6_texture_0601A000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(flame_seg6_texture_0601A000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(flame_seg6_vertex_0601C000, 8, 0), gsSPDisplayList(flame_seg6_dl_0601C0B0), - gsDPLoadTextureBlock(flame_seg6_texture_0601A000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(flame_seg6_dl_0601C0C8), gsSPDisplayList(flame_seg6_dl_0601C0E0), gsSPEndDisplayList(), diff --git a/actors/impact_smoke/model.inc.c b/actors/impact_smoke/model.inc.c index 48aeb602..012cf6f6 100644 --- a/actors/impact_smoke/model.inc.c +++ b/actors/impact_smoke/model.inc.c @@ -28,10 +28,10 @@ static const Vtx impact_smoke_seg6_vertex_06062A28[] = { {{{ 150, 150, 0}, 0, { 2016, 992}, {0x28, 0x19, 0x14, 0xff}}}, {{{ 150, 300, 0}, 0, { 2016, 0}, {0x28, 0x19, 0x14, 0xff}}}, {{{ -150, 300, 0}, 0, { 0, 0}, {0x28, 0x19, 0x14, 0xff}}}, - {{{ -150, 0, 0}, 0, { 0, 992}, {0x28, 0x19, 0x14, 0xff}}}, - {{{ 150, 0, 0}, 0, { 2016, 992}, {0x28, 0x19, 0x14, 0xff}}}, - {{{ 150, 150, 0}, 0, { 2016, 0}, {0x28, 0x19, 0x14, 0xff}}}, - {{{ -150, 150, 0}, 0, { 0, 0}, {0x28, 0x19, 0x14, 0xff}}}, + {{{ -150, 0, 0}, 0, { 0, 2016}, {0x28, 0x19, 0x14, 0xff}}}, + {{{ 150, 0, 0}, 0, { 2016, 2016}, {0x28, 0x19, 0x14, 0xff}}}, + {{{ 150, 150, 0}, 0, { 2016, 992}, {0x28, 0x19, 0x14, 0xff}}}, + {{{ -150, 150, 0}, 0, { 0, 992}, {0x28, 0x19, 0x14, 0xff}}}, }; // 0x06062AA8 - 0x06062AD8 @@ -68,10 +68,9 @@ const Gfx impact_smoke_seg6_dl_06062B08[] = { // 0x06062B38 - 0x06062BD8 const Gfx impact_smoke_seg6_dl_06062B38[] = { gsSPDisplayList(impact_smoke_seg6_dl_06062AA8), - gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605AA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605AA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(impact_smoke_seg6_vertex_06062A28, 8, 0), gsSPDisplayList(impact_smoke_seg6_dl_06062AD8), - gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605AA28 + 0x1000, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(impact_smoke_seg6_dl_06062AF0), gsSPDisplayList(impact_smoke_seg6_dl_06062B08), gsSPEndDisplayList(), @@ -80,10 +79,9 @@ const Gfx impact_smoke_seg6_dl_06062B38[] = { // 0x06062BD8 - 0x06062C78 const Gfx impact_smoke_seg6_dl_06062BD8[] = { gsSPDisplayList(impact_smoke_seg6_dl_06062AA8), - gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605CA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605CA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(impact_smoke_seg6_vertex_06062A28, 8, 0), gsSPDisplayList(impact_smoke_seg6_dl_06062AD8), - gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605CA28 + 0x1000, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(impact_smoke_seg6_dl_06062AF0), gsSPDisplayList(impact_smoke_seg6_dl_06062B08), gsSPEndDisplayList(), @@ -92,10 +90,9 @@ const Gfx impact_smoke_seg6_dl_06062BD8[] = { // 0x06062C78 - 0x06062D18 const Gfx impact_smoke_seg6_dl_06062C78[] = { gsSPDisplayList(impact_smoke_seg6_dl_06062AA8), - gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605EA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605EA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(impact_smoke_seg6_vertex_06062A28, 8, 0), gsSPDisplayList(impact_smoke_seg6_dl_06062AD8), - gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605EA28 + 0x1000, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(impact_smoke_seg6_dl_06062AF0), gsSPDisplayList(impact_smoke_seg6_dl_06062B08), gsSPEndDisplayList(), @@ -104,10 +101,9 @@ const Gfx impact_smoke_seg6_dl_06062C78[] = { // 0x06062D18 - 0x06062DB8 const Gfx impact_smoke_seg6_dl_06062D18[] = { gsSPDisplayList(impact_smoke_seg6_dl_06062AA8), - gsDPLoadTextureBlock(impact_smoke_seg6_texture_06060A28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(impact_smoke_seg6_texture_06060A28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(impact_smoke_seg6_vertex_06062A28, 8, 0), gsSPDisplayList(impact_smoke_seg6_dl_06062AD8), - gsDPLoadTextureBlock(impact_smoke_seg6_texture_06060A28 + 0x1000, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(impact_smoke_seg6_dl_06062AF0), gsSPDisplayList(impact_smoke_seg6_dl_06062B08), gsSPEndDisplayList(), diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index d7de9d4e..6f3d84b9 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -128,7 +128,7 @@ u8 gMenuHoldKeyIndex = 0; u8 gMenuHoldKeyTimer = 0; s32 gDialogResponse = 0; -#if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU) +#if !defined(EXTERNAL_TEXTURES) && (defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU)) #ifdef VERSION_EU #define CHCACHE_BUFLEN (8 * 8) // EU only converts 8x8 #else @@ -242,11 +242,15 @@ static inline void alloc_ia8_text_from_i1(u8 *out, u16 *in, s16 width, s16 heigh } static inline u8 *convert_ia8_char(u8 c, u16 *tex, s16 w, s16 h) { +#ifdef EXTERNAL_TEXTURES + return (u8 *)tex; // the data's just a name +#else if (!charCache[c].used) { charCache[c].used = 1; alloc_ia8_text_from_i1(charCache[c].data, tex, w, h); } return charCache[c].data; +#endif } #endif @@ -298,11 +302,15 @@ static void alloc_ia4_tex_from_i1(u8 *out, u8 *in, s16 width, s16 height) { } static u8 *convert_ia4_char(u8 c, u8 *tex, s16 w, s16 h) { +#ifdef EXTERNAL_TEXTURES + return tex; // the data's just a name +#else if (!charCache[c].used) { charCache[c].used = 1; alloc_ia4_tex_from_i1(charCache[c].data, tex, w, h); } return charCache[c].data; +#endif } void render_generic_char_at_pos(s16 xPos, s16 yPos, u8 c) { From 8013b9a32509ebc7bf2bc96fbbc4f7343590b184 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 27 May 2020 02:56:12 +0300 Subject: [PATCH 062/166] add scripts to rename CRC-named HD textures as used by @originalgrego's fork --- tools/cleancrcmap.py | 42 ++ tools/default_crcmap.txt | 1237 ++++++++++++++++++++++++++++++++++++++ tools/texrename.py | 71 +++ 3 files changed, 1350 insertions(+) create mode 100644 tools/cleancrcmap.py create mode 100644 tools/default_crcmap.txt create mode 100644 tools/texrename.py diff --git a/tools/cleancrcmap.py b/tools/cleancrcmap.py new file mode 100644 index 00000000..a5f343c2 --- /dev/null +++ b/tools/cleancrcmap.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +import sys +import os +import glob + +if len(sys.argv) < 4: + print("usage: cleancrcmap ") + sys.exit(1) + +# load and check the old map +searchpath = sys.argv[3] +inmap = list() +with open(sys.argv[1], 'r') as f: + for line in f: + line = line.strip() + if line == '' or line[0] == '#': + continue + tok = line.split(',') + crcstr = tok[0].strip() + if crcstr.startswith('0x'): + crc = int(crcstr[2:], 16) + else: + crc = int(crcstr) + tok[1] = tok[1].strip() + [fname, fext] = os.path.splitext(tok[1]) + [fname, ffmt] = os.path.splitext(fname) + fname = fname + ffmt[:-1] + '*' + matches = glob.glob(os.path.join(searchpath, fname)) + if len(matches) == 0: + print("warning: texture '{0}' does not match anything in '{1}'".format(fname, searchpath)) + else: + for s in matches: + tup = (crc, os.path.relpath(s, searchpath)) + if not (tup in inmap): + inmap.append(tup) + +# save cleaned up version to the new one +with open(sys.argv[2], 'w') as f: + for (crc, fpath) in inmap: + f.write("0x{0:08x}, {1}\n".format(crc, fpath)) + diff --git a/tools/default_crcmap.txt b/tools/default_crcmap.txt new file mode 100644 index 00000000..96d18d0e --- /dev/null +++ b/tools/default_crcmap.txt @@ -0,0 +1,1237 @@ +0x6ce78789, actors/amp/amp_body.rgba16.png +0x5b9c3f42, actors/amp/amp_electricity.rgba16.png +0x5e27d08d, actors/amp/amp_eyes.rgba16.png +0x9e3c9a4f, actors/amp/amp_mouth.rgba16.png +0x48dde054, actors/blue_coin_switch/blue_coin_switch_side.rgba16.png +0x8850ff36, actors/blue_coin_switch/blue_coin_switch_top.rgba16.png +0xc3996a4f, actors/blue_fish/blue_fish.rgba16.png +0xbdfeb7e9, actors/bobomb/bob-omb_buddy_left_side.rgba16.png +0x0b1833a6, actors/bobomb/bob-omb_buddy_right_side.rgba16.png +0xae5a9812, actors/bobomb/bob-omb_eyes.rgba16.png +0x6cf0fe65, actors/bobomb/bob-omb_eyes_blink.rgba16.png +0xd5ef42fe, actors/bobomb/bob-omb_left_side.rgba16.png +0xc9a10845, actors/bobomb/bob-omb_right_side.rgba16.png +0x6348045f, actors/bomb/bomb_left_side.rgba16.png +0x83895fa8, actors/bomb/bomb_right_side.rgba16.png +0x6edb77dd, actors/bomb/bomb_spike.rgba16.png +0xdbd94196, actors/boo/boo_eyes.rgba16.png +0xe4e9207b, actors/boo/boo_mouth.rgba16.png +0x873a803d, actors/book/book_cover.rgba16.png +0x873a803d, actors/bookend/bookend_cover.rgba16.png +0xf16beef9, actors/bookend/bookend_mouth.rgba16.png +0xf20999a3, actors/bookend/bookend_pages.rgba16.png +0x1b67dd5e, actors/bookend/bookend_spine.rgba16.png +0x86fb718b, actors/bookend/bookend_tooth.rgba16.png +0xdbd94196, actors/boo_castle/bbh_boo_eyes.rgba16.png +0xe4e9207b, actors/boo_castle/bbh_boo_mouth.rgba16.png +0x1216b12c, actors/bowser/bowser_armband.rgba16.png +0x5373f495, actors/bowser/bowser_armband_spike.rgba16.png +0xa91fab36, actors/bowser/bowser_blue_eye_unused.rgba16.png +0xadcde34c, actors/bowser/bowser_body.rgba16.png +0x77d3e700, actors/bowser/bowser_chest.rgba16.png +0xe954c2e1, actors/bowser/bowser_claw_edge.rgba16.png +0x992a5f26, actors/bowser/bowser_claw_horn_angle.rgba16.png +0x42fe6ddf, actors/bowser/bowser_claw_horn_tooth.rgba16.png +0x5c85a49b, actors/bowser/bowser_eyebrow.rgba16.png +0x6d829b70, actors/bowser/bowser_eye_center_0.rgba16.png +0x6d829b70, actors/bowser/bowser_eye_center_1.rgba16.png +0xabc1926e, actors/bowser/bowser_eye_closed_0.rgba16.png +0xabc1926e, actors/bowser/bowser_eye_closed_1.rgba16.png +0xc7cba4bb, actors/bowser/bowser_eye_far_left_0.rgba16.png +0xc7cba4bb, actors/bowser/bowser_eye_far_left_1.rgba16.png +0x960f22ad, actors/bowser/bowser_eye_half_closed_0.rgba16.png +0x960f22ad, actors/bowser/bowser_eye_half_closed_1.rgba16.png +0xa3228592, actors/bowser/bowser_eye_left_0.rgba16.png +0xa3228592, actors/bowser/bowser_eye_left_1.rgba16.png +0x8276c6db, actors/bowser/bowser_eye_right_0.rgba16.png +0x8276c6db, actors/bowser/bowser_eye_right_1.rgba16.png +0x06d96598, actors/bowser/bowser_hair.rgba16.png +0x7517b30d, actors/bowser/bowser_mouth_unused.rgba16.png +0xeb652400, actors/bowser/bowser_muzzle.rgba16.png +0xf0835c8b, actors/bowser/bowser_nostrils.rgba16.png +0xf88cd2e7, actors/bowser/bowser_shell.rgba16.png +0xd3b6356a, actors/bowser/bowser_shell_edge.rgba16.png +0x5a9a602f, actors/bowser/bowser_tongue.rgba16.png +0x549de5f1, actors/bowser/bowser_upper_face.rgba16.png +0x6727a3b0, actors/bowser_flame/bowser_flame_0.rgba16.png +0x9a6e1a6d, actors/bowser_flame/bowser_flame_1.rgba16.png +0xecd82c74, actors/bowser_flame/bowser_flame_10.rgba16.png +0xc7de1268, actors/bowser_flame/bowser_flame_11.rgba16.png +0xc00cbf87, actors/bowser_flame/bowser_flame_12.rgba16.png +0xa9812b21, actors/bowser_flame/bowser_flame_13.rgba16.png +0xd03c08db, actors/bowser_flame/bowser_flame_2.rgba16.png +0xefbd7dde, actors/bowser_flame/bowser_flame_3.rgba16.png +0x90bbbf55, actors/bowser_flame/bowser_flame_4.rgba16.png +0xf8f11fd3, actors/bowser_flame/bowser_flame_5.rgba16.png +0xb8e0116c, actors/bowser_flame/bowser_flame_6.rgba16.png +0x07b2ffca, actors/bowser_flame/bowser_flame_7.rgba16.png +0x0c44fe85, actors/bowser_flame/bowser_flame_8.rgba16.png +0xd6ffbba9, actors/bowser_flame/bowser_flame_9.rgba16.png +0x7ed45348, actors/breakable_box/cork_box_surface.rgba16.png +0xbb9bfd9b, actors/breakable_box/crazy_box_surface.rgba16.png +0xcf7a737c, actors/bub/bub_eyes.rgba16.png +0x2781ee31, actors/bub/bub_eye_border.rgba16.png +0xda65418a, actors/bub/bub_fins.rgba16.png +0x8ac2ce9e, actors/bub/bub_scales.rgba16.png +0xcf7a737c, actors/bubba/bubba_eyes_unused.rgba16.png +0x2781ee31, actors/bubba/bubba_eye_border.rgba16.png +0xda65418a, actors/bubba/bubba_fins.rgba16.png +0x8f294c48, actors/bubba/bubba_scales.rgba16.png +0x0c8d30ca, actors/bubba/bubba_sunglasses.rgba16.png +0x332edb92, actors/bubble/bubble.rgba16.png +0xcdf0fa68, actors/bubble/mr_i_bubble.rgba16.png +0x21fe5d40, actors/bullet_bill/bullet_bill_eye.rgba16.png +0xb1b85895, actors/bullet_bill/bullet_bill_mouth.rgba16.png +0x5a12c79d, actors/bully/bully_eye.rgba16.png +0xec266038, actors/bully/bully_horn.rgba16.png +0x49520b07, actors/bully/bully_left_side.rgba16.png +0xb5c23e47, actors/bully/bully_right_side.rgba16.png +0xdbd6053f, actors/burn_smoke/burn_smoke.ia16.png +0x2e2ad98c, actors/butterfly/butterfly_wing.rgba16.png +0x0e4dd4fc, actors/cannon_barrel/cannon_barrel.rgba16.png +0x5f030348, actors/cannon_base/cannon_base.rgba16.png +0x158b08e7, actors/cannon_lid/cannon_lid.rgba16.png +0x71d10611, actors/capswitch/cap_switch_base.rgba16.png +0xf4aef8c8, actors/capswitch/cap_switch_head.ia16.png +0x1dc03e3e, actors/chain_ball/chain_ball.rgba16.png +0xfd062ba1, actors/chain_chomp/chain_chomp_bright_shine.rgba16.png +0xf7a6e017, actors/chain_chomp/chain_chomp_dull_shine.rgba16.png +0x8bd0db01, actors/chain_chomp/chain_chomp_eye.rgba16.png +0x2cc7d027, actors/chain_chomp/chain_chomp_tongue.rgba16.png +0x241e32b1, actors/chain_chomp/chain_chomp_tooth.rgba16.png +0x1258699c, actors/chair/chair_bottom.rgba16.png +0x6aeb7431, actors/chair/chair_front.rgba16.png +0xb1699f08, actors/chair/chair_leg.rgba16.png +0xf1ce5071, actors/chair/chair_surface_unused.rgba16.png +0x0d4f911f, actors/checkerboard_platform/checkerboard_platform.rgba16.png +0xb78d39ae, actors/checkerboard_platform/checkerboard_platform_side.rgba16.png +0x5a12c79d, actors/chillychief/chill_bully_eye.rgba16.png +0x7ef18bc0, actors/chillychief/chill_bully_left_side.rgba16.png +0x51899ea2, actors/chillychief/chill_bully_right_side.rgba16.png +0xb1168bb8, actors/chuckya/chuckya_body_arm_left_side.rgba16.png +0x3a87fdcb, actors/chuckya/chuckya_body_arm_right_side.rgba16.png +0x64f4c24d, actors/chuckya/chuckya_eyes.rgba16.png +0xb8520d0e, actors/chuckya/chuckya_hand_antenna.rgba16.png +0xe9f30ab8, actors/clam_shell/clam_shell.rgba16.png +0x9226c89b, actors/clam_shell/clam_shell_mouth.rgba16.png +0xf917b481, actors/coin/coin_front.ia16.png +0xf3efe791, actors/coin/coin_side.ia16.png +0x398f8275, actors/coin/coin_tilt_left.ia16.png +0x285437f2, actors/coin/coin_tilt_right.ia16.png +0xcfa59ad1, actors/cyan_fish/cyan_fish.rgba16.png +0xdcfc2924, actors/dirt/dirt_particle.rgba16.png +0x30e837d4, actors/door/bbh_door.rgba16.png +0x43fb37a9, actors/door/bbh_door_overlay.rgba16.png +0x48cb5ae9, actors/door/door_lock.rgba16.png +0x8e8a0021, actors/door/hmc_mural_door.rgba16.png +0x1c2f63d1, actors/door/hmc_mural_door_overlay.rgba16.png +0x15880e25, actors/door/metal_door.rgba16.png +0x0b2e6255, actors/door/metal_door_overlay.rgba16.png +0xabff97b7, actors/door/one_star_door_sign.rgba16.png +0xac08e08f, actors/door/polished_wooden_door.rgba16.png +0x0a018421, actors/door/polished_wooden_door_overlay.rgba16.png +0xbee60bab, actors/door/rough_wooden_door.rgba16.png +0xfc028d47, actors/door/rough_wooden_door_overlay.rgba16.png +0x5b2d3a75, actors/door/three_star_door_sign.rgba16.png +0x7cdbd009, actors/door/zero_star_door_sign.rgba16.png +0x84ae4f62, actors/dorrie/dorrie_eye.rgba16.png +0x566ceea7, actors/dorrie/dorrie_skin.rgba16.png +0x2cc7d027, actors/dorrie/dorrie_tongue.rgba16.png +0x48e8dc18, actors/exclamation_box/exclamation_box_front.rgba16.png +0x4ea62323, actors/exclamation_box/exclamation_box_side.rgba16.png +0x33aa18f1, actors/exclamation_box/metal_cap_box_front.rgba16.png +0x01295855, actors/exclamation_box/metal_cap_box_side.rgba16.png +0x4868d6f8, actors/exclamation_box/vanish_cap_box_front.rgba16.png +0x25fa6e30, actors/exclamation_box/vanish_cap_box_sides.rgba16.png +0x109a876c, actors/exclamation_box/wing_cap_box_front.rgba16.png +0x49dc8276, actors/exclamation_box/wing_cap_box_sides.rgba16.png +0x86c1470d, actors/exclamation_box_outline/exclamation_box_outline.rgba16.png +0x380f4109, actors/exclamation_box_outline/exclamation_point.rgba16.png +0x33181fa0, actors/explosion/explosion_0.rgba16.png +0xf9b0adc0, actors/explosion/explosion_1.rgba16.png +0x60ed7b14, actors/explosion/explosion_2.rgba16.png +0xf6bc5ca6, actors/explosion/explosion_3.rgba16.png +0x02f615dd, actors/explosion/explosion_4.rgba16.png +0x6456136f, actors/explosion/explosion_5.rgba16.png +0xb58eb1ef, actors/explosion/explosion_6.rgba16.png +0xbfb0c0c1, actors/eyerok/eyerok_bricks.rgba16.png +0x5e4df953, actors/eyerok/eyerok_eye_closed.rgba16.png +0xee91056d, actors/eyerok/eyerok_eye_mostly_closed.rgba16.png +0xa955f8c5, actors/eyerok/eyerok_eye_mostly_open.rgba16.png +0x8b76add0, actors/eyerok/eyerok_eye_open.rgba16.png +0x9ce4f269, actors/flame/flame_0.ia16.png +0x20d5be86, actors/flame/flame_1.ia16.png +0x73a7a005, actors/flame/flame_2.ia16.png +0x2c6d7d31, actors/flame/flame_3.ia16.png +0xfa3914af, actors/flame/flame_4.ia16.png +0x41eb9aab, actors/flame/flame_5.ia16.png +0xc3f536f0, actors/flame/flame_6.ia16.png +0xcc3acab3, actors/flame/flame_7.ia16.png +0xd265b139, actors/flyguy/flyguy_cloth_wrinkle.rgba16.png +0x519d3d8a, actors/flyguy/flyguy_face.rgba16.png +0x1058cfe1, actors/flyguy/flyguy_propeller.ia16.png +0x49f51e07, actors/fwoosh/fwoosh_face.ia16.png +0xff8aa0d7, actors/goomba/goomba_body.rgba16.png +0xa0f28d98, actors/goomba/goomba_face.rgba16.png +0x029304d9, actors/goomba/goomba_face_blink.rgba16.png +0xd1559bcc, actors/haunted_cage/bbh_cage_bars.rgba16.png +0xa630c9ea, actors/haunted_cage/bbh_cage_double_ornament.rgba16.png +0xab6318d0, actors/haunted_cage/bbh_cage_floor.rgba16.png +0xf6e0fd6c, actors/haunted_cage/bbh_cage_garbage.rgba16.png +0x8db79b54, actors/haunted_cage/bbh_cage_ornament.rgba16.png +0x29698152, actors/haunted_cage/bbh_cage_wooden_base.rgba16.png +0xaa2b7d4d, actors/heart/spinning_heart.rgba16.png +0xedcc13fa, actors/heave_ho/heave-ho_arm_ornament.rgba16.png +0x5966641f, actors/heave_ho/heave-ho_face.rgba16.png +0xb6f72a6e, actors/heave_ho/heave-ho_logo.rgba16.png +0x638933f8, actors/heave_ho/heave-ho_platform.rgba16.png +0x857a40d7, actors/heave_ho/heave-ho_roller.rgba16.png +0xcdc7a027, actors/heave_ho/heave-ho_turnkey.rgba16.png +0x7ac462c0, actors/hoot/hoot_eyes.rgba16.png +0x7826c81a, actors/hoot/hoot_wing.rgba16.png +0x4461a545, actors/hoot/hoot_wing_tip.rgba16.png +0x9486ce85, actors/impact_ring/impact_ring_left_side.ia16.png +0x2d6b7a90, actors/impact_ring/impact_ring_right_side.ia16.png +0x920a4830, actors/impact_smoke/impact_smoke_0.ia16.png +0xe658e7ec, actors/impact_smoke/impact_smoke_1.ia16.png +0x5e4d860f, actors/impact_smoke/impact_smoke_2.ia16.png +0x66afde95, actors/impact_smoke/impact_smoke_3.ia16.png +0x09f2a7d9, actors/king_bobomb/bob-omb_buddy_body_unused.rgba16.png +0xbdfeb7e9, actors/king_bobomb/bob-omb_buddy_left_side_unused.rgba16.png +0x0b1833a6, actors/king_bobomb/bob-omb_buddy_right_side_unused.rgba16.png +0x13947d02, actors/king_bobomb/king_bob-omb_arm.rgba16.png +0xbcb092cb, actors/king_bobomb/king_bob-omb_body_unused.rgba16.png +0x9cb3f8a1, actors/king_bobomb/king_bob-omb_crown_rim.rgba16.png +0xf9084721, actors/king_bobomb/king_bob-omb_eyes.rgba16.png +0x89f3f5a0, actors/king_bobomb/king_bob-omb_hand.rgba16.png +0x5741b6a5, actors/king_bobomb/king_bob-omb_left_side.rgba16.png +0x625018c9, actors/king_bobomb/king_bob-omb_right_side.rgba16.png +0xa5f8d058, actors/klepto/klepto_beak.rgba16.png +0x7ccef531, actors/klepto/klepto_chest_tuft.rgba16.png +0xab4f6226, actors/klepto/klepto_eye.rgba16.png +0x39695931, actors/klepto/klepto_wing.rgba16.png +0x1e03d762, actors/klepto/klepto_wing_flap.rgba16.png +0x3d9b7dd6, actors/koopa/koopa_eyes_closed.rgba16.png +0x7409fc94, actors/koopa/koopa_eyes_open.rgba16.png +0xcf8c4236, actors/koopa/koopa_eye_border.rgba16.png +0x3650b971, actors/koopa/koopa_nostrils.rgba16.png +0x69fbaa13, actors/koopa/koopa_shell_back.rgba16.png +0x449e0eec, actors/koopa/koopa_shell_front.rgba16.png +0x34adb0d7, actors/koopa/koopa_shell_front_top.rgba16.png +0x4b0b84c0, actors/koopa/koopa_shoe.rgba16.png +0x83279720, actors/koopa_flag/koopa_flag_banner.rgba16.png +0x69fbaa13, actors/koopa_shell/koopa_shell_back.rgba16.png +0x449e0eec, actors/koopa_shell/koopa_shell_front.rgba16.png +0x0a7cdd78, actors/lakitu_cameraman/lakitu_cameraman_cloud_face_unused.rgba16.png +0x34132ec9, actors/lakitu_cameraman/lakitu_cameraman_eyes_closed.rgba16.png +0xb1a8de05, actors/lakitu_cameraman/lakitu_cameraman_eyes_open.rgba16.png +0xf6568aa1, actors/lakitu_cameraman/lakitu_cameraman_frown.rgba16.png +0xb4d174d5, actors/lakitu_cameraman/lakitu_cameraman_shell.rgba16.png +0x52984569, actors/lakitu_cameraman/lakitu_camera_lens.rgba16.png +0x0a7cdd78, actors/lakitu_enemy/lakitu_enemy_cloud_face_unused.rgba16.png +0x34132ec9, actors/lakitu_enemy/lakitu_enemy_eyes_closed.rgba16.png +0xb1a8de05, actors/lakitu_enemy/lakitu_enemy_eyes_open.rgba16.png +0xf6568aa1, actors/lakitu_enemy/lakitu_enemy_frown.rgba16.png +0xb4d174d5, actors/lakitu_enemy/lakitu_enemy_shell.rgba16.png +0x491f98d7, actors/leaves/leaf.rgba16.png +0xada51580, actors/mad_piano/mad_piano_body.rgba16.png +0x857a6a85, actors/mad_piano/mad_piano_keys.rgba16.png +0x39cdf80e, actors/mad_piano/mad_piano_keys_corner.rgba16.png +0x4c5c141a, actors/mad_piano/mad_piano_keys_edge.rgba16.png +0x2e36badc, actors/mad_piano/mad_piano_mouth.rgba16.png +0x241e32b1, actors/mad_piano/mad_piano_tooth.rgba16.png +0x1e94913c, actors/manta/manta_eye.rgba16.png +0x66703e44, actors/manta/manta_fin_corner.rgba16.png +0x2783aa5c, actors/manta/manta_fin_edge.rgba16.png +0xfd83a1ff, actors/manta/manta_gills.rgba16.png +0x390b6600, actors/mario/mario_eyes_center.rgba16.png +0x99c5d462, actors/mario/mario_eyes_closed.rgba16.png +0x99c5d462, actors/mario/mario_eyes_closed_unused_0.rgba16.png +0x99c5d462, actors/mario/mario_eyes_closed_unused_1.rgba16.png +0xe35bf3c5, actors/mario/mario_eyes_dead.rgba16.png +0x93c8da3e, actors/mario/mario_eyes_down_unused.rgba16.png +0xf1a15c9c, actors/mario/mario_eyes_half_closed.rgba16.png +0xd2d084ab, actors/mario/mario_eyes_left_unused.rgba16.png +0x8bf71d85, actors/mario/mario_eyes_right_unused.rgba16.png +0x38880faa, actors/mario/mario_eyes_up_unused.rgba16.png +0x0f25af6f, actors/mario/mario_logo.rgba16.png +0x088c7205, actors/mario/mario_metal.rgba16.png +0xf35da883, actors/mario/mario_metal_wing_tip_unused.rgba16.png +0x5efff350, actors/mario/mario_metal_wing_unused.rgba16.png +0xc09ebd12, actors/mario/mario_mustache.rgba16.png +0x63d38a3a, actors/mario/mario_overalls_button.rgba16.png +0xc300ba83, actors/mario/mario_sideburn.rgba16.png +0x944d654f, actors/mario/mario_wing.rgba16.png +0x8723ab77, actors/mario/mario_wing_tip.rgba16.png +0x0f25af6f, actors/mario_cap/mario_cap_logo.rgba16.png +0x088c7205, actors/mario_cap/mario_cap_metal.rgba16.png +0xf35da883, actors/mario_cap/mario_cap_metal_wing_tip_unused.rgba16.png +0x5efff350, actors/mario_cap/mario_cap_metal_wing_unused.rgba16.png +0x944d654f, actors/mario_cap/mario_cap_wing.rgba16.png +0x8723ab77, actors/mario_cap/mario_cap_wing_tip.rgba16.png +0xd3bf1790, actors/metal_box/metal_box_side.rgba16.png +0xaa35ca84, actors/mips/mips_eyes.rgba16.png +0xaf1faaba, actors/mist/mist.ia16.png +0x56094a62, actors/moneybag/moneybag_eyes.rgba16.png +0x3dd1312a, actors/moneybag/moneybag_mouth.rgba16.png +0xa69a12ef, actors/monty_mole/monty_mole_cheek.rgba16.png +0x69644253, actors/monty_mole/monty_mole_claw.rgba16.png +0xd9c71d69, actors/monty_mole/monty_mole_eye.rgba16.png +0xc1f6c926, actors/monty_mole/monty_mole_nose.rgba16.png +0xd20c1c79, actors/monty_mole/monty_mole_tooth.rgba16.png +0xe10f36d8, actors/monty_mole_hole/monty_mole_hole.ia16.png +0x4c2fcf44, actors/mr_i_eyeball/mr_i_eyeball_left_side.rgba16.png +0xd849accc, actors/mr_i_eyeball/mr_i_eyeball_right_side.rgba16.png +0x8b9be6ab, actors/mr_i_iris/mr_i_iris_closed.rgba16.png +0xdd4329a2, actors/mr_i_iris/mr_i_iris_mostly_closed.rgba16.png +0x75a83827, actors/mr_i_iris/mr_i_iris_mostly_open.rgba16.png +0xe41a72a4, actors/mr_i_iris/mr_i_iris_open.rgba16.png +0xacfdc2be, actors/mushroom_1up/1-up_mushroom.rgba16.png +0x6172af0c, actors/peach/peach_chest_jewel.rgba16.png +0xf354bc7d, actors/peach/peach_crown_jewel.rgba16.png +0x1ceda1e4, actors/peach/peach_dress.rgba16.png +0xc0c368e5, actors/peach/peach_eye_closed.rgba16.png +0xee2d4448, actors/peach/peach_eye_mostly_closed.rgba16.png +0x72ddc9b3, actors/peach/peach_eye_mostly_open.rgba16.png +0x560c8875, actors/peach/peach_eye_open.rgba16.png +0xf2559dae, actors/peach/peach_lips.rgba16.png +0x549c25be, actors/peach/peach_lips_scrunched.rgba16.png +0x4e9ed4d1, actors/peach/peach_nostril.rgba16.png +0xd0b817a0, actors/pebble/pebble.rgba16.png +0xefa35c23, actors/penguin/penguin_beak.rgba16.png +0x3c4eb858, actors/penguin/penguin_eye_angry.rgba16.png +0x07f3fbbc, actors/penguin/penguin_eye_angry_unused.rgba16.png +0x21ce109b, actors/penguin/penguin_eye_closed.rgba16.png +0x25562c85, actors/penguin/penguin_eye_half_closed.rgba16.png +0x1d74c023, actors/penguin/penguin_eye_open.rgba16.png +0x9db9def2, actors/piranha_plant/piranha_plant_bottom_lip.rgba16.png +0x329e5c61, actors/piranha_plant/piranha_plant_leaf.rgba16.png +0x6888b5f7, actors/piranha_plant/piranha_plant_skin.rgba16.png +0x1eac9092, actors/piranha_plant/piranha_plant_stem.rgba16.png +0x5a9a602f, actors/piranha_plant/piranha_plant_tongue.rgba16.png +0x68af8823, actors/piranha_plant/piranha_plant_tooth.rgba16.png +0xd30fa85a, actors/pokey/pokey_body.rgba16.png +0x273debaa, actors/pokey/pokey_face.rgba16.png +0x6a13b542, actors/pokey/pokey_face_blink.rgba16.png +0x61169028, actors/poundable_pole/poundable_pole_side.rgba16.png +0xd6411a11, actors/poundable_pole/poundable_pole_top.rgba16.png +0xa74393f4, actors/power_meter/power_meter_five_segments.rgba16.png +0x157109aa, actors/power_meter/power_meter_four_segments.rgba16.png +0x33f410c0, actors/power_meter/power_meter_full.rgba16.png +0x6197365b, actors/power_meter/power_meter_left_side.rgba16.png +0xeed76ec2, actors/power_meter/power_meter_one_segment.rgba16.png +0x13d766df, actors/power_meter/power_meter_right_side.rgba16.png +0x2a2ea06e, actors/power_meter/power_meter_seven_segments.rgba16.png +0xd836de6b, actors/power_meter/power_meter_six_segments.rgba16.png +0x5ae71e0c, actors/power_meter/power_meter_three_segments.rgba16.png +0xb7a9ee70, actors/power_meter/power_meter_two_segments.rgba16.png +0x998b4dba, actors/purple_switch/purple_switch_base.rgba16.png +0xea1f2eda, actors/purple_switch/purple_switch_exclamation_point.rgba16.png +0x0f99a13e, actors/sand/sand_particle.rgba16.png +0x89d3117c, actors/scuttlebug/scuttlebug_eye.rgba16.png +0x24542211, actors/scuttlebug/scuttlebug_iris.rgba16.png +0x8b920b74, actors/scuttlebug/scuttlebug_left_side.rgba16.png +0x66d33146, actors/scuttlebug/scuttlebug_leg.rgba16.png +0xdc33bd67, actors/scuttlebug/scuttlebug_right_side.rgba16.png +0x50d823e3, actors/seaweed/seaweed_base.rgba16.png +0x807cea9e, actors/seaweed/seaweed_lower_center.rgba16.png +0x1273f5d1, actors/seaweed/seaweed_tip.rgba16.png +0x2f3b03f7, actors/seaweed/seaweed_upper_center.rgba16.png +0x2ced4bc1, actors/skeeter/skeeter_eye.rgba16.png +0x0a253de9, actors/skeeter/skeeter_iris.rgba16.png +0x136a65ce, actors/smoke/smoke.ia16.png +0x7049fa4b, actors/snowman/mr_blizzard_eye.rgba16.png +0x3cfde407, actors/snowman/mr_blizzard_left_side.rgba16.png +0x08ebc9b4, actors/snowman/mr_blizzard_mitten.rgba16.png +0x1b0c6388, actors/snowman/mr_blizzard_mouth.rgba16.png +0x795fa575, actors/snowman/mr_blizzard_right_side.rgba16.png +0x2bbcb936, actors/snufit/snufit_body.rgba16.png +0x1c3980b3, actors/snufit/snufit_eye.rgba16.png +0x87e77672, actors/snufit/snufit_mask_strap.rgba16.png +0xb8f2454c, actors/snufit/snufit_mouth.rgba16.png +0xbbf6e56d, actors/sparkle/sparkle_0.rgba16.png +0x49fd1350, actors/sparkle/sparkle_1.rgba16.png +0x0694a394, actors/sparkle/sparkle_2.rgba16.png +0xc81c3e98, actors/sparkle/sparkle_3.rgba16.png +0xe08a7a20, actors/sparkle/sparkle_4.rgba16.png +0x98d62174, actors/sparkle/sparkle_5.rgba16.png +0x6d5f2ac7, actors/sparkle_animation/sparkle_animation_0.ia16.png +0xb2160b76, actors/sparkle_animation/sparkle_animation_1.ia16.png +0x7ba93370, actors/sparkle_animation/sparkle_animation_2.ia16.png +0x6a102c8b, actors/sparkle_animation/sparkle_animation_3.ia16.png +0xecfd928c, actors/sparkle_animation/sparkle_animation_4.ia16.png +0x7cfea0f6, actors/spindrift/spindrift_face.rgba16.png +0x74943f2a, actors/spindrift/spindrift_head.rgba16.png +0xe6307aa4, actors/spindrift/spindrift_leaf.rgba16.png +0x30da7207, actors/spindrift/spindrift_petal.rgba16.png +0x912d74b1, actors/springboard/springboard_base_unused.rgba16.png +0x9303578c, actors/springboard/springboard_top_unused.rgba16.png +0xe343a70a, actors/star/star_eye.rgba16.png +0x2379d1f3, actors/star/star_surface.rgba16.png +0x7bc16686, actors/stomp_smoke/stomp_smoke_0.ia16.png +0x0f2deec7, actors/stomp_smoke/stomp_smoke_1.ia16.png +0x952c47c7, actors/stomp_smoke/stomp_smoke_2.ia16.png +0xc2e2f406, actors/stomp_smoke/stomp_smoke_3.ia16.png +0xcdee92fc, actors/stomp_smoke/stomp_smoke_4.ia16.png +0x6888b25f, actors/stomp_smoke/stomp_smoke_5.ia16.png +0x819c8ee0, actors/sushi/sushi_eye.rgba16.png +0xa76449c5, actors/sushi/sushi_snout.rgba16.png +0x28b67cbf, actors/sushi/sushi_tooth.rgba16.png +0x633218da, actors/swoop/swoop_body.rgba16.png +0xe2b7624d, actors/swoop/swoop_eye.rgba16.png +0xf2e3f3ae, actors/swoop/swoop_nose.rgba16.png +0x111d5500, actors/swoop/swoop_wing.rgba16.png +0x09403c76, actors/thwomp/thwomp_face.rgba16.png +0x7b9b0f38, actors/thwomp/thwomp_surface.rgba16.png +0xfe36303d, actors/toad/toad_face.rgba16.png +0x1011b465, actors/toad/toad_head.rgba16.png +0x43c09930, actors/tornado/tornado.ia16.png +0x95cd8673, actors/treasure_chest/treasure_chest_front.rgba16.png +0xfd64803f, actors/treasure_chest/treasure_chest_lock.rgba16.png +0x3b9ab086, actors/treasure_chest/treasure_chest_lock_top.rgba16.png +0xa002ac4e, actors/treasure_chest/treasure_chest_side.rgba16.png +0x6f406bac, actors/tree/palm_tree.rgba16.png +0x86a4406c, actors/tree/pine_tree.rgba16.png +0xcaaf6a50, actors/tree/snowy_pine_tree.rgba16.png +0x7b4ce4e0, actors/tree/tree_left_side.rgba16.png +0xba697dbe, actors/tree/tree_right_side.rgba16.png +0xe9132646, actors/ukiki/ukiki_butt.rgba16.png +0x3fbbd9a5, actors/ukiki/ukiki_face.rgba16.png +0xa3534f24, actors/ukiki/ukiki_face_blink.rgba16.png +0x85436a0d, actors/ukiki/ukiki_fur.rgba16.png +0x53798e34, actors/unagi/unagi_body.rgba16.png +0x6a2b9929, actors/unagi/unagi_eye.rgba16.png +0xec75ddec, actors/unagi/unagi_head_base.rgba16.png +0x134c42e0, actors/unagi/unagi_mouth.rgba16.png +0x91c6cbcb, actors/unagi/unagi_tail.rgba16.png +0xa9aaed3d, actors/unagi/unagi_tooth.rgba16.png +0x9f28a579, actors/walk_smoke/walk_smoke_0.ia16.png +0xf2864cd5, actors/walk_smoke/walk_smoke_1.ia16.png +0xdedb492e, actors/walk_smoke/walk_smoke_2.ia16.png +0x81feb406, actors/walk_smoke/walk_smoke_3.ia16.png +0xdc375568, actors/walk_smoke/walk_smoke_4.ia16.png +0x453dbbbd, actors/walk_smoke/walk_smoke_5.ia16.png +0x0740e5f6, actors/walk_smoke/walk_smoke_6.ia16.png +0x9595cfab, actors/warp_pipe/warp_pipe_side.rgba16.png +0xe599f4b8, actors/warp_pipe/warp_pipe_top.rgba16.png +0x264ee37c, actors/water_bubble/water_bubble.rgba16.png +0x6348045f, actors/water_mine/water_mine_left_side_unused.rgba16.png +0x83895fa8, actors/water_mine/water_mine_right_side_unused.rgba16.png +0x6edb77dd, actors/water_mine/water_mine_spike_unused.rgba16.png +0xb59ea4c2, actors/water_ring/water_ring.rgba16.png +0x334f97f8, actors/water_splash/water_splash_0.rgba16.png +0xd2d9d04b, actors/water_splash/water_splash_1.rgba16.png +0xe0e38759, actors/water_splash/water_splash_2.rgba16.png +0x62b77b76, actors/water_splash/water_splash_3.rgba16.png +0xef1328a3, actors/water_splash/water_splash_4.rgba16.png +0x84fffbbc, actors/water_splash/water_splash_5.rgba16.png +0x3f218927, actors/water_splash/water_splash_6.rgba16.png +0x6237f906, actors/water_splash/water_splash_7.rgba16.png +0x43c09930, actors/whirlpool/whirlpool.ia16.png +0x053b1cf1, actors/white_particle/snow_particle.rgba16.png +0xf0bb14a0, actors/white_particle_small/small_snow_particle.rgba16.png +0x28eb23a5, actors/whomp/whomp_back.rgba16.png +0xb29261b3, actors/whomp/whomp_face.rgba16.png +0x18602905, actors/whomp/whomp_hand.rgba16.png +0x7bb8fef7, actors/whomp/whomp_surface.rgba16.png +0xe343a70a, actors/wiggler/wiggler_eye.rgba16.png +0x1f3f7866, actors/wiggler/wiggler_flower.rgba16.png +0x5abb875f, actors/wiggler/wiggler_frown.rgba16.png +0x970bbf97, actors/wiggler/wiggler_nose_left_side.rgba16.png +0x02d3aa6c, actors/wiggler/wiggler_nose_right_side.rgba16.png +0xf337fa3f, actors/wiggler/wiggler_segment_left_side.rgba16.png +0x45eb8dd5, actors/wiggler/wiggler_segment_right_side.rgba16.png +0x0eaf1606, actors/wooden_signpost/wooden_signpost_back.rgba16.png +0x9fa93f54, actors/wooden_signpost/wooden_signpost_front.rgba16.png +0x89f3f5a0, actors/yellow_sphere/yellow_sphere.rgba16.png +0x89f3f5a0, actors/yellow_sphere_small/small_yellow_sphere.rgba16.png +0x8c68c203, actors/yoshi/yoshi_eye.rgba16.png +0xf56d22e8, actors/yoshi/yoshi_eye_blink.rgba16.png +0xaeaecdf2, actors/yoshi/yoshi_nostril.rgba16.png +0xdbc97799, actors/yoshi_egg/yoshi_egg_0_unused.rgba16.png +0x65d071c5, actors/yoshi_egg/yoshi_egg_1_unused.rgba16.png +0x05e4c57d, actors/yoshi_egg/yoshi_egg_2_unused.rgba16.png +0xc3dedd5a, actors/yoshi_egg/yoshi_egg_3_unused.rgba16.png +0xa3e2af46, actors/yoshi_egg/yoshi_egg_4_unused.rgba16.png +0xb74e542d, actors/yoshi_egg/yoshi_egg_5_unused.rgba16.png +0x432f62ec, actors/yoshi_egg/yoshi_egg_6_unused.rgba16.png +0x77a02e4d, actors/yoshi_egg/yoshi_egg_7_unused.rgba16.png +0x5c5145b1, levels/bbh/0.rgba16.png +0x944c43cd, levels/bbh/1.rgba16.png +0xe05685d7, levels/bbh/2.rgba16.png +0x61ed9ac7, levels/bbh/3.rgba16.png +0xc0601a31, levels/bbh/4.rgba16.png +0xd84ab30a, levels/bbh/5.rgba16.png +0x3444bf90, levels/bbh/6.rgba16.png +0x83cb5a9e, levels/bitdw/0.rgba16.png +0x5d04dbaf, levels/bitdw/1.rgba16.png +0x3e6e4959, levels/bitdw/2.rgba16.png +0xacccd295, levels/bitdw/3.rgba16.png +0x09b8a53d, levels/bitfs/0.rgba16.png +0xee52a0fe, levels/bitfs/1.rgba16.png +0xa1c532ae, levels/bitfs/2.rgba16.png +0xb23a9652, levels/bits/0.rgba16.png +0xbcc1cac5, levels/bits/1.rgba16.png +0x040da45d, levels/bits/2.rgba16.png +0xab7cc8f7, levels/bob/0.rgba16.png +0x04fda79c, levels/bob/1.rgba16.png +0xdbf53dbc, levels/bob/2.rgba16.png +0x9c5be999, levels/bob/3.rgba16.png +0xf1b9b3ad, levels/bob/4.rgba16.png +0xd57b7c36, levels/bowser_1/0.rgba16.png +0x5a7d2683, levels/bowser_1/1.rgba16.png +0x9115bf02, levels/bowser_1/2.rgba16.png +0x1b6a23a2, levels/bowser_2/0.rgba16.png +0x817c83e8, levels/bowser_3/0.rgba16.png +0x5e8126b3, levels/bowser_3/1.rgba16.png +0xa389ce0d, levels/bowser_3/2.rgba16.png +0xec2a0090, levels/castle_grounds/0.rgba16.png +0xd65056c7, levels/castle_grounds/1.rgba16.png +0x483afe79, levels/castle_grounds/2.rgba16.png +0xda226d02, levels/castle_grounds/3.rgba16.png +0xa31f114a, levels/castle_grounds/4.rgba16.png +0x425e6092, levels/castle_grounds/5.ia8.png +0xfa3f6f74, levels/castle_inside/1.rgba16.png +0x388593be, levels/castle_inside/10.rgba16.png +0x44d65143, levels/castle_inside/11.rgba16.png +0xf08495fe, levels/castle_inside/12.rgba16.png +0x51502b7b, levels/castle_inside/13.rgba16.png +0xb53c3c04, levels/castle_inside/14.rgba16.png +0x4b9432f3, levels/castle_inside/15.rgba16.png +0x99015431, levels/castle_inside/16.ia16.png +0xe2ae61f0, levels/castle_inside/17.rgba16.png +0x35903c25, levels/castle_inside/18.rgba16.png +0x943652c9, levels/castle_inside/19.rgba16.png +0x99eeb704, levels/castle_inside/2.ia16.png +0x99181ee6, levels/castle_inside/20.rgba16.png +0x6cac020a, levels/castle_inside/21.rgba16.png +0x166253af, levels/castle_inside/22.rgba16.png +0x0461b2ef, levels/castle_inside/23_us.rgba16.png +0xf46a25f1, levels/castle_inside/24_us.rgba16.png +0xd6f07968, levels/castle_inside/25.rgba16.png +0x483e0839, levels/castle_inside/26.rgba16.png +0xad3a9b8e, levels/castle_inside/27.rgba16.png +0x192995f1, levels/castle_inside/28.rgba16.png +0xccfe01ba, levels/castle_inside/29.rgba16.png +0xa613ad29, levels/castle_inside/3.rgba16.png +0xa1feefa1, levels/castle_inside/30.rgba16.png +0x271ae292, levels/castle_inside/31.rgba16.png +0xb4b9385a, levels/castle_inside/32.rgba16.png +0x5771f505, levels/castle_inside/33.rgba16.png +0x1787e161, levels/castle_inside/34.rgba16.png +0x1c63e539, levels/castle_inside/35.rgba16.png +0xe61cc3d6, levels/castle_inside/36.rgba16.png +0x75e62f4a, levels/castle_inside/37.rgba16.png +0xbcac9db6, levels/castle_inside/38.rgba16.png +0x340ffbe1, levels/castle_inside/39.rgba16.png +0xe6920e39, levels/castle_inside/4.rgba16.png +0xe2ac5e67, levels/castle_inside/40.rgba16.png +0xff7de579, levels/castle_inside/5.rgba16.png +0x2404ae69, levels/castle_inside/6.rgba16.png +0x8f8c9db6, levels/castle_inside/7.rgba16.png +0x951da9ea, levels/castle_inside/8.rgba16.png +0xffb8cee5, levels/castle_inside/9.rgba16.png +0x4ad539e9, levels/castle_inside/castle_light.ia16.png +0xf26399d3, levels/ccm/0.rgba16.png +0xe20286cf, levels/ccm/1.rgba16.png +0xa035eec1, levels/ccm/10.rgba16.png +0x4d71f1ab, levels/ccm/11.rgba16.png +0x0086fd9f, levels/ccm/12.rgba16.png +0x03023b7a, levels/ccm/2.rgba16.png +0x61dc28cc, levels/ccm/3.rgba16.png +0xfccba0ba, levels/ccm/4.rgba16.png +0x1b0c6388, levels/ccm/5.rgba16.png +0x7049fa4b, levels/ccm/6.rgba16.png +0x17e335d2, levels/ccm/7.rgba16.png +0xa7adb5a2, levels/ccm/8.ia16.png +0x8327df20, levels/ccm/9.ia16.png +0xa784a5fe, levels/cotmc/0.rgba16.png +0xbdcdfb4c, levels/cotmc/1.rgba16.png +0xbb187a52, levels/cotmc/2.rgba16.png +0xe8555a11, levels/cotmc/3.rgba16.png +0xe135f21b, levels/cotmc/4.rgba16.png +0xea0349b4, levels/ddd/0.rgba16.png +0x71d6258e, levels/ddd/1.rgba16.png +0xe8ee2c1a, levels/ddd/2.rgba16.png +0x2fd07664, levels/ddd/3.rgba16.png +0x50e55520, levels/ddd/4.rgba16.png +0x4c7513c6, levels/hmc/0.rgba16.png +0x42e50b41, levels/hmc/1.rgba16.png +0xdef49e6a, levels/hmc/2.rgba16.png +0x8a9f7877, levels/hmc/3.rgba16.png +0x4a6df6b5, levels/hmc/4.rgba16.png +0xd4fa8789, levels/hmc/5.rgba16.png +0x6d5b3127, levels/hmc/6.rgba16.png +0xccfe01ba, levels/hmc/7.rgba16.png +0xa37ed248, levels/intro/0.rgba16.png +0xd01d2c8c, levels/intro/1.rgba16.png +0xcf3ab52b, levels/intro/2_copyright.rgba16.png +0x34f68b34, levels/intro/3_tm.rgba16.png +0x71d6258e, levels/jrb/0.rgba16.png +0x619f7672, levels/jrb/1.rgba16.png +0x9efada2a, levels/jrb/2.rgba16.png +0xfedee222, levels/jrb/3.rgba16.png +0x858a739f, levels/lll/0.rgba16.png +0x8e39e767, levels/lll/1.rgba16.png +0x0d612534, levels/lll/10.rgba16.png +0xff672816, levels/lll/11.rgba16.png +0x54813b65, levels/lll/12.rgba16.png +0x65633450, levels/lll/13.rgba16.png +0xf3360668, levels/lll/14.rgba16.png +0xb8bd5c30, levels/lll/15.rgba16.png +0x4f24c618, levels/lll/16.rgba16.png +0x4b34b8b6, levels/lll/17.rgba16.png +0xb46d0b27, levels/lll/18.rgba16.png +0x81dadd7c, levels/lll/19.rgba16.png +0xc555fb1c, levels/lll/2.rgba16.png +0xecfe27b5, levels/lll/20.rgba16.png +0xa60061ea, levels/lll/21.rgba16.png +0xd6ca289a, levels/lll/22.rgba16.png +0x85f98cbd, levels/lll/23.rgba16.png +0x099f118d, levels/lll/24.rgba16.png +0x6e68c10b, levels/lll/25.rgba16.png +0x7181dbcf, levels/lll/26.rgba16.png +0xa7adb5a2, levels/lll/27.ia16.png +0x06d93b1e, levels/lll/28.rgba16.png +0x6e523fee, levels/lll/29.rgba16.png +0x3766a306, levels/lll/3.rgba16.png +0x129b69cc, levels/lll/30.rgba16.png +0xf3648041, levels/lll/31.rgba16.png +0xfb4c90a4, levels/lll/32.rgba16.png +0xb29b3c1d, levels/lll/4.rgba16.png +0x24c6d141, levels/lll/5.rgba16.png +0xe7268cdd, levels/lll/6.rgba16.png +0xdce9bb52, levels/lll/7.rgba16.png +0x3af9a723, levels/lll/8.rgba16.png +0xad98a046, levels/lll/9.rgba16.png +0x1da84c4d, levels/menu/main_menu_seg7.00018.rgba16.png +0xb83d32a6, levels/menu/main_menu_seg7.00818.rgba16.png +0x514fd3e7, levels/menu/main_menu_seg7.01018.rgba16.png +0xe6daa7fd, levels/menu/main_menu_seg7.02018.rgba16.png +0x2c874bfe, levels/menu/main_menu_seg7.03468.rgba16.png +0x794c2e6d, levels/menu/main_menu_seg7.03C68.rgba16.png +0xe6a23bbc, levels/menu/main_menu_seg7.04468.rgba16.png +0x55d63b31, levels/menu/main_menu_seg7.04C68.rgba16.png +0x4cdbeb28, levels/menu/main_menu_seg7.05468.rgba16.png +0xf684b56a, levels/menu/main_menu_seg7.06328.rgba16.png +0x5366bcf7, levels/menu/main_menu_seg7.06B28.rgba16.png +0xf5c6117d, levels/menu/main_menu_seg7.073D0.rgba16.png +0xf5033d3c, levels/menu/main_menu_seg7.075D0.rgba16.png +0x8ce1067e, levels/menu/main_menu_seg7.077D0.rgba16.png +0x81338dc9, levels/menu/main_menu_seg7.079D0.rgba16.png +0x10d7118c, levels/menu/main_menu_seg7.07BD0.rgba16.png +0x5e2803e1, levels/menu/main_menu_seg7.07DD0.rgba16.png +0x672cbb6d, levels/menu/main_menu_seg7.07FD0.rgba16.png +0x199eb6f2, levels/menu/main_menu_seg7.081D0.rgba16.png +0x2e3534a5, levels/menu/main_menu_seg7.083D0.rgba16.png +0x4b094d62, levels/menu/main_menu_seg7.085D0.rgba16.png +0x3526ec73, levels/menu/main_menu_seg7.087D0.rgba16.png +0x148aa944, levels/menu/main_menu_seg7.089D0.rgba16.png +0xe6b70a56, levels/menu/main_menu_seg7.08BD0.rgba16.png +0xdc8e1e4b, levels/menu/main_menu_seg7.08DD0.rgba16.png +0x4581a549, levels/menu/main_menu_seg7.08FD0.rgba16.png +0x64fe6413, levels/menu/main_menu_seg7.091D0.rgba16.png +0xdb73b45b, levels/menu/main_menu_seg7.093D0.rgba16.png +0x8dacc224, levels/menu/main_menu_seg7.095D0.rgba16.png +0x91b05c17, levels/menu/main_menu_seg7.097D0.rgba16.png +0xe2e16e94, levels/menu/main_menu_seg7.099D0.rgba16.png +0xe6b1e0fd, levels/menu/main_menu_seg7.09BD0.rgba16.png +0xb543a988, levels/menu/main_menu_seg7.09DD0.rgba16.png +0xdca27f0a, levels/menu/main_menu_seg7.09FD0.rgba16.png +0xeaef8ec7, levels/menu/main_menu_seg7.0A1D0.rgba16.png +0x84ac97af, levels/menu/main_menu_seg7.0A3D0.rgba16.png +0x07203782, levels/menu/main_menu_seg7.0A5D0.rgba16.png +0x1f8aa229, levels/menu/main_menu_seg7.0A7D0.rgba16.png +0x83add63b, levels/menu/main_menu_seg7.0A9D0.rgba16.png +0x6f3f423f, levels/menu/main_menu_seg7.0D1A8.rgba16.png +0xbca6968b, levels/menu/main_menu_seg7.0E1A8.rgba16.png +0x162e39a6, levels/menu/main_menu_seg7_us.0AC40.ia8.png +0xf10460c9, levels/menu/main_menu_seg7_us.0AC80.ia8.png +0xf228a45d, levels/menu/main_menu_seg7_us.0ACC0.ia8.png +0x8bdb6559, levels/menu/main_menu_seg7_us.0AD00.ia8.png +0xa3525146, levels/menu/main_menu_seg7_us.0AD40.ia8.png +0x14545347, levels/menu/main_menu_seg7_us.0AD80.ia8.png +0xaa6d8f7e, levels/menu/main_menu_seg7_us.0ADC0.ia8.png +0xf5d61ae9, levels/menu/main_menu_seg7_us.0AE00.ia8.png +0xaed4bc77, levels/menu/main_menu_seg7_us.0AE40.ia8.png +0x192afe7c, levels/menu/main_menu_seg7_us.0AE80.ia8.png +0xc547e63a, levels/menu/main_menu_seg7_us.0AEC0.ia8.png +0x0f00e7e1, levels/menu/main_menu_seg7_us.0AF00.ia8.png +0xe400fd4b, levels/menu/main_menu_seg7_us.0AF40.ia8.png +0x6825594f, levels/menu/main_menu_seg7_us.0AF80.ia8.png +0xe4037e30, levels/menu/main_menu_seg7_us.0AFC0.ia8.png +0xda9edc44, levels/menu/main_menu_seg7_us.0B000.ia8.png +0xa76687fb, levels/menu/main_menu_seg7_us.0B040.ia8.png +0x0f97d07d, levels/menu/main_menu_seg7_us.0B080.ia8.png +0x619bee29, levels/menu/main_menu_seg7_us.0B0C0.ia8.png +0x509b1b0c, levels/menu/main_menu_seg7_us.0B100.ia8.png +0x30a21493, levels/menu/main_menu_seg7_us.0B140.ia8.png +0x0e503bd8, levels/menu/main_menu_seg7_us.0B180.ia8.png +0x5b6f4412, levels/menu/main_menu_seg7_us.0B1C0.ia8.png +0xe88ff4dc, levels/menu/main_menu_seg7_us.0B200.ia8.png +0x2198da61, levels/menu/main_menu_seg7_us.0B240.ia8.png +0x544a08c3, levels/menu/main_menu_seg7_us.0B280.ia8.png +0x11a39572, levels/menu/main_menu_seg7_us.0B2C0.ia8.png +0x1bef1652, levels/menu/main_menu_seg7_us.0B300.ia8.png +0x1cd73c42, levels/menu/main_menu_seg7_us.0B340.ia8.png +0xf206a679, levels/menu/main_menu_seg7_us.0B380.ia8.png +0x02d31d25, levels/menu/main_menu_seg7_us.0B3C0.ia8.png +0x9f07b343, levels/menu/main_menu_seg7_us.0B400.ia8.png +0x836b21f9, levels/menu/main_menu_seg7_us.0B440.ia8.png +0x56efd458, levels/menu/main_menu_seg7_us.0B480.ia8.png +0x326f58e9, levels/menu/main_menu_seg7_us.0B4C0.ia8.png +0x8de17184, levels/menu/main_menu_seg7_us.0B500.ia8.png +0x34e5627e, levels/menu/main_menu_seg7_us.0B540.ia8.png +0x66746f69, levels/menu/main_menu_seg7_us.0B580.ia8.png +0x662a6d1b, levels/menu/main_menu_seg7_us.0B5C0.ia8.png +0x31fb3ea8, levels/menu/main_menu_seg7_us.0B600.ia8.png +0x863c411f, levels/menu/main_menu_seg7_us.0B640.ia8.png +0x395ceae6, levels/menu/main_menu_seg7_us.0B680.ia8.png +0xf64de414, levels/menu/main_menu_seg7_us.0B6C0.ia8.png +0x5f7d7cfc, levels/menu/main_menu_seg7_us.0B700.ia8.png +0x1914b3e0, levels/menu/main_menu_seg7_us.0B740.ia8.png +0x2432c484, levels/menu/main_menu_seg7_us.0B780.ia8.png +0x23fea78c, levels/menu/main_menu_seg7_us.0B7C0.ia8.png +0x03398fab, levels/menu/main_menu_seg7_us.0B800.ia8.png +0xc4672c2c, levels/pss/0.rgba16.png +0x24245dda, levels/pss/1.ia16.png +0xbcecff47, levels/pss/2.rgba16.png +0x84a18b1a, levels/rr/1.rgba16.png +0x3c608334, levels/rr/2.rgba16.png +0x0527cea8, levels/rr/quarter_flying_carpet.rgba16.png +0x0adc550e, levels/sl/0.rgba16.png +0xaca4e108, levels/sl/1.rgba16.png +0xebfbd0ff, levels/sl/2.rgba16.png +0xbc5a142c, levels/sl/3.rgba16.png +0xffc64b0d, levels/sl/4.rgba16.png +0x0b974921, levels/ssl/0.rgba16.png +0xcc338863, levels/ssl/1.ia16.png +0x9ba3742c, levels/ssl/10.rgba16.png +0xe0238780, levels/ssl/11.rgba16.png +0x72dd8350, levels/ssl/2.rgba16.png +0x464c110a, levels/ssl/3.rgba16.png +0x8b6b8087, levels/ssl/4.rgba16.png +0x0924e963, levels/ssl/5.rgba16.png +0x7d0e309d, levels/ssl/6.rgba16.png +0xd0dcc5a8, levels/ssl/7.rgba16.png +0x747d5ad1, levels/ssl/8.rgba16.png +0xc05d4301, levels/ssl/9.rgba16.png +0xa738ab70, levels/thi/0.rgba16.png +0x00789a1f, levels/thi/1.rgba16.png +0x7a7cc25b, levels/totwc/0.rgba16.png +0x50a5b2ab, levels/totwc/1.rgba16.png +0x85db5e7b, levels/totwc/2.rgba16.png +0x9c35ed91, levels/totwc/3.ia16.png +0xd5d7efab, levels/ttc/0.rgba16.png +0xf915a262, levels/ttc/1.rgba16.png +0x92d9c64f, levels/ttc/2.rgba16.png +0xbc1a2d49, levels/ttm/0.ia16.png +0x437a2fa4, levels/ttm/1.rgba16.png +0xbec34aa9, levels/ttm/2.rgba16.png +0x66f12d05, levels/ttm/3.rgba16.png +0x340e48e3, levels/ttm/4.rgba16.png +0x811b7718, levels/ttm/5.rgba16.png +0x875b1a7b, levels/ttm/6.rgba16.png +0xc3c215ab, levels/ttm/7.rgba16.png +0x6128b338, levels/ttm/8.rgba16.png +0xf755b95f, levels/vcutm/0.rgba16.png +0x2bda3bfa, levels/vcutm/1.rgba16.png +0x9fc44b41, levels/vcutm/2.rgba16.png +0xba8c6c67, levels/vcutm/3.rgba16.png +0xc7229a30, levels/wdw/0.rgba16.png +0x241f463f, levels/wdw/1.rgba16.png +0xc5e4658c, levels/wdw/2.rgba16.png +0xfe7d0d8a, levels/wdw/3.rgba16.png +0xef715196, levels/wdw/4.rgba16.png +0x0bc6f01d, levels/wf/0.rgba16.png +0xa2a8c04f, levels/wf/1.rgba16.png +0xfd37e14e, levels/wf/2.rgba16.png +0x7e168bbb, levels/wf/3.rgba16.png +0xe77d22d7, levels/wf/4.rgba16.png +0x0fea0598, levels/wf/5.ia8.png +0x6e29fa4b, levels/wmotr/0.rgba16.png +0xe57c9fc5, levels/wmotr/1.rgba16.png +0x0f459e52, levels/wmotr/2.rgba16.png +0xd025cebb, levels/wmotr/3.rgba16.png +0x1b9faea4, levels/wmotr/4.rgba16.png +0xb53e35a9, textures/cave/hmc_textures.00000.rgba16.png +0x71d6258e, textures/cave/hmc_textures.01000.rgba16.png +0x4716c9a3, textures/cave/hmc_textures.01800.rgba16.png +0x41dc652c, textures/cave/hmc_textures.02800.rgba16.png +0x7f050a18, textures/cave/hmc_textures.03000.rgba16.png +0x1fb47ed1, textures/cave/hmc_textures.03800.rgba16.png +0xfdcac8c9, textures/cave/hmc_textures.04800.rgba16.png +0x6fb425db, textures/cave/hmc_textures.05800.rgba16.png +0xe15bca32, textures/cave/hmc_textures.06800.rgba16.png +0xcbd76f04, textures/cave/hmc_textures.07000.rgba16.png +0x19a880e7, textures/cave/hmc_textures.07800.rgba16.png +0x17af0fbc, textures/cave/hmc_textures.08800.rgba16.png +0x292be7cc, textures/cave/hmc_textures.09800.rgba16.png +0xe35b6b5c, textures/cave/hmc_textures.0A000.rgba16.png +0xa500d1f7, textures/cave/hmc_textures.0A800.rgba16.png +0x4ad539e9, textures/cave/hmc_textures.0B800.ia16.png +0x56cc824d, textures/cave/hmc_textures.0C000.ia16.png +0xbba387b7, textures/effect/bubble.06048.rgba16.png +0x96d3f934, textures/effect/flower.00008.rgba16.png +0xb93fd448, textures/effect/flower.00808.rgba16.png +0x38f8a4e7, textures/effect/flower.01008.rgba16.png +0xa268e8e7, textures/effect/flower.01808.rgba16.png +0xe50ac330, textures/effect/lava_bubble.02020.rgba16.png +0x5e9c57c9, textures/effect/lava_bubble.02820.rgba16.png +0x9c66e986, textures/effect/lava_bubble.03020.rgba16.png +0xd197e10c, textures/effect/lava_bubble.03820.rgba16.png +0x4111e3b8, textures/effect/lava_bubble.04020.rgba16.png +0xca0a2523, textures/effect/lava_bubble.04820.rgba16.png +0xcbff0cc0, textures/effect/lava_bubble.05020.rgba16.png +0x0a5807c0, textures/effect/lava_bubble.05820.rgba16.png +0x38a3aae7, textures/effect/tiny_bubble.0684C.rgba16.png +0xe3a28667, textures/effect/tiny_bubble.06AD8.rgba16.png +0x4dc116b5, textures/fire/lll_textures.00000.rgba16.png +0x58a09e6a, textures/fire/lll_textures.00800.rgba16.png +0x92bdabd2, textures/fire/lll_textures.01000.rgba16.png +0xdce9bb52, textures/fire/lll_textures.01800.rgba16.png +0x5f787109, textures/fire/lll_textures.02000.rgba16.png +0x822cd739, textures/fire/lll_textures.02800.rgba16.png +0x29eae5c6, textures/fire/lll_textures.03000.rgba16.png +0x0bce35bd, textures/fire/lll_textures.03800.rgba16.png +0x4cba0464, textures/fire/lll_textures.04000.rgba16.png +0x08d3734e, textures/fire/lll_textures.04800.rgba16.png +0x544d2f6e, textures/fire/lll_textures.05000.rgba16.png +0x87f5517a, textures/fire/lll_textures.05800.rgba16.png +0x5c797ba2, textures/fire/lll_textures.06000.rgba16.png +0xfc886eee, textures/fire/lll_textures.06800.rgba16.png +0x8385b066, textures/fire/lll_textures.07000.rgba16.png +0xec50358f, textures/fire/lll_textures.07800.rgba16.png +0x7a4ad1c4, textures/fire/lll_textures.08000.rgba16.png +0x3d4950f7, textures/fire/lll_textures.08800.rgba16.png +0xf088177d, textures/fire/lll_textures.09000.rgba16.png +0xb81cf987, textures/fire/lll_textures.09800.rgba16.png +0x8662e645, textures/fire/lll_textures.0A000.rgba16.png +0x5e4660ac, textures/fire/lll_textures.0A800.rgba16.png +0x9368fefd, textures/fire/lll_textures.0B000.rgba16.png +0xb707fcd7, textures/fire/lll_textures.0B800.rgba16.png +0x87f00ecb, textures/generic/bob_textures.00000.rgba16.png +0xbfb0c0c1, textures/generic/bob_textures.00800.rgba16.png +0xcf6e4951, textures/generic/bob_textures.01000.rgba16.png +0xd063fb8c, textures/generic/bob_textures.01800.rgba16.png +0x1769f780, textures/generic/bob_textures.02000.rgba16.png +0x8e97fb4d, textures/generic/bob_textures.02800.rgba16.png +0x2b4d294f, textures/generic/bob_textures.03000.rgba16.png +0x4e77ac6e, textures/generic/bob_textures.03800.rgba16.png +0xa2be0843, textures/generic/bob_textures.04000.rgba16.png +0xb1a8c5c3, textures/generic/bob_textures.04800.rgba16.png +0x9e647908, textures/generic/bob_textures.05000.rgba16.png +0x91e11f4e, textures/generic/bob_textures.05800.rgba16.png +0x6f780f03, textures/generic/bob_textures.06000.rgba16.png +0x634ac9cd, textures/generic/bob_textures.07000.rgba16.png +0x37507a71, textures/generic/bob_textures.07800.rgba16.png +0xd0dcc5a8, textures/generic/bob_textures.08000.rgba16.png +0xa1bf3406, textures/generic/bob_textures.08800.rgba16.png +0xe98dac45, textures/generic/bob_textures.09000.rgba16.png +0x5a1108d8, textures/generic/bob_textures.09800.rgba16.png +0x20792e3c, textures/generic/bob_textures.0A000.rgba16.png +0x690a7f2c, textures/generic/bob_textures.0A800.rgba16.png +0x971b9a46, textures/generic/bob_textures.0B000.ia16.png +0xf6c15bcd, textures/grass/wf_textures.00000.rgba16.png +0xe321208d, textures/grass/wf_textures.00800.rgba16.png +0x6b4457b2, textures/grass/wf_textures.01000.rgba16.png +0x24199eca, textures/grass/wf_textures.01800.rgba16.png +0x4da8a3cc, textures/grass/wf_textures.02000.rgba16.png +0x764530b6, textures/grass/wf_textures.02800.rgba16.png +0x78310e1a, textures/grass/wf_textures.03000.rgba16.png +0xaab68db0, textures/grass/wf_textures.03800.rgba16.png +0x3de336df, textures/grass/wf_textures.04000.rgba16.png +0x6e3106d2, textures/grass/wf_textures.04800.rgba16.png +0x2b8425ab, textures/grass/wf_textures.05000.rgba16.png +0x97a3d063, textures/grass/wf_textures.05800.rgba16.png +0x34353e2a, textures/grass/wf_textures.06000.rgba16.png +0x89891fe2, textures/grass/wf_textures.06800.rgba16.png +0xc65b7d80, textures/grass/wf_textures.07000.rgba16.png +0x4b934fe7, textures/grass/wf_textures.07800.rgba16.png +0x65a283de, textures/grass/wf_textures.08000.rgba16.png +0xd9574d8e, textures/grass/wf_textures.08800.rgba16.png +0x2a6ccadc, textures/grass/wf_textures.09000.rgba16.png +0x2c102ab5, textures/grass/wf_textures.09800.rgba16.png +0x2ebc856e, textures/grass/wf_textures.0A000.rgba16.png +0xd9a9c915, textures/grass/wf_textures.0A800.rgba16.png +0x971b9a46, textures/grass/wf_textures.0B000.ia16.png +0xa49fa282, textures/grass/wf_textures.0B800.ia16.png +0x628c427f, textures/inside/inside_castle_textures.00000.rgba16.png +0xc2868738, textures/inside/inside_castle_textures.01000.rgba16.png +0x47fdb7eb, textures/inside/inside_castle_textures.02000.rgba16.png +0x2d736f1d, textures/inside/inside_castle_textures.03000.rgba16.png +0xc089ead9, textures/inside/inside_castle_textures.03800.rgba16.png +0xcef46d6c, textures/inside/inside_castle_textures.04000.rgba16.png +0x6d43e7c6, textures/inside/inside_castle_textures.04800.rgba16.png +0x05954f72, textures/inside/inside_castle_textures.05000.rgba16.png +0x13c0139d, textures/inside/inside_castle_textures.05800.rgba16.png +0x01ea96b5, textures/inside/inside_castle_textures.06000.rgba16.png +0x1db20ce1, textures/inside/inside_castle_textures.07000.rgba16.png +0x09653817, textures/inside/inside_castle_textures.08000.rgba16.png +0x0b8a2663, textures/inside/inside_castle_textures.08800.rgba16.png +0x0371d531, textures/inside/inside_castle_textures.09000.rgba16.png +0xd2205732, textures/inside/inside_castle_textures.0A000.rgba16.png +0xc89b23f9, textures/inside/inside_castle_textures.0B000.rgba16.png +0x7040247a, textures/inside/inside_castle_textures.0B800.rgba16.png +0x70ddcaba, textures/intro_raw/hand_closed.rgba16.png +0xd27fdcd1, textures/intro_raw/hand_open.rgba16.png +0xf0e6ba5d, textures/intro_raw/mario_face_shine.ia8.png +0x6ef97862, textures/intro_raw/red_star_0.rgba16.png +0xf320228e, textures/intro_raw/red_star_1.rgba16.png +0x72fc9260, textures/intro_raw/red_star_2.rgba16.png +0x997e3200, textures/intro_raw/red_star_3.rgba16.png +0x18857b4f, textures/intro_raw/red_star_4.rgba16.png +0x887020ac, textures/intro_raw/red_star_5.rgba16.png +0x3119dc11, textures/intro_raw/red_star_6.rgba16.png +0x3c6ec18c, textures/intro_raw/red_star_7.rgba16.png +0x3c7895de, textures/intro_raw/sparkle_0.rgba16.png +0xb6431ae1, textures/intro_raw/sparkle_1.rgba16.png +0xc5d5652e, textures/intro_raw/sparkle_2.rgba16.png +0xbc3c428f, textures/intro_raw/sparkle_3.rgba16.png +0xb4cb71eb, textures/intro_raw/sparkle_4.rgba16.png +0x5100bf97, textures/intro_raw/sparkle_5.rgba16.png +0xdd7c86b8, textures/intro_raw/white_star_0.rgba16.png +0xba802a03, textures/intro_raw/white_star_1.rgba16.png +0x149a9b81, textures/intro_raw/white_star_2.rgba16.png +0x4f5a41e8, textures/intro_raw/white_star_3.rgba16.png +0x4a3e2c85, textures/intro_raw/white_star_4.rgba16.png +0x3178664a, textures/intro_raw/white_star_5.rgba16.png +0x3e672903, textures/intro_raw/white_star_6.rgba16.png +0xf2f7945a, textures/intro_raw/white_star_7.rgba16.png +0x46116522, textures/machine/ttc_textures.00000.rgba16.png +0x6d43e7c6, textures/machine/ttc_textures.00800.rgba16.png +0xa1f85408, textures/machine/ttc_textures.01000.rgba16.png +0x62e6d009, textures/machine/ttc_textures.01800.rgba16.png +0xf334ddfb, textures/machine/ttc_textures.02000.rgba16.png +0x8c56517c, textures/machine/ttc_textures.02800.rgba16.png +0x356dfe13, textures/machine/ttc_textures.03000.rgba16.png +0xc573883e, textures/machine/ttc_textures.03800.rgba16.png +0xd4308a0e, textures/machine/ttc_textures.04000.rgba16.png +0xdba71c6e, textures/machine/ttc_textures.05000.rgba16.png +0x0b6370af, textures/machine/ttc_textures.05800.rgba16.png +0x6e1a0405, textures/machine/ttc_textures.06000.rgba16.png +0xbbb65ff3, textures/machine/ttc_textures.06800.rgba16.png +0x1ae05253, textures/machine/ttc_textures.07000.rgba16.png +0xd275624b, textures/machine/ttc_textures.07800.rgba16.png +0xc8f2dd9c, textures/machine/ttc_textures.08000.rgba16.png +0x92c1c319, textures/machine/ttc_textures.08400.rgba16.png +0xe4ca5265, textures/mountain/ttm_textures.00000.rgba16.png +0x488a70aa, textures/mountain/ttm_textures.00800.rgba16.png +0x4832f88f, textures/mountain/ttm_textures.01800.rgba16.png +0xcecfc1e5, textures/mountain/ttm_textures.02800.rgba16.png +0xe9ffbe26, textures/mountain/ttm_textures.03000.rgba16.png +0xab35c95e, textures/mountain/ttm_textures.03800.rgba16.png +0x511b3cd3, textures/mountain/ttm_textures.04000.rgba16.png +0xdc695e31, textures/mountain/ttm_textures.04800.rgba16.png +0x210e8f00, textures/mountain/ttm_textures.05000.rgba16.png +0xe18ecf36, textures/mountain/ttm_textures.05800.rgba16.png +0x273dcb72, textures/mountain/ttm_textures.06800.rgba16.png +0x5ee6e213, textures/mountain/ttm_textures.07000.rgba16.png +0x0ad2decd, textures/mountain/ttm_textures.07800.rgba16.png +0x2a789f5e, textures/mountain/ttm_textures.08000.rgba16.png +0x5bcea656, textures/mountain/ttm_textures.08800.rgba16.png +0x4153345f, textures/mountain/ttm_textures.09800.rgba16.png +0x213c5711, textures/mountain/ttm_textures.0A000.rgba16.png +0x6128b338, textures/mountain/ttm_textures.0A800.rgba16.png +0x667b7cd0, textures/mountain/ttm_textures.0B000.rgba16.png +0x235d693f, textures/mountain/ttm_textures.0B800.rgba16.png +0xd8a136b8, textures/mountain/ttm_textures.0C000.rgba16.png +0xc66dcd09, textures/outside/castle_grounds_textures.00000.rgba16.png +0x0f121216, textures/outside/castle_grounds_textures.00800.rgba16.png +0xcfec5f97, textures/outside/castle_grounds_textures.01000.rgba16.png +0xcdd47bdb, textures/outside/castle_grounds_textures.02000.rgba16.png +0xae8607c0, textures/outside/castle_grounds_textures.03000.rgba16.png +0x5eadd3be, textures/outside/castle_grounds_textures.03800.rgba16.png +0xa181c1f9, textures/outside/castle_grounds_textures.04000.rgba16.png +0xde9fb91a, textures/outside/castle_grounds_textures.04800.rgba16.png +0xfefd090b, textures/outside/castle_grounds_textures.05800.rgba16.png +0x82af551f, textures/outside/castle_grounds_textures.06000.rgba16.png +0xb38f1745, textures/outside/castle_grounds_textures.06800.rgba16.png +0xeee4f4be, textures/outside/castle_grounds_textures.07800.rgba16.png +0x4cc3235f, textures/outside/castle_grounds_textures.08000.rgba16.png +0xa0655572, textures/outside/castle_grounds_textures.08800.rgba16.png +0x30648738, textures/outside/castle_grounds_textures.09000.rgba16.png +0x58f04853, textures/outside/castle_grounds_textures.09800.rgba16.png +0xc4ed8afd, textures/outside/castle_grounds_textures.0A000.rgba16.png +0xacb13417, textures/outside/castle_grounds_textures.0A800.rgba16.png +0x0a59209b, textures/outside/castle_grounds_textures.0B000.rgba16.png +0xf41c8766, textures/outside/castle_grounds_textures.0B400.rgba16.png +0x971b9a46, textures/outside/castle_grounds_textures.0BC00.ia16.png +0x2b21b934, textures/segment2/font_graphics.05900.ia4.png +0x765fbf8c, textures/segment2/font_graphics.05940.ia4.png +0x08c6481a, textures/segment2/font_graphics.05980.ia4.png +0xda797890, textures/segment2/font_graphics.059C0.ia4.png +0x983e7bdd, textures/segment2/font_graphics.05A00.ia4.png +0xd0c98125, textures/segment2/font_graphics.05A40.ia4.png +0x29d925ee, textures/segment2/font_graphics.05A80.ia4.png +0x06099ce6, textures/segment2/font_graphics.05AC0.ia4.png +0xa966e2e3, textures/segment2/font_graphics.05B00.ia4.png +0xda612d70, textures/segment2/font_graphics.05B40.ia4.png +0x82c4684b, textures/segment2/font_graphics.05B80.ia4.png +0x8b9822cb, textures/segment2/font_graphics.05BC0.ia4.png +0xabf92139, textures/segment2/font_graphics.05C00.ia4.png +0xd977640c, textures/segment2/font_graphics.05C40.ia4.png +0x89fac515, textures/segment2/font_graphics.05C80.ia4.png +0x753225a5, textures/segment2/font_graphics.05CC0.ia4.png +0x3a9efdff, textures/segment2/font_graphics.05D00.ia4.png +0x9b01a8de, textures/segment2/font_graphics.05D40.ia4.png +0x99fa7ad4, textures/segment2/font_graphics.05D80.ia4.png +0x54c4b7e3, textures/segment2/font_graphics.05DC0.ia4.png +0x2f11ed57, textures/segment2/font_graphics.05E00.ia4.png +0x0eb65e8a, textures/segment2/font_graphics.05E40.ia4.png +0x3c00926d, textures/segment2/font_graphics.05E80.ia4.png +0xbeb5686e, textures/segment2/font_graphics.05EC0.ia4.png +0x4b3330f8, textures/segment2/font_graphics.05F00.ia1.png +0x4b3330f8, textures/segment2/font_graphics.05F00.ia4.png +0x21a0d845, textures/segment2/font_graphics.05F40.ia1.png +0x21a0d845, textures/segment2/font_graphics.05F40.ia4.png +0xf3e57b1b, textures/segment2/font_graphics.05F80.ia1.png +0xf3e57b1b, textures/segment2/font_graphics.05F80.ia4.png +0x3bdbe695, textures/segment2/font_graphics.05FC0.ia1.png +0x3bdbe695, textures/segment2/font_graphics.05FC0.ia4.png +0x73b8dc0c, textures/segment2/font_graphics.06000.ia1.png +0x73b8dc0c, textures/segment2/font_graphics.06000.ia4.png +0x127c5adf, textures/segment2/font_graphics.06040.ia1.png +0x127c5adf, textures/segment2/font_graphics.06040.ia4.png +0xa19f9c6f, textures/segment2/font_graphics.06080.ia1.png +0xa19f9c6f, textures/segment2/font_graphics.06080.ia4.png +0x1c13b722, textures/segment2/font_graphics.060C0.ia1.png +0x1c13b722, textures/segment2/font_graphics.060C0.ia4.png +0x8de0c55a, textures/segment2/font_graphics.06100.ia1.png +0x8de0c55a, textures/segment2/font_graphics.06100.ia4.png +0x2f99158e, textures/segment2/font_graphics.06140.ia1.png +0x2f99158e, textures/segment2/font_graphics.06140.ia4.png +0xa205efa8, textures/segment2/font_graphics.06180.ia1.png +0xa205efa8, textures/segment2/font_graphics.06180.ia4.png +0xa4e6855b, textures/segment2/font_graphics.061C0.ia1.png +0xa4e6855b, textures/segment2/font_graphics.061C0.ia4.png +0x6e8db5f0, textures/segment2/font_graphics.06200.ia1.png +0x6e8db5f0, textures/segment2/font_graphics.06200.ia4.png +0x06282fb2, textures/segment2/font_graphics.06240.ia1.png +0x06282fb2, textures/segment2/font_graphics.06240.ia4.png +0xda97d693, textures/segment2/font_graphics.06280.ia1.png +0xda97d693, textures/segment2/font_graphics.06280.ia4.png +0xd66044bd, textures/segment2/font_graphics.062C0.ia1.png +0xd66044bd, textures/segment2/font_graphics.062C0.ia4.png +0x721a2fe6, textures/segment2/font_graphics.06300.ia1.png +0x721a2fe6, textures/segment2/font_graphics.06300.ia4.png +0x8cc6d915, textures/segment2/font_graphics.06340.ia1.png +0x8cc6d915, textures/segment2/font_graphics.06340.ia4.png +0x83e97844, textures/segment2/font_graphics.06380.ia1.png +0x83e97844, textures/segment2/font_graphics.06380.ia4.png +0x30680b75, textures/segment2/font_graphics.063C0.ia1.png +0x30680b75, textures/segment2/font_graphics.063C0.ia4.png +0xdb251749, textures/segment2/font_graphics.06400.ia1.png +0xdb251749, textures/segment2/font_graphics.06400.ia4.png +0xb90d56a2, textures/segment2/font_graphics.06410.ia1.png +0x171832d2, textures/segment2/font_graphics.06420.ia1.png +0xff0f8bf2, textures/segment2/font_graphics.06440.ia1.png +0xff0f8bf2, textures/segment2/font_graphics.06440.ia4.png +0xa880db9e, textures/segment2/font_graphics.06480.ia1.png +0xa880db9e, textures/segment2/font_graphics.06480.ia4.png +0x3a18167e, textures/segment2/font_graphics.064C0.ia1.png +0x3a18167e, textures/segment2/font_graphics.064C0.ia4.png +0xe6d07b70, textures/segment2/font_graphics.06500.ia1.png +0xe6d07b70, textures/segment2/font_graphics.06500.ia4.png +0x68ef89de, textures/segment2/font_graphics.06540.ia4.png +0x98aae3db, textures/segment2/font_graphics.06580.ia4.png +0xefe377b2, textures/segment2/font_graphics.065C0.ia4.png +0xd12dfd4d, textures/segment2/font_graphics.06600.ia4.png +0x8833a12d, textures/segment2/font_graphics.06640.ia4.png +0xed681fc9, textures/segment2/font_graphics.06680.ia4.png +0x0f60bf81, textures/segment2/font_graphics.066C0.ia4.png +0x874360ae, textures/segment2/font_graphics.06700.ia4.png +0x38380d33, textures/segment2/font_graphics.06740.ia4.png +0xfba6103a, textures/segment2/font_graphics.06780.ia4.png +0x44901970, textures/segment2/font_graphics.067C0.ia4.png +0x656d4d26, textures/segment2/font_graphics.06800.ia4.png +0x4e908389, textures/segment2/font_graphics.06840.ia4.png +0x61711d35, textures/segment2/font_graphics.06880.ia4.png +0xe6d96bbd, textures/segment2/font_graphics.068C0.ia4.png +0xa4d5bda3, textures/segment2/font_graphics.06900.ia4.png +0xb78885a6, textures/segment2/font_graphics.06940.ia4.png +0xe2d6c874, textures/segment2/font_graphics.06980.ia4.png +0xff837f05, textures/segment2/font_graphics.069C0.ia4.png +0x28a6df13, textures/segment2/font_graphics.06A00.ia4.png +0xd4430e72, textures/segment2/font_graphics.06A40.ia4.png +0x8e761727, textures/segment2/font_graphics.06A80.ia4.png +0x3d3fb5dc, textures/segment2/font_graphics.06AC0.ia4.png +0x01fec34d, textures/segment2/font_graphics.06B00.ia4.png +0x56f01700, textures/segment2/font_graphics.06B40.ia4.png +0x818bf892, textures/segment2/font_graphics.06B80.ia4.png +0x6a83d046, textures/segment2/font_graphics.06BC0.ia4.png +0xb18ae980, textures/segment2/font_graphics.06C00.ia4.png +0xfec0b7bf, textures/segment2/font_graphics.06C40.ia4.png +0x05c60d5c, textures/segment2/font_graphics.06C80.ia4.png +0x181addca, textures/segment2/font_graphics.06CC0.ia4.png +0xab697b20, textures/segment2/font_graphics.06D00.ia4.png +0x7d6c3af4, textures/segment2/font_graphics.06D40.ia4.png +0x7c533062, textures/segment2/font_graphics.06D80.ia4.png +0x50769e3d, textures/segment2/font_graphics.06DC0.ia4.png +0xd3485c56, textures/segment2/font_graphics.06E00.ia4.png +0x14a1622c, textures/segment2/font_graphics.06E40.ia4.png +0x3fb1a251, textures/segment2/font_graphics.06E80.ia4.png +0x93a5982f, textures/segment2/font_graphics.06EC0.ia4.png +0x330e5327, textures/segment2/font_graphics.06F00.ia4.png +0x37db6cf9, textures/segment2/font_graphics.06F40.ia4.png +0x89813602, textures/segment2/font_graphics.06F80.ia4.png +0x55595e27, textures/segment2/font_graphics.06FC0.ia4.png +0xcf341250, textures/segment2/segment2.00000.rgba16.png +0x39f1d028, textures/segment2/segment2.00200.rgba16.png +0xca380082, textures/segment2/segment2.00400.rgba16.png +0xeb41b2c9, textures/segment2/segment2.00600.rgba16.png +0x03a5f3b2, textures/segment2/segment2.00800.rgba16.png +0x2cbaf6de, textures/segment2/segment2.00A00.rgba16.png +0x6e925f0b, textures/segment2/segment2.00C00.rgba16.png +0x7b160b36, textures/segment2/segment2.00E00.rgba16.png +0x377ab51e, textures/segment2/segment2.01000.rgba16.png +0xe204fbf6, textures/segment2/segment2.01200.rgba16.png +0x9e0865f1, textures/segment2/segment2.01400.rgba16.png +0xccf5a18a, textures/segment2/segment2.01600.rgba16.png +0x3c6e303c, textures/segment2/segment2.01800.rgba16.png +0x817a6e74, textures/segment2/segment2.01A00.rgba16.png +0x79c5d587, textures/segment2/segment2.01C00.rgba16.png +0x210c4aaf, textures/segment2/segment2.01E00.rgba16.png +0x4324fca9, textures/segment2/segment2.02000.rgba16.png +0xec9fa838, textures/segment2/segment2.02200.rgba16.png +0x150cdac9, textures/segment2/segment2.02400.rgba16.png +0xd03ea4ce, textures/segment2/segment2.02800.rgba16.png +0x0fdcec5a, textures/segment2/segment2.02A00.rgba16.png +0x78a1a365, textures/segment2/segment2.02C00.rgba16.png +0xe43ae816, textures/segment2/segment2.02E00.rgba16.png +0x23925acf, textures/segment2/segment2.03000.rgba16.png +0x92a12559, textures/segment2/segment2.03200.rgba16.png +0x251a6d5e, textures/segment2/segment2.03600.rgba16.png +0xf55c37c5, textures/segment2/segment2.03800.rgba16.png +0xdb07300e, textures/segment2/segment2.03A00.rgba16.png +0x02fb0145, textures/segment2/segment2.03C00.rgba16.png +0xbde1ffd1, textures/segment2/segment2.04000.rgba16.png +0x21a3669e, textures/segment2/segment2.04400.rgba16.png +0x347bb5c1, textures/segment2/segment2.04800.rgba16.png +0xe4ae946f, textures/segment2/segment2.04A00.rgba16.png +0xeaef8ec7, textures/segment2/segment2.05000.rgba16.png +0xf3554378, textures/segment2/segment2.05600.rgba16.png +0x7efec761, textures/segment2/segment2.05800.rgba16.png +0x207e74f1, textures/segment2/segment2.05A00.rgba16.png +0x9cc450c0, textures/segment2/segment2.05C00.rgba16.png +0x6df02dac, textures/segment2/segment2.06200.rgba16.png +0x400ac163, textures/segment2/segment2.06280.rgba16.png +0x83e67e30, textures/segment2/segment2.06300.rgba16.png +0xb17b06da, textures/segment2/segment2.06380.rgba16.png +0xc8282ec6, textures/segment2/segment2.06400.rgba16.png +0xd5d54ca2, textures/segment2/segment2.06480.rgba16.png +0x91f9a359, textures/segment2/segment2.06500.rgba16.png +0xf7d84d57, textures/segment2/segment2.06580.rgba16.png +0xfe439057, textures/segment2/segment2.06600.rgba16.png +0xfe7ff6f9, textures/segment2/segment2.06680.rgba16.png +0x52435413, textures/segment2/segment2.06700.rgba16.png +0x99b11f3f, textures/segment2/segment2.06780.rgba16.png +0x3f362558, textures/segment2/segment2.06800.rgba16.png +0x065e4fd0, textures/segment2/segment2.06880.rgba16.png +0x90320242, textures/segment2/segment2.06900.rgba16.png +0x07557259, textures/segment2/segment2.06980.rgba16.png +0x2d313791, textures/segment2/segment2.06A00.rgba16.png +0x9c5fa376, textures/segment2/segment2.06A80.rgba16.png +0x58036014, textures/segment2/segment2.06B00.rgba16.png +0x79209be0, textures/segment2/segment2.06B80.rgba16.png +0xe2dac354, textures/segment2/segment2.06C00.rgba16.png +0xa6476afc, textures/segment2/segment2.06C80.rgba16.png +0x0849c4e9, textures/segment2/segment2.06D00.rgba16.png +0x2ed9feaf, textures/segment2/segment2.06D80.rgba16.png +0x2b9584a9, textures/segment2/segment2.06E00.rgba16.png +0x04c60f5a, textures/segment2/segment2.06E80.rgba16.png +0xed28daef, textures/segment2/segment2.06F00.rgba16.png +0xf98b2e9b, textures/segment2/segment2.06F80.rgba16.png +0xf513768d, textures/segment2/segment2.07000.rgba16.png +0x51874ba9, textures/segment2/segment2.07080.rgba16.png +0xb65924dd, textures/segment2/segment2.07340.ia1.png +0xd9ce10d3, textures/segment2/segment2.07B50.rgba16.png +0x20c1e685, textures/segment2/segment2.07D50.rgba16.png +0x6328bdd7, textures/segment2/segment2.07F50.rgba16.png +0x28231083, textures/segment2/segment2.08150.rgba16.png +0xfa68ab28, textures/segment2/segment2.081D0.rgba16.png +0xd2092ad4, textures/segment2/segment2.0F458.ia8.png +0x57d32732, textures/segment2/segment2.0FC58.ia8.png +0x147fe400, textures/segment2/segment2.10458.ia8.png +0x384cdcb7, textures/segment2/segment2.11458.ia8.png +0x403a1649, textures/segment2/segment2.11C58.rgba16.png +0xf6adc736, textures/segment2/segment2.12458.rgba16.png +0xb554471b, textures/segment2/segment2.12C58.rgba16.png +0xcaa570b7, textures/segment2/segment2.13458.ia16.png +0xf088177d, textures/segment2/segment2.13C58.rgba16.png +0x0913f835, textures/segment2/segment2.14838.ia8.png +0x2f349533, textures/segment2/shadow_quarter_circle.ia8.png +0x0fea0598, textures/segment2/shadow_quarter_square.ia8.png +0xc7189179, textures/sky/metal_hole.rgba16.png +0x52d580bd, textures/sky/rr_textures.00000.rgba16.png +0xe7bcf2bd, textures/sky/rr_textures.00800.rgba16.png +0xac07afea, textures/sky/rr_textures.01000.rgba16.png +0x4eeddde4, textures/sky/rr_textures.01800.rgba16.png +0xd3dd1e91, textures/sky/rr_textures.02000.rgba16.png +0x2f929b35, textures/sky/rr_textures.03000.rgba16.png +0xb99e8366, textures/sky/rr_textures.03800.rgba16.png +0xbcb6c303, textures/sky/rr_textures.04800.rgba16.png +0x34353e2a, textures/sky/rr_textures.05000.rgba16.png +0xe75ad632, textures/sky/rr_textures.05800.rgba16.png +0x213c5711, textures/sky/rr_textures.06000.rgba16.png +0xbcb8ad0f, textures/sky/rr_textures.07000.rgba16.png +0xa7368d36, textures/sky/rr_textures.07800.rgba16.png +0x8cfbe9af, textures/sky/rr_textures.08000.rgba16.png +0xe37b5e19, textures/snow/ccm_textures.00000.rgba16.png +0x59afeec0, textures/snow/ccm_textures.00800.rgba16.png +0x98aa302b, textures/snow/ccm_textures.01000.rgba16.png +0xc989acca, textures/snow/ccm_textures.02000.rgba16.png +0xedbf938f, textures/snow/ccm_textures.02800.rgba16.png +0x3762b58f, textures/snow/ccm_textures.03000.rgba16.png +0xae12405c, textures/snow/ccm_textures.03800.rgba16.png +0xfba4b6be, textures/snow/ccm_textures.04000.rgba16.png +0xa89d818c, textures/snow/ccm_textures.04800.rgba16.png +0xdf6d09df, textures/snow/ccm_textures.05000.rgba16.png +0x3ed61016, textures/snow/ccm_textures.05800.rgba16.png +0xa5cde39c, textures/snow/ccm_textures.06000.rgba16.png +0x247b9862, textures/snow/ccm_textures.06800.rgba16.png +0x5d26657a, textures/snow/ccm_textures.07000.rgba16.png +0x190aa01a, textures/snow/ccm_textures.08000.rgba16.png +0x123ff0b2, textures/snow/ccm_textures.08800.rgba16.png +0xea4456cb, textures/snow/ccm_textures.09000.ia16.png +0xb21d1349, textures/snow/ccm_textures.09800.ia16.png +0x962e26e7, textures/spooky/bbh_textures.00000.rgba16.png +0x4e3e51b0, textures/spooky/bbh_textures.00800.rgba16.png +0xb1587f41, textures/spooky/bbh_textures.01800.rgba16.png +0x2c722543, textures/spooky/bbh_textures.02800.rgba16.png +0x0aaa943b, textures/spooky/bbh_textures.03800.rgba16.png +0x13de896a, textures/spooky/bbh_textures.04800.rgba16.png +0xdadaf940, textures/spooky/bbh_textures.05000.rgba16.png +0x7e7f9c91, textures/spooky/bbh_textures.06000.rgba16.png +0x3831c28f, textures/spooky/bbh_textures.06800.rgba16.png +0x8a362a23, textures/spooky/bbh_textures.07000.rgba16.png +0x70229e8d, textures/spooky/bbh_textures.08000.rgba16.png +0x03fddfb0, textures/spooky/bbh_textures.08800.rgba16.png +0xa913399b, textures/spooky/bbh_textures.09000.rgba16.png +0xab6318d0, textures/spooky/bbh_textures.0A000.rgba16.png +0x56cc824d, textures/spooky/bbh_textures.0A800.ia16.png +0x5bdd0813, textures/spooky/bbh_textures.0B000.ia16.png +0x99eeb704, textures/spooky/bbh_textures.0B800.ia16.png +0x8225ba70, textures/title_screen_bg/title_screen_bg.001C0.rgba16.png +0x8bf7a728, textures/title_screen_bg/title_screen_bg.00E40.rgba16.png +0xa5ab0bf0, textures/title_screen_bg/title_screen_bg.01AC0.rgba16.png +0x53af13cf, textures/title_screen_bg/title_screen_bg.02740.rgba16.png +0xeab50b79, textures/title_screen_bg/title_screen_bg.033C0.rgba16.png +0xd3e3772c, textures/title_screen_bg/title_screen_bg.04040.rgba16.png +0xbe7e3218, textures/title_screen_bg/title_screen_bg.04CC0.rgba16.png +0xb35dbc9d, textures/title_screen_bg/title_screen_bg.05940.rgba16.png +0xa02d5dfe, textures/water/jrb_textures.00000.rgba16.png +0x37fec9d4, textures/water/jrb_textures.00800.rgba16.png +0xbe46e587, textures/water/jrb_textures.01800.rgba16.png +0xf29de32f, textures/water/jrb_textures.02800.rgba16.png +0xb46e7714, textures/water/jrb_textures.03800.rgba16.png +0x6357adf7, textures/water/jrb_textures.04800.rgba16.png +0xce277ff7, textures/water/jrb_textures.05800.rgba16.png +0xf1c7863b, textures/water/jrb_textures.06000.rgba16.png +0x444b7785, textures/water/jrb_textures.06800.rgba16.png +0x7a5a6efd, textures/water/jrb_textures.07800.rgba16.png +0x5d749b6c, textures/water/jrb_textures.08800.rgba16.png +0x3ba85443, textures/water/jrb_textures.09000.rgba16.png +0x359500dd, textures/water/jrb_textures.0A000.rgba16.png +0xd4e87a88, textures/water/jrb_textures.0A800.rgba16.png +0x742e8b1b, textures/water/jrb_textures.0B800.rgba16.png diff --git a/tools/texrename.py b/tools/texrename.py new file mode 100644 index 00000000..541a0a09 --- /dev/null +++ b/tools/texrename.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 + +import sys +import os +import shutil + +if len(sys.argv) < 3: + print("usage: texrename []") + sys.exit(1) + +inpath = sys.argv[1] +outpath = sys.argv[2] +mapfname = "crcmap.txt" +if len(sys.argv) > 3: + mapfname = sys.argv[3] + +# catalog the original texture pack +texmap = dict() +imgexts = frozenset(['.png', '.bmp', '.jpg', '.tga', '.gif']) +try: + for root, dirs, files in os.walk(inpath): + for f in files: + ffull = os.path.join(root, f) + [fpath, fname] = os.path.split(f) + ext = os.path.splitext(fname)[1].lower() + if fname[0] == '.' or not (ext in imgexts): + continue + crc = 0 + try: + if '#' in fname: # rice pack format: "GAME NAME#hash#whatever" + crc = int(fname.split('#')[1], 16) + else: # just the crc probably + crc = int(os.path.splitext(fname)[0], 16) + except ValueError: + print('unknown filename format: {0}'.format(ffull)) + continue + texmap[crc] = ffull +except OSError as e: + print('error opening {0}: {1}'.format(inpath, e)) + sys.exit(2) + +# load the CRC map +crcmap = dict() +try: + with open(mapfname, 'r') as f: + for line in f: + line = line.strip() + if line == '' or line[0] == '#': + continue + tok = line.split(',') + crcstr = tok[0].strip() + if crcstr.startswith('0x'): + crc = int(crcstr[2:], 16) + else: + crc = int(crcstr) + crcmap[crc] = os.path.join(outpath, tok[1].strip()) +except OSError as e: + print('could not open {0}: {1}'.format(mapfname, e)) +except ValueError as e: + print('invalid integer in {0}: {1}'.format(mapfname, e)) + sys.exit(3) + +# copy the files to the correct locations +for crc, path in crcmap.items(): + if not (crc in texmap): + print('unmatched CRC: {0} ({1})'.format(crc, path)) + else: + [fpath, fname] = os.path.split(path) + if not os.path.exists(fpath): + os.makedirs(fpath) + shutil.copy2(texmap[crc], path) From 85a1d8842234a1e27cc5871e80207cb4a500ee0c Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 28 May 2020 23:08:32 +0300 Subject: [PATCH 063/166] texrename: handle multiple files with the same CRC too --- tools/texrename.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/texrename.py b/tools/texrename.py index 541a0a09..e8ac24e0 100644 --- a/tools/texrename.py +++ b/tools/texrename.py @@ -40,7 +40,7 @@ except OSError as e: sys.exit(2) # load the CRC map -crcmap = dict() +crcmap = list() try: with open(mapfname, 'r') as f: for line in f: @@ -53,7 +53,7 @@ try: crc = int(crcstr[2:], 16) else: crc = int(crcstr) - crcmap[crc] = os.path.join(outpath, tok[1].strip()) + crcmap.append((crc, os.path.join(outpath, tok[1].strip()))) except OSError as e: print('could not open {0}: {1}'.format(mapfname, e)) except ValueError as e: @@ -61,7 +61,7 @@ except ValueError as e: sys.exit(3) # copy the files to the correct locations -for crc, path in crcmap.items(): +for (crc, path) in crcmap: if not (crc in texmap): print('unmatched CRC: {0} ({1})'.format(crc, path)) else: From 875d7a9b3c7acdd8b7e6f02674159359fee1e501 Mon Sep 17 00:00:00 2001 From: GateGuy <57763469+GateGuy@users.noreply.github.com> Date: Thu, 28 May 2020 18:40:36 -0400 Subject: [PATCH 064/166] Added deadzone option --- include/text_options_strings.h.in | 2 ++ src/game/options_menu.c | 4 ++++ src/pc/configfile.c | 2 ++ src/pc/configfile.h | 1 + src/pc/controller/controller_api.h | 2 +- src/pc/controller/controller_entry_point.c | 3 ++- src/pc/controller/controller_sdl.c | 3 ++- 7 files changed, 14 insertions(+), 3 deletions(-) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 7580ec9e..13faf3dd 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -66,6 +66,7 @@ #define TEXT_BIND_DOWN _("STICK DOWN") #define TEXT_BIND_LEFT _("STICK LEFT") #define TEXT_BIND_RIGHT _("STICK RIGHT") +#define TEXT_OPT_DEADZONE _("STICK DEADZONE") #define TEXT_OPT_CHEAT1 _("ENABLE CHEATS") #define TEXT_OPT_CHEAT2 _("MOONJUMP (PRESS L)") @@ -122,6 +123,7 @@ #define TEXT_BIND_DOWN _("Stick Down") #define TEXT_BIND_LEFT _("Stick Left") #define TEXT_BIND_RIGHT _("Stick Right") +#define TEXT_OPT_DEADZONE _("Stick Deadzone") #define TEXT_OPT_CHEAT1 _("Enable cheats") #define TEXT_OPT_CHEAT2 _("Moonjump (Press L)") diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 4e08dbdb..3b0ed9fa 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -115,6 +115,7 @@ static const u8 bindStr[][32] = { { TEXT_BIND_DOWN }, { TEXT_BIND_LEFT }, { TEXT_BIND_RIGHT }, + { TEXT_OPT_DEADZONE }, }; static const u8 *filterChoices[] = { @@ -233,6 +234,9 @@ static struct Option optsControls[] = { DEF_OPT_BIND( bindStr[13], configKeyStickDown ), DEF_OPT_BIND( bindStr[14], configKeyStickLeft ), DEF_OPT_BIND( bindStr[15], configKeyStickRight ), + // max deadzone is 31000; this is less than the max range of 32768, but this + // way, the player can't accidentally lock themselves out of using the stick + DEF_OPT_SCROLL( bindStr[16], &configStickDeadzone, 0, 100, 1 ), }; static struct Option optsVideo[] = { diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 2baf96cf..25eb1146 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -66,6 +66,7 @@ unsigned int configKeyStickUp[MAX_BINDS] = { 0x0011, VK_INVALID, VK_INVALID unsigned int configKeyStickDown[MAX_BINDS] = { 0x001F, VK_INVALID, VK_INVALID }; unsigned int configKeyStickLeft[MAX_BINDS] = { 0x001E, VK_INVALID, VK_INVALID }; unsigned int configKeyStickRight[MAX_BINDS] = { 0x0020, VK_INVALID, VK_INVALID }; +unsigned int configStickDeadzone = 16; // 16*DEADZONE_STEP=4960 (the original default deadzone) #ifdef EXTERNAL_TEXTURES bool configPrecacheRes = false; #endif @@ -107,6 +108,7 @@ static const struct ConfigOption options[] = { {.name = "key_stickdown", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickDown}, {.name = "key_stickleft", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickLeft}, {.name = "key_stickright", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickRight}, + {.name = "stick_deadzone", .type = CONFIG_TYPE_UINT, .uintValue = &configStickDeadzone}, #ifdef EXTERNAL_TEXTURES {.name = "precache", .type = CONFIG_TYPE_BOOL, .boolValue = &configPrecacheRes}, #endif diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 1ae38f84..d6087612 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -35,6 +35,7 @@ extern unsigned int configKeyStickUp[]; extern unsigned int configKeyStickDown[]; extern unsigned int configKeyStickLeft[]; extern unsigned int configKeyStickRight[]; +extern unsigned int configStickDeadzone; #ifdef EXTERNAL_TEXTURES extern bool configPrecacheRes; #endif diff --git a/src/pc/controller/controller_api.h b/src/pc/controller/controller_api.h index 2f9c1d16..74db6552 100644 --- a/src/pc/controller/controller_api.h +++ b/src/pc/controller/controller_api.h @@ -1,7 +1,7 @@ #ifndef CONTROLLER_API #define CONTROLLER_API -#define DEADZONE 4960 +#define DEADZONE_STEP 310 // original deadzone is 4960 #define VK_INVALID 0xFFFF #define VK_SIZE 0x1000 diff --git a/src/pc/controller/controller_entry_point.c b/src/pc/controller/controller_entry_point.c index 90c10c1d..2b264b29 100644 --- a/src/pc/controller/controller_entry_point.c +++ b/src/pc/controller/controller_entry_point.c @@ -40,7 +40,8 @@ void osContGetReadData(OSContPad *pad) { #ifdef BETTERCAMERA uint32_t magnitude_sq = (uint32_t)(rightx * rightx) + (uint32_t)(righty * righty); - if (magnitude_sq > (uint32_t)(DEADZONE * DEADZONE)) { + uint32_t stickDeadzoneActual = configStickDeadzone * DEADZONE_STEP; + if (magnitude_sq > (uint32_t)(stickDeadzoneActual * stickDeadzoneActual)) { c_rightx = rightx / 0x100; int stick_y = -righty / 0x100; c_righty = stick_y == 128 ? 127 : stick_y; diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index cbdd6178..b28e3f7b 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -182,7 +182,8 @@ static void controller_sdl_read(OSContPad *pad) { if (rtrig > 30 * 256) pad->button |= R_TRIG; uint32_t magnitude_sq = (uint32_t)(leftx * leftx) + (uint32_t)(lefty * lefty); - if (magnitude_sq > (uint32_t)(DEADZONE * DEADZONE)) { + uint32_t stickDeadzoneActual = configStickDeadzone * DEADZONE_STEP; + if (magnitude_sq > (uint32_t)(stickDeadzoneActual * stickDeadzoneActual)) { pad->stick_x = leftx / 0x100; int stick_y = -lefty / 0x100; pad->stick_y = stick_y == 128 ? 127 : stick_y; From 2e332c9316d0461e8bcf8a6ac9f5caffc07ac388 Mon Sep 17 00:00:00 2001 From: GateGuy <57763469+GateGuy@users.noreply.github.com> Date: Thu, 28 May 2020 18:42:45 -0400 Subject: [PATCH 065/166] Fixed typo in comment --- src/game/options_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 3b0ed9fa..68cd98f0 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -234,7 +234,7 @@ static struct Option optsControls[] = { DEF_OPT_BIND( bindStr[13], configKeyStickDown ), DEF_OPT_BIND( bindStr[14], configKeyStickLeft ), DEF_OPT_BIND( bindStr[15], configKeyStickRight ), - // max deadzone is 31000; this is less than the max range of 32768, but this + // max deadzone is 31000; this is less than the max range of ~32768, but this // way, the player can't accidentally lock themselves out of using the stick DEF_OPT_SCROLL( bindStr[16], &configStickDeadzone, 0, 100, 1 ), }; From b5cdf7e7f688e7a6cd57e34a048372e8abc68438 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Fri, 29 May 2020 23:23:45 +0900 Subject: [PATCH 066/166] Returned back OS functions in the commented state --- src/game/thread6.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/game/thread6.c b/src/game/thread6.c index f388cc5b..fbc9f93a 100644 --- a/src/game/thread6.c +++ b/src/game/thread6.c @@ -19,12 +19,17 @@ extern s32 osMotorStart(void *); extern u32 osMotorInit(OSMesgQueue *, void *, s32); void init_rumble_pak_scheduler_queue(void) { + // osCreateMesgQueue(&gRumblePakSchedulerMesgQueue, gRumblePakSchedulerMesgBuf, 1); + // osSendMesg(&gRumblePakSchedulerMesgQueue, (OSMesg) 0, OS_MESG_NOBLOCK); } void block_until_rumble_pak_free(void) { + // OSMesg msg; + // osRecvMesg(&gRumblePakSchedulerMesgQueue, &msg, OS_MESG_BLOCK); } void release_rumble_pak_control(void) { + // osSendMesg(&gRumblePakSchedulerMesgQueue, (OSMesg) 0, OS_MESG_NOBLOCK); } static void start_rumble(void) { @@ -220,6 +225,9 @@ void func_sh_8024CA04(void) { } void thread6_rumble_loop(UNUSED void *a0) { + // OSMesg msg; + // osRecvMesg(&gRumbleThreadVIMesgQueue, &msg, OS_MESG_BLOCK); + update_rumble_data_queue(); update_rumble_pak(); @@ -255,10 +263,15 @@ void cancel_rumble(void) { } void create_thread_6(void) { + // osCreateMesgQueue(&gRumbleThreadVIMesgQueue, gRumbleThreadVIMesgBuf, 1); + // osCreateThread(&gRumblePakThread, 6, thread6_rumble_loop, NULL, gThread6Stack + 0x2000, 30); + // osStartThread(&gRumblePakThread); } void rumble_thread_update_vi(void) { if (sRumblePakThreadActive == FALSE) { return; } + + // osSendMesg(&gRumbleThreadVIMesgQueue, (OSMesg) 0x56525443, OS_MESG_NOBLOCK); } \ No newline at end of file From 540a0387c9fc107fcefd64e36cdbbec2930ed461 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 29 May 2020 18:08:00 +0300 Subject: [PATCH 067/166] fix build --- src/pc/controller/controller_entry_point.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pc/controller/controller_entry_point.c b/src/pc/controller/controller_entry_point.c index 2b264b29..65b88023 100644 --- a/src/pc/controller/controller_entry_point.c +++ b/src/pc/controller/controller_entry_point.c @@ -1,6 +1,8 @@ #include "lib/src/libultra_internal.h" #include "lib/src/osContInternal.h" +#include "../configfile.h" + #include "controller_recorded_tas.h" #include "controller_keyboard.h" From 93030b02a3451f95c97103bec3f114e448c6ed7f Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 29 May 2020 19:35:35 +0300 Subject: [PATCH 068/166] don't die after encountering a NULL texture --- src/game/ingame_menu.c | 2 ++ src/pc/gfx/gfx_pc.c | 44 +++++++++++++++++++++++++++++------------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index 6f3d84b9..9711ec7e 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -245,6 +245,7 @@ static inline u8 *convert_ia8_char(u8 c, u16 *tex, s16 w, s16 h) { #ifdef EXTERNAL_TEXTURES return (u8 *)tex; // the data's just a name #else + if (!tex) return NULL; if (!charCache[c].used) { charCache[c].used = 1; alloc_ia8_text_from_i1(charCache[c].data, tex, w, h); @@ -305,6 +306,7 @@ static u8 *convert_ia4_char(u8 c, u8 *tex, s16 w, s16 h) { #ifdef EXTERNAL_TEXTURES return tex; // the data's just a name #else + if (!tex) return NULL; if (!charCache[c].used) { charCache[c].used = 1; alloc_ia4_tex_from_i1(charCache[c].data, tex, w, h); diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index c0900831..6bd2fca4 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -573,30 +574,47 @@ static bool preload_texture(const char *path) { return true; } +static inline void load_texture(const char *name) { + static char fpath[SYS_MAX_PATH]; + int w, h; + const char *texname = name; + + if (!texname[0]) { + fprintf(stderr, "empty texture name at %p\n", texname); + return; + } + + snprintf(fpath, sizeof(fpath), "%s/%s.png", sys_data_path(), texname); + u8 *data = stbi_load(fpath, &w, &h, NULL, 4); + if (!data) { + fprintf(stderr, "could not load texture: `%s`\n", fpath); + return; + } + + gfx_rapi->upload_texture(data, w, h); + stbi_image_free(data); // don't need this anymore +} + #endif // EXTERNAL_TEXTURES static void import_texture(int tile) { uint8_t fmt = rdp.texture_tile.fmt; uint8_t siz = rdp.texture_tile.siz; - + + if (!rdp.loaded_texture[tile].addr) { + fprintf(stderr, "NULL texture: tile %d, format %d/%d, size %d\n", + tile, (int)fmt, (int)siz, (int)rdp.loaded_texture[tile].size_bytes); + return; + } + if (gfx_texture_cache_lookup(tile, &rendering_state.textures[tile], rdp.loaded_texture[tile].addr, fmt, siz)) { return; } - + #ifdef EXTERNAL_TEXTURES // the "texture data" is actually a C string with the path to our texture in it // load it from an external image in our data path - static char fpath[SYS_MAX_PATH]; - int w, h; - const char *texname = (const char*)rdp.loaded_texture[tile].addr; - snprintf(fpath, sizeof(fpath), "%s/%s.png", sys_data_path(), texname); - u8 *data = stbi_load(fpath, &w, &h, NULL, 4); - if (!data) { - fprintf(stderr, "could not load texture: `%s`\n", fpath); - abort(); - } - gfx_rapi->upload_texture(data, w, h); - stbi_image_free(data); // don't need this anymore + load_texture((const char*)rdp.loaded_texture[tile].addr); #else // the texture data is actual texture data int t0 = get_time(); From f6c54e95b239e991253b730c62a068baf1c6a3b5 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 29 May 2020 20:10:38 +0300 Subject: [PATCH 069/166] read in all config line tokens (fixes the binds not saving) --- src/pc/configfile.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 25eb1146..9c9038a4 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -231,7 +231,7 @@ void configfile_load(const char *filename) { // Go through each line in the file while ((line = read_file_line(file)) != NULL) { char *p = line; - char *tokens[2]; + char *tokens[1 + MAX_BINDS]; int numTokens; while (isspace(*p)) @@ -240,7 +240,7 @@ void configfile_load(const char *filename) { if (!*p || *p == '#') // comment or empty line continue; - numTokens = tokenize_string(p, 2, tokens); + numTokens = tokenize_string(p, sizeof(tokens) / sizeof(tokens[0]), tokens); if (numTokens != 0) { if (numTokens >= 2) { const struct ConfigOption *option = NULL; @@ -274,7 +274,9 @@ void configfile_load(const char *filename) { default: assert(0); // bad type } - printf("option: '%s', value: '%s'\n", tokens[0], tokens[1]); + printf("option: '%s', value:", tokens[0]); + for (int i = 1; i < numTokens; ++i) printf(" '%s'", tokens[i]); + printf("\n"); } } else puts("error: expected value"); From 2bc577bc3cf7e8e7877eab1220057cd11286f547 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sat, 30 May 2020 20:37:37 +0900 Subject: [PATCH 070/166] Added haptic implementation --- src/pc/controller/controller_entry_point.c | 3 +- src/pc/controller/controller_sdl.c | 33 ++++++++++++++++++---- src/pc/controller/controller_sdl.h | 2 +- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/pc/controller/controller_entry_point.c b/src/pc/controller/controller_entry_point.c index beb0a48a..b8b54ad3 100644 --- a/src/pc/controller/controller_entry_point.c +++ b/src/pc/controller/controller_entry_point.c @@ -30,7 +30,8 @@ s32 osContInit(OSMesgQueue *mq, u8 *controllerBits, OSContStatus *status) { } s32 osMotorStart(void *pfs) { - return controller_rumble_play(0.5, 1000); + // Since rumble stops by osMotorStop, its duration is not nessecary. + return controller_rumble_play(configRumbleStrength / 100.0, 50); } s32 osMotorStop(void *pfs) { diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index 1867169c..15384a37 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -34,7 +34,7 @@ extern u8 newcam_mouse; static bool init_ok; static SDL_GameController *sdl_cntrl; - +static SDL_Haptic *sdl_haptic; static u32 num_joy_binds = 0; static u32 num_mouse_binds = 0; @@ -81,7 +81,7 @@ static void controller_sdl_bind(void) { } static void controller_sdl_init(void) { - if (SDL_Init(SDL_INIT_GAMECONTROLLER | SDL_INIT_EVENTS) != 0) { + if (SDL_Init(SDL_INIT_GAMECONTROLLER | SDL_INIT_EVENTS | SDL_INIT_HAPTIC) != 0) { fprintf(stderr, "SDL init error: %s\n", SDL_GetError()); return; } @@ -130,6 +130,7 @@ static void controller_sdl_read(OSContPad *pad) { for (int i = 0; i < SDL_NumJoysticks(); i++) { if (SDL_IsGameController(i)) { sdl_cntrl = SDL_GameControllerOpen(i); + sdl_haptic = SDL_HapticOpen(i); if (sdl_cntrl != NULL) { break; } @@ -213,21 +214,43 @@ static void controller_sdl_shutdown(void) { SDL_GameControllerClose(sdl_cntrl); sdl_cntrl = NULL; } + if (sdl_haptic) { + SDL_HapticClose(sdl_haptic); + sdl_haptic = NULL; + } SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER); } init_ok = false; } -s32 controller_rumble_init(void) { +u32 controller_rumble_init(void) { + if (SDL_HapticRumbleSupported(sdl_haptic) != SDL_TRUE) { + printf("Controller does not support haptics! %s\n", SDL_GetError()); + return 1; + } + if (SDL_HapticRumbleInit(sdl_haptic) != 0) { + printf("Unable to initialize rumble! %s\n", SDL_GetError()); + return 1; + } return 0; } s32 controller_rumble_play(f32 strength, u32 length) { - return 0; + if (SDL_HapticRumblePlay(sdl_haptic, strength, length) != 0) { + printf("Unable to start rumble! %s\n", SDL_GetError()); + return -1; + } else { + return 0; + } } s32 controller_rumble_stop(void) { - return 0; + if (SDL_HapticRumbleStop(sdl_haptic) != 0) { + printf("Unable to stop rumble! %s\n", SDL_GetError()); + return -1; + } else { + return 0; + } } struct ControllerAPI controller_sdl = { diff --git a/src/pc/controller/controller_sdl.h b/src/pc/controller/controller_sdl.h index 8a3a587c..c1a43cec 100644 --- a/src/pc/controller/controller_sdl.h +++ b/src/pc/controller/controller_sdl.h @@ -7,7 +7,7 @@ extern struct ControllerAPI controller_sdl; -s32 controller_rumble_init(void); +u32 controller_rumble_init(void); s32 controller_rumble_play(f32 strength, u32 length); s32 controller_rumble_stop(void); From 709a049ab695a53e78c0293fd86f61badfc755fd Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sat, 30 May 2020 20:38:05 +0900 Subject: [PATCH 071/166] Added rumble strength option --- include/text_options_strings.h.in | 2 ++ src/game/options_menu.c | 2 ++ src/pc/configfile.c | 2 ++ src/pc/configfile.h | 1 + 4 files changed, 7 insertions(+) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 575b23f9..c391f407 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -67,6 +67,7 @@ #define TEXT_BIND_LEFT _("STICK LEFT") #define TEXT_BIND_RIGHT _("STICK RIGHT") #define TEXT_OPT_DEADZONE _("STICK DEADZONE") +#define TEXT_OPT_RUMBLE _("RUMBLE STRENGTH") #define TEXT_OPT_CHEAT1 _("ENABLE CHEATS") #define TEXT_OPT_CHEAT2 _("MOONJUMP (PRESS L)") @@ -128,6 +129,7 @@ #define TEXT_BIND_LEFT _("Stick Left") #define TEXT_BIND_RIGHT _("Stick Right") #define TEXT_OPT_DEADZONE _("Stick Deadzone") +#define TEXT_OPT_RUMBLE _("Rumble Strength") #define TEXT_OPT_CHEAT1 _("Enable cheats") #define TEXT_OPT_CHEAT2 _("Moonjump (Press L)") diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 73952748..4dc0be98 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -120,6 +120,7 @@ static const u8 bindStr[][32] = { { TEXT_BIND_LEFT }, { TEXT_BIND_RIGHT }, { TEXT_OPT_DEADZONE }, + { TEXT_OPT_RUMBLE } }; static const u8 *filterChoices[] = { @@ -241,6 +242,7 @@ static struct Option optsControls[] = { // max deadzone is 31000; this is less than the max range of ~32768, but this // way, the player can't accidentally lock themselves out of using the stick DEF_OPT_SCROLL( bindStr[16], &configStickDeadzone, 0, 100, 1 ), + DEF_OPT_SCROLL( bindStr[17], &configRumbleStrength, 0, 100, 1) }; static struct Option optsVideo[] = { diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 9c9038a4..528ef1da 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -67,6 +67,7 @@ unsigned int configKeyStickDown[MAX_BINDS] = { 0x001F, VK_INVALID, VK_INVALID unsigned int configKeyStickLeft[MAX_BINDS] = { 0x001E, VK_INVALID, VK_INVALID }; unsigned int configKeyStickRight[MAX_BINDS] = { 0x0020, VK_INVALID, VK_INVALID }; unsigned int configStickDeadzone = 16; // 16*DEADZONE_STEP=4960 (the original default deadzone) +unsigned int configRumbleStrength = 50; #ifdef EXTERNAL_TEXTURES bool configPrecacheRes = false; #endif @@ -109,6 +110,7 @@ static const struct ConfigOption options[] = { {.name = "key_stickleft", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickLeft}, {.name = "key_stickright", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickRight}, {.name = "stick_deadzone", .type = CONFIG_TYPE_UINT, .uintValue = &configStickDeadzone}, + {.name = "rumble_strength", .type = CONFIG_TYPE_UINT, .uintValue = &configRumbleStrength}, #ifdef EXTERNAL_TEXTURES {.name = "precache", .type = CONFIG_TYPE_BOOL, .boolValue = &configPrecacheRes}, #endif diff --git a/src/pc/configfile.h b/src/pc/configfile.h index d6087612..6dce17fb 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -36,6 +36,7 @@ extern unsigned int configKeyStickDown[]; extern unsigned int configKeyStickLeft[]; extern unsigned int configKeyStickRight[]; extern unsigned int configStickDeadzone; +extern unsigned int configRumbleStrength; #ifdef EXTERNAL_TEXTURES extern bool configPrecacheRes; #endif From 9917188ec84b07aec2e45f22d2fc9ce27457ec60 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 31 May 2020 14:18:17 +0900 Subject: [PATCH 072/166] Revert "Secret Cheat was added" This reverts commit 19990cde389aac999290483ee2f0070e28df9508. --- include/text_options_strings.h.in | 8 -------- include/text_strings.h.in | 2 +- src/game/options_menu.c | 9 +-------- src/pc/cheats.h | 4 ---- 4 files changed, 2 insertions(+), 21 deletions(-) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index c391f407..2941bde1 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -78,10 +78,6 @@ #define TEXT_OPT_CHEAT7 _("EXIT COURSE AT ANY TIME") #define TEXT_OPT_CHEAT8 _("HUGE MARIO") #define TEXT_OPT_CHEAT9 _("TINY MARIO") -#define TEXT_OPT_CHEAT10 _("UNKNOWN 1") -#define TEXT_OPT_CHEAT11 _("UNKNOWN 2") -#define TEXT_OPT_CHEAT12 _("UNKNOWN 3") -#define TEXT_OPT_CHEAT13 _("SUPER SECRET CHEAT") #else // VERSION @@ -140,10 +136,6 @@ #define TEXT_OPT_CHEAT7 _("Exit course at any time") #define TEXT_OPT_CHEAT8 _("Huge Mario") #define TEXT_OPT_CHEAT9 _("Tiny Mario") -#define TEXT_OPT_CHEAT10 _("Unknown 1") -#define TEXT_OPT_CHEAT11 _("Unknown 2") -#define TEXT_OPT_CHEAT12 _("Unknown 3") -#define TEXT_OPT_CHEAT13 _("Super Secret Cheat") #endif // VERSION diff --git a/include/text_strings.h.in b/include/text_strings.h.in index a259af22..786e3a36 100644 --- a/include/text_strings.h.in +++ b/include/text_strings.h.in @@ -484,4 +484,4 @@ #define TEXT_MENU_STARS_DE _(" GEHEIME STERNE") #endif -#endif \ No newline at end of file +#endif diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 4dc0be98..d37b6afe 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -96,10 +96,6 @@ static const u8 optsCheatsStr[][64] = { { TEXT_OPT_CHEAT7 }, { TEXT_OPT_CHEAT8 }, { TEXT_OPT_CHEAT9 }, - { TEXT_OPT_CHEAT10 }, - { TEXT_OPT_CHEAT11 }, - { TEXT_OPT_CHEAT12 }, - { TEXT_OPT_CHEAT13 }, }; static const u8 bindStr[][32] = { @@ -267,10 +263,7 @@ static struct Option optsCheats[] = { DEF_OPT_TOGGLE( optsCheatsStr[6], &Cheats.ExitAnywhere ), DEF_OPT_TOGGLE( optsCheatsStr[7], &Cheats.HugeMario ), DEF_OPT_TOGGLE( optsCheatsStr[8], &Cheats.TinyMario ), - DEF_OPT_TOGGLE( optsCheatsStr[9], &Cheats.Unknown1 ), - DEF_OPT_TOGGLE( optsCheatsStr[10], &Cheats.Unknown2 ), - DEF_OPT_TOGGLE( optsCheatsStr[11], &Cheats.Unknown3 ), - DEF_OPT_TOGGLE( optsCheatsStr[12], &Cheats.DisableBLJ), + }; /* submenu definitions */ diff --git a/src/pc/cheats.h b/src/pc/cheats.h index 201925bd..eaf71ab4 100644 --- a/src/pc/cheats.h +++ b/src/pc/cheats.h @@ -13,10 +13,6 @@ struct CheatList { bool ExitAnywhere; bool HugeMario; bool TinyMario; - bool Unknown1; - bool Unknown2; - bool Unknown3; - bool DisableBLJ; }; extern struct CheatList Cheats; From 4a24cb9d16fb908f118385bbb806ff8a3a2a6f20 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 31 May 2020 14:23:28 +0900 Subject: [PATCH 073/166] Removed "Disable BLJ" from branch --- src/game/mario_actions_moving.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/game/mario_actions_moving.c b/src/game/mario_actions_moving.c index f7d517b1..52d44c34 100644 --- a/src/game/mario_actions_moving.c +++ b/src/game/mario_actions_moving.c @@ -1847,13 +1847,12 @@ s32 act_hold_freefall_land(struct MarioState *m) { } s32 act_long_jump_land(struct MarioState *m) { - // Stop right there criminal scum! - if (Cheats.EnableCheats == TRUE && Cheats.DisableBLJ == TRUE) { - // BLJ (Backwards Long Jump) speed build up fix, crushing SimpleFlips's dreams since July 1997 - if (m->forwardVel < 0.0f) { - m->forwardVel = 0.0f; - } +#ifdef VERSION_SH + // BLJ (Backwards Long Jump) speed build up fix, crushing SimpleFlips's dreams since July 1997 + if (m->forwardVel < 0.0f) { + m->forwardVel = 0.0f; } +#endif if (!(m->input & INPUT_Z_DOWN)) { m->input &= ~INPUT_A_PRESSED; From b7b255317f8f92cd0f27ab24c2dc41d078d592ad Mon Sep 17 00:00:00 2001 From: Zerocker Date: Mon, 1 Jun 2020 00:02:47 +0900 Subject: [PATCH 074/166] Added backup for slot 0 to slot 1 --- src/game/text_save.inc.h | 63 +++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index 870a4aea..a5a8f54f 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -205,8 +205,7 @@ static s32 read_text_save(s32 fileIndex) { ini_t *savedata; u32 i, flag, coins, stars, starFlags; - u32 capLevel, capArea; - Vec3s capPos; + u32 capArea; /* Define savefile's name */ if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) @@ -218,8 +217,6 @@ static s32 read_text_save(s32 fileIndex) { return -1; } else { printf("Loading savefile from '%s'\n", filename); - /* Good, file exists for gSaveBuffer */ - gSaveBuffer.files[fileIndex][0].flags |= SAVE_FLAG_FILE_EXISTS; } /* Read coin score age for selected file and sound mode */ @@ -303,34 +300,46 @@ static s32 read_text_save(s32 fileIndex) { /* ... it's level ... */ value = ini_get(savedata, "cap", "level"); - if (strcmp(value, "ssl") == 0) { - gSaveBuffer.files[fileIndex][0].capLevel = 8; // ssl - } - else if (strcmp(value, "sl") == 0) { - gSaveBuffer.files[fileIndex][0].capLevel = 10; // sl - } - else if (strcmp(value, "ttm") == 0) { - gSaveBuffer.files[fileIndex][0].capLevel = 12; // ttm - } - else if (strcmp(value, "none") == 0) { - gSaveBuffer.files[fileIndex][0].capLevel = 0; - } - else { - printf("Invalid 'cap:level' flag!\n"); - return -1; + if (value) { + if (strcmp(value, "ssl") == 0) { + gSaveBuffer.files[fileIndex][0].capLevel = 8; // ssl + } + else if (strcmp(value, "sl") == 0) { + gSaveBuffer.files[fileIndex][0].capLevel = 10; // sl + } + else if (strcmp(value, "ttm") == 0) { + gSaveBuffer.files[fileIndex][0].capLevel = 12; // ttm + } + else if (strcmp(value, "none") == 0) { + gSaveBuffer.files[fileIndex][0].capLevel = 0; + } + else { + printf("Invalid 'cap:level' flag!\n"); + return -1; + } } /* ... and it's area */ - sscanf(ini_get(savedata, "cap", "area"), "%d", &capArea); - if (capArea > 1 && capArea < 2) { - printf("Invalid 'cap:area' flag: %d!\n", capArea); - return -1; - } - else { - gSaveBuffer.files[fileIndex][0].capArea = capArea; + value = ini_get(savedata, "cap", "area"); + if (value) { + sscanf(value, "%d", &capArea); + if (capArea > 1 && capArea < 2) { + printf("Invalid 'cap:area' flag: %d!\n", capArea); + return -1; + } + else { + gSaveBuffer.files[fileIndex][0].capArea = capArea; + } } + /* Good, file exists for gSaveBuffer */ + gSaveBuffer.files[fileIndex][0].flags |= SAVE_FLAG_FILE_EXISTS; + + /* Make a backup */ + bcopy(&gSaveBuffer.files[fileIndex][0], &gSaveBuffer.files[fileIndex][1], + sizeof(gSaveBuffer.files[fileIndex][1])); + /* Cleaning up after ourselves */ ini_free(savedata); - return 1; + return 0; } From 8b386a2175dfa0f625d46056157ec94430198ec5 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 1 Jun 2020 00:03:34 +0300 Subject: [PATCH 075/166] allow binding stick directions to controller buttons --- src/pc/controller/controller_api.h | 10 +++++++++- src/pc/controller/controller_keyboard.c | 22 ++++++++++------------ src/pc/controller/controller_sdl.c | 22 +++++++++++++++++++--- 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/pc/controller/controller_api.h b/src/pc/controller/controller_api.h index 74db6552..6e55c846 100644 --- a/src/pc/controller/controller_api.h +++ b/src/pc/controller/controller_api.h @@ -1,10 +1,18 @@ #ifndef CONTROLLER_API #define CONTROLLER_API -#define DEADZONE_STEP 310 // original deadzone is 4960 +#define DEADZONE_STEP 310 // original deadzone is 4960 #define VK_INVALID 0xFFFF #define VK_SIZE 0x1000 +// fake buttons for binding the stick directions +#define STICK_UP 0x80000 +#define STICK_DOWN 0x40000 +#define STICK_LEFT 0x10000 +#define STICK_RIGHT 0x20000 +#define STICK_XMASK 0x30000 +#define STICK_YMASK 0xc0000 + #include struct ControllerAPI { diff --git a/src/pc/controller/controller_keyboard.c b/src/pc/controller/controller_keyboard.c index 9fb4b635..b38352dd 100644 --- a/src/pc/controller/controller_keyboard.c +++ b/src/pc/controller/controller_keyboard.c @@ -61,10 +61,10 @@ static void keyboard_bindkeys(void) { bzero(keyboard_mapping, sizeof(keyboard_mapping)); num_keybinds = 0; - keyboard_add_binds(0x80000, configKeyStickUp); - keyboard_add_binds(0x10000, configKeyStickLeft); - keyboard_add_binds(0x40000, configKeyStickDown); - keyboard_add_binds(0x20000, configKeyStickRight); + keyboard_add_binds(STICK_UP, configKeyStickUp); + keyboard_add_binds(STICK_LEFT, configKeyStickLeft); + keyboard_add_binds(STICK_DOWN, configKeyStickDown); + keyboard_add_binds(STICK_RIGHT, configKeyStickRight); keyboard_add_binds(A_BUTTON, configKeyA); keyboard_add_binds(B_BUTTON, configKeyB); keyboard_add_binds(Z_TRIG, configKeyZ); @@ -87,18 +87,16 @@ static void keyboard_init(void) { static void keyboard_read(OSContPad *pad) { pad->button |= keyboard_buttons_down; - if ((keyboard_buttons_down & 0x30000) == 0x10000) { + const u32 xstick = keyboard_buttons_down & STICK_XMASK; + const u32 ystick = keyboard_buttons_down & STICK_YMASK; + if (xstick == STICK_LEFT) pad->stick_x = -128; - } - if ((keyboard_buttons_down & 0x30000) == 0x20000) { + else if (xstick == STICK_RIGHT) pad->stick_x = 127; - } - if ((keyboard_buttons_down & 0xc0000) == 0x40000) { + if (ystick == STICK_DOWN) pad->stick_y = -128; - } - if ((keyboard_buttons_down & 0xc0000) == 0x80000) { + else if (ystick == STICK_UP) pad->stick_y = 127; - } } static u32 keyboard_rawkey(void) { diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index b28e3f7b..1f56236c 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -35,7 +35,6 @@ extern u8 newcam_mouse; static bool init_ok; static SDL_GameController *sdl_cntrl; - static u32 num_joy_binds = 0; static u32 num_mouse_binds = 0; static u32 joy_binds[MAX_JOYBINDS][2]; @@ -71,6 +70,10 @@ static void controller_sdl_bind(void) { controller_add_binds(A_BUTTON, configKeyA); controller_add_binds(B_BUTTON, configKeyB); controller_add_binds(Z_TRIG, configKeyZ); + controller_add_binds(STICK_UP, configKeyStickUp); + controller_add_binds(STICK_LEFT, configKeyStickLeft); + controller_add_binds(STICK_DOWN, configKeyStickDown); + controller_add_binds(STICK_RIGHT, configKeyStickRight); controller_add_binds(U_CBUTTONS, configKeyCUp); controller_add_binds(L_CBUTTONS, configKeyCLeft); controller_add_binds(D_CBUTTONS, configKeyCDown); @@ -117,7 +120,6 @@ static void controller_sdl_read(OSContPad *pad) { // remember buttons that changed from 0 to 1 last_mouse = (mouse_buttons ^ mouse) & mouse; mouse_buttons = mouse; - #endif SDL_GameControllerUpdate(); @@ -147,9 +149,23 @@ static void controller_sdl_read(OSContPad *pad) { if (pressed) last_joybutton = i; } + u32 buttons_down = 0; for (u32 i = 0; i < num_joy_binds; ++i) if (joy_buttons[joy_binds[i][0]]) - pad->button |= joy_binds[i][1]; + buttons_down |= joy_binds[i][1]; + + pad->button |= buttons_down; + + const u32 xstick = buttons_down & STICK_XMASK; + const u32 ystick = buttons_down & STICK_YMASK; + if (xstick == STICK_LEFT) + pad->stick_x = -128; + else if (xstick == STICK_RIGHT) + pad->stick_x = 127; + if (ystick == STICK_DOWN) + pad->stick_y = -128; + else if (ystick == STICK_UP) + pad->stick_y = 127; int16_t leftx = SDL_GameControllerGetAxis(sdl_cntrl, SDL_CONTROLLER_AXIS_LEFTX); int16_t lefty = SDL_GameControllerGetAxis(sdl_cntrl, SDL_CONTROLLER_AXIS_LEFTY); From 6cee636382f3715bc8f2b35350cb9813394bbb0b Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 1 Jun 2020 12:13:05 +0300 Subject: [PATCH 076/166] change EXTERNAL_TEXTURES to EXTERNAL_DATA; load sound data from external files no separation tho, just binary blobs o shit --- Makefile | 37 ++++++++++++++++++++++++++++--------- src/audio/load.c | 34 ++++++++++++++++++++++++++++------ src/game/ingame_menu.c | 6 +++--- src/pc/configfile.c | 4 ++-- src/pc/configfile.h | 2 +- src/pc/gfx/gfx_pc.c | 20 ++++++++++---------- src/pc/platform.c | 23 +++++++++++++++++++++++ src/pc/platform.h | 1 + 8 files changed, 96 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 56404185..f8078859 100644 --- a/Makefile +++ b/Makefile @@ -42,8 +42,8 @@ TEXTURE_FIX ?= 0 EXT_OPTIONS_MENU ?= 1 # Disable text-based save-files by default TEXTSAVES ?= 0 -# Load textures from external PNG files -EXTERNAL_TEXTURES ?= 0 +# Load resources from external files +EXTERNAL_DATA ?= 0 # Various workarounds for weird toolchains @@ -274,7 +274,7 @@ else ifeq ($(VERSION),sh) OPT_FLAGS := -O2 else - OPT_FLAGS := -g + OPT_FLAGS := -O2 endif endif @@ -555,9 +555,9 @@ ifeq ($(LEGACY_GL),1) endif # Load external textures -ifeq ($(EXTERNAL_TEXTURES),1) - CC_CHECK += -DEXTERNAL_TEXTURES - CFLAGS += -DEXTERNAL_TEXTURES +ifeq ($(EXTERNAL_DATA),1) + CC_CHECK += -DEXTERNAL_DATA + CFLAGS += -DEXTERNAL_DATA # tell skyconv to write names instead of actual texture data and save the split tiles so we can use them later SKYCONV_ARGS := --store-names --write-tiles "$(BUILD_DIR)/textures/skybox_tiles" endif @@ -617,15 +617,20 @@ ZEROTERM = $(PYTHON) $(TOOLS_DIR)/zeroterm.py all: $(EXE) -ifeq ($(EXTERNAL_TEXTURES),1) +ifeq ($(EXTERNAL_DATA),1) # depend on resources as well all: res # prepares the resource folder for external data res: $(EXE) @mkdir -p $(BUILD_DIR)/res + @mkdir -p $(BUILD_DIR)/res/sound @cp -r -f textures/ $(BUILD_DIR)/res/ @cp -r -f $(BUILD_DIR)/textures/skybox_tiles/ $(BUILD_DIR)/res/textures/ + @cp -f $(SOUND_BIN_DIR)/sound_data.ctl $(BUILD_DIR)/res/sound/ + @cp -f $(SOUND_BIN_DIR)/sound_data.tbl $(BUILD_DIR)/res/sound/ + @cp -f $(SOUND_BIN_DIR)/sequences.bin $(BUILD_DIR)/res/sound/ + @cp -f $(SOUND_BIN_DIR)/bank_sets $(BUILD_DIR)/res/sound/ @find actors -name \*.png -exec cp --parents {} $(BUILD_DIR)/res/ \; @find levels -name \*.png -exec cp --parents {} $(BUILD_DIR)/res/ \; endif @@ -724,7 +729,7 @@ endif ################################################################ # RGBA32, RGBA16, IA16, IA8, IA4, IA1, I8, I4 -ifeq ($(EXTERNAL_TEXTURES),1) +ifeq ($(EXTERNAL_DATA),1) $(BUILD_DIR)/%: %.png $(ZEROTERM) "$(patsubst %.png,%,$^)" > $@ else @@ -736,7 +741,7 @@ $(BUILD_DIR)/%.inc.c: $(BUILD_DIR)/% %.png hexdump -v -e '1/1 "0x%X,"' $< > $@ echo >> $@ -ifeq ($(EXTERNAL_TEXTURES),0) +ifeq ($(EXTERNAL_DATA),0) # Color Index CI8 $(BUILD_DIR)/%.ci8: %.ci8.png $(N64GRAPHICS_CI) -i $@ -g $< -f ci8 @@ -787,6 +792,18 @@ $(SOUND_BIN_DIR)/%.m64: $(SOUND_BIN_DIR)/%.o $(SOUND_BIN_DIR)/%.o: $(SOUND_BIN_DIR)/%.s $(AS) $(ASFLAGS) -o $@ $< +ifeq ($(EXTERNAL_DATA),1) + +$(SOUND_BIN_DIR)/sound_data.ctl.c: $(SOUND_BIN_DIR)/sound_data.ctl + echo "unsigned char gSoundDataADSR[] = \"sound/sound_data.ctl\";" > $@ +$(SOUND_BIN_DIR)/sound_data.tbl.c: $(SOUND_BIN_DIR)/sound_data.tbl + echo "unsigned char gSoundDataRaw[] = \"sound/sound_data.tbl\";" > $@ +$(SOUND_BIN_DIR)/sequences.bin.c: $(SOUND_BIN_DIR)/sequences.bin + echo "unsigned char gMusicData[] = \"sound/sequences.bin\";" > $@ +$(SOUND_BIN_DIR)/bank_sets.c: $(SOUND_BIN_DIR)/bank_sets + echo "unsigned char gBankSetsData[] = \"sound/bank_sets\";" > $@ + +else $(SOUND_BIN_DIR)/sound_data.ctl.c: $(SOUND_BIN_DIR)/sound_data.ctl echo "unsigned char gSoundDataADSR[] = {" > $@ @@ -808,6 +825,8 @@ $(SOUND_BIN_DIR)/bank_sets.c: $(SOUND_BIN_DIR)/bank_sets hexdump -v -e '1/1 "0x%X,"' $< >> $@ echo "};" >> $@ +endif + $(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h $(BUILD_DIR)/include/level_headers.h: levels/level_headers.h.in diff --git a/src/audio/load.c b/src/audio/load.c index 146863c1..affc6081 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -6,6 +6,8 @@ #include "data.h" #include "seqplayer.h" +#include "../pc/platform.h" + #define ALIGN16(val) (((val) + 0xF) & ~0xF) struct SharedDma { @@ -868,6 +870,24 @@ void load_sequence_internal(u32 player, u32 seqId, s32 loadAsync) { seqPlayer->scriptState.pc = sequenceData; } +#ifdef EXTERNAL_DATA +# define LOAD_DATA(x) load_sound_res((const char *)x) +# include +# include +static inline void *load_sound_res(const char *path) { + void *data = sys_load_res(path); + if (!data) { + fprintf(stderr, "could not load sound data from '%s'\n", path); + abort(); + } + // FIXME: figure out where it is safe to free this shit + // can't free it immediately after in audio_init() + return data; +} +#else +# define LOAD_DATA(x) x +#endif + void audio_init() { #ifdef VERSION_EU UNUSED s8 pad[16]; @@ -966,7 +986,7 @@ void audio_init() { // Load header for sequence data (assets/music_data.sbk.s) gSeqFileHeader = (ALSeqFile *) buf; - data = gMusicData; + data = LOAD_DATA(gMusicData); audio_dma_copy_immediate((uintptr_t) data, gSeqFileHeader, 0x10); gSequenceCount = gSeqFileHeader->seqCount; #ifdef VERSION_EU @@ -981,7 +1001,7 @@ void audio_init() { // Load header for CTL (assets/sound_data.ctl.s, i.e. ADSR) gAlCtlHeader = (ALSeqFile *) buf; - data = gSoundDataADSR; + data = LOAD_DATA(gSoundDataADSR); audio_dma_copy_immediate((uintptr_t) data, gAlCtlHeader, 0x10); size = gAlCtlHeader->seqCount * sizeof(ALSeqData) + 4; size = ALIGN16(size); @@ -996,14 +1016,16 @@ void audio_init() { size = gAlTbl->seqCount * sizeof(ALSeqData) + 4; size = ALIGN16(size); gAlTbl = soundAlloc(&gAudioInitPool, size); - audio_dma_copy_immediate((uintptr_t) gSoundDataRaw, gAlTbl, size); - alSeqFileNew(gAlTbl, gSoundDataRaw); + + data = LOAD_DATA(gSoundDataRaw); + audio_dma_copy_immediate((uintptr_t) data, gAlTbl, size); + alSeqFileNew(gAlTbl, data); // Load bank sets for each sequence (assets/bank_sets.s) + data = LOAD_DATA(gBankSetsData); gAlBankSets = soundAlloc(&gAudioInitPool, 0x100); - audio_dma_copy_immediate((uintptr_t) gBankSetsData, gAlBankSets, 0x100); + audio_dma_copy_immediate((uintptr_t) data, gAlBankSets, 0x100); init_sequence_players(); gAudioLoadLock = AUDIO_LOCK_NOT_LOADING; } - diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index 9711ec7e..7c28c293 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -128,7 +128,7 @@ u8 gMenuHoldKeyIndex = 0; u8 gMenuHoldKeyTimer = 0; s32 gDialogResponse = 0; -#if !defined(EXTERNAL_TEXTURES) && (defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU)) +#if !defined(EXTERNAL_DATA) && (defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU)) #ifdef VERSION_EU #define CHCACHE_BUFLEN (8 * 8) // EU only converts 8x8 #else @@ -242,7 +242,7 @@ static inline void alloc_ia8_text_from_i1(u8 *out, u16 *in, s16 width, s16 heigh } static inline u8 *convert_ia8_char(u8 c, u16 *tex, s16 w, s16 h) { -#ifdef EXTERNAL_TEXTURES +#ifdef EXTERNAL_DATA return (u8 *)tex; // the data's just a name #else if (!tex) return NULL; @@ -303,7 +303,7 @@ static void alloc_ia4_tex_from_i1(u8 *out, u8 *in, s16 width, s16 height) { } static u8 *convert_ia4_char(u8 c, u8 *tex, s16 w, s16 h) { -#ifdef EXTERNAL_TEXTURES +#ifdef EXTERNAL_DATA return tex; // the data's just a name #else if (!tex) return NULL; diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 9c9038a4..f404773a 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -67,7 +67,7 @@ unsigned int configKeyStickDown[MAX_BINDS] = { 0x001F, VK_INVALID, VK_INVALID unsigned int configKeyStickLeft[MAX_BINDS] = { 0x001E, VK_INVALID, VK_INVALID }; unsigned int configKeyStickRight[MAX_BINDS] = { 0x0020, VK_INVALID, VK_INVALID }; unsigned int configStickDeadzone = 16; // 16*DEADZONE_STEP=4960 (the original default deadzone) -#ifdef EXTERNAL_TEXTURES +#ifdef EXTERNAL_DATA bool configPrecacheRes = false; #endif #ifdef BETTERCAMERA @@ -109,7 +109,7 @@ static const struct ConfigOption options[] = { {.name = "key_stickleft", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickLeft}, {.name = "key_stickright", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStickRight}, {.name = "stick_deadzone", .type = CONFIG_TYPE_UINT, .uintValue = &configStickDeadzone}, - #ifdef EXTERNAL_TEXTURES + #ifdef EXTERNAL_DATA {.name = "precache", .type = CONFIG_TYPE_BOOL, .boolValue = &configPrecacheRes}, #endif #ifdef BETTERCAMERA diff --git a/src/pc/configfile.h b/src/pc/configfile.h index d6087612..3802d07b 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -36,7 +36,7 @@ extern unsigned int configKeyStickDown[]; extern unsigned int configKeyStickLeft[]; extern unsigned int configKeyStickRight[]; extern unsigned int configStickDeadzone; -#ifdef EXTERNAL_TEXTURES +#ifdef EXTERNAL_DATA extern bool configPrecacheRes; #endif #ifdef BETTERCAMERA diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 6bd2fca4..1e86ec5a 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -6,7 +6,7 @@ #include #include -#ifdef EXTERNAL_TEXTURES +#ifdef EXTERNAL_DATA #define STB_IMAGE_IMPLEMENTATION #include #endif @@ -47,7 +47,7 @@ #define MAX_LIGHTS 2 #define MAX_VERTICES 64 -#ifdef EXTERNAL_TEXTURES +#ifdef EXTERNAL_DATA # define MAX_CACHED_TEXTURES 4096 // for preloading purposes # define HASH_SHIFT 0 #else @@ -173,7 +173,7 @@ static size_t buf_vbo_num_tris; static struct GfxWindowManagerAPI *gfx_wapi; static struct GfxRenderingAPI *gfx_rapi; -#ifdef EXTERNAL_TEXTURES +#ifdef EXTERNAL_DATA static inline size_t string_hash(const uint8_t *str) { size_t h = 0; for (const uint8_t *p = str; *p; p++) @@ -275,9 +275,9 @@ static struct ColorCombiner *gfx_lookup_or_create_color_combiner(uint32_t cc_id) } static bool gfx_texture_cache_lookup(int tile, struct TextureHashmapNode **n, const uint8_t *orig_addr, uint32_t fmt, uint32_t siz) { - #ifdef EXTERNAL_TEXTURES // hash and compare the data (i.e. the texture name) itself + #ifdef EXTERNAL_DATA // hash and compare the data (i.e. the texture name) itself size_t hash = string_hash(orig_addr); - #define CMPADDR(x, y) (x && !sys_strcasecmp(x, y)) + #define CMPADDR(x, y) (x && !sys_strcasecmp((const char *)x, (const char *)y)) #else // hash and compare the address size_t hash = (uintptr_t)orig_addr; #define CMPADDR(x, y) x == y @@ -318,7 +318,7 @@ static bool gfx_texture_cache_lookup(int tile, struct TextureHashmapNode **n, co #undef CMPADDR } -#ifndef EXTERNAL_TEXTURES +#ifndef EXTERNAL_DATA static void import_texture_rgba32(int tile) { uint32_t width = rdp.texture_tile.line_size_bytes / 2; @@ -492,7 +492,7 @@ static void import_texture_ci8(int tile) { gfx_rapi->upload_texture(rgba32_buf, width, height); } -#else // EXTERNAL_TEXTURES +#else // EXTERNAL_DATA // this is taken straight from n64graphics static bool texname_to_texformat(const char *name, u8 *fmt, u8 *siz) { @@ -595,7 +595,7 @@ static inline void load_texture(const char *name) { stbi_image_free(data); // don't need this anymore } -#endif // EXTERNAL_TEXTURES +#endif // EXTERNAL_DATA static void import_texture(int tile) { uint8_t fmt = rdp.texture_tile.fmt; @@ -611,7 +611,7 @@ static void import_texture(int tile) { return; } -#ifdef EXTERNAL_TEXTURES +#ifdef EXTERNAL_DATA // the "texture data" is actually a C string with the path to our texture in it // load it from an external image in our data path load_texture((const char*)rdp.loaded_texture[tile].addr); @@ -1761,7 +1761,7 @@ void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi) { for (size_t i = 0; i < sizeof(precomp_shaders) / sizeof(uint32_t); i++) { gfx_lookup_or_create_shader_program(precomp_shaders[i]); } - #ifdef EXTERNAL_TEXTURES + #ifdef EXTERNAL_DATA // preload all textures if needed if (configPrecacheRes) { printf("Precaching textures from `%s`\n", sys_data_path()); diff --git a/src/pc/platform.c b/src/pc/platform.c index 00cfa289..80c0eb74 100644 --- a/src/pc/platform.c +++ b/src/pc/platform.c @@ -86,6 +86,29 @@ bool sys_dir_walk(const char *base, walk_fn_t walk, const bool recur) { return ret; } +void *sys_load_res(const char *name) { + char path[SYS_MAX_PATH] = { 0 }; + snprintf(path, sizeof(path), "%s/%s", sys_data_path(), name); + + FILE *f = fopen(path, "rb"); + if (!f) return NULL; + + fseek(f, 0, SEEK_END); + size_t size = ftell(f); + fseek(f, 0, SEEK_SET); + + void *buf = malloc(size); + if (!buf) { + fclose(f); + return NULL; + } + + fread(buf, 1, size, f); + fclose(f); + + return buf; +} + bool sys_mkdir(const char *name) { #ifdef _WIN32 return _mkdir(name) == 0; diff --git a/src/pc/platform.h b/src/pc/platform.h index 9b498470..30b33dcc 100644 --- a/src/pc/platform.h +++ b/src/pc/platform.h @@ -19,6 +19,7 @@ int sys_strcasecmp(const char *s1, const char *s2); bool sys_mkdir(const char *name); // creates with 0777 by default bool sys_file_exists(const char *name); bool sys_dir_exists(const char *name); +void *sys_load_res(const char *name); // receives the full path // should return `true` if traversal should continue From 269cd8f60f894b992999de9eab79123f0cfe3416 Mon Sep 17 00:00:00 2001 From: GateGuy <57763469+GateGuy@users.noreply.github.com> Date: Mon, 1 Jun 2020 17:33:22 -0400 Subject: [PATCH 077/166] Fixed constant fish respawning --- src/game/behaviors/fish.inc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/game/behaviors/fish.inc.c b/src/game/behaviors/fish.inc.c index f652ef47..ed1d767e 100644 --- a/src/game/behaviors/fish.inc.c +++ b/src/game/behaviors/fish.inc.c @@ -62,11 +62,13 @@ void fish_act_spawn(void) { * Y coordinate is greater than 2000.0f then spawn another fish. */ void fish_act_respawn(void) { +#ifndef NODRAWINGDISTANCE if (gCurrLevelNum != LEVEL_SA) { if (gMarioObject->oPosY - o->oPosY > 2000.0f) { o->oAction = FISH_ACT_RESPAWN; } } +#endif } /** From afca02c0a7636d06db8c64248434f33aebb463fd Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 2 Jun 2020 17:57:23 +0300 Subject: [PATCH 078/166] use 'rsync' instead of 'find' + 'cp -r --parents' mostly because cp is fucking weird on OSX, thank you Apple very cool --- Makefile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index f8078859..fe228f5a 100644 --- a/Makefile +++ b/Makefile @@ -451,7 +451,7 @@ ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth AS := $(CROSS)as ifeq ($(OSX_BUILD),1) -AS := i686-w64-mingw32-as + AS := i686-w64-mingw32-as endif ifneq ($(TARGET_WEB),1) # As in, not-web PC port @@ -618,21 +618,22 @@ ZEROTERM = $(PYTHON) $(TOOLS_DIR)/zeroterm.py all: $(EXE) ifeq ($(EXTERNAL_DATA),1) + # depend on resources as well all: res # prepares the resource folder for external data res: $(EXE) - @mkdir -p $(BUILD_DIR)/res @mkdir -p $(BUILD_DIR)/res/sound - @cp -r -f textures/ $(BUILD_DIR)/res/ - @cp -r -f $(BUILD_DIR)/textures/skybox_tiles/ $(BUILD_DIR)/res/textures/ + @rsync -zar --prune-empty-dirs textures $(BUILD_DIR)/res/ + @rsync -zar --prune-empty-dirs --include="*/" --include="*.png" --exclude="*" actors $(BUILD_DIR)/res/ + @rsync -zar --prune-empty-dirs --include="*/" --include="*.png" --exclude="*" levels $(BUILD_DIR)/res/ + @rsync -zar --prune-empty-dirs $(BUILD_DIR)/textures/skybox_tiles $(BUILD_DIR)/res/textures/ @cp -f $(SOUND_BIN_DIR)/sound_data.ctl $(BUILD_DIR)/res/sound/ @cp -f $(SOUND_BIN_DIR)/sound_data.tbl $(BUILD_DIR)/res/sound/ @cp -f $(SOUND_BIN_DIR)/sequences.bin $(BUILD_DIR)/res/sound/ @cp -f $(SOUND_BIN_DIR)/bank_sets $(BUILD_DIR)/res/sound/ - @find actors -name \*.png -exec cp --parents {} $(BUILD_DIR)/res/ \; - @find levels -name \*.png -exec cp --parents {} $(BUILD_DIR)/res/ \; + endif clean: From 35382b83a11a295fc2fdb07ff2889bc7b62dfb46 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 2 Jun 2020 22:37:43 +0300 Subject: [PATCH 079/166] roll back rsync apparently I'm the only man in existence who has it installed by default --- Makefile | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index fe228f5a..49b60620 100644 --- a/Makefile +++ b/Makefile @@ -60,8 +60,20 @@ NON_MATCHING := 1 GRUCODE := f3dex2e WINDOWS_BUILD ?= 0 -ifeq ($(TARGET_WEB),0) +# Attempt to detect OS + ifeq ($(OS),Windows_NT) + HOST_OS ?= Windows +else + HOST_OS ?= $(shell uname -s 2>/dev/null || echo Unknown) + # some weird MINGW/Cygwin env that doesn't define $OS + ifneq (,$(findstring MINGW,HOST_OS)) + HOST_OS := Windows + endif +endif + +ifeq ($(TARGET_WEB),0) +ifeq ($(HOST_OS),Windows) WINDOWS_BUILD := 1 endif endif @@ -451,7 +463,7 @@ ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth AS := $(CROSS)as ifeq ($(OSX_BUILD),1) - AS := i686-w64-mingw32-as +AS := i686-w64-mingw32-as endif ifneq ($(TARGET_WEB),1) # As in, not-web PC port @@ -619,20 +631,27 @@ all: $(EXE) ifeq ($(EXTERNAL_DATA),1) +# thank you apple very cool +ifeq ($(HOST_OS),Darwin) + CP := gcp +else + CP := cp +endif + # depend on resources as well all: res # prepares the resource folder for external data res: $(EXE) @mkdir -p $(BUILD_DIR)/res/sound - @rsync -zar --prune-empty-dirs textures $(BUILD_DIR)/res/ - @rsync -zar --prune-empty-dirs --include="*/" --include="*.png" --exclude="*" actors $(BUILD_DIR)/res/ - @rsync -zar --prune-empty-dirs --include="*/" --include="*.png" --exclude="*" levels $(BUILD_DIR)/res/ - @rsync -zar --prune-empty-dirs $(BUILD_DIR)/textures/skybox_tiles $(BUILD_DIR)/res/textures/ - @cp -f $(SOUND_BIN_DIR)/sound_data.ctl $(BUILD_DIR)/res/sound/ - @cp -f $(SOUND_BIN_DIR)/sound_data.tbl $(BUILD_DIR)/res/sound/ - @cp -f $(SOUND_BIN_DIR)/sequences.bin $(BUILD_DIR)/res/sound/ - @cp -f $(SOUND_BIN_DIR)/bank_sets $(BUILD_DIR)/res/sound/ + @$(CP) -r -f textures/ $(BUILD_DIR)/res/ + @$(CP) -r -f $(BUILD_DIR)/textures/skybox_tiles/ $(BUILD_DIR)/res/textures/ + @$(CP) -f $(SOUND_BIN_DIR)/sound_data.ctl $(BUILD_DIR)/res/sound/ + @$(CP) -f $(SOUND_BIN_DIR)/sound_data.tbl $(BUILD_DIR)/res/sound/ + @$(CP) -f $(SOUND_BIN_DIR)/sequences.bin $(BUILD_DIR)/res/sound/ + @$(CP) -f $(SOUND_BIN_DIR)/bank_sets $(BUILD_DIR)/res/sound/ + @find actors -name \*.png -exec $(CP) --parents {} $(BUILD_DIR)/res/ \; + @find levels -name \*.png -exec $(CP) --parents {} $(BUILD_DIR)/res/ \; endif From 05d401072b1fbf9872fbad1d0f908f5e9cebb6a0 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 2 Jun 2020 23:43:32 +0300 Subject: [PATCH 080/166] yeet --- doxygen/logo.png | Bin 20193 -> 417 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doxygen/logo.png b/doxygen/logo.png index f01a8654967840e7b7408b20fe88dc1f1e183f66..0980cc0c4f254da638acba47a7e3ed38c34ba421 100644 GIT binary patch literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^2Y}e0gAGXTwK@foU@Q)DcVbv~PUa<$!;&U>c zv7h@-A}f&3S>O>_%)r2R1cVu|gW!U_%O?Xx*h@TpUD+SAaPeyj z^Ujq~018Q#xJHyX=jZ08=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~NjTba4!+h`tt`GyVd+fOXj94Wc_!V#OPtnkjbWSmSKrxg9-D5G=@t&4zq@$;D(vp Y4~FVdQ&MBb@0Q1FlXaE2J literal 20193 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 Date: Wed, 3 Jun 2020 00:10:20 +0300 Subject: [PATCH 081/166] precache is now turned on by default --- src/pc/configfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pc/configfile.c b/src/pc/configfile.c index f404773a..8ddba7ef 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -68,7 +68,7 @@ unsigned int configKeyStickLeft[MAX_BINDS] = { 0x001E, VK_INVALID, VK_INVALID unsigned int configKeyStickRight[MAX_BINDS] = { 0x0020, VK_INVALID, VK_INVALID }; unsigned int configStickDeadzone = 16; // 16*DEADZONE_STEP=4960 (the original default deadzone) #ifdef EXTERNAL_DATA -bool configPrecacheRes = false; +bool configPrecacheRes = true; #endif #ifdef BETTERCAMERA // BetterCamera settings From 88b044bd76e4e3a8370a2cb3c9a0ad26ce65017a Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 3 Jun 2020 00:10:42 +0300 Subject: [PATCH 082/166] load external gamecontrollerdb file if it's present --- src/pc/controller/controller_sdl.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index 1f56236c..331eefc5 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -13,6 +13,7 @@ #include "controller_api.h" #include "controller_sdl.h" #include "../configfile.h" +#include "../platform.h" #include "game/level_update.h" @@ -89,6 +90,17 @@ static void controller_sdl_init(void) { return; } + // try loading an external gamecontroller mapping file + char gcpath[SYS_MAX_PATH]; + snprintf(gcpath, sizeof(gcpath), "%s/gamecontrollerdb.txt", sys_save_path()); + int nummaps = SDL_GameControllerAddMappingsFromFile(gcpath); + if (nummaps < 0) { + snprintf(gcpath, sizeof(gcpath), "%s/gamecontrollerdb.txt", sys_data_path()); + nummaps = SDL_GameControllerAddMappingsFromFile(gcpath); + } + if (nummaps >= 0) + printf("loaded %d controller mappings from '%s'\n", nummaps, gcpath); + #ifdef BETTERCAMERA if (newcam_mouse == 1) SDL_SetRelativeMouseMode(SDL_TRUE); From bd68d6cb67b8aac3b605db0741008feddaadf1af Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 4 Jun 2020 23:39:57 +0300 Subject: [PATCH 083/166] move rumble functions to controller API --- src/pc/controller/controller_api.h | 18 ++++-- src/pc/controller/controller_entry_point.c | 23 ++++++- src/pc/controller/controller_recorded_tas.c | 2 + src/pc/controller/controller_sdl.c | 66 +++++++++++---------- src/pc/controller/controller_sdl.h | 4 -- 5 files changed, 68 insertions(+), 45 deletions(-) diff --git a/src/pc/controller/controller_api.h b/src/pc/controller/controller_api.h index 6e55c846..d4a9d86c 100644 --- a/src/pc/controller/controller_api.h +++ b/src/pc/controller/controller_api.h @@ -16,18 +16,24 @@ #include struct ControllerAPI { - const u32 vkbase; // base number in the virtual keyspace (e.g. keyboard is 0x0000-0x1000) - void (*init)(void); // call once, also calls reconfig() - void (*read)(OSContPad *pad); // read controller and update N64 pad values - u32 (*rawkey)(void); // returns last pressed virtual key or VK_INVALID if none - void (*reconfig)(void); // (optional) call when bindings have changed - void (*shutdown)(void); // (optional) call in osContReset + const u32 vkbase; // base number in the virtual keyspace (e.g. keyboard is 0x0000-0x1000) + void (*init)(void); // call once, also calls reconfig() + void (*read)(OSContPad *pad); // read controller and update N64 pad values + u32 (*rawkey)(void); // returns last pressed virtual key or VK_INVALID if none + void (*rumble_play)(float str, float time); // (optional) rumble with intensity `str` (0 - 1) for `time` seconds + void (*rumble_stop)(void); // (optional) stop any ongoing haptic feedback + void (*reconfig)(void); // (optional) call when bindings have changed + void (*shutdown)(void); // (optional) call in osContReset }; // used for binding keys u32 controller_get_raw_key(void); void controller_reconfigure(void); +// rumbles all controllers with rumble support +void controller_rumble_play(float str, float time); +void controller_rumble_stop(void); + // calls the shutdown() function of all controller subsystems void controller_shutdown(void); diff --git a/src/pc/controller/controller_entry_point.c b/src/pc/controller/controller_entry_point.c index b8b54ad3..fae9d657 100644 --- a/src/pc/controller/controller_entry_point.c +++ b/src/pc/controller/controller_entry_point.c @@ -31,15 +31,18 @@ s32 osContInit(OSMesgQueue *mq, u8 *controllerBits, OSContStatus *status) { s32 osMotorStart(void *pfs) { // Since rumble stops by osMotorStop, its duration is not nessecary. - return controller_rumble_play(configRumbleStrength / 100.0, 50); + // Set it to 5 seconds and hope osMotorStop() is called in time. + controller_rumble_play(configRumbleStrength / 100.0f, 5.0f); + return 0; } s32 osMotorStop(void *pfs) { - return controller_rumble_stop(); + controller_rumble_stop(); + return 0; } u32 osMotorInit(OSMesgQueue *mq, void *pfs, s32 port) { - return controller_rumble_init(); + return 0; // rumble is initialized in the specific backend's init function } s32 osContStartReadData(OSMesgQueue *mesg) { @@ -93,3 +96,17 @@ void controller_reconfigure(void) { controller_implementations[i]->reconfig(); } } + +void controller_rumble_play(float str, float time) { + for (size_t i = 0; i < sizeof(controller_implementations) / sizeof(struct ControllerAPI *); i++) { + if (controller_implementations[i]->rumble_play) + controller_implementations[i]->rumble_play(str, time); + } +} + +void controller_rumble_stop(void) { + for (size_t i = 0; i < sizeof(controller_implementations) / sizeof(struct ControllerAPI *); i++) { + if (controller_implementations[i]->rumble_stop) + controller_implementations[i]->rumble_stop(); + } +} diff --git a/src/pc/controller/controller_recorded_tas.c b/src/pc/controller/controller_recorded_tas.c index 2fcd5b54..73b507dc 100644 --- a/src/pc/controller/controller_recorded_tas.c +++ b/src/pc/controller/controller_recorded_tas.c @@ -39,6 +39,8 @@ struct ControllerAPI controller_recorded_tas = { tas_init, tas_read, tas_rawkey, + NULL, // no rumble_play + NULL, // no rumble_stop NULL, // no rebinding tas_shutdown }; diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index 683eefbb..368179f3 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -113,6 +113,24 @@ static void controller_sdl_init(void) { init_ok = true; } +static SDL_Haptic *controller_sdl_init_haptics(const int joy) { + SDL_Haptic *hap = SDL_HapticOpen(joy); + if (!hap) return NULL; + + if (SDL_HapticRumbleSupported(hap) != SDL_TRUE) { + SDL_HapticClose(hap); + return NULL; + } + + if (SDL_HapticRumbleInit(hap) != 0) { + SDL_HapticClose(hap); + return NULL; + } + + printf("controller %s has haptics support, rumble enabled\n", SDL_JoystickNameForIndex(joy)); + return hap; +} + static void controller_sdl_read(OSContPad *pad) { if (!init_ok) { return; @@ -138,15 +156,18 @@ static void controller_sdl_read(OSContPad *pad) { SDL_GameControllerUpdate(); if (sdl_cntrl != NULL && !SDL_GameControllerGetAttached(sdl_cntrl)) { + SDL_HapticClose(sdl_haptic); SDL_GameControllerClose(sdl_cntrl); sdl_cntrl = NULL; + sdl_haptic = NULL; } + if (sdl_cntrl == NULL) { for (int i = 0; i < SDL_NumJoysticks(); i++) { if (SDL_IsGameController(i)) { sdl_cntrl = SDL_GameControllerOpen(i); - sdl_haptic = SDL_HapticOpen(i); if (sdl_cntrl != NULL) { + sdl_haptic = controller_sdl_init_haptics(i); break; } } @@ -220,6 +241,16 @@ static void controller_sdl_read(OSContPad *pad) { } } +static void controller_sdl_rumble_play(f32 strength, u32 length) { + if (sdl_haptic) + SDL_HapticRumblePlay(sdl_haptic, strength, length); +} + +static void controller_sdl_rumble_stop(void) { + if (sdl_haptic) + SDL_HapticRumbleStop(sdl_haptic); +} + static u32 controller_sdl_rawkey(void) { if (last_joybutton != VK_INVALID) { const u32 ret = last_joybutton; @@ -252,42 +283,13 @@ static void controller_sdl_shutdown(void) { init_ok = false; } -u32 controller_rumble_init(void) { - if (SDL_HapticRumbleSupported(sdl_haptic) != SDL_TRUE) { - // printf("Controller does not support haptics! %s\n", SDL_GetError()); - return 1; - } - if (SDL_HapticRumbleInit(sdl_haptic) != 0) { - printf("Unable to initialize rumble! %s\n", SDL_GetError()); - return 1; - } - return 0; -} - - -s32 controller_rumble_play(f32 strength, u32 length) { - if (SDL_HapticRumblePlay(sdl_haptic, strength, length) != 0) { - printf("Unable to start rumble! %s\n", SDL_GetError()); - return -1; - } else { - return 0; - } -} - -s32 controller_rumble_stop(void) { - if (SDL_HapticRumbleStop(sdl_haptic) != 0) { - printf("Unable to stop rumble! %s\n", SDL_GetError()); - return -1; - } else { - return 0; - } -} - struct ControllerAPI controller_sdl = { VK_BASE_SDL_GAMEPAD, controller_sdl_init, controller_sdl_read, controller_sdl_rawkey, + controller_sdl_rumble_play, + controller_sdl_rumble_stop, controller_sdl_bind, controller_sdl_shutdown }; diff --git a/src/pc/controller/controller_sdl.h b/src/pc/controller/controller_sdl.h index c1a43cec..bbe8a62c 100644 --- a/src/pc/controller/controller_sdl.h +++ b/src/pc/controller/controller_sdl.h @@ -7,8 +7,4 @@ extern struct ControllerAPI controller_sdl; -u32 controller_rumble_init(void); -s32 controller_rumble_play(f32 strength, u32 length); -s32 controller_rumble_stop(void); - #endif From 3954f7d1d3080858e5fdb635d77ceb3e5a59fa8a Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 4 Jun 2020 23:42:19 +0300 Subject: [PATCH 084/166] nuke some leftover MIPS assembly and binary blobs --- lib/PR/audio/aspMain.bin | Bin 3616 -> 0 bytes lib/PR/audio/aspMain_data.bin | Bin 704 -> 0 bytes lib/PR/boot/F3D_boot.bin | Bin 208 -> 0 bytes lib/PR/boot/F3D_boot_eu.bin | Bin 204 -> 0 bytes lib/PR/f3d/new/F3D.bin | Bin 5120 -> 0 bytes lib/PR/f3d/new/F3D_data.bin | Bin 2048 -> 0 bytes lib/PR/f3d/new/F3D_data_EU.bin | Bin 2048 -> 0 bytes lib/PR/f3d/old/F3D.bin | Bin 5128 -> 0 bytes lib/PR/f3d/old/F3D_data.bin | Bin 2048 -> 0 bytes lib/PR/f3dex/F3DEX.bin | Bin 5168 -> 0 bytes lib/PR/f3dex/F3DEX_NoN.bin | Bin 5168 -> 0 bytes lib/PR/f3dex/F3DEX_NoN_data.bin | Bin 2048 -> 0 bytes lib/PR/f3dex/F3DEX_data.bin | Bin 2048 -> 0 bytes lib/PR/f3dex/F3DLX.bin | Bin 5168 -> 0 bytes lib/PR/f3dex/F3DLX_NoN.bin | Bin 5168 -> 0 bytes lib/PR/f3dex/F3DLX_NoN_data.bin | Bin 2048 -> 0 bytes lib/PR/f3dex/F3DLX_Rej.bin | Bin 5072 -> 0 bytes lib/PR/f3dex/F3DLX_Rej_data.bin | Bin 2048 -> 0 bytes lib/PR/f3dex/F3DLX_data.bin | Bin 2048 -> 0 bytes lib/PR/f3dex/L3DEX.bin | Bin 4080 -> 0 bytes lib/PR/f3dex/L3DEX_data.bin | Bin 2048 -> 0 bytes lib/PR/f3dex2/F3DEX2.bin | Bin 5008 -> 0 bytes lib/PR/f3dex2/F3DEX2_NoN.bin | Bin 5008 -> 0 bytes lib/PR/f3dex2/F3DEX2_NoN_data.bin | Bin 1056 -> 0 bytes lib/PR/f3dex2/F3DEX2_data.bin | Bin 1056 -> 0 bytes lib/PR/f3dex2/F3DLX2_Rej.bin | Bin 4496 -> 0 bytes lib/PR/f3dex2/F3DLX2_Rej_data.bin | Bin 1040 -> 0 bytes lib/PR/f3dex2/F3DZEX.bin | Bin 6336 -> 0 bytes lib/PR/f3dex2/F3DZEX_data.bin | Bin 2048 -> 0 bytes lib/PR/f3dex2/L3DEX2.bin | Bin 4496 -> 0 bytes lib/PR/f3dex2/L3DEX2_data.bin | Bin 1008 -> 0 bytes lib/PR/s2dex/S2DEX.bin | Bin 6128 -> 0 bytes lib/PR/s2dex/S2DEX_data.bin | Bin 960 -> 0 bytes lib/asm/__osDisableInt.s | 18 - lib/asm/__osExceptionPreamble.s | 1123 ----------------------------- lib/asm/__osGetCause.s | 15 - lib/asm/__osGetSR.s | 15 - lib/asm/__osProbeTLB.s | 64 -- lib/asm/__osRestoreInt.s | 19 - lib/asm/__osSetCompare.s | 15 - lib/asm/__osSetFpcCsr.s | 14 - lib/asm/__osSetSR.s | 14 - lib/asm/__os_eu_802ef550.s | 22 - lib/asm/bcopy.s | 232 ------ lib/asm/bzero.s | 53 -- lib/asm/llmuldiv_gcc.s | 100 --- lib/asm/osGetCount.s | 15 - lib/asm/osInvalDCache.s | 59 -- lib/asm/osInvalICache.s | 44 -- lib/asm/osMapTLB.s | 63 -- lib/asm/osMapTLBRdb.s | 36 - lib/asm/osSetIntMask.s | 138 ---- lib/asm/osUnmapTLBAll.s | 32 - lib/asm/osWritebackDCache.s | 39 - lib/asm/osWritebackDCacheAll.s | 24 - lib/asm/parameters.s | 18 - lib/rsp.s | 252 ------- 57 files changed, 2424 deletions(-) delete mode 100644 lib/PR/audio/aspMain.bin delete mode 100644 lib/PR/audio/aspMain_data.bin delete mode 100644 lib/PR/boot/F3D_boot.bin delete mode 100644 lib/PR/boot/F3D_boot_eu.bin delete mode 100644 lib/PR/f3d/new/F3D.bin delete mode 100644 lib/PR/f3d/new/F3D_data.bin delete mode 100644 lib/PR/f3d/new/F3D_data_EU.bin delete mode 100644 lib/PR/f3d/old/F3D.bin delete mode 100644 lib/PR/f3d/old/F3D_data.bin delete mode 100644 lib/PR/f3dex/F3DEX.bin delete mode 100644 lib/PR/f3dex/F3DEX_NoN.bin delete mode 100644 lib/PR/f3dex/F3DEX_NoN_data.bin delete mode 100644 lib/PR/f3dex/F3DEX_data.bin delete mode 100644 lib/PR/f3dex/F3DLX.bin delete mode 100644 lib/PR/f3dex/F3DLX_NoN.bin delete mode 100644 lib/PR/f3dex/F3DLX_NoN_data.bin delete mode 100644 lib/PR/f3dex/F3DLX_Rej.bin delete mode 100644 lib/PR/f3dex/F3DLX_Rej_data.bin delete mode 100644 lib/PR/f3dex/F3DLX_data.bin delete mode 100644 lib/PR/f3dex/L3DEX.bin delete mode 100644 lib/PR/f3dex/L3DEX_data.bin delete mode 100644 lib/PR/f3dex2/F3DEX2.bin delete mode 100644 lib/PR/f3dex2/F3DEX2_NoN.bin delete mode 100644 lib/PR/f3dex2/F3DEX2_NoN_data.bin delete mode 100644 lib/PR/f3dex2/F3DEX2_data.bin delete mode 100644 lib/PR/f3dex2/F3DLX2_Rej.bin delete mode 100644 lib/PR/f3dex2/F3DLX2_Rej_data.bin delete mode 100644 lib/PR/f3dex2/F3DZEX.bin delete mode 100644 lib/PR/f3dex2/F3DZEX_data.bin delete mode 100644 lib/PR/f3dex2/L3DEX2.bin delete mode 100644 lib/PR/f3dex2/L3DEX2_data.bin delete mode 100644 lib/PR/s2dex/S2DEX.bin delete mode 100644 lib/PR/s2dex/S2DEX_data.bin delete mode 100644 lib/asm/__osDisableInt.s delete mode 100644 lib/asm/__osExceptionPreamble.s delete mode 100644 lib/asm/__osGetCause.s delete mode 100644 lib/asm/__osGetSR.s delete mode 100644 lib/asm/__osProbeTLB.s delete mode 100644 lib/asm/__osRestoreInt.s delete mode 100644 lib/asm/__osSetCompare.s delete mode 100644 lib/asm/__osSetFpcCsr.s delete mode 100644 lib/asm/__osSetSR.s delete mode 100644 lib/asm/__os_eu_802ef550.s delete mode 100644 lib/asm/bcopy.s delete mode 100644 lib/asm/bzero.s delete mode 100644 lib/asm/llmuldiv_gcc.s delete mode 100644 lib/asm/osGetCount.s delete mode 100644 lib/asm/osInvalDCache.s delete mode 100644 lib/asm/osInvalICache.s delete mode 100644 lib/asm/osMapTLB.s delete mode 100644 lib/asm/osMapTLBRdb.s delete mode 100644 lib/asm/osSetIntMask.s delete mode 100644 lib/asm/osUnmapTLBAll.s delete mode 100644 lib/asm/osWritebackDCache.s delete mode 100644 lib/asm/osWritebackDCacheAll.s delete mode 100644 lib/asm/parameters.s delete mode 100644 lib/rsp.s diff --git a/lib/PR/audio/aspMain.bin b/lib/PR/audio/aspMain.bin deleted file mode 100644 index 6fe732ddbdf455756911828c6d772381f735eeda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3616 zcma)9eQZKQlpg) zX+on7b_jNgLL6vN&_sZ#;X_-(M@Kd~6);uk{2n9iq^;_-Hl4;k8{uO{O<35g!!Z{tM1`yQjX|~+9H8BdM^j$8+wAfNe{RSZQ2F?>Gek&S+>BxR? zN4DA%k+Wz=?Fo#=+Lwb08n|gr{1sQG?VI$mpb1<~LoQwc$X}=W5Rr0 zm>{QXR@gTBIvhUSHvk|75c7NyL{yK+7~vY&F0n|xD-Hfqku66Xs1l>?;10&X6^Xdg zM=__P=s{zT`awP_ffw66PF;i|2$YJ^dT^@@WVG_p00eVmE3hpe+eEYy@#nM$ATMXh z#|8c(5q(sgvn1zNiuL(e_vPvVehc{EtAhV7^HtvROn_I}n3&d<& zfs~DVCxw-S_sw@M#cw=YpsgKi{HzHxKld zfUGN9Z`2B4>uUSLC5TI()7c`0I;!-No&j20eeV7nw7#7yBql~Wn6;Gw76Af9BJOd- zMr-DLi>d%(IE-h22x_=Fr(FpuH5Y34P;TF$ZkY;ErpRg2?*r2p1hdR1m}No1#CgM; zft6_RLo@D!JwF48ehm~T{ISL{m>W?t8w zBHVm!M~blX)>w-0^8?!y%7LHTl;WcsQ~dl`ir3cl@!*r?{NTF@e(s)8I6{my{FL?-OQR);XZv9(3S~*jAi*gaQM&GMbZ+ct^&K8gFiRt9@XyKPHVY8Ch&6~R><>pX(z$4ZqE zN5}sH8qQM*fm$(Yfl!{itLZKv9zTB<X>Le!6c)W$;L9~G9G7nPWw`pAHIXSyA4s&10SEd$oE{{#Ve*p`0A;ZeC<#p zfBns;_<_!q{6~|GG@pffwsvC~FKkboLY%K)83cD?2bPl{COWVTfG5$8PnGGj(8h+qDGH)|5?=Zo<$wc!OlgtSwC-JqJ+cTcz94Jbv;7xk* zb*6yYFz*61ln%qiR+ev^!g*iDvJBS^&#X(Oip19( zzQ~szPH~tT(dV80qh30+n~&ca=AYde!M0ue&eXT~?J1?=5Xe|>M5jAMQWO912HIeMu?k@=au7x})uGx6qPypjjv z-I~12Z%(Ev@cqwWa)fW`c@5(|>crd9)6d`U!FaD?ysLom+}wOGhVeQqjALP((1<-2 z8pLx5wGdtns<^0wiAs#|HG{*L>t()la0K&JC>PAhL!3}f{7m04V!O=u^^Fimd|ywB zc*5AvIXEcSFBs$WBM%m?8*yRb+RgGo`4cA&2gnQNRY2TOUWAD_x*r$Dd%@wEa(zg@ z(}x^Tp2P#?NnB8##0TYmKPSWiy$gsNoV%X5uuxYP>dHc0<+T3H{rAu8IZgK>y~#>6 z@Du+vHMSkzOmEYEe2d`!7OU`1+&u>PP6D$J%TG|V`!V;AM$>dB^NN3D@J?{vX#Au1 dVl;+V{Jn$5SU483GxEi|`WE@lz7;9fe*nBkQSAT# diff --git a/lib/PR/audio/aspMain_data.bin b/lib/PR/audio/aspMain_data.bin deleted file mode 100644 index 1e74134e94fbb57390d684a0487f6831c7a414c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 704 zcmb7+T`22u7{{Ogf3uBk_V$8VDdgSy2Dz_x~ir z`{e1*^k@Fw|7=uX04IEdA8-N>fGE)UwuL5)@pV3b`XJt<8GXZ|S&XLk`3l7c80JlT zFC=ex%nf)QGA)KUPo7(50fU@kPeaBFuBS}67c;HsXI~9P#rPrODH0T)!}vef2}clvLx%!Lh!;cv&1NxhVqg+*U|@#` wLdT85PKaO@Vf`-2WF6d0DHk9jsO4v diff --git a/lib/PR/boot/F3D_boot_eu.bin b/lib/PR/boot/F3D_boot_eu.bin deleted file mode 100644 index 6eb44776299c793a87e5dba32323874a7c7993ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 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 diff --git a/lib/PR/f3d/new/F3D_data.bin b/lib/PR/f3d/new/F3D_data.bin deleted file mode 100644 index 194598c9eabd9b47cafc3a23dc825022ef6d0704..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmZQzU|`_)7ia*I0SxT|Al?lodGQPe2EiYU(?PWG1cr3+4E|pq*y{fSr5P9)8JPb6 zcVJ*(VKZi8sQ>@}2LlI#1A{^X1LK)9XBZg&{|Bl7LMY9|fC?F*W`N8AVK5)47R(3J zKo*Quc75Lh96Ltuqyh-iwy3ULF0 z6(A^FBitZd0;FSveS~#{E(o0vS|ZdV6d)`h#3Q~({D6dngpOp2c#HS~fe4`8NC0B@ zdk!9mZ;@mgz;;6f96-*X184x+0m5+50AvAiJzM|>gP;ObeGeGr|1+>KFn~Ob;c--@ z6!C(B0~CV86~a=BiZk=`tQ3s&3_Nrc42*OQjdU%|8G_wC6++ES6x`h+K*~Z~9eu47 zf)yO|Qh*xr^K^i0=ft8S9R&{s=Zw_6bR7k61)tL5l2o8jkb-Z1eo?B9f}cV_etu4B zrH+E5LU2)LUS?Thabg}9*xk$uj2jp)Fn(YXU@~9|U@Bmmz_fws0;2`<2Nnhv0pNfK$0t(;3#)A1V%$(Gz5lV2mk;|bacW1 diff --git a/lib/PR/f3d/new/F3D_data_EU.bin b/lib/PR/f3d/new/F3D_data_EU.bin deleted file mode 100644 index 4e7db003fb7e50d336df06bc63f182a2b5a15093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmZQzU|`_)7ia*I0SxT|Al?lodGQPe2EiYU(?PWG1cr3+4E|pq*y{fSr5P9)8JPb6 zcVJ*(VKZi8sQ>@}2LlI#1A{^X1LK)9XBZg&{|Bl7LMY9|fC?F*W`N8AVK5)47R(3J zKo*Quc75Lh96Ltuqyh-iwy3ULF0 z6(A^FBitZd0;FSveS~#{E(o0vS|ZdV6d)`h#3Q~({D6dngpOp2c#HS~fe4`8NC0B@ zdk!9mZ;@mgz;;6f96-*X184x+0m5+50AvAiJzM|>gP;ObeGeGr|1+>KFn~Ob;c--@ z6!C(B0~CV86~a=BiZk=`tQ3s&3|w>+3`}$l40SEd7=qnB6++ES6x`h+K*~Z~9eu47 zf)yO|Qh*xr^K^i0=ft8S9R&{s=Zw_6bR7k61)tL5l2o8jkb-Z1eo?B9f}cV_etu4B zrH+E5LU2)LUS?Thabg}9*xk$uj2jp)Fn(YXU@~9|U@Bmmz_fws0;2`<2Nnhv0pNfK$0t(;3#)A1V%$(Gz5lV2mk;t5_G)) diff --git a/lib/PR/f3d/old/F3D.bin b/lib/PR/f3d/old/F3D.bin deleted file mode 100644 index 90eafc23edf07689ecb7bb2a25e7d9d4882feab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5128 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 diff --git a/lib/PR/f3d/old/F3D_data.bin b/lib/PR/f3d/old/F3D_data.bin deleted file mode 100644 index 56a28db14cea78f2a8fb3609d69550d4fa48a92c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 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 diff --git a/lib/PR/f3dex/F3DEX_NoN.bin b/lib/PR/f3dex/F3DEX_NoN.bin deleted file mode 100644 index a55a33b0521ca5c82d31bb24e573a75f62fd1409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5168 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 Q-`K|-V)5}lz7D|u0`V!^F8}}l diff --git a/lib/PR/f3dex/F3DEX_NoN_data.bin b/lib/PR/f3dex/F3DEX_NoN_data.bin deleted file mode 100644 index e1570d983a3ff0ee4011b435d93ed10ade6d7350..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeHGF>KR76#aKS+ZU-)FFwJw1B%BERTRi#F?lGEDT)AzbW22wT2X3CO{H$WjSd~W z!QdeS17ijT#*PdbGBPl9%!bDZRWkqVC{l_L3xXy8-@pI<_xJt#U-tn3He#W1*YH-L zB{;1qAHdxv?~ImL5GsG;M`p)4eg+^w^E?1xc9TM!=QH3CfTw|s$73LQjuFUnO<|eI z{0wuBk;2Bt(eIKY%WB zmyW<(;~$X597YzT5uwBj$8W$N1D5~0Cbb+GfGPTy!k0t;tM&9*$9wYX+&g<2?jLxM zo4b#?^>*0y4Bf9kXnK3$>EY3!|GMw(^-s^WVZbO(0L9)i3I#xD9)39qx4K!5!`9M^ycM!C OR~=Y&VAX-Y(t)4b`gHyP diff --git a/lib/PR/f3dex/F3DEX_data.bin b/lib/PR/f3dex/F3DEX_data.bin deleted file mode 100644 index 212139c886ac97479dab621dd226b2187f7b9534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeHGJ#5oJ6n=L-+ZU-)FSg3L1Ii5y9jYo2hNzPVpcxRdU?ANR(V|wA+EP=gn{T57 zLpB&ZWME*-z|gT{h71`ybm+*2#|j}G&vqLrMTiB#lK1Z2`|U5lRkjENkK)2Y`I5>z5oz_47m9TGsYvgPyaDd#BF(w> z-p#5P-kR6)0+D*Y$K8qBbNAhrTd)3bht)4~U&eAIFIIf{P==z7)u&X}{>B%}Zl`eo zUDPfEL4J*YKpJc0G9`@`N-_=n#`t5x?0=V}W`F_YP5;vPZ0djYp1%my=Idj1^eWok zQBN9=9=FvE-CuvuP+QUA?q09^rmMEPhevOtUZkGw9rSh%wxe~t`GO`xG9eiiv`#}B z(>@*232CyJY1U^QvIa5fEc8jn21Kv{8?nstt-#u~`qrs+X>+@7w{2~IwkP(Lqnwr# zJ0G1h=PMVy$vgan5BYfoDyx;Sa*RX5fKi+Pir6v=g@I=N@XJZKg=RSpE6rQsxjRQ- Lj=&s&zmC99>`-z> diff --git a/lib/PR/f3dex/F3DLX.bin b/lib/PR/f3dex/F3DLX.bin deleted file mode 100644 index e94f2de612a082ed0280c23f4e66144a51bb4a6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5168 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 B@_+yU diff --git a/lib/PR/f3dex/F3DLX_NoN.bin b/lib/PR/f3dex/F3DLX_NoN.bin deleted file mode 100644 index 6c9814ac7966a5f64467bae9b59c605e50da4c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5168 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 diff --git a/lib/PR/f3dex/F3DLX_NoN_data.bin b/lib/PR/f3dex/F3DLX_NoN_data.bin deleted file mode 100644 index 722968dad9ef752ce97821cd08ede5a0d154ba4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeHGA#B@F5WWBV{rw|V>W|&YDVXv>K)@7r3yFpdrnR7oq75u%j+RcT*42@kN(Ght z*$TrJU{F|45KvH9SP&2}Fj!c&fPre{?|zbIN~dXL(@5_A{d;#l-}z2H0DzT5YP>ak zlxRso^FajQ70D;7{VRxrXyyBeCk7t_5TM3{0F0L@B*xr z$ux(}V`Xe(?ARV_L{p6@*h|ct$Iq8Bj^e>W_5>}zC(~@|Z_4x$qF~kU<6V%c<-GQ8 zv!DHfANm!U`qBsQ+S~J*Ug#CG-@LQzd2kV2=47t076r#aPu8*ejIg!__$rns-Ol`A z-Qm3%{)G3gf1)*JwK5}(2ql?0egpm(F#p~S$s1q*w&`CQpAY@7)~nYwwejvq9lnj5 zJL+Zm#a6vkjjPJi)6%oD+KvxeyPd}ShT3i%9Day9v8wLwcXsxhaS6YCNs~Sqk`a}3 zoz`fZc4?muNrknUW?dGMC(tI*QkRU_DUs}yU9*vsb3&)(be&7*h6}#V>s<3QKIC_< zayQ+!+jFnnTOmb7MB+sB#g`0ZikVvG2$zHbqqqSSXUiyz0YdxZPd4GfG$-q@rXRQ$ P=3)Yi2`nb?*C+4;_&sx> diff --git a/lib/PR/f3dex/F3DLX_Rej.bin b/lib/PR/f3dex/F3DLX_Rej.bin deleted file mode 100644 index fad03ca502b30b9106f51112ae62f52fc752fe07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5072 zcmeHL|94bXlCSrryI;O^zn7##UWX2SyAvd=sGYzviH^gY5TMV!LV{lo0uBir zQ4o>PK=Z{tO&T|-oEZlrh`7fVX2dTzJ4)6A;dPKNIuiEGY9<1bPLDg}3m{(tZ|in& zoHKvH{IKtwPQ6>VZq=vi-d9yO8DJkriUiFGj!Q7Cg+u~y01QyTlmCe!5(rj7*lmD4 zk`K2P{M!28*h+v5kjo=JK}O#D_!XD48b-TQ0|6NP|MdDxdYY>Zp&yk zfb+x^X<3=CgVX%ox|YVW>;MVeZ&`@#GRXm9-v^-Iy-ld!gBUo@z{|knaWhf{%Xy5N z=UUdTXRNFEyOsg=SCC%+%R$MDHcO(C+C|(_7#j3|JlA?V&|tN4-$^b^;Jy<{#yHwe z?L%4AbN%Ic*44;J$pt%03C46(`~bkd4?){^0Nk5)f<0Je-56U80!X?66Sa|CW)Jd_ zHW%*!1%KJmvjEKttn1ASt!qR?*`1n9sw@jW(PS{RQMj%I9@a<3Q7-l&D7f~&V+SA` zJbD;b>I5Xy03F|-;qR@+*hUC86Oin*kxeO;_lu9hmyfR9*5Eg=QU$2 ze!!#~6;-(R^Yo#(JR=(@cl*AyKE(f_H3*(z5~%`7HURwv-3jtfCD=~H`c}eY9eWRS zchRc%J({W8>kTle*d~6*qeWW z=S48WP-^(`#2J1ETFwZqYd@t!`zf#3-l5Cw9bP=+wwp&k&}=O4p#dk@m7^cHZS=*T zPY!f|L0_z{Y5!bXM&EmUTKnhj<@CM#YMM@1pVCtg)-;{8zNDv~nigCPBAf8swEPxf z6r1pfYHNWUa4rfk-%A>O=}~*Y1wdb#qQ)bs#`y@FVQyi*n@#NJGv8qgX7;gj zNWWRx$L6hkhdn#J&n!~zVP~elV-{uH!>%pGai)j)mf|@39yV|KShL7^56U%|MJ^9J zvve%VG_bnLHda>_LmS6UiP)*{#u!@AW}^k$Hc;D7BGfj13zdJ;l)R!nN#$US_I`VW zUcE4d7QXQ!74;WrUicf@xA`0`tT+^+3edvfF)CIbr(#)*7Mb6ag&Yzc>^gUc0s`%R zzMAg`?Or=IbRWu|e|}mbPa8weuT{%JOM>*s`AAys$nh;{xwi97i9Gih+GfVeHajFX zV{|p2XEXdxKF{Nl$jcqWW^_c#HZKXX8QPZgJjN(JKf&opDOi(!O;^%^byM~_)=CfSY8eE0P^V{ zqw|?GdNPyzDw8@kGD(ZEV!y_UwXMwOFJ?Y%7n|rO@xNNXWfQfQ_yz0To@((#PqqC> zPnCEyiu`!5_1h@tSJ{t5@tu7fDP?pEKM4 zL?oU!V{gKJJog6XV%}ba-*a|4UtZq#8kF$wvHeRTXkFlH{~sczenq7AuLz`GAp*~* zsb3@SHw1_vg^4J&Vt)N5;)CCF-T3|~+G{P5)G!QFaD#2%fLrsYHWDedfe7X*bOvmn zo2yA9X#frPehMiE#hj>vS*^>apMV)4qB+rvW3Not`J==SB3~76M*$H=V<)tv`6fH*GwJqaU&~`y`PbIT?uG%I81i(vyU* zP3LyRk2PP@;AUndU*PXLzB{lVXc;G#g0T)`Jrs<9;10w1IH-rBKZ4R| zF^s|5YV6wu)rO4qdT2h=kV7DzI}jMr1rEbj3t9`LVZ6E{=2T2^~<2WD3 z`8dv_ua#s3uM2W{^lk`713(aK3DzWnzY?sUoZc4|tt)X+;PrDD$MyZXXhGK2s5dJT z9iFwB$0}Nw73K5)OwZAeG$-cZw~x*XuA#ocIM%ltJSSt#y@}&7AZ!n_d*9m#W4HTR zkrstK#VGM(eG|8bL$(|UIr0D=*zSis%?L>a5VGe&NtJ9+fHCH48n8fZgXwnz+qtB{ zJd5LbwFBmS9G_V-V1A;3S>*=0)=_JIl>ziMhi2Z$1S)uP%%3@d?zEpYSG%y;%FMx< zEmI+9Iw`>#x68hjyoq%9`TFvA39u0t9s>94VH&A&gdRZthJYGsMJl>RiS^q@QEzAW zor^WptL-U&T*aDkd{-!A5>V-IcPR6xKz04mJE8)J&xdZOg`HjEzt!GO#RJ{K9ib9h zpzX=Qlp@?$Tf%XL1jK_lLehvdu8=qk^<;cj{vRTaJul=F{7xfxO)+B?0^K~S#(bed zVBYQ`vl;0?l*oLM1&AV>RPro(aFf?DjA8Wj|>hQ37@S1lj8O(}KGVfB6_sU^& zI?~9>{bmEwKm4-a45||Q&&SHl`;q<_$4?=BwR{rxGKBfAHSt`>>gL-+Ip@NxZq|wQ z?|_57u`sxPKjbpsg8t~8AhX@egNUh~`JV1Kr)3Y>d%}qn?cJd$X?s(%6*j`Y)m-dU z(su9GhV0IA57})%+O*=KG`=lQ7N_wwE$>d_LOf|)h=+}MYJlzi^F!?I?qasLvzue% zxR`g!GB$kn@0f4)vNS%96Y;SpR#dYmo}9`SHw^i*__3N$&Ld%tdB}&S`-uiI+H`sn z_l0ihh=oonfIZ8!bPV>sI*Gmgs+zi{bKddPRb8Nk(MQ`ac!7Gh?P>4z3e@{bH;*G7 zzI#+U&aXEHBSAp<)%}qgJVV;c`Qz`0PpR7US$P?RsrJT;;@Hh2sk&qO&VH+l&1sW& z_E}%EIUgMZZG9N+xIkSMrUyq)*?YlC(u01--d?Mh9<1W@3O!hPBz4xglx7~OPMvWs zqnQV%roMJI(2T=PsV-fl86VXkwXrLwtC2d`l@n7_7ZCqQeS{Hev8LsY~j!%s2S6)FoFV zi*!%M*cdE=^B27`+kARjY5;qW&A7f-$NutW5%w!zvG~i?DU1_~#}J<`u(!4~wSVnJ z8m%dR0MF=-SK7*_V{f!$w+gPM28*LV{rV~vM}PYCmF%rHS7ANa*;^l-;Pz7e-c_kS z@5PMdgi}t6ksB2i&lKnZx;HuPjY9rQyZh%@$O{fQTBL6|e4Tu@I9vm-C zoxwPwuJ$utUOUqA|Coz;PZ6~XrN+h(6k}?O>*~qB)xbivm$gfvHsUwY*w5;)=d0^H!FzGDAl);^skcMMyym1u9WGkbSwr>r^Qq_K=~O=z zq54!SNu`Uxo_Vd>(0Piz$%LR~HdchGzojGvx zlPKy%zH)R=FxRx}Zo2JW7xwOU%r#qR?hCCnx3ZPpb}z7n_bP1iHtd0HS?twqTZ4Yp ziX%3>13R(r4UbdQB|XYap+}h|_9%0t9;HrBD0MN&=; z%8s)vkBYjEAKj_@m{@t11uDB(Rb^XpRInmiDzwH+g+my(Kk>L>j#01%r@t3`AOHPn z;W=iUi2W({#rQb+pK+oFQM-CFj{RaB`^7l+igD~8I8i)5G Xu7j_`zVfbHdiW5V(vNX>et7;5s64w* diff --git a/lib/PR/f3dex/F3DLX_Rej_data.bin b/lib/PR/f3dex/F3DLX_Rej_data.bin deleted file mode 100644 index fd66da740fe98b8eb12c6a8bea29e0992a36a74a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeHGze~eF6n=LNQl!vpA`(RD{Q**{br5mLP}D)B)WLSM*h;I|6xu?!WDr~(1eg2? z4&CgS!LdUJ2S@(^!HlB9`7ZrsD4fe3*L^Z`B+B(eYQ=WwLo?WZFfu+M=RV+ynI<__~? zjM!uTdnSv>H8L9+E^CzdhWsd)eD0CN1t{1(roS{kDgDzZyPx6P$1UDGGK(d?l}hjC z64}xTm$s5vP4T>0FIO6c(*n;I>diB=Ve-97wNa`T%>;gVh?6$y5sxyOq#0VHm$XfL pWL;qjSCR^lWvG$EP?C6xLFDf+W&P_ql?=jQ0>K1=3H-wed;sC-We)%V diff --git a/lib/PR/f3dex/F3DLX_data.bin b/lib/PR/f3dex/F3DLX_data.bin deleted file mode 100644 index 5a2ea93beafb6f1eeacf6fb8b79ce6945406c9b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeHGD{LD<5S`uZ-L0iaS>Gzz1XNy7U{FPAO{}5?RbmiTRtxG#1-9x`iQ48Y#gWWz zSqcpz)!;y2K!9OkV1R)^L1AE64+KOd*I7Gu3Fi6o!Mib$3_B3ZeSeUT_862}D_ zUgy8ahtkNhNTiSuUWV_(W@y4<{w6%jpQ{tqQ|T&OGwQYKh#GdE685$L-}vHq+G!kI z*i2mW)0~9}&v+rGzLIw=L4gJgDv#I~pd-1ZWx88R2(VM8b zt2ax}wrhGqkJq1+^iFiRx8H8OYv`TE;n9bv9qH%$2kqU1X0(o9zFf*fegHW%a_0a5 diff --git a/lib/PR/f3dex/L3DEX.bin b/lib/PR/f3dex/L3DEX.bin deleted file mode 100644 index 7b84fb77ce5c3e07b36ea435210fd5284f41701e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4080 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 diff --git a/lib/PR/f3dex/L3DEX_data.bin b/lib/PR/f3dex/L3DEX_data.bin deleted file mode 100644 index 1b9ca5c6bd46cd2addcee7194339bb6106ae84ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeHFJxIeq6n=MJk}DKU$ORP?Z*&k*yA*NApy(h{6j8Spe^5jdumuMpH##_EbZ~HV z?C9X&;NaN7!O_9N&5lKc^De1ksp2Gx^u4?H`{m`m#{mFzN48K>KwvBHbLxJsn~_X% z2(Xks05NkIA}Jd{!3HkCT2gr=B_PdBjiHrMvxY)ybRt1v6F<>u4Gl}Okz5{_$SNDF z13u^j;2k-!OT2z3?wNJs-fQnn$y+DZJb275-AUH)n3r`KdtkThl=&>rnET@1utQhq z3Muv3eN)cdo2PZ!!xPP>(|$;a=D&5wPuuvA{TWlJviiQ0P?oyUd*BP>TR`h~_h?W8 zQPZn%+u*IxU-cFi3w&ntfLGRn^$k9ko0?wXZ!|VCp5v>*{?>N6v{T}%rTxloP!9O~ z_Fj2oZ#@`Mop%*c71dB3+jtZgaEN1E#Wj>C1yUp-@zF4ZsMr;vIuXbwf}E2YX&Bs? zHA3UWxH2A1+svCq^T@24cNSPfR>3;3&a4}&PJ5|Ow`fc+=zWG}Ml&nzt4f~#UtVx~ P%biGP1Dy^0(+#`=w}EE| diff --git a/lib/PR/f3dex2/F3DEX2.bin b/lib/PR/f3dex2/F3DEX2.bin deleted file mode 100644 index 7137569432d8ffe41cb8f971c7ef9dcdf5a5bea9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5008 zcmeHLk5d$PmVeznGxSUY-2($OI4sRL2szDW6piR^&Jjn!?*j(4jEI|v8iPM#{DCGY zQ4n4ADlHhrA6MnBo{8cn=o*c+cU8A5iJtbL0j#o2Qdx6E&Nwrg)is`y#L)MeP2JX2 z-Jg)Int9*%ecyiH_kG{@zTfw01~AIV(S{j6)4W=SbesWHYUxRUIWR+);J%(HU(mP$ zaMyq%xLJeII&khL_*nsiu3P^yB_%YjR)0V&9rf-cBWSXkxDu7QLgR|&dJ zzN=_p1Ampzz5sZj$KwO>Z|~V4t;YO8lYk4pSp_;T-wiegA=q3B9X!o1!9&u^>yq5p zL2aFrdv%`g(*-`N+iZ$%x2Z6hv@cM#4(jiqe%P#O@Gk{g2gy4~u4l>jHHrG^NrZ&2 z$KM6eQlWi()e!&4?{RAR)o@%JW>%5>L6Fm+b-mL_tuY@3a-j(_Ult&-D!6yK@Tx}> zHnr9}uW&UW<~M+t2)2LPzSj9+VWB(#p2J&2NO+{>xOeFicb8jV<>%_F^2kq%JBZ)K z!54}qysG7zPpD7SCvrtbwwk49!l%B+AjW@C8&3{^?c}!rB;RNCX*nqhs4p~=e}B1i zIShdM5zvnp`al$v$&Lxn5U?)YlL3~69b^Da6hk(t4eD! zpU|G(4IU^3A+<{5-mLN2H~-(g&{a7alq$hpZw^{M3m%~TAfDDj`he%^ENXsly-#~` z-&bdvzH46`pLm@Yt@Zmp89c5@Hig<>Yl$hJjwdaCJ9zvl;PA^%sYaH<=7OV z`&dxu)w6{w`tO7ReHHk5XOrJI!~AaIOz`?Ea9P#+2t?Q4n}r*dZMaeG zK~TRWz3sSgP6!uPe~iGl;PQEEaM`@k2=mr3S8a&7R+ckqVGEO%_24AA1P{$@!9&$O zf0r#vX43L7ODqW)8;W?A7%n$9cw4>&e4iK*Fqy5}R`)T!;ZcYO{2l3M85tM88A4<1mK>BI(v2P~uLMMnFwAWTl z?H?;NS-G=+f%8Lt^I;$5-6O5gG~4XlUEsuzgxq@H-g`pRvn>F-MDDY|G2lI&=CVLL zoihLqNGR$&oXLHrr9n{hSb1#oQBF4*q9z(H&1ocRE+bi!5Q-}er|L$S*=tB@D#D^l zBS}p|sOvRkHNz0SisAC6kgcB^iC&MD|3aaZ_yXzdgOwF0E`!KE2!|t=0vx-xuA6LaWY?aTv9Y^9ay`X?VDwvg zkGs!>xP&Sn?(W^ko;UFHhpn+pbv-UDSrf}j zZoqYOSI4s4b$D~`n8TSS7CtD(qr5Eu~dN?+qzJ?~W z)7l;Et4oVxg0g|xKM6%t`Bi4`DUbE1tYWsS6_Ej{n%N@qQI|Q0rqT+oxxj9pdueFi zTjxSCyS$Ozx>TOq4H~=orxqIbgx$Ot2G!xHXL3@?s-FPztsxF$nUy@ulTM*gU%hFi@x+}><#eA34h`;5rxlq}5N znjblxo`sz4wvpl)kI(6~k<&>6jw>s)&Rky-8aFp zyB`v)_;1SV)6V6JrDeN zb4{T>jpzv2rPqR=*~YvTcyHAz=I~vG%T<0R7P{e1l^^}7HOyAno>s&4?~=H`;HWtz zdZKUzN7jbnSV128mA9e2AdlW}-??1)2n&|JUFwJe6IbU$M}eOuPiglY9y~xgHO7xV zY+t}#WiG9q*=Dwva<5SyuXZS%+!dDWeyfyD1(rP1T`D{ej9+tAcW`%^tIlmat%!`D zb=4^Mh$xOtFjl0CD1~HjR5zhpe}V3M7Y4Rw8)E`II%a)i%p&^C)PS*$=;*1ZF;M$N%CK zFga&hpaYuF|A#VedkyVjWBCy}5pm+F7Pki3II+G5hn1|sUlhO3RtUQgraeH@{w}&! zPDR)2WyZ6L9f#Gm7|+waF>HC5V(MKSe7wk5M)yj~AEvUMXIm-1DzJObRQz}*wS|iK zBRUt-58jS{tJ+!Sgxg&Yyf)@KQQLLPOLq~gWf|K;MjovvqqW=^L+ez3-Mw`(s7!5< zN8F^`wzIu~^I&5s@6G^DYGU?Z%s%-gorfv^d^O%Li8x};wD?WQi6g?{c)u$VN3E=g z-*hG6s7c}YJ<)+aP-20uCBir1tQ4tbV#1$J5P0JGAkS{QSHb*Gc7v8n}FQ@a5Ud*M}J9K zv{ZGVKU^N2uG(SZRjuFrgTC&4i-CbkcFdDRUQYGZPA%@mkg>s z(LB0K21jp;j`0#dp(h@dH{#%&P&`Iw-r!T@6S)Bg+gjuO@`m_Va%23qyeWQ5UQg%O z{`dpA-qL63vh-MemY)3+gr@zf(B$V8?DSaR!L{^|M213!7-|M!5Fr~u)}zMb^|d+Wev)vSBh zf@9nv!bnoU!m*}BtvVqn75vB-K(LJp)+P{w2gJY0_9#D66)cRF_X;=1{ub=BX0_^1 z3#-{Q$g(h+M*~@y*Q*icywE{7wnLSB{T_vCXR4P|<)J+Gd$=aTpQhmH)U1Af?ExQQ zuLoL=vXyXiZwF!Y4oP~VB@z}_mF`OR4zbx>Vf33JuXEV*bi$m>&*fLTyF7HIR-8CE*qwPGQOG6<9JSj3cXW zoYdh1lpAiOY=ad{njd0PV>y$5l}z7+cqYFQCZDQQ;}z$WLzoLVIs{(<1$CloIvx5G?!@bS~i|b+RpZ7@1SpCv)RGC9mprOvh??9&QqOO qe99ns3Hr|NAiTYS33)p#+YoZ|Et{A*@Fm%${O|l^7mZ7^Z2KP)DMHc! diff --git a/lib/PR/f3dex2/F3DEX2_NoN.bin b/lib/PR/f3dex2/F3DEX2_NoN.bin deleted file mode 100644 index e9a3b4cb2c40561e906bf6f5a5a4acc775f812aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5008 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 diff --git a/lib/PR/f3dex2/F3DEX2_data.bin b/lib/PR/f3dex2/F3DEX2_data.bin deleted file mode 100644 index 70871391f5bcef78fa6a562f48bdfc84e48aecbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmd^7J4gdT5S=~u?lvm8djw(;$dnc$r#1;#Y~d$Gkf2TM3~EU5bAl1lp zECekqEK*tuHb<(I7K$lT1lPSg1+lWQ5odUBe(W+cy8wS%Uc&Z^Bb`?^uD(yA6y(3> zek)#EFXBq2fyZ0k_6{!3FD{iZmP)PS;oOXyMcnX?say>AgBp!#v1B8&!BYleClP>XLKzas}0J@^Z8=@uJk#_hL zFNlEmc~)TNl7n~_ZSD#w7Wg!uc9I{;olpxJQUjtW&V6NcLQN(IX+JH~)zn?;CUqm) z6ltCw(lgqjPbN3B=B9aKUYUUf)|6GW8rHdWZ}sg-TiR8-W#8I8#+b`W%x4$ufejL< jRQ#+yxUQ5xe%Wv(sJ9Xu%~B&Iabnm`pub|t$T-0}0o7`5 diff --git a/lib/PR/f3dex2/F3DLX2_Rej.bin b/lib/PR/f3dex2/F3DLX2_Rej.bin deleted file mode 100644 index 559bbb6153314b69757c1f2bbbd8b4f915bdbc26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4496 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 diff --git a/lib/PR/f3dex2/F3DZEX.bin b/lib/PR/f3dex2/F3DZEX.bin deleted file mode 100644 index 86c0af4817aee352673acdd095b54fe247b6d59b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6336 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 diff --git a/lib/PR/f3dex2/F3DZEX_data.bin b/lib/PR/f3dex2/F3DZEX_data.bin deleted file mode 100644 index 65678669edbaaa2e39a363c5d396b78efae6e980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 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 o{_DXfSWLc4GDEtR1sC4)JW?*y%Wi0qbBYHVl- za%g;`W6&Z_jt)g{bdX;6y_ZnVE%kkz@0{-(?&TgXz~9E3`~19Mz2jA9c@xKh>~in7 z{Lyiq9n`w4bE;RWEVrB4FESssMonisNj1e-Nx!T&+U2t{E0r%h=XzUb+v#+g9X49+ zYOA6rg8;~TQGlyk1$^&(_}P1joxq9-ZfGz;wlD<)jgbK}Gzl;?f-yBomzuQi(IRn@ zqa$LI6lGiY1n4X66P0Rok0eMU6#HT%;_r7a9W;ly4@HMvZ a6hKuqjsHCW<6HWPtH#3@2?WbEE~N)B16q?s( zC1|#W^Xh=J)qvOu)^IRQ)P>T8kBwm16r3VTLBSgJ@IHWbRnBQOp!0C$AgjOwJq{;G z9&;7s)#+eTO?*r>1LtY2f*^0b;o0K>&mJFi^6*8Fvz`y~{H>tC-w)~pfW>kKtW`2# zx0=yO{hid`N&QKQJ*~G?JGW@T3!t^{sScq#yPES*{kEDm-o5u%B6!Ry9M~c1AT{El zvj-;C2#bF6wD56CP5kx&`p(sWl>HV+?Hqg^6yTBoIoUxc-*GGzF2W8q3#!~%@~82e zu*{tWVYjPu2Hz1>;9@%u=Y^LPmG-JXv{v_%Lydnk|JMMWOSqgYFX)V*E9;;!+V|hg z75-T}-=Q~jKas3%tLe6?IT_aYF%H6zYUbS&_3k-bqOTW}i9T9mKaJ_>0Qk)L7m&K{ z#~;!BH@kj{-`8ZSt*zSODQ#`lA-Y3mzH%U}7^r=_zgB@WdsJxWxr+gTy97(*8E!8Z z0AB7<7xTZvEZYTKlF^RqZRP0nx-o5WJ|101<=T9v^E%L$V?Ruw!%}s0SOqGPO!gaxu{R>V||OQY#)_9%MYNR8yf9ZVW4*^4D>17K#$4~ zoR*Y<)0R}Momq~;%uR{0N9PZ+J@bdy)rEts=UHonm)#NGk;nFwjQCK3yv<;>1>$W~ z-l8(dj+PAnm;RQ={Y~iiw2wxn0`o22JkX;6Tbj|y*2x|0)tMXFhP)GOnKze}WaN^L zKQG7tzJtnu1wM<783K;nMEkQDB;SyMUwLp3I1cWGNrxLjKD-a?2b*AW@H*&#pX32y zYB$Nz1v;k(mQuM)c6D6^h>ht1^z#7v+^(+gL3i|9(9wKdY|PHn8WwkB!~Mh@G3Qg* zr?}MG-#_Xa0Sk?@#Kv?o?XBQKZj^jN)#R#L;5v&GoM0^l*V)O!jVxMt!grSB9hOh9 zM&&v?M)$f#_u^;T7@vB933eM3W>sL{j6MvP456v=1AMyr8w@Y0NB@$1W?J<*_94|V zAFo^<#_4xYVE+r$ejy)czZ}Ndm89bb=WwZaEB=ygWtO^?=&zMAymTw}t=NkFE4Sh+ zx^{e}t^{AHwKCh5Fte>sLjS{a%qo1z4nw_G&^b7PqFXL?5V|Ly1bf;vTP3zANkxU+y;+0xGUZFj& z1WWKr=m45%oQck2-f#}hTZXW>wGE38Q8}4pzx^zRcMW3Swq)${mmSw^Q8 zt|kklb161z(#K*ZL+l4hibW-3Y*aGEVv;%bqtOz(YfOrb8k1u&qcwIfO&7bFCdO{1 z>0>w246#3@NwGU=#@HXzOtIT(<`k9tf$XLR{Ytx<3V{Bc^F|Pp(VthYVZ;B$N3~3j z5`Mi-b}s)<*kw@RO%1VKRqPn`SJ;pNQ^T5sWxw?KJEW1ir*8CXD zS_sRo6P9UnB+sW1b-UDF!m{rP%dUcj>{})*Z14IO9MpEiu1l8KbxYFm?_g@|W|CEl zU1YPWrq_W!?He!k{+HUP3X*dk0U{Qn~I9Gbi_AG5LLQ^$;#9 zJWc*t%6P&LzHo>ISA|)ybda@Hw6WIZWrSZc3f>$no>_|7zE8*>&ftknpFHt}gv~ib zEoR@NxS1W{?QShrM)=8jXIdy$a^iD%*?XGt-U=2mwXu_2J5H^RvVOjX#rO}I(Q|s6>z~+n&7`f52MmW#|5L84>CiRpjkafx3@Pe$)uO)ohsI+5))D{xOSw214 zu3-`;bt-|eBVc*~lwshDEZ0D7q;I>coT)Xy zb1TYSbF%;fR&ib^Nn9Gzi(Zl9Cav%BiIo7FoqrUMLsGpb<6JymWGgoH_K+>5FS&}m}O)N>wog^*{nMDswy8*(fs0)qa0i=#Ke!JBwFx+g(7O7(ZZH%+lfqac#gPd4*H&{TN4PD=X47$t!>`vgHrb~w=2O6UYDo9#hP4NmA+yHocD}U?V zZTz3Ld%ybz|D%@6&pSfsqO93NK40{99YjGPCsKNNVHhOA{GRF@{YzD9&7*I$oPVMY zJAx_1b1c>y&N~lwO!2@r?of@BJ6Pou*Z!O%1yhJmS<1n7C_b)XnCFlOw6-=rH9$T@ zb5d*K5BWE0)J_Y0;jE0u7u=RLUhro+cZurQ+FZ$L1zkQ zp*!9V>fsAdlMgaeh{GvX;&$g%VfA@u=M>_Y4mm($C}von3etE@R$6;bemt&n)^0Uj z4m_51Tq`x*0|itM@n=o`n%F!cfazp|oq#y?u33GI0mvVvwejC4~aZuS4KdgG=k2 zF&mbsy3E3OT*y*%ASfQnEoMNClCAM$;?`Ly#MNPk;RyKcnqC-x-{IwymC-YNVOq)y?952=YWR{?Y=eEA#>q^u0yeT?HPX`EK~P<2B!{yk-+FCtYPWXXrMU4|9@SzmpfhRt zB+2`~KdNQgdr!Vk=nt}0PW1gO?(bFMOrw;1rqN=>MH!TX{6sO6_^^NR9c&~%>|c8a zizx?5FFA|pg@cKhd1N}}nGX)M^OP?%B=@opOU_b`#<35dBThs-O3N8qr+mqR0&$Pp zO!QY@*YYr=%+(MyP;Avt0(h0MhW_FB_L9UB_|De+C`Yg`SKA3CXj z1imkDb{c3#bCna!FM2x7;!1Wiu~*r|UaYL$%$L(yB`~{td^#U==*4o-zv!X0&9J^k z<@VLgDhvYGVG%3Z&6MX@#06lk@?_NU?O>@1WCZy@|7H{P2Pr3R+5}jeNwNCj5U$?R zi{r$r#@`~@KWszi_Ak-DYnaOGXpzp5Zu&4+8H{F1A__}x5#RksY}nF=D|Vg572A@q zXm1Jn?+;j4Vd}i1lW`i64l(cg!0(T5ZFXx!R_jkHhk^gjHTg;CP?Ic)eldXHM8Ig%-w zEtxUB{xn`vqPS>lBQAP;|K!~lP+or52*yY>TQ&vF;%4nXhK38=wnR+7PjRk+`Zsmm zPT++?aXw08>Wj=j0@d$3>-6#CqvTWeD#|Aa7YMJYJx+QlC%sfaYea?3-A*AjVGD*( zideZIU&B1(-^~37^0V~{*@bB_9M4gGhq^(?YU-}3V8K`9TjOP;f1n)g>xmpq zTXT*bILe$wI8~Ea4~xHghik2IYU@P`Ov&2XSk-$0FJC^5&-GULQX;g+S0z|{xou*f z3o!2;0H32@yGNNX_(jRltzXNFTb>gXRNE@TmRj(#mA@=MsPkZ+N!=$o4ETu*pZPqA4gF0ADb z|10c@JR>DV@+1qhHxU=wPBy=52-DjJG5vK5e!QfD-gfktjId;HHu|@WFzNMdbh5jc zTfGmjR5nFt$p*5iG%dHs;#DMfLp{#&v~{LX+yAg^v`6Ab2kE@0Nw=Tms5t9c;s*EI zXwKwlj!}s^rKh4!W2%N>XsJ4h4U>DZ!PlngmF`+u#E;43%U;cv0A*JvFK#L_+>^nw z&I30JT!bB)yRJ`g9V(^&^#2z<PN*YY>cwp#gXjxMA`2PC6<~M{G+qMy>wBhk z07Z9tNav)>Ihrmb*^+fapM{XnWp*Ly@_}`=&>`J%eJGvQCmlj(j;7BFXi!vc zu-+;DD_GrLA?|Au}%U(5S=~Fa3LgcmkY+kgdrhng-A5e7$`J$h6u&cNdyB?xdKS+r0^eX{R9dN zOYJQE01HYwEhsDq>)SgN(Zs~Y#C_SBoj12LZ}y1(`&z&NfxBlTEd5D(+Fwi*Iw%!+ z@A#a%M{cdorOeK*!@QA7XSw3G8_iDjq{@|QyL;w#T;6ZCI`vk~O@$1i0%=kfAes#M zDyT;j2#%6YOd4%RNn{YOVs9l^*5p_xB%)&qNQ%n==%1JPl%Ae-)b^H;6JqJTlj&H_ zqJ3q1d=woRy3%w=Bu5ZqBi=+@Cfre=X)QUPR+13(g0nz9LnBy0!Fw=TS}Pc2pr^8w zH&6~k##Iv(iKs^SMZp3{9oOL`_zQ4(rBp}uL$TLv&iFc%o$asOEaQKr>^n!1p2$KG ziQC}1mBY(>K7MLm@kjw$DE#D2TV*BPm#0$b7UnG2E3!9 b??~7RrV|@3HDV(xXFi!X;!zA}s9nDS4;Esv diff --git a/lib/asm/__osDisableInt.s b/lib/asm/__osDisableInt.s deleted file mode 100644 index 4c759b4c..00000000 --- a/lib/asm/__osDisableInt.s +++ /dev/null @@ -1,18 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - - -glabel __osDisableInt - mfc0 $t0, $12 - and $t1, $t0, -2 - mtc0 $t1, $12 - andi $v0, $t0, 1 - nop - jr $ra - nop - diff --git a/lib/asm/__osExceptionPreamble.s b/lib/asm/__osExceptionPreamble.s deleted file mode 100644 index c98608b0..00000000 --- a/lib/asm/__osExceptionPreamble.s +++ /dev/null @@ -1,1123 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - -.ifdef VERSION_SH -.set VERSION_EU, 1 # HACK, someone fix this file, its poorly diff'd! -.endif - -.section .text, "ax" - -.ifdef AVOID_UB -.set D_80334890, D_80334890_fix -.endif - -glabel __osExceptionPreamble - lui $k0, %hi(__osException) # $k0, 0x8032 - addiu $k0, %lo(__osException) # addiu $k0, $k0, 0x66d0 - jr $k0 - nop - - -glabel __osException -.ifndef VERSION_EU - lui $k0, %hi(gInterruptedThread) # $k0, 0x8036 - addiu $k0, %lo(gInterruptedThread) # addiu $k0, $k0, 0x5f40 - sd $at, 0x20($k0) - mfc0 $k1, $12 - sw $k1, 0x118($k0) - li $at, -4 - and $k1, $k1, $at - mtc0 $k1, $12 - sd $t0, 0x58($k0) - sd $t1, 0x60($k0) - sd $t2, 0x68($k0) - sw $zero, 0x18($k0) - mfc0 $t0, $13 - - andi $t1, $t0, 0x7c - li $t2, 0 - bne $t1, $t2, .L80326750 - nop - and $t1, $k1, $t0 - andi $t2, $t1, 0x4000 - beqz $t2, .L80326734 - nop - li $t1, 1 - lui $at, %hi(D_80334934) # $at, 0x8033 - b .L80326794 - sw $t1, %lo(D_80334934)($at) -.L80326734: - andi $t2, $t1, 0x2000 - beqz $t2, .L80326750 - nop - li $t1, 1 - lui $at, %hi(D_80334938) # $at, 0x8033 - b .L80326794 - sw $t1, %lo(D_80334938)($at) -.L80326750: - lui $at, %hi(D_80334934) # $at, 0x8033 - sw $zero, %lo(D_80334934)($at) - lui $at, %hi(D_80334938) # $at, 0x8033 - - move $t0, $k0 - sw $zero, %lo(D_80334938)($at) - lui $k0, %hi(D_80334890 + 0x10) # $k0, 0x8033 - lw $k0, %lo(D_80334890 + 0x10)($k0) - ld $t1, 0x20($t0) - sd $t1, 0x20($k0) - ld $t1, 0x118($t0) - sd $t1, 0x118($k0) - ld $t1, 0x58($t0) - sd $t1, 0x58($k0) - ld $t1, 0x60($t0) - sd $t1, 0x60($k0) - ld $t1, 0x68($t0) - sd $t1, 0x68($k0) -.L80326794: - mflo $t0 - sd $t0, 0x108($k0) - mfhi $t0 - sd $v0, 0x28($k0) - sd $v1, 0x30($k0) - sd $a0, 0x38($k0) - sd $a1, 0x40($k0) - sd $a2, 0x48($k0) - sd $a3, 0x50($k0) - sd $t3, 0x70($k0) - sd $t4, 0x78($k0) - sd $t5, 0x80($k0) - sd $t6, 0x88($k0) - sd $t7, 0x90($k0) - sd $s0, 0x98($k0) - sd $s1, 0xa0($k0) - sd $s2, 0xa8($k0) - sd $s3, 0xb0($k0) - sd $s4, 0xb8($k0) - sd $s5, 0xc0($k0) - sd $s6, 0xc8($k0) - sd $s7, 0xd0($k0) - sd $t8, 0xd8($k0) - sd $t9, 0xe0($k0) - sd $gp, 0xe8($k0) - sd $sp, 0xf0($k0) - sd $fp, 0xf8($k0) - sd $ra, 0x100($k0) -.ifndef VERSION_EU - sd $t0, 0x110($k0) -.else - beqz $t1, .L802F3A18 - sd $t0, 0x110($k0) - lui $t0, %hi(D_8030208C) # $t0, 0x8030 - addiu $t0, $t0, %lo(D_8030208C) # addiu $t0, $t0, 0x208c - lw $t0, ($t0) - li $at, -1 - xor $t0, $t0, $at - lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff - andi $t0, $t0, 0xff00 - ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff - or $t1, $t1, $t0 - and $k1, $k1, $at - or $k1, $k1, $t1 - sw $k1, 0x118($k0) -.L802F3A18: - lui $t1, %hi(MI_INTR_MASK_REG) # $t1, 0xa430 - lw $t1, %lo(MI_INTR_MASK_REG)($t1) - beqz $t1, .L802F3A50 - nop - lui $t0, %hi(D_8030208C) # $t0, 0x8030 - addiu $t0, $t0, %lo(D_8030208C) # addiu $t0, $t0, 0x208c - lw $t0, ($t0) - lw $t4, 0x128($k0) - li $at, -1 - srl $t0, $t0, 0x10 - xor $t0, $t0, $at - andi $t0, $t0, 0x3f - and $t0, $t0, $t4 - or $t1, $t1, $t0 -.L802F3A50: - sw $t1, 0x128($k0) -.endif - - - mfc0 $t0, $14 - sw $t0, 0x11c($k0) - lw $t0, 0x18($k0) - beqz $t0, .L80326868 - nop - cfc1 $t0, $31 - nop - sw $t0, 0x12c($k0) - sdc1 $f0, 0x130($k0) - sdc1 $f2, 0x138($k0) - sdc1 $f4, 0x140($k0) - sdc1 $f6, 0x148($k0) - sdc1 $f8, 0x150($k0) - sdc1 $f10, 0x158($k0) - sdc1 $f12, 0x160($k0) - sdc1 $f14, 0x168($k0) - sdc1 $f16, 0x170($k0) - sdc1 $f18, 0x178($k0) - sdc1 $f20, 0x180($k0) - sdc1 $f22, 0x188($k0) - sdc1 $f24, 0x190($k0) - sdc1 $f26, 0x198($k0) - sdc1 $f28, 0x1a0($k0) - sdc1 $f30, 0x1a8($k0) -.L80326868: - mfc0 $t0, $13 - sw $t0, 0x120($k0) - lui $t1, %hi(MI_INTR_MASK_REG) # $t1, 0xa430 - lw $t1, %lo(MI_INTR_MASK_REG)($t1) - sw $t1, 0x128($k0) - li $t1, 2 - sh $t1, 0x10($k0) - lui $t1, %hi(D_80334934) # $t1, 0x8033 - lw $t1, %lo(D_80334934)($t1) - beqz $t1, .L803268B4 - nop - lui $t2, %hi(D_C0000008) # $t2, 0xc000 - sw $zero, %lo(D_C0000008)($t2) - lui $a0, %hi(D_C0000000) - addiu $t2, %lo(D_C0000008) # addiu $t2, $t2, 8 - jal kdebugserver - lw $a0, %lo(D_C0000000)($a0) - b .L80326E08 - nop -.L803268B4: - lui $t1, %hi(D_80334938) # $t1, 0x8033 - lw $t1, %lo(D_80334938)($t1) - beqz $t1, .L80326900 - nop - lui $t2, %hi(D_C000000C) # $t2, 0xc000 - sw $zero, %lo(D_C000000C)($t2) - lui $t1, %hi(D_80334A40) # $t1, 0x8033 - lw $t1, %lo(D_80334A40)($t1) - addiu $t2, %lo(D_C000000C) # addiu $t2, $t2, 0xc - beqz $t1, .L803268E8 - nop - jal send_mesg - li $a0, 120 -.L803268E8: - lui $t1, %hi(D_80334A44) # $t1, 0x8033 - lw $t1, %lo(D_80334A44)($t1) - lui $at, %hi(D_80334A44) # $at, 0x8033 - addi $t1, $t1, 1 - b .L80326E08 - sw $t1, %lo(D_80334A44)($at) -.L80326900: - andi $t1, $t0, 0x7c - li $t2, 36 - beq $t1, $t2, .L80326B84 - nop - li $t2, 44 - beq $t1, $t2, .L80326CCC - nop - li $t2, 0 - bne $t1, $t2, .L80326BE8 - nop - and $s0, $k1, $t0 -.L8032692C: - andi $t1, $s0, 0xff00 - srl $t2, $t1, 0xc - bnez $t2, .L80326944 - nop - srl $t2, $t1, 8 - addi $t2, $t2, 0x10 -.L80326944: - lui $at, %hi(D_80338610) - addu $at, $at, $t2 - lbu $t2, %lo(D_80338610)($at) - lui $at, %hi(jtbl_80338630) - addu $at, $at, $t2 - lw $t2, %lo(jtbl_80338630)($at) - jr $t2 - nop -glabel L80326964 - mfc0 $t1, $11 - mtc0 $t1, $11 - jal send_mesg - li $a0, 24 - lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff - ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff - b .L8032692C - and $s0, $s0, $at -glabel L80326984 - li $t2, 4 - lui $at, %hi(D_80334920) - addu $at, $at, $t2 - lw $t2, %lo(D_80334920)($at) - beqz $t2, .L803269A4 - nop - jalr $t2 - nop -.L803269A4: - jal send_mesg - li $a0, 16 - li $at, -2049 - b .L8032692C - and $s0, $s0, $at -glabel L803269B8 - lui $s1, %hi(MI_INTR_REG) # $s1, 0xa430 - lw $s1, %lo(MI_INTR_REG)($s1) - andi $s1, $s1, 0x3f - andi $t1, $s1, 1 - beqz $t1, .L80326A18 - nop - lui $t4, %hi(SP_STATUS_REG) # $t4, 0xa404 - lw $t4, %lo(SP_STATUS_REG)($t4) - li $t1, 8 - lui $at, %hi(SP_STATUS_REG) # $at, 0xa404 - andi $t4, $t4, 0x300 - andi $s1, $s1, 0x3e - beqz $t4, .L80326A08 - sw $t1, %lo(SP_STATUS_REG)($at) - jal send_mesg - li $a0, 32 - beqz $s1, .L80326ADC - nop - b .L80326A18 - nop -.L80326A08: - jal send_mesg - li $a0, 88 - beqz $s1, .L80326ADC - nop -.L80326A18: - andi $t1, $s1, 8 - beqz $t1, .L80326A3C - lui $at, %hi(VI_CURRENT_REG) # $at, 0xa440 - andi $s1, $s1, 0x37 - sw $zero, %lo(VI_CURRENT_REG)($at) - jal send_mesg - li $a0, 56 - beqz $s1, .L80326ADC - nop -.L80326A3C: - andi $t1, $s1, 4 - beqz $t1, .L80326A68 - nop - li $t1, 1 - lui $at, %hi(AI_STATUS_REG) # $at, 0xa450 - andi $s1, $s1, 0x3b - sw $t1, %lo(AI_STATUS_REG)($at) - jal send_mesg - li $a0, 48 - beqz $s1, .L80326ADC - nop -.L80326A68: - andi $t1, $s1, 2 - beqz $t1, .L80326A8C - lui $at, %hi(SI_STATUS_REG) # $at, 0xa480 - andi $s1, $s1, 0x3d - sw $zero, %lo(SI_STATUS_REG)($at) - jal send_mesg - li $a0, 40 - beqz $s1, .L80326ADC - nop -.L80326A8C: - andi $t1, $s1, 0x10 - beqz $t1, .L80326AB8 - nop - li $t1, 2 - lui $at, %hi(PI_STATUS_REG) # $at, 0xa460 - andi $s1, $s1, 0x2f - sw $t1, %lo(PI_STATUS_REG)($at) - jal send_mesg - li $a0, 64 - beqz $s1, .L80326ADC - nop -.L80326AB8: - andi $t1, $s1, 0x20 - beqz $t1, .L80326ADC - nop - li $t1, 2048 - lui $at, %hi(MI_MODE_REG) - andi $s1, $s1, 0x1f - sw $t1, %lo(MI_MODE_REG)($at) - jal send_mesg - li $a0, 72 -.L80326ADC: - li $at, -1025 - b .L8032692C - and $s0, $s0, $at -glabel L80326AE8 - lw $k1, 0x118($k0) - li $at, -4097 - lui $t1, %hi(D_80334808) # $t1, 0x8033 - and $k1, $k1, $at - sw $k1, 0x118($k0) - addiu $t1, %lo(D_80334808) # addiu $t1, $t1, 0x4808 - lw $t2, ($t1) - beqz $t2, .L80326B14 - li $at, -4097 - b .L80326B9C - and $s0, $s0, $at -.L80326B14: - li $t2, 1 - sw $t2, ($t1) - jal send_mesg - li $a0, 112 - lui $t2, %hi(D_80334890 + 0x8) # $t2, 0x8033 - lw $t2, %lo(D_80334890 + 0x8)($t2) - li $at, -4097 - and $s0, $s0, $at - lw $k1, 0x118($t2) - and $k1, $k1, $at - b .L80326B9C - sw $k1, 0x118($t2) -glabel L80326B44 - li $at, -513 - and $t0, $t0, $at - mtc0 $t0, $13 - jal send_mesg - li $a0, 8 - li $at, -513 - b .L8032692C - and $s0, $s0, $at -glabel L80326B64 - li $at, -257 - and $t0, $t0, $at - mtc0 $t0, $13 - jal send_mesg - li $a0, 0 - li $at, -257 - b .L8032692C - and $s0, $s0, $at -.L80326B84: - li $t1, 1 - sh $t1, 0x12($k0) - jal send_mesg - li $a0, 80 - b .L80326B9C - nop -.L80326B9C: -glabel L80326B9C - lui $t2, %hi(D_80334890 + 0x8) # $t2, 0x8033 - lw $t2, %lo(D_80334890 + 0x8)($t2) - lw $t1, 4($k0) - lw $t3, 4($t2) - slt $at, $t1, $t3 - beqz $at, .L80326BD0 - nop - lui $a0, %hi(D_80334890 + 0x8) # $a0, 0x8033 - move $a1, $k0 - jal __osEnqueueThread - addiu $a0, %lo(D_80334890 + 0x8) # addiu $a0, $a0, 0x4898 - j __osDispatchThread - nop - -.L80326BD0: - lui $t1, %hi(D_80334890 + 0x8) # $t1, 0x8033 - addiu $t1, %lo(D_80334890 + 0x8) # addiu $t1, $t1, 0x4898 - lw $t2, ($t1) - sw $t2, ($k0) - j __osDispatchThread - sw $k0, ($t1) - -.L80326BE8: -glabel L80326BE8 - lui $at, %hi(D_80334890 + 0x14) # $at, 0x8033 - sw $k0, %lo(D_80334890 + 0x14)($at) - li $t1, 1 - sh $t1, 0x10($k0) - li $t1, 2 - sh $t1, 0x12($k0) - mfc0 $t2, $8 - sw $t2, 0x124($k0) - jal send_mesg - li $a0, 96 - j __osDispatchThread - nop -.else - lui $k0, %hi(gInterruptedThread) # $k0, 0x8033 - addiu $k0, %lo(gInterruptedThread) # addiu $k0, $k0, 0x6ce0 - sd $at, 0x20($k0) - mfc0 $k1, $12 - sw $k1, 0x118($k0) - li $at, -4 - and $k1, $k1, $at - mtc0 $k1, $12 - sd $t0, 0x58($k0) - sd $t1, 0x60($k0) - sd $t2, 0x68($k0) - sw $zero, 0x18($k0) - mfc0 $t0, $13 - move $t0, $k0 - lui $k0, %hi(D_80334890 + 0x10) # $k0, 0x8030 - lw $k0, %lo(D_80334890 + 0x10)($k0) - ld $t1, 0x20($t0) - sd $t1, 0x20($k0) - ld $t1, 0x118($t0) - sd $t1, 0x118($k0) - ld $t1, 0x58($t0) - sd $t1, 0x58($k0) - ld $t1, 0x60($t0) - sd $t1, 0x60($k0) - ld $t1, 0x68($t0) - sd $t1, 0x68($k0) - lw $k1, 0x118($k0) - mflo $t0 - sd $t0, 0x108($k0) - mfhi $t0 - andi $t1, $k1, 0xff00 - sd $v0, 0x28($k0) - sd $v1, 0x30($k0) - sd $a0, 0x38($k0) - sd $a1, 0x40($k0) - sd $a2, 0x48($k0) - sd $a3, 0x50($k0) - sd $t3, 0x70($k0) - sd $t4, 0x78($k0) - sd $t5, 0x80($k0) - sd $t6, 0x88($k0) - sd $t7, 0x90($k0) - sd $s0, 0x98($k0) - sd $s1, 0xa0($k0) - sd $s2, 0xa8($k0) - sd $s3, 0xb0($k0) - sd $s4, 0xb8($k0) - sd $s5, 0xc0($k0) - sd $s6, 0xc8($k0) - sd $s7, 0xd0($k0) - sd $t8, 0xd8($k0) - sd $t9, 0xe0($k0) - sd $gp, 0xe8($k0) - sd $sp, 0xf0($k0) - sd $fp, 0xf8($k0) - sd $ra, 0x100($k0) - beqz $t1, .L802F3A18 - sd $t0, 0x110($k0) - lui $t0, %hi(D_8030208C) # $t0, 0x8030 - addiu $t0, %lo(D_8030208C) # addiu $t0, $t0, 0x208c - lw $t0, ($t0) - li $at, -1 - xor $t0, $t0, $at - lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff - andi $t0, $t0, 0xff00 - ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff - or $t1, $t1, $t0 - and $k1, $k1, $at - or $k1, $k1, $t1 - sw $k1, 0x118($k0) -.L802F3A18: - lui $t1, %hi(MI_INTR_MASK_REG) # $t1, 0xa430 - lw $t1, %lo(MI_INTR_MASK_REG)($t1) - beqz $t1, .L802F3A50 - nop - lui $t0, %hi(D_8030208C) # $t0, 0x8030 - addiu $t0, %lo(D_8030208C) # addiu $t0, $t0, 0x208c - lw $t0, ($t0) - lw $t4, 0x128($k0) - li $at, -1 - srl $t0, $t0, 0x10 - xor $t0, $t0, $at - andi $t0, $t0, 0x3f - and $t0, $t0, $t4 - or $t1, $t1, $t0 -.L802F3A50: - sw $t1, 0x128($k0) - mfc0 $t0, $14 - sw $t0, 0x11c($k0) - lw $t0, 0x18($k0) - beqz $t0, .L802F3AB4 - nop - cfc1 $t0, $31 - nop - sw $t0, 0x12c($k0) - sdc1 $f0, 0x130($k0) - sdc1 $f2, 0x138($k0) - sdc1 $f4, 0x140($k0) - sdc1 $f6, 0x148($k0) - sdc1 $f8, 0x150($k0) - sdc1 $f10, 0x158($k0) - sdc1 $f12, 0x160($k0) - sdc1 $f14, 0x168($k0) - sdc1 $f16, 0x170($k0) - sdc1 $f18, 0x178($k0) - sdc1 $f20, 0x180($k0) - sdc1 $f22, 0x188($k0) - sdc1 $f24, 0x190($k0) - sdc1 $f26, 0x198($k0) - sdc1 $f28, 0x1a0($k0) - sdc1 $f30, 0x1a8($k0) -.L802F3AB4: - mfc0 $t0, $13 - sw $t0, 0x120($k0) - li $t1, 2 - sh $t1, 0x10($k0) - andi $t1, $t0, 0x7c - li $t2, 36 - beq $t1, $t2, .L802F3D90 - nop - li $t2, 44 - beq $t1, $t2, .L80326CCC - nop - li $t2, 0 - bne $t1, $t2, .L80326BE8 - nop - and $s0, $k1, $t0 -.L802F3AF0: - andi $t1, $s0, 0xff00 - srl $t2, $t1, 0xc - bnez $t2, .L802F3B08 - nop - srl $t2, $t1, 8 - addi $t2, $t2, 0x10 -.L802F3B08: - lui $at, %hi(D_80338610) - addu $at, $at, $t2 - lbu $t2, %lo(D_80338610)($at) - lui $at, %hi(jtbl_80338630) - addu $at, $at, $t2 - lw $t2, %lo(jtbl_80338630)($at) - jr $t2 - nop - li $at, -8193 - b .L802F3AF0 - and $s0, $s0, $at - li $at, -16385 - b .L802F3AF0 - and $s0, $s0, $at -glabel L80326964 #probably not right... - mfc0 $t1, $11 - mtc0 $t1, $11 - jal send_mesg - li $a0, 24 - lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff - ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff - b .L802F3AF0 - and $s0, $s0, $at -glabel L80326984 #possibly wrong - li $at, -2049 - and $s0, $s0, $at - li $t2, 4 - lui $at, %hi(D_80334920) - addu $at, $at, $t2 - lw $t2, %lo(D_80334920)($at) - lui $sp, %hi(D_80365E40) # $sp, 0x8033 #.bss stack for D_802F4380 - addiu $sp, %lo(D_80365E40) # addiu $sp, $sp, 0x5c20 - li $a0, 16 - beqz $t2, .L802F3BA4 - addiu $sp, $sp, 0xff0 - jalr $t2 - nop - beqz $v0, .L802F3BA4 - nop - b .L802F3DA8 - nop -.L802F3BA4: - jal send_mesg - nop - b .L802F3AF0 - nop -glabel L803269B8 - lui $t0, %hi(D_8030208C) # $t0, 0x8030 - addiu $t0, %lo(D_8030208C) # addiu $t0, $t0, 0x208c - lw $t0, ($t0) - lui $s1, %hi(MI_INTR_REG) # $s1, 0xa430 - lw $s1, %lo(MI_INTR_REG)($s1) - srl $t0, $t0, 0x10 - and $s1, $s1, $t0 - andi $t1, $s1, 1 - beqz $t1, .L802F3C24 - nop - lui $t4, %hi(SP_STATUS_REG) # $t4, 0xa404 - lw $t4, %lo(SP_STATUS_REG)($t4) - li $t1, 8 - lui $at, %hi(SP_STATUS_REG) # $at, 0xa404 - andi $t4, $t4, 0x300 - andi $s1, $s1, 0x3e - beqz $t4, .L802F3C14 - sw $t1, %lo(SP_STATUS_REG)($at) - jal send_mesg - li $a0, 32 - beqz $s1, .L802F3CE8 - nop - b .L802F3C24 - nop -.L802F3C14: - jal send_mesg - li $a0, 88 - beqz $s1, .L802F3CE8 - nop -.L802F3C24: - andi $t1, $s1, 8 - beqz $t1, .L802F3C48 - lui $at, %hi(VI_CURRENT_REG) # $at, 0xa440 - andi $s1, $s1, 0x37 - sw $zero, %lo(VI_CURRENT_REG)($at) - jal send_mesg - li $a0, 56 - beqz $s1, .L802F3CE8 - nop -.L802F3C48: - andi $t1, $s1, 4 - beqz $t1, .L802F3C74 - nop - li $t1, 1 - lui $at, %hi(AI_STATUS_REG) # $at, 0xa450 - andi $s1, $s1, 0x3b - sw $t1, %lo(AI_STATUS_REG)($at) - jal send_mesg - li $a0, 48 - beqz $s1, .L802F3CE8 - nop -.L802F3C74: - andi $t1, $s1, 2 - beqz $t1, .L802F3C98 - lui $at, %hi(SI_STATUS_REG) # $at, 0xa480 - andi $s1, $s1, 0x3d - sw $zero, %lo(SI_STATUS_REG)($at) - jal send_mesg - li $a0, 40 - beqz $s1, .L802F3CE8 - nop -.L802F3C98: - andi $t1, $s1, 0x10 - beqz $t1, .L802F3CC4 - nop - li $t1, 2 - lui $at, %hi(PI_STATUS_REG) # $at, 0xa460 - andi $s1, $s1, 0x2f - sw $t1, %lo(PI_STATUS_REG)($at) - jal send_mesg - li $a0, 64 - beqz $s1, .L802F3CE8 - nop -.L802F3CC4: - andi $t1, $s1, 0x20 - beqz $t1, .L802F3CE8 - nop - li $t1, 2048 - lui $at, 0xa430 - andi $s1, $s1, 0x1f - sw $t1, ($at) - jal send_mesg - li $a0, 72 -.L802F3CE8: - li $at, -1025 - b .L802F3AF0 - and $s0, $s0, $at -glabel L80326AE8 - lw $k1, 0x118($k0) - li $at, -4097 - lui $t1, %hi(D_80334808) # $t1, 0x8030 - and $k1, $k1, $at - sw $k1, 0x118($k0) - addiu $t1, %lo(D_80334808) # addiu $t1, $t1, 0x2088 - lw $t2, ($t1) - beqz $t2, .L802F3D20 - li $at, -4097 - b .L802F3DA8 - and $s0, $s0, $at -.L802F3D20: - li $t2, 1 - sw $t2, ($t1) - jal send_mesg - li $a0, 112 - lui $t2, %hi(D_80334890 + 0x8) # $t2, 0x8030 - lw $t2, %lo(D_80334890 + 0x8)($t2) - li $at, -4097 - and $s0, $s0, $at - lw $k1, 0x118($t2) - and $k1, $k1, $at - b .L802F3DA8 - sw $k1, 0x118($t2) -glabel L80326B44 - li $at, -513 - and $t0, $t0, $at - mtc0 $t0, $13 - jal send_mesg - li $a0, 8 - li $at, -513 - b .L802F3AF0 - and $s0, $s0, $at -glabel L80326B64 - li $at, -257 - and $t0, $t0, $at - mtc0 $t0, $13 - jal send_mesg - li $a0, 0 - li $at, -257 - b .L802F3AF0 - and $s0, $s0, $at -.L802F3D90: - li $t1, 1 - sh $t1, 0x12($k0) - jal send_mesg - li $a0, 80 - b .L802F3DA8 - nop -.L802F3DA8: -glabel L80326B9C - lui $t2, %hi(D_80334890 + 0x8) # $t2, 0x8030 - lw $t2, %lo(D_80334890 + 0x8)($t2) - lw $t1, 4($k0) - lw $t3, 4($t2) - slt $at, $t1, $t3 - beqz $at, .L80326BD0 - nop - lui $a0, %hi(D_80334890 + 0x8) # $a0, 0x8030 - move $a1, $k0 - jal __osEnqueueThread - addiu $a0, %lo(D_80334890 + 0x8) # addiu $a0, $a0, 0x2ef8 - j __osDispatchThread - nop - -.L80326BD0: - lui $t1, %hi(D_80334890 + 0x8) # $t1, 0x8030 - addiu $t1, %lo(D_80334890 + 0x8) # addiu $t1, $t1, 0x2ef8 - lw $t2, ($t1) - sw $t2, ($k0) - j __osDispatchThread - sw $k0, ($t1) - -.L80326BE8: -glabel L80326BE8 - lui $at, %hi(D_80334890 + 0x14) # $at, 0x8030 - sw $k0, %lo(D_80334890 + 0x14)($at) - li $t1, 1 - sh $t1, 0x10($k0) - li $t1, 2 - sh $t1, 0x12($k0) - mfc0 $t2, $8 - sw $t2, 0x124($k0) - jal send_mesg - li $a0, 96 - j __osDispatchThread - nop -.endif - -glabel send_mesg - lui $t2, %hi(D_80363830) # $t2, 0x8036 - addiu $t2, %lo(D_80363830) # addiu $t2, $t2, 0x3830 - addu $t2, $t2, $a0 - lw $t1, ($t2) - move $s2, $ra - beqz $t1, .L80326CC4 - nop - lw $t3, 8($t1) - lw $t4, 0x10($t1) - slt $at, $t3, $t4 - beqz $at, .L80326CC4 - nop - lw $t5, 0xc($t1) - addu $t5, $t5, $t3 - div $zero, $t5, $t4 - bnez $t4, .L80326C60 - nop - break 7 -.L80326C60: - li $at, -1 - bne $t4, $at, .L80326C78 - lui $at, 0x8000 - bne $t5, $at, .L80326C78 - nop - break 6 -.L80326C78: - lw $t4, 0x14($t1) - mfhi $t5 - sll $t5, $t5, 2 - addu $t4, $t4, $t5 - lw $t5, 4($t2) - addiu $t2, $t3, 1 - sw $t5, ($t4) - sw $t2, 8($t1) - lw $t2, ($t1) - lw $t3, ($t2) - beqz $t3, .L80326CC4 - nop - jal __osPopThread - move $a0, $t1 - move $t2, $v0 - lui $a0, %hi(D_80334890 + 0x8) # $a0, 0x8033 - move $a1, $t2 - jal __osEnqueueThread - addiu $a0, %lo(D_80334890 + 0x8) # addiu $a0, $a0, 0x4898 -.L80326CC4: - jr $s2 - nop -.L80326CCC: - lui $at, 0x3000 - and $t1, $t0, $at - srl $t1, $t1, 0x1c - li $t2, 1 - bne $t1, $t2, .L80326BE8 - nop - lw $k1, 0x118($k0) - lui $at, 0x2000 - li $t1, 1 - or $k1, $k1, $at - sw $t1, 0x18($k0) - b .L80326BD0 - sw $k1, 0x118($k0) - - -glabel __osEnqueueAndYield - lui $a1, %hi(D_80334890 + 0x10) # $a1, 0x8033 - lw $a1, %lo(D_80334890 + 0x10)($a1) - mfc0 $t0, $12 - lw $k1, 0x18($a1) - ori $t0, $t0, 2 - sw $t0, 0x118($a1) - sd $s0, 0x98($a1) - sd $s1, 0xa0($a1) - sd $s2, 0xa8($a1) - sd $s3, 0xb0($a1) - sd $s4, 0xb8($a1) - sd $s5, 0xc0($a1) - sd $s6, 0xc8($a1) - sd $s7, 0xd0($a1) - sd $gp, 0xe8($a1) - sd $sp, 0xf0($a1) - sd $fp, 0xf8($a1) - sd $ra, 0x100($a1) -.ifdef VERSION_EU - beqz $k1, .L802F3F7C -.else - beqz $k1, .L80326D70 -.endif - sw $ra, 0x11c($a1) - cfc1 $k1, $31 - sdc1 $f20, 0x180($a1) - sdc1 $f22, 0x188($a1) - sdc1 $f24, 0x190($a1) - sdc1 $f26, 0x198($a1) - sdc1 $f28, 0x1a0($a1) - sdc1 $f30, 0x1a8($a1) - sw $k1, 0x12c($a1) - -.ifdef VERSION_EU -.L802F3F7C: -/* 0B377C 802F3F7C 8CBB0118 */ lw $k1, 0x118($a1) -/* 0B3780 802F3F80 3369FF00 */ andi $t1, $k1, 0xff00 -/* 0B3784 802F3F84 1120000D */ beqz $t1, .L802F3FBC -/* 0B3788 802F3F88 00000000 */ nop -/* 0B378C 802F3F8C 3C088030 */ lui $t0, %hi(D_8030208C) # $t0, 0x8030 -/* 0B3790 802F3F90 2508208C */ addiu $t0, %lo(D_8030208C) # addiu $t0, $t0, 0x208c -/* 0B3794 802F3F94 8D080000 */ lw $t0, ($t0) -/* 0B3798 802F3F98 2401FFFF */ li $at, -1 -/* 0B379C 802F3F9C 01014026 */ xor $t0, $t0, $at -/* 0B37A0 802F3FA0 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff -/* 0B37A4 802F3FA4 3108FF00 */ andi $t0, $t0, 0xff00 -/* 0B37A8 802F3FA8 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff -/* 0B37AC 802F3FAC 01284825 */ or $t1, $t1, $t0 -/* 0B37B0 802F3FB0 0361D824 */ and $k1, $k1, $at -/* 0B37B4 802F3FB4 0369D825 */ or $k1, $k1, $t1 -/* 0B37B8 802F3FB8 ACBB0118 */ sw $k1, 0x118($a1) -.L802F3FBC: -/* 0B37BC 802F3FBC 3C1BA430 */ lui $k1, %hi(MI_INTR_MASK_REG) # $k1, 0xa430 -/* 0B37C0 802F3FC0 8F7B000C */ lw $k1, %lo(MI_INTR_MASK_REG)($k1) -/* 0B37C4 802F3FC4 1360000B */ beqz $k1, .L802F3FF4 -/* 0B37C8 802F3FC8 00000000 */ nop -/* 0B37CC 802F3FCC 3C1A8030 */ lui $k0, %hi(D_8030208C) # $k0, 0x8030 -/* 0B37D0 802F3FD0 275A208C */ addiu $k0, %lo(D_8030208C) # addiu $k0, $k0, 0x208c -/* 0B37D4 802F3FD4 8F5A0000 */ lw $k0, ($k0) -/* 0B37D8 802F3FD8 8CA80128 */ lw $t0, 0x128($a1) -/* 0B37DC 802F3FDC 2401FFFF */ li $at, -1 -/* 0B37E0 802F3FE0 001AD402 */ srl $k0, $k0, 0x10 -/* 0B37E4 802F3FE4 0341D026 */ xor $k0, $k0, $at -/* 0B37E8 802F3FE8 335A003F */ andi $k0, $k0, 0x3f -/* 0B37EC 802F3FEC 0348D024 */ and $k0, $k0, $t0 -/* 0B37F0 802F3FF0 037AD825 */ or $k1, $k1, $k0 -.L802F3FF4: -.endif - - -.L80326D70: -.ifndef VERSION_EU - lui $k1, %hi(MI_INTR_MASK_REG) # $k1, 0xa430 - lw $k1, %lo(MI_INTR_MASK_REG)($k1) -.endif - beqz $a0, .L80326D88 - sw $k1, 0x128($a1) - jal __osEnqueueThread - nop -.L80326D88: - j __osDispatchThread - nop - - -#enqueue and pop look like compiled functions? but there's no easy way to extract them -glabel __osEnqueueThread - lw $t8, ($a0) - lw $t7, 4($a1) - move $t9, $a0 - lw $t6, 4($t8) - slt $at, $t6, $t7 - bnez $at, .L80326DC4 - nop -.L80326DAC: - move $t9, $t8 - lw $t8, ($t8) - lw $t6, 4($t8) - slt $at, $t6, $t7 - beqz $at, .L80326DAC - nop -.L80326DC4: - lw $t8, ($t9) - sw $t8, ($a1) - sw $a1, ($t9) - jr $ra - sw $a0, 8($a1) - -glabel __osPopThread - lw $v0, ($a0) - lw $t9, ($v0) - jr $ra - sw $t9, ($a0) - -glabel __osDispatchThread - lui $a0, %hi(D_80334890 + 0x8) # $a0, 0x8033 - jal __osPopThread - addiu $a0, %lo(D_80334890 + 0x8) # addiu $a0, $a0, 0x4898 - lui $at, %hi(D_80334890 + 0x10) # $at, 0x8033 - sw $v0, %lo(D_80334890 + 0x10)($at) - li $t0, 4 - sh $t0, 0x10($v0) - move $k0, $v0 - -.ifdef VERSION_EU - -/* 0B3884 802F4084 3C088030 */ lui $t0, %hi(D_8030208C) # $t0, 0x8030 -/* 0B3888 802F4088 8F5B0118 */ lw $k1, 0x118($k0) -/* 0B388C 802F408C 2508208C */ addiu $t0, %lo(D_8030208C) # addiu $t0, $t0, 0x208c -/* 0B3890 802F4090 8D080000 */ lw $t0, ($t0) -/* 0B3894 802F4094 3C01FFFF */ lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff -/* 0B3898 802F4098 3369FF00 */ andi $t1, $k1, 0xff00 -/* 0B389C 802F409C 342100FF */ ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff -/* 0B38A0 802F40A0 3108FF00 */ andi $t0, $t0, 0xff00 -/* 0B38A4 802F40A4 01284824 */ and $t1, $t1, $t0 -/* 0B38A8 802F40A8 0361D824 */ and $k1, $k1, $at -/* 0B38AC 802F40AC 0369D825 */ or $k1, $k1, $t1 -/* 0B38B0 802F40B0 409B6000 */ mtc0 $k1, $12 -.endif -.L80326E08: - ld $k1, 0x108($k0) - ld $at, 0x20($k0) - ld $v0, 0x28($k0) - mtlo $k1 - ld $k1, 0x110($k0) - ld $v1, 0x30($k0) - ld $a0, 0x38($k0) - ld $a1, 0x40($k0) - ld $a2, 0x48($k0) - ld $a3, 0x50($k0) - ld $t0, 0x58($k0) - ld $t1, 0x60($k0) - ld $t2, 0x68($k0) - ld $t3, 0x70($k0) - ld $t4, 0x78($k0) - ld $t5, 0x80($k0) - ld $t6, 0x88($k0) - ld $t7, 0x90($k0) - ld $s0, 0x98($k0) - ld $s1, 0xa0($k0) - ld $s2, 0xa8($k0) - ld $s3, 0xb0($k0) - ld $s4, 0xb8($k0) - ld $s5, 0xc0($k0) - ld $s6, 0xc8($k0) - ld $s7, 0xd0($k0) - ld $t8, 0xd8($k0) - ld $t9, 0xe0($k0) - ld $gp, 0xe8($k0) - mthi $k1 - ld $sp, 0xf0($k0) - ld $fp, 0xf8($k0) - ld $ra, 0x100($k0) - lw $k1, 0x11c($k0) - mtc0 $k1, $14 -.ifndef VERSION_EU - lw $k1, 0x118($k0) - mtc0 $k1, $12 -.endif - lw $k1, 0x18($k0) - beqz $k1, .L80326EF0 - nop - lw $k1, 0x12c($k0) - ctc1 $k1, $31 - ldc1 $f0, 0x130($k0) - ldc1 $f2, 0x138($k0) - ldc1 $f4, 0x140($k0) - ldc1 $f6, 0x148($k0) - ldc1 $f8, 0x150($k0) - ldc1 $f10, 0x158($k0) - ldc1 $f12, 0x160($k0) - ldc1 $f14, 0x168($k0) - ldc1 $f16, 0x170($k0) - ldc1 $f18, 0x178($k0) - ldc1 $f20, 0x180($k0) - ldc1 $f22, 0x188($k0) - ldc1 $f24, 0x190($k0) - ldc1 $f26, 0x198($k0) - ldc1 $f28, 0x1a0($k0) - ldc1 $f30, 0x1a8($k0) -.L80326EF0: - lw $k1, 0x128($k0) -.ifdef VERSION_EU -/* 0B3998 802F4198 3C1A8030 */ lui $k0, %hi(D_8030208C) # $k0, 0x8030 -/* 0B399C 802F419C 275A208C */ addiu $k0, %lo(D_8030208C) # addiu $k0, $k0, 0x208c -/* 0B39A0 802F41A0 8F5A0000 */ lw $k0, ($k0) -/* 0B39A4 802F41A4 001AD402 */ srl $k0, $k0, 0x10 -/* 0B39A8 802F41A8 037AD824 */ and $k1, $k1, $k0 -.endif - sll $k1, $k1, 1 - lui $k0, %hi(D_803386D0) # $k0, 0x8034 - addiu $k0, %lo(D_803386D0) # addiu $k0, $k0, -0x7930 - addu $k1, $k1, $k0 - lhu $k1, ($k1) - lui $k0, %hi(MI_INTR_MASK_REG) # $k0, 0xa430 - addiu $k0, %lo(MI_INTR_MASK_REG) # addiu $k0, $k0, 0xc - sw $k1, ($k0) - nop - nop - nop - nop - eret -glabel __osCleanupThread - jal osDestroyThread - move $a0, $zero - -.section .data - -glabel D_80334920 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - -glabel D_80334934 - .word 0 - -glabel D_80334938 - .word 0 - .word 0 - -.section .rodata - -glabel D_80338610 - .byte 0x00,0x14,0x18,0x18,0x1C,0x1C,0x1C,0x1C,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x04,0x08,0x08,0x0C,0x0C,0x0C,0x0C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 - -glabel jtbl_80338630 - .word L80326B9C - .word L80326B64 - .word L80326B44 - .word L803269B8 - .word L80326984 - .word L80326AE8 -.ifdef VERSION_EU - .word 0x802f3b28 - .word 0x802f3b34 -.else - .word L80326BE8 - .word L80326BE8 -.endif - .word L80326964 - .word 0 - .word 0 - .word 0 diff --git a/lib/asm/__osGetCause.s b/lib/asm/__osGetCause.s deleted file mode 100644 index 13fff167..00000000 --- a/lib/asm/__osGetCause.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel __osGetCause - mfc0 $v0, $13 - jr $ra - nop - - nop - diff --git a/lib/asm/__osGetSR.s b/lib/asm/__osGetSR.s deleted file mode 100644 index e2f74c76..00000000 --- a/lib/asm/__osGetSR.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel __osGetSR - mfc0 $v0, $12 - jr $ra - nop - - nop - diff --git a/lib/asm/__osProbeTLB.s b/lib/asm/__osProbeTLB.s deleted file mode 100644 index fe83ea16..00000000 --- a/lib/asm/__osProbeTLB.s +++ /dev/null @@ -1,64 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel __osProbeTLB - mfc0 $t0, $10 - andi $t1, $t0, 0xff - li $at, -8192 - and $t2, $a0, $at - or $t1, $t1, $t2 - mtc0 $t1, $10 - nop - nop - nop - tlbp - nop - nop - mfc0 $t3, $0 - lui $at, 0x8000 - and $t3, $t3, $at - bnez $t3, .L8032A0D8 - nop - tlbr - nop - nop - nop - mfc0 $t3, $5 - addi $t3, $t3, 0x2000 - srl $t3, $t3, 1 - and $t4, $t3, $a0 - bnez $t4, .L8032A0A8 - addi $t3, $t3, -1 - mfc0 $v0, $2 - b .L8032A0AC - nop -.L8032A0A8: - mfc0 $v0, $3 -.L8032A0AC: - andi $t5, $v0, 2 - beqz $t5, .L8032A0D8 - nop - lui $at, (0x3FFFFFC0 >> 16) # lui $at, 0x3fff - ori $at, (0x3FFFFFC0 & 0xFFFF) # ori $at, $at, 0xffc0 - and $v0, $v0, $at - sll $v0, $v0, 6 - and $t5, $a0, $t3 - add $v0, $v0, $t5 - b .L8032A0DC - nop -.L8032A0D8: - li $v0, -1 -.L8032A0DC: - mtc0 $t0, $10 - jr $ra - nop - - nop - nop - diff --git a/lib/asm/__osRestoreInt.s b/lib/asm/__osRestoreInt.s deleted file mode 100644 index f6ab98ef..00000000 --- a/lib/asm/__osRestoreInt.s +++ /dev/null @@ -1,19 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel __osRestoreInt - mfc0 $t0, $12 - or $t0, $t0, $a0 - mtc0 $t0, $12 - nop - nop - jr $ra - nop - - nop - diff --git a/lib/asm/__osSetCompare.s b/lib/asm/__osSetCompare.s deleted file mode 100644 index a1dab931..00000000 --- a/lib/asm/__osSetCompare.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel __osSetCompare - mtc0 $a0, $11 - jr $ra - nop - - nop - diff --git a/lib/asm/__osSetFpcCsr.s b/lib/asm/__osSetFpcCsr.s deleted file mode 100644 index e644bc74..00000000 --- a/lib/asm/__osSetFpcCsr.s +++ /dev/null @@ -1,14 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel __osSetFpcCsr - cfc1 $v0, $31 - ctc1 $a0, $31 - jr $ra - nop - diff --git a/lib/asm/__osSetSR.s b/lib/asm/__osSetSR.s deleted file mode 100644 index 3fba3e66..00000000 --- a/lib/asm/__osSetSR.s +++ /dev/null @@ -1,14 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel __osSetSR - mtc0 $a0, $12 - nop - jr $ra - nop - diff --git a/lib/asm/__os_eu_802ef550.s b/lib/asm/__os_eu_802ef550.s deleted file mode 100644 index 99b328e2..00000000 --- a/lib/asm/__os_eu_802ef550.s +++ /dev/null @@ -1,22 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 -.set noat - -.include "macros.inc" - - -.section .text, "ax" -# cache related -glabel __os_eu_802ef550 - lui $t0,0x8000 - li $t2,0x2000 - addu $t1,$t0,$t2 - addiu $t1,$t1,-0x10 -.L: cache 0x1,0($t0) - sltu $at,$t0,$t1 - bnez $at,.L - addiu $t0,$t0,0x10 - jr $ra - nop - nop - nop diff --git a/lib/asm/bcopy.s b/lib/asm/bcopy.s deleted file mode 100644 index 953a3d3c..00000000 --- a/lib/asm/bcopy.s +++ /dev/null @@ -1,232 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel bcopy - beqz $a2, .L80323A4C - move $a3, $a1 - beq $a0, $a1, .L80323A4C - slt $at, $a1, $a0 - bnezl $at, .L80323A14 - slti $at, $a2, 0x10 - add $v0, $a0, $a2 - slt $at, $a1, $v0 - beql $at, $zero, .L80323A14 - slti $at, $a2, 0x10 - b .L80323B78 - slti $at, $a2, 0x10 - slti $at, $a2, 0x10 -.L80323A14: - bnez $at, .L80323A2C - nop - andi $v0, $a0, 3 - andi $v1, $a1, 3 - beq $v0, $v1, .L80323A54 - nop -.L80323A2C: - beqz $a2, .L80323A4C - nop - addu $v1, $a0, $a2 -.L80323A38: - lb $v0, ($a0) - addiu $a0, $a0, 1 - addiu $a1, $a1, 1 - bne $a0, $v1, .L80323A38 - sb $v0, -1($a1) -.L80323A4C: - jr $ra - move $v0, $a3 - -.L80323A54: - beqz $v0, .L80323AB8 - li $at, 1 - beq $v0, $at, .L80323A9C - li $at, 2 - beql $v0, $at, .L80323A88 - lh $v0, ($a0) - lb $v0, ($a0) - addiu $a0, $a0, 1 - addiu $a1, $a1, 1 - addiu $a2, $a2, -1 - b .L80323AB8 - sb $v0, -1($a1) - lh $v0, ($a0) -.L80323A88: - addiu $a0, $a0, 2 - addiu $a1, $a1, 2 - addiu $a2, $a2, -2 - b .L80323AB8 - sh $v0, -2($a1) -.L80323A9C: - lb $v0, ($a0) - lh $v1, 1($a0) - addiu $a0, $a0, 3 - addiu $a1, $a1, 3 - addiu $a2, $a2, -3 - sb $v0, -3($a1) - sh $v1, -2($a1) -.L80323AB8: - slti $at, $a2, 0x20 - bnezl $at, .L80323B18 - slti $at, $a2, 0x10 - lw $v0, ($a0) - lw $v1, 4($a0) - lw $t0, 8($a0) - lw $t1, 0xc($a0) - lw $t2, 0x10($a0) - lw $t3, 0x14($a0) - lw $t4, 0x18($a0) - lw $t5, 0x1c($a0) - addiu $a0, $a0, 0x20 - addiu $a1, $a1, 0x20 - addiu $a2, $a2, -0x20 - sw $v0, -0x20($a1) - sw $v1, -0x1c($a1) - sw $t0, -0x18($a1) - sw $t1, -0x14($a1) - sw $t2, -0x10($a1) - sw $t3, -0xc($a1) - sw $t4, -8($a1) - b .L80323AB8 - sw $t5, -4($a1) -.L80323B14: - slti $at, $a2, 0x10 -.L80323B18: - bnezl $at, .L80323B54 - slti $at, $a2, 4 - lw $v0, ($a0) - lw $v1, 4($a0) - lw $t0, 8($a0) - lw $t1, 0xc($a0) - addiu $a0, $a0, 0x10 - addiu $a1, $a1, 0x10 - addiu $a2, $a2, -0x10 - sw $v0, -0x10($a1) - sw $v1, -0xc($a1) - sw $t0, -8($a1) - b .L80323B14 - sw $t1, -4($a1) -.L80323B50: - slti $at, $a2, 4 -.L80323B54: - bnez $at, .L80323A2C - nop - lw $v0, ($a0) - addiu $a0, $a0, 4 - addiu $a1, $a1, 4 - addiu $a2, $a2, -4 - b .L80323B50 - sw $v0, -4($a1) - slti $at, $a2, 0x10 -.L80323B78: - add $a0, $a0, $a2 - bnez $at, .L80323B94 - add $a1, $a1, $a2 - andi $v0, $a0, 3 - andi $v1, $a1, 3 - beq $v0, $v1, .L80323BC4 - nop -.L80323B94: - beqz $a2, .L80323A4C - nop - addiu $a0, $a0, -1 - addiu $a1, $a1, -1 - subu $v1, $a0, $a2 -.L80323BA8: - lb $v0, ($a0) - addiu $a0, $a0, -1 - addiu $a1, $a1, -1 - bne $a0, $v1, .L80323BA8 - sb $v0, 1($a1) - jr $ra - move $v0, $a3 - -.L80323BC4: - beqz $v0, .L80323C28 - li $at, 3 - beq $v0, $at, .L80323C0C - li $at, 2 - beql $v0, $at, .L80323BF8 - lh $v0, -2($a0) - lb $v0, -1($a0) - addiu $a0, $a0, -1 - addiu $a1, $a1, -1 - addiu $a2, $a2, -1 - b .L80323C28 - sb $v0, ($a1) - lh $v0, -2($a0) -.L80323BF8: - addiu $a0, $a0, -2 - addiu $a1, $a1, -2 - addiu $a2, $a2, -2 - b .L80323C28 - sh $v0, ($a1) -.L80323C0C: - lb $v0, -1($a0) - lh $v1, -3($a0) - addiu $a0, $a0, -3 - addiu $a1, $a1, -3 - addiu $a2, $a2, -3 - sb $v0, 2($a1) - sh $v1, ($a1) -.L80323C28: - slti $at, $a2, 0x20 - bnezl $at, .L80323C88 - slti $at, $a2, 0x10 - lw $v0, -4($a0) - lw $v1, -8($a0) - lw $t0, -0xc($a0) - lw $t1, -0x10($a0) - lw $t2, -0x14($a0) - lw $t3, -0x18($a0) - lw $t4, -0x1c($a0) - lw $t5, -0x20($a0) - addiu $a0, $a0, -0x20 - addiu $a1, $a1, -0x20 - addiu $a2, $a2, -0x20 - sw $v0, 0x1c($a1) - sw $v1, 0x18($a1) - sw $t0, 0x14($a1) - sw $t1, 0x10($a1) - sw $t2, 0xc($a1) - sw $t3, 8($a1) - sw $t4, 4($a1) - b .L80323C28 - sw $t5, ($a1) -.L80323C84: - slti $at, $a2, 0x10 -.L80323C88: - bnezl $at, .L80323CC4 - slti $at, $a2, 4 - lw $v0, -4($a0) - lw $v1, -8($a0) - lw $t0, -0xc($a0) - lw $t1, -0x10($a0) - addiu $a0, $a0, -0x10 - addiu $a1, $a1, -0x10 - addiu $a2, $a2, -0x10 - sw $v0, 0xc($a1) - sw $v1, 8($a1) - sw $t0, 4($a1) - b .L80323C84 - sw $t1, ($a1) -.L80323CC0: - slti $at, $a2, 4 -.L80323CC4: - bnez $at, .L80323B94 - nop - lw $v0, -4($a0) - addiu $a0, $a0, -4 - addiu $a1, $a1, -4 - addiu $a2, $a2, -4 - b .L80323CC0 - sw $v0, ($a1) - nop - nop - nop - diff --git a/lib/asm/bzero.s b/lib/asm/bzero.s deleted file mode 100644 index 37053b7e..00000000 --- a/lib/asm/bzero.s +++ /dev/null @@ -1,53 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - -#this file is probably handwritten - -.section .text, "ax" - -glabel bzero - blt $a1, 0xc, .L803236BC - negu $v1, $a0 - andi $v1, $v1, 3 - beqz $v1, .L80323660 - subu $a1, $a1, $v1 - swl $zero, ($a0) - addu $a0, $a0, $v1 -.L80323660: - and $a3, $a1, -32 - beqz $a3, .L8032369C - subu $a1, $a1, $a3 - addu $a3, $a3, $a0 -.L80323674: - addiu $a0, $a0, 0x20 - sw $zero, -0x20($a0) - sw $zero, -0x1c($a0) - sw $zero, -0x18($a0) - sw $zero, -0x14($a0) - sw $zero, -0x10($a0) - sw $zero, -0xc($a0) - sw $zero, -8($a0) - bne $a0, $a3, .L80323674 - sw $zero, -4($a0) -.L8032369C: - and $a3, $a1, -4 - beqz $a3, .L803236BC - subu $a1, $a1, $a3 - addu $a3, $a3, $a0 -.L803236B0: - addiu $a0, $a0, 4 - bne $a0, $a3, .L803236B0 - sw $zero, -4($a0) -.L803236BC: - blez $a1, .L803236D4 - nop - addu $a1, $a1, $a0 -.L803236C8: - addiu $a0, $a0, 1 - bne $a0, $a1, .L803236C8 - sb $zero, -1($a0) -.L803236D4: - jr $ra - diff --git a/lib/asm/llmuldiv_gcc.s b/lib/asm/llmuldiv_gcc.s deleted file mode 100644 index cf604929..00000000 --- a/lib/asm/llmuldiv_gcc.s +++ /dev/null @@ -1,100 +0,0 @@ -# assembler directives -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -/* -------------------------------------------------------------------------------------- */ -/* need to asm these functions because lib32gcc-7-dev-mips-cross does not exist so we */ -/* cannot naturally link a libgcc variant for this target given this architecture and */ -/* compiler. Until we have a good workaround with a gcc target that doesn't involve */ -/* assuming a 32-bit to 64-bit change, we have to encode these functions as raw assembly */ -/* for it to compile. */ -/* -------------------------------------------------------------------------------------- */ - -/* TODO: Is there a non-insane way to fix this hack that doesn't involve the user compiling */ -/* a library themselves? */ -glabel __umoddi3 - sw $a0, ($sp) - sw $a1, 4($sp) - sw $a2, 8($sp) - sw $a3, 0xc($sp) - ld $t7, 8($sp) - ld $t6, ($sp) - ddivu $zero, $t6, $t7 - bnez $t7, .L80324144 - nop - break 7 -.L80324144: - mfhi $v0 - dsll32 $v1, $v0, 0 - dsra32 $v1, $v1, 0 - jr $ra - dsra32 $v0, $v0, 0 - -glabel __udivdi3 - sw $a0, ($sp) - sw $a1, 4($sp) - sw $a2, 8($sp) - sw $a3, 0xc($sp) - ld $t7, 8($sp) - ld $t6, ($sp) - ddivu $zero, $t6, $t7 - bnez $t7, .L80324180 - nop - break 7 -.L80324180: - mflo $v0 - dsll32 $v1, $v0, 0 - dsra32 $v1, $v1, 0 - jr $ra - dsra32 $v0, $v0, 0 - -glabel __moddi3 - sw $a0, ($sp) - sw $a1, 4($sp) - sw $a2, 8($sp) - sw $a3, 0xc($sp) - ld $t7, 8($sp) - ld $t6, ($sp) - ddivu $zero, $t6, $t7 - bnez $t7, .L803241E8 - nop - break 7 -.L803241E8: - mfhi $v0 - dsll32 $v1, $v0, 0 - dsra32 $v1, $v1, 0 - jr $ra - dsra32 $v0, $v0, 0 - -glabel __divdi3 - sw $a0, ($sp) - sw $a1, 4($sp) - sw $a2, 8($sp) - sw $a3, 0xc($sp) - ld $t7, 8($sp) - ld $t6, ($sp) - ddiv $zero, $t6, $t7 - nop - bnez $t7, .L80324228 - nop - break 7 -.L80324228: - daddiu $at, $zero, -1 - bne $t7, $at, .L80324244 - daddiu $at, $zero, 1 - dsll32 $at, $at, 0x1f - bne $t6, $at, .L80324244 - nop - break 6 -.L80324244: - mflo $v0 - dsll32 $v1, $v0, 0 - dsra32 $v1, $v1, 0 - jr $ra - dsra32 $v0, $v0, 0 diff --git a/lib/asm/osGetCount.s b/lib/asm/osGetCount.s deleted file mode 100644 index 58bd3629..00000000 --- a/lib/asm/osGetCount.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel osGetCount - mfc0 $v0, $9 - jr $ra - nop - - nop - diff --git a/lib/asm/osInvalDCache.s b/lib/asm/osInvalDCache.s deleted file mode 100644 index 452c4dd3..00000000 --- a/lib/asm/osInvalDCache.s +++ /dev/null @@ -1,59 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel osInvalDCache - blez $a1, .L80323500 - nop - li $t3, 8192 - sltu $at, $a1, $t3 - beqz $at, .L80323508 - nop - move $t0, $a0 - addu $t1, $a0, $a1 - sltu $at, $t0, $t1 - beqz $at, .L80323500 - nop - andi $t2, $t0, 0xf - beqz $t2, .L803234D0 - addiu $t1, $t1, -0x10 - subu $t0, $t0, $t2 - cache 0x15, ($t0) - sltu $at, $t0, $t1 - beqz $at, .L80323500 - nop - addiu $t0, $t0, 0x10 -.L803234D0: - andi $t2, $t1, 0xf - beqz $t2, .L803234F0 - nop - subu $t1, $t1, $t2 - cache 0x15, 0x10($t1) - sltu $at, $t1, $t0 - bnez $at, .L80323500 - nop -.L803234F0: - cache 0x11, ($t0) - sltu $at, $t0, $t1 - bnez $at, .L803234F0 - addiu $t0, $t0, 0x10 -.L80323500: - jr $ra - nop - -.L80323508: - li $t0, K0BASE - addu $t1, $t0, $t3 - addiu $t1, $t1, -0x10 -.L80323514: - cache 1, ($t0) - sltu $at, $t0, $t1 - bnez $at, .L80323514 - addiu $t0, $t0, 0x10 - jr $ra - nop diff --git a/lib/asm/osInvalICache.s b/lib/asm/osInvalICache.s deleted file mode 100644 index 8b8a03f0..00000000 --- a/lib/asm/osInvalICache.s +++ /dev/null @@ -1,44 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel osInvalICache - blez $a1, .L80323728 - nop - li $t3, 16384 - sltu $at, $a1, $t3 - beqz $at, .L80323730 - nop - move $t0, $a0 - addu $t1, $a0, $a1 - sltu $at, $t0, $t1 - beqz $at, .L80323728 - nop - andi $t2, $t0, 0x1f - addiu $t1, $t1, -0x20 - subu $t0, $t0, $t2 -.L80323718: - cache 0x10, ($t0) - sltu $at, $t0, $t1 - bnez $at, .L80323718 - addiu $t0, $t0, 0x20 -.L80323728: - jr $ra - nop - -.L80323730: - li $t0, K0BASE - addu $t1, $t0, $t3 - addiu $t1, $t1, -0x20 -.L8032373C: - cache 0, ($t0) - sltu $at, $t0, $t1 - bnez $at, .L8032373C - addiu $t0, $t0, 0x20 - jr $ra - nop diff --git a/lib/asm/osMapTLB.s b/lib/asm/osMapTLB.s deleted file mode 100644 index b9ee4364..00000000 --- a/lib/asm/osMapTLB.s +++ /dev/null @@ -1,63 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -# This file is handwritten - -#void osMapTLB(s32 index, OSPageMask pm, void *vaddr, u32 evenpaddr, u32 oddpaddr, s32 asid); -glabel osMapTLB - mfc0 $t0, $10 - mtc0 $a0, $0 - mtc0 $a1, $5 - lw $t1, 0x14($sp) #asid - beq $t1, -1, .L803214D8 - li $t4, 1 - li $t2, 30 - b .L803214DC - or $a2, $a2, $t1 #vaddr -.L803214D8: - li $t2, 31 -.L803214DC: - mtc0 $a2, $10 #vaddr - beq $a3, -1, .L80321500 #even paddr - nop - srl $t3, $a3, 6 #evenpaddr - or $t3, $t3, $t2 - mtc0 $t3, $2 - b .L80321504 - nop -.L80321500: - mtc0 $t4, $2 -.L80321504: - lw $t3, 0x10($sp) #oddpaddr - beq $t3, -1, .L80321528 - nop - srl $t3, $t3, 6 - or $t3, $t3, $t2 - mtc0 $t3, $3 - b .L80321540 - nop -.L80321528: - mtc0 $t4, $3 - bne $a3, -1, .L80321540 #evenpaddr - nop - lui $t3, 0x8000 - mtc0 $t3, $10 -.L80321540: - nop - tlbwi - nop - nop - nop - nop - mtc0 $t0, $10 - jr $ra - nop #file gets padded but - nop - nop - nop - diff --git a/lib/asm/osMapTLBRdb.s b/lib/asm/osMapTLBRdb.s deleted file mode 100644 index 6753280d..00000000 --- a/lib/asm/osMapTLBRdb.s +++ /dev/null @@ -1,36 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel osMapTLBRdb - mfc0 $t0, $10 - li $t1, 31 - mtc0 $t1, $0 - mtc0 $zero, $5 - li $t2, 23 - lui $t1, 0xc000 - mtc0 $t1, $10 - lui $t1, 0x8000 - srl $t3, $t1, 6 - or $t3, $t3, $t2 - mtc0 $t3, $2 - li $t1, 1 - mtc0 $t1, $3 - nop - tlbwi - nop - nop - nop - nop - mtc0 $t0, $10 - jr $ra - nop - - nop - nop - diff --git a/lib/asm/osSetIntMask.s b/lib/asm/osSetIntMask.s deleted file mode 100644 index ccce609c..00000000 --- a/lib/asm/osSetIntMask.s +++ /dev/null @@ -1,138 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - -.eqv MI_INTR_MASK_REG, 0xA430000C - -.section .text, "ax" - -glabel osSetIntMask -.ifndef VERSION_EU - mfc0 $t1, $12 - andi $v0, $t1, 0xff01 -.else - mfc0 $t4, $12 - andi $v0, $t4, 0xff01 - lui $t0, %hi(D_8030208C) # $t0, 0x8030 - addiu $t0, %lo(D_8030208C) # addiu $t0, $t0, 0x208c - lw $t3, ($t0) - li $at, -1 - xor $t0, $t3, $at - andi $t0, $t0, 0xff00 - or $v0, $v0, $t0 -.endif - lui $t2, %hi(MI_INTR_MASK_REG) # $t2, 0xa430 - lw $t2, %lo(MI_INTR_MASK_REG)($t2) -.ifdef VERSION_EU - beqz $t2, .L80200074 - srl $t1, $t3, 0x10 - li $at, -1 - xor $t1, $t1, $at - andi $t1, $t1, 0x3f - or $t2, $t2, $t1 -.L80200074: -.endif - sll $t2, $t2, 0x10 - or $v0, $v0, $t2 - lui $at, 0x3f - and $t0, $a0, $at -.ifdef VERSION_EU - and $t0, $t0, $t3 -.endif - srl $t0, $t0, 0xf - lui $t2, %hi(D_803386D0) - addu $t2, $t2, $t0 - lhu $t2, %lo(D_803386D0)($t2) - lui $at, %hi(MI_INTR_MASK_REG) # $at, 0xa430 - sw $t2, %lo(MI_INTR_MASK_REG)($at) - andi $t0, $a0, 0xff01 -.ifdef VERSION_EU - andi $t1, $t3, 0xff00 - and $t0, $t0, $t1 -.endif - lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff - ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff -.ifndef VERSION_EU - and $t1, $t1, $at - or $t1, $t1, $t0 - mtc0 $t1, $12 -.else - and $t4, $t4, $at - or $t4, $t4, $t0 - mtc0 $t4, $12 -.endif - nop - nop - jr $ra - nop - - -.section .rodata - -glabel D_803386D0 -.half 0x0555 -.half 0x0556 -.half 0x0559 -.half 0x055A -.half 0x0565 -.half 0x0566 -.half 0x0569 -.half 0x056A -.half 0x0595 -.half 0x0596 -.half 0x0599 -.half 0x059A -.half 0x05A5 -.half 0x05A6 -.half 0x05A9 -.half 0x05AA -.half 0x0655 -.half 0x0656 -.half 0x0659 -.half 0x065A -.half 0x0665 -.half 0x0666 -.half 0x0669 -.half 0x066A -.half 0x0695 -.half 0x0696 -.half 0x0699 -.half 0x069A -.half 0x06A5 -.half 0x06A6 -.half 0x06A9 -.half 0x06AA -.half 0x0955 -.half 0x0956 -.half 0x0959 -.half 0x095A -.half 0x0965 -.half 0x0966 -.half 0x0969 -.half 0x096A -.half 0x0995 -.half 0x0996 -.half 0x0999 -.half 0x099A -.half 0x09A5 -.half 0x09A6 -.half 0x09A9 -.half 0x09AA -.half 0x0A55 -.half 0x0A56 -.half 0x0A59 -.half 0x0A5A -.half 0x0A65 -.half 0x0A66 -.half 0x0A69 -.half 0x0A6A -.half 0x0A95 -.half 0x0A96 -.half 0x0A99 -.half 0x0A9A -.half 0x0AA5 -.half 0x0AA6 -.half 0x0AA9 -.half 0x0AAA diff --git a/lib/asm/osUnmapTLBAll.s b/lib/asm/osUnmapTLBAll.s deleted file mode 100644 index 0bd9ad27..00000000 --- a/lib/asm/osUnmapTLBAll.s +++ /dev/null @@ -1,32 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel osUnmapTLBAll - mfc0 $t0, $10 - li $t1, 31 - lui $t2, 0x8000 - mtc0 $t2, $10 - mtc0 $zero, $2 - mtc0 $zero, $3 -.L80321588: - mtc0 $t1, $0 - nop - tlbwi - nop - nop - addi $t1, $t1, -1 - bnezl $t1, .L80321588 #bnezl, bnez but with likely hint - nop - mtc0 $t0, $10 - jr $ra - nop - - nop - nop - nop - diff --git a/lib/asm/osWritebackDCache.s b/lib/asm/osWritebackDCache.s deleted file mode 100644 index 8e870168..00000000 --- a/lib/asm/osWritebackDCache.s +++ /dev/null @@ -1,39 +0,0 @@ -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel osWritebackDCache - blez $a1, .osWritebackDCacheReturn - nop - li $t3, 8192 - bgeu $a1, $t3, .L80324E40 - nop - move $t0, $a0 - addu $t1, $a0, $a1 - bgeu $t0, $t1, .osWritebackDCacheReturn - nop - andi $t2, $t0, 0xf - addiu $t1, $t1, -0x10 - subu $t0, $t0, $t2 -.L80324E28: - cache 0x19, ($t0) - bltu $t0, $t1, .L80324E28 - addiu $t0, $t0, 0x10 -.osWritebackDCacheReturn: - jr $ra - nop - -.L80324E40: - lui $t0, 0x8000 - addu $t1, $t0, $t3 - addiu $t1, $t1, -0x10 -.L80324E4C: - cache 1, ($t0) - bltu $t0, $t1, .L80324E4C - addiu $t0, 0x10 # addiu $t0, $t0, 0x10 - jr $ra - nop diff --git a/lib/asm/osWritebackDCacheAll.s b/lib/asm/osWritebackDCacheAll.s deleted file mode 100644 index 88707604..00000000 --- a/lib/asm/osWritebackDCacheAll.s +++ /dev/null @@ -1,24 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - - -.section .text, "ax" - -glabel osWritebackDCacheAll - li $t0, K0BASE - li $t2, 8192 - addu $t1, $t0, $t2 - addiu $t1, $t1, -0x10 -.L80322020: - cache 1, ($t0) - sltu $at, $t0, $t1 - bnez $at, .L80322020 - addiu $t0, $t0, 0x10 - jr $ra - nop - - nop - nop diff --git a/lib/asm/parameters.s b/lib/asm/parameters.s deleted file mode 100644 index d5106bfe..00000000 --- a/lib/asm/parameters.s +++ /dev/null @@ -1,18 +0,0 @@ -.macro gsymbol sym addr -.global \sym -.set \sym, \addr -.ifndef VERSION_JP -nop -nop -.endif -.endm - -.text -gsymbol osTvType 0x80000300 -gsymbol osRomType 0x80000304 -gsymbol osRomBase 0x80000308 -gsymbol osResetType 0x8000030C -gsymbol osCiCId 0x80000310 -gsymbol osVersion 0x80000314 -gsymbol osMemSize 0x80000318 -gsymbol osAppNmiBuffer 0x8000031C diff --git a/lib/rsp.s b/lib/rsp.s deleted file mode 100644 index a1284e1e..00000000 --- a/lib/rsp.s +++ /dev/null @@ -1,252 +0,0 @@ -.include "macros.inc" -.set UCODE_SIZE, 0x800 - -.section .text - -.balign 16 -glabel rspF3DBootStart - .ifndef VERSION_EU - .incbin "lib/PR/boot/F3D_boot.bin" - .else - .incbin "lib/PR/boot/F3D_boot_eu.bin" - .half 0 - .endif -glabel rspF3DBootEnd - -.balign 16 -.ifndef F3DEX_GBI_SHARED -glabel rspF3DStart /* Use regular Fast3D bins (default) */ - .ifndef F3D_OLD - .incbin "lib/PR/f3d/new/F3D.bin" /* OS 2.0H (J2 and IQ) */ - .else - .incbin "lib/PR/f3d/old/F3D.bin" /* OS 2.0D (US and JP) */ - .endif -glabel rspF3DEnd - -.else /* Use one of the Fast3DEX series grucodes. */ -glabel rspF3DStart - .if F3DEX_GBI_2 == 1 - .incbin "lib/PR/f3dex2/F3DEX2.bin" - .elseif F3DEX_GBI == 1 - .incbin "lib/PR/f3dex/F3DEX.bin" - .else /* Fast3DZEX */ - .incbin "lib/PR/f3dex2/F3DZEX.bin" - .endif -glabel rspF3DEnd -.endif - -/* Audio Bins */ - -.balign 16 -glabel rspAspMainStart - .incbin "lib/PR/audio/aspMain.bin" -glabel rspAspMainEnd - -/* - * LESS COMMON MICROCODES - * These are setup to be loaded by G_LOAD_UCODE - */ - -/* Fast3DEX NoN Text */ -.ifdef F3DEX_NON_GBI -glabel rspF3DEXNoNStart - .balign 16 - .incbin "lib/PR/f3dex/F3DEX_NoN.bin" -glabel rspF3DEXNoNEnd -.endif - -/* Fast3DLX Text */ -.ifdef F3DLX_GBI -glabel rspF3DLXStart - .incbin "lib/PR/f3dex/F3DLX.bin" -glabel rspF3DLXEnd -.endif - -/* Fast3DLX NoN Text */ -.ifdef F3DLX_NON_GBI -glabel rspF3DLXNoNStart - .balign 16 - .incbin "lib/PR/f3dex/F3DLX_NoN.bin" -glabel rspF3DLXNoNEnd -.endif - -/* Fast3DLX Rej Text */ -.ifdef F3DLX_REJ_GBI -glabel rspF3DLXRejStart - .balign 16 - .incbin "lib/PR/f3dex/F3DLX_Rej.bin" -glabel rspF3DLXRejEnd -.endif - -/* Line3DEX Text */ -.ifdef L3DEX_GBI -glabel rspL3DEXStart - .balign 16 - .incbin "lib/PR/f3dex/L3DEX.bin" -glabel rspL3DEXEnd -.endif - -/* S2DEX Text */ -.ifdef S2DEX_GBI -glabel rspS2DEXStart - .balign 16 - .incbin "lib/PR/s2dex/S2DEX.bin" -glabel rspS2DEXEnd -.endif - -/* Fast3DEX2 series */ - -/* Fast3DEX2 NoN Text */ -.ifdef F3DEX2_NON_GBI -.balign 16 -glabel rspF3DEX2NoNStart - .incbin "lib/PR/f3dex2/F3DEX2_NoN.bin" -glabel rspF3DEX2NoNEnd -.endif - -/* Fast3DEX2 Rej Text */ -.ifdef F3DEX2_REJ_GBI -.balign 16 -glabel rspF3DEX2RejStart - .incbin "lib/PR/f3dex2/F3DEX2_Rej.bin" -glabel rspF3DEX2RejEnd -.endif - -/* Line3DEX2 Text */ -.ifdef L3DEX2_GBI -.balign 16 -glabel rspL3DEX2Start - .incbin "lib/PR/f3dex2/L3DEX2.bin" -glabel rspL3DEX2End -.endif - -/* S2DEX2 Text */ -.ifdef S2DEX_GBI_2 -.balign 16 -glabel rspS2DEXStart - .incbin "lib/PR/s2dex/S2DEX2.bin" -glabel rspS2DEXEnd -.endif - -/* DATA SECTION START */ - -.section .rodata - -.balign 16 -.ifndef F3DEX_GBI_SHARED /* Use regular Fast3D data (default) */ -glabel rspF3DDataStart - .ifndef F3D_OLD /* OS 2.0H (J2 and IQ) */ - .ifdef VERSION_EU - .incbin "lib/PR/f3d/new/F3D_data_EU.bin" - .else - .incbin "lib/PR/f3d/new/F3D_data.bin" - .endif - .else /* OS 2.0D (US and JP) */ - .incbin "lib/PR/f3d/old/F3D_data.bin" - .endif -glabel rspF3DDataEnd - -.else /* Using one of the Fast3DEX series grucodes */ -glabel rspF3DDataStart - .if F3DEX_GBI_2 == 1 - .incbin "lib/PR/f3dex2/F3DEX2_data.bin" - .elseif F3DEX_GBI == 1 - .incbin "lib/PR/f3dex/F3DEX_data.bin" - .else /* Fast3DZEX */ - .incbin "lib/PR/f3dex2/F3DZEX_data.bin" - .endif -glabel rspF3DDataEnd -.endif - -/* Audio Data */ - -.balign 16 -glabel rspAspMainDataStart - .incbin "lib/PR/audio/aspMain_data.bin" -glabel rspAspMainDataEnd - -/* LESS COMMON MICROCODES */ - -/* Fast3DEX Series */ - -/* Fast3DEX NoN Data */ -.ifdef F3DEX_NON_GBI -.balign 16 -glabel rspF3DEXNoNDataStart - .incbin "lib/PR/f3dex/F3DEX_NoN_data.bin" -glabel rspF3DEXNoNDataEnd -.endif - -/* Fast3DLX Data */ -.ifdef F3DLX_GBI -.balign 16 -glabel rspF3DLXDataStart - .incbin "lib/PR/f3dex/F3DLX_data.bin" -glabel rspF3DLXDataEnd -.endif - -/* Fast3DLX NoN Data */ -.ifdef F3DLX_NON_GBI -.balign 16 -glabel rspF3DLXNoNDataStart - .incbin "lib/PR/f3dex/F3DLX_NoN_data.bin" -glabel rspF3DLXNoNDataEnd -.endif - -/* Fast3DLX Rej Data */ -.ifdef F3DLX_REJ_GBI -.balign 16 -glabel rspF3DLXRejDataStart - .incbin "lib/PR/f3dex/F3DLX_Rej_data.bin" -glabel rspF3DLXRejDataEnd -.endif - -/* Line3DEX Data */ -.ifdef L3DEX_GBI -.balign 16 -glabel rspL3DEXDataStart - .incbin "lib/PR/f3dex/L3DEX_data.bin" -glabel rspL3DEXDataEnd -.endif - -/* S2DEX Data */ -.ifdef S2DEX_GBI -.balign 16 -glabel rspS2DEXDataStart - .incbin "lib/PR/s2dex/S2DEX_data.bin" -glabel rspS2DEXDataEnd -.endif - -/* Fast3DEX2 Series */ - -/* Fast3DEX2 NoN Data */ -.ifdef F3DEX2_NON_GBI -.balign 16 -glabel rspF3DEX2NoNStart - .incbin "lib/PR/f3dex2/F3DEX2_NoN_data.bin" -glabel rspF3DEX2NoNEnd -.endif - -/* Fast3DEX2 Rej Data */ -.ifdef F3DEX2_REJ_GBI -.balign 16 -glabel rspF3DEX2RejStart - .incbin "lib/PR/f3dex2/F3DEX2_Rej_data.bin" -glabel rspF3DEX2RejEnd -.endif - -/* Line3DEX2 Data */ -.ifdef L3DEX2_GBI -.balign 16 -glabel rspL3DEX2Start - .incbin "lib/PR/f3dex2/L3DEX2_data.bin" -glabel rspL3DEX2End -.endif - -/* S2DEX2 Data */ -.ifdef S2DEX_GBI_2 -.balign 16 -glabel rspS2DEXStart - .incbin "lib/PR/s2dex/S2DEX2_data.bin" -glabel rspS2DEXEnd -.endif From aff081080b0fe36a50b866787365e8c7c9a4e22a Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 4 Jun 2020 23:58:18 +0300 Subject: [PATCH 085/166] unfuck keyboard API; actually use seconds for rumble time --- src/game/thread6.h | 3 ++- src/pc/controller/controller_entry_point.c | 11 ++++++----- src/pc/controller/controller_keyboard.c | 2 ++ src/pc/controller/controller_sdl.c | 4 ++-- src/pc/pc_main.c | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/game/thread6.h b/src/game/thread6.h index 06586e62..a13cb142 100644 --- a/src/game/thread6.h +++ b/src/game/thread6.h @@ -15,5 +15,6 @@ extern void func_sh_8024CA04(void); extern void cancel_rumble(void); extern void create_thread_6(void); extern void rumble_thread_update_vi(void); +extern void thread6_rumble_loop(void *a0); -#endif // _THREAD_6_H \ No newline at end of file +#endif // _THREAD_6_H diff --git a/src/pc/controller/controller_entry_point.c b/src/pc/controller/controller_entry_point.c index fae9d657..d5403f93 100644 --- a/src/pc/controller/controller_entry_point.c +++ b/src/pc/controller/controller_entry_point.c @@ -1,5 +1,6 @@ #include "lib/src/libultra_internal.h" #include "lib/src/osContInternal.h" +#include "macros.h" #include "../configfile.h" @@ -21,7 +22,7 @@ static struct ControllerAPI *controller_implementations[] = { &controller_keyboard, }; -s32 osContInit(OSMesgQueue *mq, u8 *controllerBits, OSContStatus *status) { +s32 osContInit(UNUSED OSMesgQueue *mq, u8 *controllerBits, UNUSED OSContStatus *status) { for (size_t i = 0; i < sizeof(controller_implementations) / sizeof(struct ControllerAPI *); i++) { controller_implementations[i]->init(); } @@ -29,23 +30,23 @@ s32 osContInit(OSMesgQueue *mq, u8 *controllerBits, OSContStatus *status) { return 0; } -s32 osMotorStart(void *pfs) { +s32 osMotorStart(UNUSED void *pfs) { // Since rumble stops by osMotorStop, its duration is not nessecary. // Set it to 5 seconds and hope osMotorStop() is called in time. controller_rumble_play(configRumbleStrength / 100.0f, 5.0f); return 0; } -s32 osMotorStop(void *pfs) { +s32 osMotorStop(UNUSED void *pfs) { controller_rumble_stop(); return 0; } -u32 osMotorInit(OSMesgQueue *mq, void *pfs, s32 port) { +u32 osMotorInit(UNUSED OSMesgQueue *mq, UNUSED void *pfs, UNUSED s32 port) { return 0; // rumble is initialized in the specific backend's init function } -s32 osContStartReadData(OSMesgQueue *mesg) { +s32 osContStartReadData(UNUSED OSMesgQueue *mesg) { return 0; } diff --git a/src/pc/controller/controller_keyboard.c b/src/pc/controller/controller_keyboard.c index b38352dd..da597328 100644 --- a/src/pc/controller/controller_keyboard.c +++ b/src/pc/controller/controller_keyboard.c @@ -113,6 +113,8 @@ struct ControllerAPI controller_keyboard = { keyboard_init, keyboard_read, keyboard_rawkey, + NULL, + NULL, keyboard_bindkeys, keyboard_shutdown }; diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index 368179f3..9345daf1 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -241,9 +241,9 @@ static void controller_sdl_read(OSContPad *pad) { } } -static void controller_sdl_rumble_play(f32 strength, u32 length) { +static void controller_sdl_rumble_play(f32 strength, f32 length) { if (sdl_haptic) - SDL_HapticRumblePlay(sdl_haptic, strength, length); + SDL_HapticRumblePlay(sdl_haptic, strength, (u32)(length * 1000.0f)); } static void controller_sdl_rumble_stop(void) { diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 90f0b90b..da548635 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -67,7 +67,7 @@ void send_display_list(struct SPTask *spTask) { void produce_one_frame(void) { gfx_start_frame(); game_loop_one_iteration(); - thread6_rumble_loop(); + thread6_rumble_loop(NULL); int samples_left = audio_api->buffered(); u32 num_audio_samples = samples_left < audio_api->get_desired_buffered() ? 544 : 528; From ad92b93b394f66f3e2ae7b04844594bb728aaaa6 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Fri, 5 Jun 2020 15:15:40 +0900 Subject: [PATCH 086/166] Fix missed collected stars after gameover --- src/game/text_save.inc.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index a5a8f54f..0c34f1b8 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -153,7 +153,7 @@ static s32 write_text_save(s32 fileIndex) { if (i == 0) { stars = save_file_get_star_flags(fileIndex, -1); } else { - stars = save_file_get_star_flags(fileIndex, i+15); + stars = save_file_get_star_flags(fileIndex, i+14); } starFlags = int_to_bin(stars); @@ -191,6 +191,10 @@ static s32 write_text_save(s32 fileIndex) { } fprintf(file, "area = %d\n", savedata->capArea); + /* Update a backup */ + bcopy(&gSaveBuffer.files[fileIndex][0], &gSaveBuffer.files[fileIndex][1], + sizeof(gSaveBuffer.files[fileIndex][1])); + fclose(file); return 1; } @@ -240,7 +244,6 @@ static s32 read_text_save(s32 fileIndex) { return -1; } - /* Parse main flags */ for (i = 1; i < NUM_FLAGS; i++) { value = ini_get(savedata, "flags", sav_flags[i]); From caea5ec4cb60943659edc373f2bb06492b376669 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Fri, 5 Jun 2020 20:40:08 +0900 Subject: [PATCH 087/166] Nuke old VERSION OPT_FLAGS and add DEBUG flag --- Makefile | 10 ++++------ build.sh | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 49b60620..bfe0f8dc 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,8 @@ default: all # These options can either be changed by modifying the makefile, or # by building with 'make SETTING=value'. 'make clean' may be required. +# Build debug version (default) +DEBUG ?= 1 # Version of the game to build VERSION ?= us # Graphics microcode used @@ -280,15 +282,11 @@ GODDARD_SRC_DIRS := src/goddard src/goddard/dynlists MIPSISET := -mips2 MIPSBIT := -32 -ifeq ($(VERSION),eu) - OPT_FLAGS := -O2 -else -ifeq ($(VERSION),sh) - OPT_FLAGS := -O2 +ifeq ($(DEBUG),1) + OPT_FLAGS := -g else OPT_FLAGS := -O2 endif -endif # Set BITS (32/64) to compile for OPT_FLAGS += $(BITS) diff --git a/build.sh b/build.sh index 87d3597b..040860be 100644 --- a/build.sh +++ b/build.sh @@ -7,8 +7,8 @@ LIBAFLA=libaudiofile.la AUDDIR=./tools/audiofile-0.3.6 # Command line options -OPTIONS=("Analog Camera" "No Draw Distance" "Text-saves" "Smoke Texture Fix" "Clean build") -EXTRA=("BETTERCAMERA=1" "NODRAWINGDISTANCE=1" "TEXTSAVES=1" "TEXTURE_FIX=1" "clean") +OPTIONS=("Analog Camera" "No Draw Distance" "Text-saves" "Smoke Texture Fix" "Release build" "Clean build") +EXTRA=("BETTERCAMERA=1" "NODRAWINGDISTANCE=1" "TEXTSAVES=1" "TEXTURE_FIX=1" "DEBUG=0" "clean") # Colors RED=$(tput setaf 1) From 2ae6e0fac017e7f532ad77eaa2b76ab22b632df2 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Fri, 5 Jun 2020 21:12:44 +0900 Subject: [PATCH 088/166] Remove old -O2 flag --- Makefile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Makefile b/Makefile index bfe0f8dc..b2154dda 100644 --- a/Makefile +++ b/Makefile @@ -295,10 +295,6 @@ ifeq ($(TARGET_WEB),1) OPT_FLAGS := -O2 -g4 --source-map-base http://localhost:8080/ endif -# Use a default opt flag for gcc, then override if RPi - -# OPT_FLAGS := -O2 # "Whole-compile optimization flag" Breaks sound on x86. - ifeq ($(TARGET_RPI),1) machine = $(shell sh -c 'uname -m 2>/dev/null || echo unknown') # Raspberry Pi B+, Zero, etc From 708b6c6855f419fe319351700b4aa27ff6e626d5 Mon Sep 17 00:00:00 2001 From: luciferin <40036150+hunterzero99@users.noreply.github.com> Date: Fri, 5 Jun 2020 09:50:16 -0400 Subject: [PATCH 089/166] Note changed save & config file location --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f8b0d6a4..efe50eda 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm * Disabling the HUD. * Cheats menu in Options. (Activate with `--cheats`) Please note that if a cheat asks you to press "L" it's referring to the N64 button. Check your bindings and make sure you have the "L" button mapped to a button in your controller. * Text-based save support. (Activate with `make TEXTSAVES=1`.) + * Recent changes in Nightly have moved save and configuration files, and they will *not* be read from the same directory as the executable. They are now stored in %HOMEPATH%\AppData\Roaming\sm64pc ## Building For building instructions, please refer to the [wiki](https://github.com/sm64pc/sm64pc/wiki). From f1393a4431cb75892df6160291cd682edbc3ffda Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 5 Jun 2020 20:21:44 +0300 Subject: [PATCH 090/166] update xxhash map --- tools/default_crcmap.txt | 531 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 531 insertions(+) diff --git a/tools/default_crcmap.txt b/tools/default_crcmap.txt index 96d18d0e..46439ecc 100644 --- a/tools/default_crcmap.txt +++ b/tools/default_crcmap.txt @@ -1235,3 +1235,534 @@ 0x359500dd, textures/water/jrb_textures.0A000.rgba16.png 0xd4e87a88, textures/water/jrb_textures.0A800.rgba16.png 0x742e8b1b, textures/water/jrb_textures.0B800.rgba16.png +0x0c2a29d1, textures/skybox_tiles/bbh.10.rgba16.png +0x127129a3, textures/skybox_tiles/bbh.35.rgba16.png +0x20a848ef, textures/skybox_tiles/bbh.17.rgba16.png +0x27d1fd7b, textures/skybox_tiles/bbh.9.rgba16.png +0x284ca0c5, textures/skybox_tiles/bbh.18.rgba16.png +0x3696290e, textures/skybox_tiles/bbh.8.rgba16.png +0x3cfb08d4, textures/skybox_tiles/bbh.22.rgba16.png +0x46155549, textures/skybox_tiles/bbh.12.rgba16.png +0x4951ce15, textures/skybox_tiles/bbh.20.rgba16.png +0x4d7bb2d4, textures/skybox_tiles/bbh.26.rgba16.png +0x4dd2efbe, textures/skybox_tiles/bbh.34.rgba16.png +0x5363d67e, textures/skybox_tiles/bbh.5.rgba16.png +0x006b2ac4, textures/skybox_tiles/bbh.6.rgba16.png +0x8a53d88f, textures/skybox_tiles/bbh.7.rgba16.png +0x56a63453, textures/skybox_tiles/bbh.27.rgba16.png +0x6b0abf55, textures/skybox_tiles/bbh.38.rgba16.png +0x72ad931e, textures/skybox_tiles/bbh.39.rgba16.png +0x76a045ea, textures/skybox_tiles/bbh.21.rgba16.png +0x76f1d4a5, textures/skybox_tiles/bbh.29.rgba16.png +0x79c3d825, textures/skybox_tiles/bbh.33.rgba16.png +0x7b1f009f, textures/skybox_tiles/bbh.37.rgba16.png +0x810b81b8, textures/skybox_tiles/bbh.31.rgba16.png +0x83d66711, textures/skybox_tiles/bbh.19.rgba16.png +0x370b42dd, textures/skybox_tiles/bbh.3.rgba16.png +0xad4d5fd6, textures/skybox_tiles/bbh.4.rgba16.png +0xae64c178, textures/skybox_tiles/bbh.24.rgba16.png +0xc31cd553, textures/skybox_tiles/bbh.25.rgba16.png +0xcc6f4232, textures/skybox_tiles/bbh.14.rgba16.png +0xda13b24f, textures/skybox_tiles/bbh.36.rgba16.png +0xe6f9d8a1, textures/skybox_tiles/bbh.28.rgba16.png +0xe7f8bc17, textures/skybox_tiles/bbh.11.rgba16.png +0xe98970f2, textures/skybox_tiles/bbh.32.rgba16.png +0xede2ca8c, textures/skybox_tiles/bbh.40.rgba16.png +0xf5ecf7b1, textures/skybox_tiles/bbh.30.rgba16.png +0xf7e57129, textures/skybox_tiles/bbh.23.rgba16.png +0xf8ba6541, textures/skybox_tiles/bbh.13.rgba16.png +0xf8fda326, textures/skybox_tiles/bbh.16.rgba16.png +0xf97cb7a0, textures/skybox_tiles/bbh.15.rgba16.png +0xf2dec30f, textures/skybox_tiles/bbh.0.rgba16.png +0x043f32a3, textures/skybox_tiles/bidw.13.rgba16.png +0x05ace106, textures/skybox_tiles/bidw.53.rgba16.png +0x0ddbc44f, textures/skybox_tiles/bidw.28.rgba16.png +0x167558ec, textures/skybox_tiles/bidw.51.rgba16.png +0x1ce3eb88, textures/skybox_tiles/bidw.8.rgba16.png +0x2aaa4518, textures/skybox_tiles/bidw.50.rgba16.png +0x3063e9c2, textures/skybox_tiles/bidw.26.rgba16.png +0x318d4424, textures/skybox_tiles/bidw.19.rgba16.png +0x3a4b1e75, textures/skybox_tiles/bidw.42.rgba16.png +0x3a748e08, textures/skybox_tiles/bidw.12.rgba16.png +0x3cb88a7c, textures/skybox_tiles/bidw.18.rgba16.png +0x4741a3f3, textures/skybox_tiles/bidw.10.rgba16.png +0x49be9263, textures/skybox_tiles/bidw.40.rgba16.png +0x4e671fe7, textures/skybox_tiles/bidw.11.rgba16.png +0x5d0c512e, textures/skybox_tiles/bidw.24.rgba16.png +0x672333be, textures/skybox_tiles/bidw.32.rgba16.png +0x6764441d, textures/skybox_tiles/bidw.9.rgba16.png +0x6fd9fab0, textures/skybox_tiles/bidw.23.rgba16.png +0x7609e579, textures/skybox_tiles/bidw.20.rgba16.png +0x7a714bd5, textures/skybox_tiles/bidw.44.rgba16.png +0x7da6e5fc, textures/skybox_tiles/bidw.55.rgba16.png +0x802d3753, textures/skybox_tiles/bidw.27.rgba16.png +0x900d54e9, textures/skybox_tiles/bidw.46.rgba16.png +0x9f7d3512, textures/skybox_tiles/bidw.54.rgba16.png +0xb200de26, textures/skybox_tiles/bidw.34.rgba16.png +0xb867da06, textures/skybox_tiles/bidw.33.rgba16.png +0xc4a3952c, textures/skybox_tiles/bidw.14.rgba16.png +0xc75a4473, textures/skybox_tiles/bidw.22.rgba16.png +0xc9cd900f, textures/skybox_tiles/bidw.47.rgba16.png +0xca24b001, textures/skybox_tiles/bidw.29.rgba16.png +0xcdd80dd0, textures/skybox_tiles/bidw.21.rgba16.png +0xd09450f4, textures/skybox_tiles/bidw.45.rgba16.png +0xd4ae6278, textures/skybox_tiles/bidw.25.rgba16.png +0xd6ada2fc, textures/skybox_tiles/bidw.30.rgba16.png +0xdd5c0937, textures/skybox_tiles/bidw.31.rgba16.png +0xde97d2e7, textures/skybox_tiles/bidw.39.rgba16.png +0xe5ff061e, textures/skybox_tiles/bidw.17.rgba16.png +0xe9f5bc54, textures/skybox_tiles/bidw.49.rgba16.png +0xea4f97d6, textures/skybox_tiles/bidw.43.rgba16.png +0xeb07e789, textures/skybox_tiles/bidw.15.rgba16.png +0xf2fd9c92, textures/skybox_tiles/bidw.41.rgba16.png +0xf3c86fb5, textures/skybox_tiles/bidw.38.rgba16.png +0xf6cc133c, textures/skybox_tiles/bidw.35.rgba16.png +0xf72670a5, textures/skybox_tiles/bidw.48.rgba16.png +0xf852bb6a, textures/skybox_tiles/bidw.16.rgba16.png +0xf9e32a8a, textures/skybox_tiles/bidw.37.rgba16.png +0xfb944dd9, textures/skybox_tiles/bidw.52.rgba16.png +0xfc7d260b, textures/skybox_tiles/bidw.36.rgba16.png +0x066561d2, textures/skybox_tiles/bitfs.9.rgba16.png +0x09b2a8df, textures/skybox_tiles/bitfs.26.rgba16.png +0x0c27c245, textures/skybox_tiles/bitfs.10.rgba16.png +0x0e64a624, textures/skybox_tiles/bitfs.46.rgba16.png +0x12450331, textures/skybox_tiles/bitfs.23.rgba16.png +0x1797df80, textures/skybox_tiles/bitfs.22.rgba16.png +0x19cae2a3, textures/skybox_tiles/bitfs.13.rgba16.png +0x2075bfa7, textures/skybox_tiles/bitfs.27.rgba16.png +0x28043a91, textures/skybox_tiles/bitfs.25.rgba16.png +0x29fe97c9, textures/skybox_tiles/bitfs.40.rgba16.png +0x3fc1264a, textures/skybox_tiles/bitfs.42.rgba16.png +0x4bf7b907, textures/skybox_tiles/bitfs.19.rgba16.png +0x4c0be564, textures/skybox_tiles/bitfs.8.rgba16.png +0x60962f15, textures/skybox_tiles/bitfs.38.rgba16.png +0x6a32e308, textures/skybox_tiles/bitfs.47.rgba16.png +0x74d4dbc0, textures/skybox_tiles/bitfs.34.rgba16.png +0x74f316eb, textures/skybox_tiles/bitfs.37.rgba16.png +0x78005ae7, textures/skybox_tiles/bitfs.30.rgba16.png +0x7a2a0af3, textures/skybox_tiles/bitfs.14.rgba16.png +0x81be4a28, textures/skybox_tiles/bitfs.20.rgba16.png +0x834bcea3, textures/skybox_tiles/bitfs.36.rgba16.png +0x83ea86ce, textures/skybox_tiles/bitfs.31.rgba16.png +0x8bb1fff4, textures/skybox_tiles/bitfs.16.rgba16.png +0x90c37df4, textures/skybox_tiles/bitfs.33.rgba16.png +0xa90a0dcd, textures/skybox_tiles/bitfs.17.rgba16.png +0xac12907e, textures/skybox_tiles/bitfs.35.rgba16.png +0xb82fa554, textures/skybox_tiles/bitfs.24.rgba16.png +0xbe08284c, textures/skybox_tiles/bitfs.29.rgba16.png +0xc02e764f, textures/skybox_tiles/bitfs.44.rgba16.png +0xc676ba59, textures/skybox_tiles/bitfs.39.rgba16.png +0xc69dd89b, textures/skybox_tiles/bitfs.28.rgba16.png +0xce098128, textures/skybox_tiles/bitfs.15.rgba16.png +0xd9e73ad5, textures/skybox_tiles/bitfs.41.rgba16.png +0xe1a812a2, textures/skybox_tiles/bitfs.11.rgba16.png +0xe674aa35, textures/skybox_tiles/bitfs.45.rgba16.png +0xeb4f600c, textures/skybox_tiles/bitfs.43.rgba16.png +0xece60402, textures/skybox_tiles/bitfs.32.rgba16.png +0xede2ca8c, textures/skybox_tiles/bitfs.48.rgba16.png +0xf0253766, textures/skybox_tiles/bitfs.12.rgba16.png +0xfefbfdf7, textures/skybox_tiles/bitfs.21.rgba16.png +0xff7ec174, textures/skybox_tiles/bitfs.18.rgba16.png +0x03ea51ab, textures/skybox_tiles/bits.22.rgba16.png +0x098bdb85, textures/skybox_tiles/bits.42.rgba16.png +0x241e859e, textures/skybox_tiles/bits.55.rgba16.png +0x257fedb8, textures/skybox_tiles/bits.37.rgba16.png +0x2768a71a, textures/skybox_tiles/bits.9.rgba16.png +0x277de620, textures/skybox_tiles/bits.24.rgba16.png +0x2acfffac, textures/skybox_tiles/bits.13.rgba16.png +0x3e7f575b, textures/skybox_tiles/bits.19.rgba16.png +0x41ba5076, textures/skybox_tiles/bits.41.rgba16.png +0x448d1f89, textures/skybox_tiles/bits.54.rgba16.png +0x449f8333, textures/skybox_tiles/bits.16.rgba16.png +0x4d6b3cd7, textures/skybox_tiles/bits.23.rgba16.png +0x5fb1c383, textures/skybox_tiles/bits.49.rgba16.png +0x6011b5ce, textures/skybox_tiles/bits.35.rgba16.png +0x6119b10d, textures/skybox_tiles/bits.48.rgba16.png +0x62533808, textures/skybox_tiles/bits.14.rgba16.png +0x661d9503, textures/skybox_tiles/bits.52.rgba16.png +0x68049672, textures/skybox_tiles/bits.17.rgba16.png +0x688cceba, textures/skybox_tiles/bits.20.rgba16.png +0x7357d6ee, textures/skybox_tiles/bits.50.rgba16.png +0x76c54c50, textures/skybox_tiles/bits.34.rgba16.png +0x7a754f12, textures/skybox_tiles/bits.15.rgba16.png +0x7b2fd37b, textures/skybox_tiles/bits.44.rgba16.png +0x7bb53e7a, textures/skybox_tiles/bits.12.rgba16.png +0x83af50a7, textures/skybox_tiles/bits.11.rgba16.png +0x85b0081b, textures/skybox_tiles/bits.47.rgba16.png +0x93693dc5, textures/skybox_tiles/bits.40.rgba16.png +0x965a0f36, textures/skybox_tiles/bits.25.rgba16.png +0x968b4216, textures/skybox_tiles/bits.26.rgba16.png +0x9bdfce3c, textures/skybox_tiles/bits.31.rgba16.png +0x9de8c051, textures/skybox_tiles/bits.18.rgba16.png +0xa15ad0c6, textures/skybox_tiles/bits.32.rgba16.png +0xa174b0ea, textures/skybox_tiles/bits.33.rgba16.png +0xa4f6be99, textures/skybox_tiles/bits.8.rgba16.png +0xaae75253, textures/skybox_tiles/bits.27.rgba16.png +0xb20701aa, textures/skybox_tiles/bits.21.rgba16.png +0xb43807fd, textures/skybox_tiles/bits.51.rgba16.png +0xb91449bf, textures/skybox_tiles/bits.29.rgba16.png +0xc0348ee3, textures/skybox_tiles/bits.10.rgba16.png +0xc2422c9f, textures/skybox_tiles/bits.36.rgba16.png +0xc56ea37d, textures/skybox_tiles/bits.46.rgba16.png +0xc6caf08d, textures/skybox_tiles/bits.30.rgba16.png +0xd6487ede, textures/skybox_tiles/bits.28.rgba16.png +0xe0a91e79, textures/skybox_tiles/bits.43.rgba16.png +0xecf9eeb6, textures/skybox_tiles/bits.45.rgba16.png +0xf0b8ce1b, textures/skybox_tiles/bits.38.rgba16.png +0xf2ee53ee, textures/skybox_tiles/bits.53.rgba16.png +0xf811fd31, textures/skybox_tiles/bits.39.rgba16.png +0x01a3bc1a, textures/skybox_tiles/cake.30.rgba16.png +0x0aae8e95, textures/skybox_tiles/cake.5.rgba16.png +0x11001a4a, textures/skybox_tiles/cake.31.rgba16.png +0x1106c725, textures/skybox_tiles/cake.19.rgba16.png +0x21cb1a4e, textures/skybox_tiles/cake.15.rgba16.png +0x27c5fa3c, textures/skybox_tiles/cake.0.rgba16.png +0x2ff059ea, textures/skybox_tiles/cake.2.rgba16.png +0x32f30afe, textures/skybox_tiles/cake.4.rgba16.png +0x33a85e50, textures/skybox_tiles/cake.40.rgba16.png +0x3f7975e7, textures/skybox_tiles/cake.27.rgba16.png +0x4112f982, textures/skybox_tiles/cake.6.rgba16.png +0x4ffd88dc, textures/skybox_tiles/cake.10.rgba16.png +0x550a63af, textures/skybox_tiles/cake.26.rgba16.png +0x565f0a85, textures/skybox_tiles/cake.17.rgba16.png +0x5ebb63ae, textures/skybox_tiles/cake.20.rgba16.png +0x650c8963, textures/skybox_tiles/cake.42.rgba16.png +0x6584dbe9, textures/skybox_tiles/cake.38.rgba16.png +0x659d7fe1, textures/skybox_tiles/cake.29.rgba16.png +0x6741387d, textures/skybox_tiles/cake.12.rgba16.png +0x6b37da50, textures/skybox_tiles/cake.14.rgba16.png +0x70cb2193, textures/skybox_tiles/cake.45.rgba16.png +0x75952848, textures/skybox_tiles/cake.43.rgba16.png +0x775f1e4b, textures/skybox_tiles/cake.36.rgba16.png +0x7bcb5633, textures/skybox_tiles/cake.32.rgba16.png +0x7beb1bb0, textures/skybox_tiles/cake.41.rgba16.png +0x83ad1b6f, textures/skybox_tiles/cake.8.rgba16.png +0x866cfdfa, textures/skybox_tiles/cake.3.rgba16.png +0x8ca33ecb, textures/skybox_tiles/cake.46.rgba16.png +0x9118bb8e, textures/skybox_tiles/cake.24.rgba16.png +0xa282f3ab, textures/skybox_tiles/cake.37.rgba16.png +0xb878f75e, textures/skybox_tiles/cake.13.rgba16.png +0xbcbb2bed, textures/skybox_tiles/cake.9.rgba16.png +0xc5e3c848, textures/skybox_tiles/cake.22.rgba16.png +0xc856d784, textures/skybox_tiles/cake.7.rgba16.png +0xca3e4daa, textures/skybox_tiles/cake.16.rgba16.png +0xcda231cf, textures/skybox_tiles/cake.18.rgba16.png +0xd3cda257, textures/skybox_tiles/cake.21.rgba16.png +0xd6acd732, textures/skybox_tiles/cake.35.rgba16.png +0xda4dded5, textures/skybox_tiles/cake.34.rgba16.png +0xdb34e935, textures/skybox_tiles/cake.28.rgba16.png +0xe4659004, textures/skybox_tiles/cake.33.rgba16.png +0xe7fa94ea, textures/skybox_tiles/cake.39.rgba16.png +0xe9ad4123, textures/skybox_tiles/cake.25.rgba16.png +0xf6d7be9d, textures/skybox_tiles/cake.23.rgba16.png +0xff3e3d09, textures/skybox_tiles/cake.11.rgba16.png +0xffa98d17, textures/skybox_tiles/cake.47.rgba16.png +0x055e28ac, textures/skybox_tiles/ccm.2.rgba16.png +0x08383434, textures/skybox_tiles/ccm.51.rgba16.png +0x0b58f779, textures/skybox_tiles/ccm.11.rgba16.png +0x0cc5b13c, textures/skybox_tiles/ccm.22.rgba16.png +0x168d74ac, textures/skybox_tiles/ccm.32.rgba16.png +0x29ae84cd, textures/skybox_tiles/ccm.55.rgba16.png +0x30bd11c3, textures/skybox_tiles/ccm.19.rgba16.png +0x31b35122, textures/skybox_tiles/ccm.54.rgba16.png +0x357312e7, textures/skybox_tiles/ccm.17.rgba16.png +0x36c31293, textures/skybox_tiles/ccm.47.rgba16.png +0x3a0a5f41, textures/skybox_tiles/ccm.43.rgba16.png +0x3cb609ce, textures/skybox_tiles/ccm.14.rgba16.png +0x44e0cd6e, textures/skybox_tiles/ccm.33.rgba16.png +0x50e38d1d, textures/skybox_tiles/ccm.40.rgba16.png +0x578dd0c2, textures/skybox_tiles/ccm.29.rgba16.png +0x599ac9f6, textures/skybox_tiles/ccm.42.rgba16.png +0x59ba83bc, textures/skybox_tiles/ccm.24.rgba16.png +0x64636bec, textures/skybox_tiles/ccm.52.rgba16.png +0x6f828465, textures/skybox_tiles/ccm.28.rgba16.png +0x730366a4, textures/skybox_tiles/ccm.53.rgba16.png +0x78a3267b, textures/skybox_tiles/ccm.30.rgba16.png +0x7944c340, textures/skybox_tiles/ccm.35.rgba16.png +0x7e45011d, textures/skybox_tiles/ccm.49.rgba16.png +0x7ebb4a6e, textures/skybox_tiles/ccm.48.rgba16.png +0x8011bee2, textures/skybox_tiles/ccm.34.rgba16.png +0x8090c3cf, textures/skybox_tiles/ccm.39.rgba16.png +0x85cb24f9, textures/skybox_tiles/ccm.13.rgba16.png +0x92ab7f1d, textures/skybox_tiles/ccm.18.rgba16.png +0x93e1cb7d, textures/skybox_tiles/ccm.21.rgba16.png +0x942a429d, textures/skybox_tiles/ccm.16.rgba16.png +0x95399033, textures/skybox_tiles/ccm.26.rgba16.png +0xa3b76b7a, textures/skybox_tiles/ccm.38.rgba16.png +0xa4f39ec5, textures/skybox_tiles/ccm.12.rgba16.png +0xa799d0e9, textures/skybox_tiles/ccm.37.rgba16.png +0xaf1b0302, textures/skybox_tiles/ccm.3.rgba16.png +0xb4fa1977, textures/skybox_tiles/ccm.25.rgba16.png +0xb724fba4, textures/skybox_tiles/ccm.41.rgba16.png +0xc09f8f08, textures/skybox_tiles/ccm.27.rgba16.png +0xc2afe2ee, textures/skybox_tiles/ccm.44.rgba16.png +0xc9babf94, textures/skybox_tiles/ccm.10.rgba16.png +0xca599652, textures/skybox_tiles/ccm.20.rgba16.png +0xd91118e0, textures/skybox_tiles/ccm.15.rgba16.png +0xe68e0b89, textures/skybox_tiles/ccm.31.rgba16.png +0xe86658ce, textures/skybox_tiles/ccm.9.rgba16.png +0xeef719d5, textures/skybox_tiles/ccm.46.rgba16.png +0xf7f5501b, textures/skybox_tiles/ccm.4.rgba16.png +0xa4f8a848, textures/skybox_tiles/ccm.5.rgba16.png +0xfaad1902, textures/skybox_tiles/ccm.50.rgba16.png +0xfabbf62b, textures/skybox_tiles/ccm.23.rgba16.png +0xfdd2a734, textures/skybox_tiles/ccm.8.rgba16.png +0xfe3ebb6f, textures/skybox_tiles/ccm.45.rgba16.png +0xfe5d53be, textures/skybox_tiles/ccm.36.rgba16.png +0x08f08935, textures/skybox_tiles/clouds.14.rgba16.png +0x0e6243cb, textures/skybox_tiles/clouds.0.rgba16.png +0x141df5ab, textures/skybox_tiles/clouds.2.rgba16.png +0x1901cc3c, textures/skybox_tiles/clouds.34.rgba16.png +0x1b635fef, textures/skybox_tiles/clouds.23.rgba16.png +0x205dcfbc, textures/skybox_tiles/clouds.27.rgba16.png +0x2654ca98, textures/skybox_tiles/clouds.11.rgba16.png +0x31e58403, textures/skybox_tiles/clouds.9.rgba16.png +0x337f44cd, textures/skybox_tiles/clouds.4.rgba16.png +0x351f61ca, textures/skybox_tiles/clouds.20.rgba16.png +0x409b75a9, textures/skybox_tiles/clouds.16.rgba16.png +0x428df875, textures/skybox_tiles/clouds.7.rgba16.png +0x4620fe63, textures/skybox_tiles/clouds.35.rgba16.png +0x498518c8, textures/skybox_tiles/clouds.12.rgba16.png +0x69857ccd, textures/skybox_tiles/clouds.17.rgba16.png +0x742348b6, textures/skybox_tiles/clouds.10.rgba16.png +0x748b76df, textures/skybox_tiles/clouds.5.rgba16.png +0x77ea8d67, textures/skybox_tiles/clouds.32.rgba16.png +0x7ca8732d, textures/skybox_tiles/clouds.8.rgba16.png +0x82b44cf5, textures/skybox_tiles/clouds.28.rgba16.png +0x8425521b, textures/skybox_tiles/clouds.36.rgba16.png +0x850e8b93, textures/skybox_tiles/clouds.19.rgba16.png +0x9cf0dd58, textures/skybox_tiles/clouds.18.rgba16.png +0xa51f3a7f, textures/skybox_tiles/clouds.38.rgba16.png +0xa6f401d3, textures/skybox_tiles/clouds.21.rgba16.png +0xb416ef38, textures/skybox_tiles/clouds.22.rgba16.png +0xc3701e1f, textures/skybox_tiles/clouds.39.rgba16.png +0xc407c4ce, textures/skybox_tiles/clouds.1.rgba16.png +0xc7cbdfa9, textures/skybox_tiles/clouds.26.rgba16.png +0xca8dfd7d, textures/skybox_tiles/clouds.13.rgba16.png +0xd66bcf0e, textures/skybox_tiles/clouds.37.rgba16.png +0xdfa4ba1b, textures/skybox_tiles/clouds.30.rgba16.png +0xe4090da9, textures/skybox_tiles/clouds.6.rgba16.png +0xe52ec690, textures/skybox_tiles/clouds.29.rgba16.png +0xe6525598, textures/skybox_tiles/clouds.33.rgba16.png +0xed76d6f5, textures/skybox_tiles/clouds.31.rgba16.png +0xee5ef53b, textures/skybox_tiles/clouds.24.rgba16.png +0xefceb811, textures/skybox_tiles/clouds.15.rgba16.png +0xf4aaa9e9, textures/skybox_tiles/clouds.25.rgba16.png +0xf86ba27d, textures/skybox_tiles/clouds.40.rgba16.png +0x02170d3b, textures/skybox_tiles/cloud_floor.4.rgba16.png +0x03dceb01, textures/skybox_tiles/cloud_floor.50.rgba16.png +0x03ea3079, textures/skybox_tiles/cloud_floor.18.rgba16.png +0x1a14e17e, textures/skybox_tiles/cloud_floor.25.rgba16.png +0x244d5841, textures/skybox_tiles/cloud_floor.54.rgba16.png +0x28303f4e, textures/skybox_tiles/cloud_floor.3.rgba16.png +0x3171e773, textures/skybox_tiles/cloud_floor.21.rgba16.png +0x32fd7d7b, textures/skybox_tiles/cloud_floor.39.rgba16.png +0x37876087, textures/skybox_tiles/cloud_floor.33.rgba16.png +0x37d2ed5d, textures/skybox_tiles/cloud_floor.29.rgba16.png +0x3b42ebe0, textures/skybox_tiles/cloud_floor.22.rgba16.png +0x3c1887d9, textures/skybox_tiles/cloud_floor.32.rgba16.png +0x4ac6cbe7, textures/skybox_tiles/cloud_floor.53.rgba16.png +0x4acbd2fd, textures/skybox_tiles/cloud_floor.28.rgba16.png +0x4fa6d582, textures/skybox_tiles/cloud_floor.40.rgba16.png +0x5bcfce7a, textures/skybox_tiles/cloud_floor.9.rgba16.png +0x5d9fcb17, textures/skybox_tiles/cloud_floor.23.rgba16.png +0x6106ec02, textures/skybox_tiles/cloud_floor.45.rgba16.png +0x630a785d, textures/skybox_tiles/cloud_floor.15.rgba16.png +0x64bb3d5d, textures/skybox_tiles/cloud_floor.10.rgba16.png +0x66f77672, textures/skybox_tiles/cloud_floor.49.rgba16.png +0x69291043, textures/skybox_tiles/cloud_floor.37.rgba16.png +0x6e0b85e4, textures/skybox_tiles/cloud_floor.35.rgba16.png +0x6f4aa02c, textures/skybox_tiles/cloud_floor.16.rgba16.png +0x7086d27f, textures/skybox_tiles/cloud_floor.30.rgba16.png +0x70ac8f57, textures/skybox_tiles/cloud_floor.1.rgba16.png +0x7fd9be0f, textures/skybox_tiles/cloud_floor.14.rgba16.png +0x821268df, textures/skybox_tiles/cloud_floor.17.rgba16.png +0x83aead23, textures/skybox_tiles/cloud_floor.11.rgba16.png +0x8549ef4a, textures/skybox_tiles/cloud_floor.12.rgba16.png +0x873e1572, textures/skybox_tiles/cloud_floor.52.rgba16.png +0x88dddbd5, textures/skybox_tiles/cloud_floor.47.rgba16.png +0x8db179ed, textures/skybox_tiles/cloud_floor.31.rgba16.png +0x91920a81, textures/skybox_tiles/cloud_floor.26.rgba16.png +0x96c5ec13, textures/skybox_tiles/cloud_floor.5.rgba16.png +0x96e706ed, textures/skybox_tiles/cloud_floor.8.rgba16.png +0x9c8eb32f, textures/skybox_tiles/cloud_floor.46.rgba16.png +0xa17cd54d, textures/skybox_tiles/cloud_floor.6.rgba16.png +0xa5aaaafc, textures/skybox_tiles/cloud_floor.38.rgba16.png +0xb25aabb9, textures/skybox_tiles/cloud_floor.48.rgba16.png +0xb5f978a7, textures/skybox_tiles/cloud_floor.19.rgba16.png +0xba37aa0b, textures/skybox_tiles/cloud_floor.42.rgba16.png +0xc7e7c9e4, textures/skybox_tiles/cloud_floor.13.rgba16.png +0xc94a832f, textures/skybox_tiles/cloud_floor.27.rgba16.png +0xcb05d655, textures/skybox_tiles/cloud_floor.36.rgba16.png +0xd2fb14ef, textures/skybox_tiles/cloud_floor.51.rgba16.png +0xd35408ed, textures/skybox_tiles/cloud_floor.34.rgba16.png +0xdad5f068, textures/skybox_tiles/cloud_floor.44.rgba16.png +0xe4742281, textures/skybox_tiles/cloud_floor.20.rgba16.png +0xf23d736c, textures/skybox_tiles/cloud_floor.43.rgba16.png +0xf27d7297, textures/skybox_tiles/cloud_floor.2.rgba16.png +0xf3e70377, textures/skybox_tiles/cloud_floor.24.rgba16.png +0xf9522d0c, textures/skybox_tiles/cloud_floor.41.rgba16.png +0xfecd3a6e, textures/skybox_tiles/cloud_floor.55.rgba16.png +0x00c6ac78, textures/skybox_tiles/ssl.18.rgba16.png +0x0668c5ac, textures/skybox_tiles/ssl.22.rgba16.png +0x08de5518, textures/skybox_tiles/ssl.31.rgba16.png +0x138a4d7a, textures/skybox_tiles/ssl.12.rgba16.png +0x1e2a18d7, textures/skybox_tiles/ssl.0.rgba16.png +0x2587baea, textures/skybox_tiles/ssl.47.rgba16.png +0x2b9772a8, textures/skybox_tiles/ssl.46.rgba16.png +0x2d35b5e2, textures/skybox_tiles/ssl.24.rgba16.png +0x2f9648f3, textures/skybox_tiles/ssl.40.rgba16.png +0x307cb980, textures/skybox_tiles/ssl.52.rgba16.png +0x4160cce0, textures/skybox_tiles/ssl.23.rgba16.png +0x42069678, textures/skybox_tiles/ssl.13.rgba16.png +0x44e1e374, textures/skybox_tiles/ssl.26.rgba16.png +0x45fe5da4, textures/skybox_tiles/ssl.42.rgba16.png +0x4c315f58, textures/skybox_tiles/ssl.50.rgba16.png +0x4dc86b03, textures/skybox_tiles/ssl.48.rgba16.png +0x514c13e3, textures/skybox_tiles/ssl.49.rgba16.png +0x54f66e8c, textures/skybox_tiles/ssl.25.rgba16.png +0x628aec7f, textures/skybox_tiles/ssl.51.rgba16.png +0x642a4df8, textures/skybox_tiles/ssl.20.rgba16.png +0x6893e588, textures/skybox_tiles/ssl.17.rgba16.png +0x6e8f7556, textures/skybox_tiles/ssl.39.rgba16.png +0x765518a1, textures/skybox_tiles/ssl.38.rgba16.png +0x7d7fc52a, textures/skybox_tiles/ssl.8.rgba16.png +0x7e036561, textures/skybox_tiles/ssl.45.rgba16.png +0x8622dde8, textures/skybox_tiles/ssl.54.rgba16.png +0x87c3cd18, textures/skybox_tiles/ssl.16.rgba16.png +0x89ce2386, textures/skybox_tiles/ssl.27.rgba16.png +0x9273b37c, textures/skybox_tiles/ssl.44.rgba16.png +0x99c39562, textures/skybox_tiles/ssl.7.rgba16.png +0x9c329960, textures/skybox_tiles/ssl.34.rgba16.png +0x9c6384f2, textures/skybox_tiles/ssl.55.rgba16.png +0xaa8831f6, textures/skybox_tiles/ssl.10.rgba16.png +0xb1eb1dd2, textures/skybox_tiles/ssl.30.rgba16.png +0xb24a3c7f, textures/skybox_tiles/ssl.29.rgba16.png +0xb5c53f3b, textures/skybox_tiles/ssl.35.rgba16.png +0xb9d7eed9, textures/skybox_tiles/ssl.43.rgba16.png +0xbc9a5752, textures/skybox_tiles/ssl.14.rgba16.png +0xbd947cf5, textures/skybox_tiles/ssl.1.rgba16.png +0xbfd6d3d6, textures/skybox_tiles/ssl.32.rgba16.png +0xc3e8ef7d, textures/skybox_tiles/ssl.2.rgba16.png +0xcc108f3a, textures/skybox_tiles/ssl.19.rgba16.png +0xd125bb65, textures/skybox_tiles/ssl.37.rgba16.png +0xe24e24cb, textures/skybox_tiles/ssl.15.rgba16.png +0xe47f6782, textures/skybox_tiles/ssl.53.rgba16.png +0xe61795d5, textures/skybox_tiles/ssl.41.rgba16.png +0xe8a2effc, textures/skybox_tiles/ssl.9.rgba16.png +0xea44258d, textures/skybox_tiles/ssl.36.rgba16.png +0xedd3be31, textures/skybox_tiles/ssl.21.rgba16.png +0xee3a78b4, textures/skybox_tiles/ssl.28.rgba16.png +0xf6017084, textures/skybox_tiles/ssl.33.rgba16.png +0xfe0052b0, textures/skybox_tiles/ssl.11.rgba16.png +0x05fbe999, textures/skybox_tiles/water.9.rgba16.png +0x15384ca8, textures/skybox_tiles/water.29.rgba16.png +0x15e589af, textures/skybox_tiles/water.32.rgba16.png +0x19c98c91, textures/skybox_tiles/water.22.rgba16.png +0x2b27b879, textures/skybox_tiles/water.39.rgba16.png +0x2efc6316, textures/skybox_tiles/water.8.rgba16.png +0x3529a790, textures/skybox_tiles/water.40.rgba16.png +0x42b58453, textures/skybox_tiles/water.12.rgba16.png +0x43d0bcfd, textures/skybox_tiles/water.27.rgba16.png +0x455081bb, textures/skybox_tiles/water.38.rgba16.png +0x4d2998ed, textures/skybox_tiles/water.33.rgba16.png +0x4e6390f2, textures/skybox_tiles/water.42.rgba16.png +0x5396e075, textures/skybox_tiles/water.30.rgba16.png +0x55109629, textures/skybox_tiles/water.52.rgba16.png +0x56e0d9c2, textures/skybox_tiles/water.24.rgba16.png +0x57098f04, textures/skybox_tiles/water.55.rgba16.png +0x57a74c47, textures/skybox_tiles/water.51.rgba16.png +0x5fcc8e05, textures/skybox_tiles/water.46.rgba16.png +0x65da8d91, textures/skybox_tiles/water.53.rgba16.png +0x68a54a56, textures/skybox_tiles/water.44.rgba16.png +0x69cc1850, textures/skybox_tiles/water.4.rgba16.png +0x6baa4dfb, textures/skybox_tiles/water.54.rgba16.png +0x6e5dc962, textures/skybox_tiles/water.20.rgba16.png +0x6ff74194, textures/skybox_tiles/water.7.rgba16.png +0x721ba1d7, textures/skybox_tiles/water.13.rgba16.png +0x7484f94f, textures/skybox_tiles/water.26.rgba16.png +0x7e94ae66, textures/skybox_tiles/water.10.rgba16.png +0x8161c698, textures/skybox_tiles/water.0.rgba16.png +0x826ca923, textures/skybox_tiles/water.37.rgba16.png +0x8bd7f18f, textures/skybox_tiles/water.17.rgba16.png +0x996b1ac0, textures/skybox_tiles/water.16.rgba16.png +0x998ccb46, textures/skybox_tiles/water.18.rgba16.png +0x9b9c72dd, textures/skybox_tiles/water.21.rgba16.png +0x9d89ee1a, textures/skybox_tiles/water.14.rgba16.png +0xaa696520, textures/skybox_tiles/water.3.rgba16.png +0xac6b51e7, textures/skybox_tiles/water.1.rgba16.png +0xb42352f6, textures/skybox_tiles/water.19.rgba16.png +0xbc01ae82, textures/skybox_tiles/water.23.rgba16.png +0xbd02c9df, textures/skybox_tiles/water.15.rgba16.png +0xbdac0e79, textures/skybox_tiles/water.50.rgba16.png +0xc08c0b84, textures/skybox_tiles/water.2.rgba16.png +0xc51e6cda, textures/skybox_tiles/water.11.rgba16.png +0xc61b4b9d, textures/skybox_tiles/water.36.rgba16.png +0xc9566f19, textures/skybox_tiles/water.48.rgba16.png +0xce3eff27, textures/skybox_tiles/water.43.rgba16.png +0xd82b465d, textures/skybox_tiles/water.41.rgba16.png +0xd9a7fca5, textures/skybox_tiles/water.47.rgba16.png +0xe35888ec, textures/skybox_tiles/water.31.rgba16.png +0xe51733ce, textures/skybox_tiles/water.28.rgba16.png +0xe5813083, textures/skybox_tiles/water.35.rgba16.png +0x2459fc0d, textures/skybox_tiles/water.5.rgba16.png +0xeb8264d8, textures/skybox_tiles/water.6.rgba16.png +0xf12c7d18, textures/skybox_tiles/water.45.rgba16.png +0xf9cdcba9, textures/skybox_tiles/water.25.rgba16.png +0xfadd22b9, textures/skybox_tiles/water.49.rgba16.png +0xff7aa543, textures/skybox_tiles/water.34.rgba16.png +0x04398d1a, textures/skybox_tiles/wdw.39.rgba16.png +0x04f329d4, textures/skybox_tiles/wdw.20.rgba16.png +0x05785641, textures/skybox_tiles/wdw.19.rgba16.png +0x08e6bb94, textures/skybox_tiles/wdw.48.rgba16.png +0x09f747c7, textures/skybox_tiles/wdw.42.rgba16.png +0x0a612720, textures/skybox_tiles/wdw.53.rgba16.png +0x183c80fa, textures/skybox_tiles/wdw.11.rgba16.png +0x1adca2bd, textures/skybox_tiles/wdw.50.rgba16.png +0x20be7b7f, textures/skybox_tiles/wdw.30.rgba16.png +0x2149c1f6, textures/skybox_tiles/wdw.38.rgba16.png +0x23d9d57c, textures/skybox_tiles/wdw.18.rgba16.png +0x23e53b53, textures/skybox_tiles/wdw.21.rgba16.png +0x270c3681, textures/skybox_tiles/wdw.45.rgba16.png +0x29c249bb, textures/skybox_tiles/wdw.13.rgba16.png +0x2da97b90, textures/skybox_tiles/wdw.43.rgba16.png +0x395577cc, textures/skybox_tiles/wdw.4.rgba16.png +0x4588a1fa, textures/skybox_tiles/wdw.22.rgba16.png +0x45d13c50, textures/skybox_tiles/wdw.26.rgba16.png +0x46215c68, textures/skybox_tiles/wdw.23.rgba16.png +0x4a9c1f83, textures/skybox_tiles/wdw.37.rgba16.png +0x4fb40efe, textures/skybox_tiles/wdw.35.rgba16.png +0x516dd9d6, textures/skybox_tiles/wdw.41.rgba16.png +0x5ad88b52, textures/skybox_tiles/wdw.17.rgba16.png +0x5cd0e0e8, textures/skybox_tiles/wdw.10.rgba16.png +0x6c2d7234, textures/skybox_tiles/wdw.51.rgba16.png +0x729b23e6, textures/skybox_tiles/wdw.25.rgba16.png +0x73a1ddf7, textures/skybox_tiles/wdw.54.rgba16.png +0x75251318, textures/skybox_tiles/wdw.46.rgba16.png +0x85f64761, textures/skybox_tiles/wdw.44.rgba16.png +0x8b2ca649, textures/skybox_tiles/wdw.1.rgba16.png +0x95c7ec28, textures/skybox_tiles/wdw.16.rgba16.png +0x99faf781, textures/skybox_tiles/wdw.27.rgba16.png +0x9d9f818d, textures/skybox_tiles/wdw.14.rgba16.png +0x9f5b79c1, textures/skybox_tiles/wdw.9.rgba16.png +0xa01da5fc, textures/skybox_tiles/wdw.29.rgba16.png +0xa08f6cf7, textures/skybox_tiles/wdw.47.rgba16.png +0xa114940d, textures/skybox_tiles/wdw.2.rgba16.png +0xb59bc572, textures/skybox_tiles/wdw.36.rgba16.png +0xb5c189f8, textures/skybox_tiles/wdw.40.rgba16.png +0xb77c6504, textures/skybox_tiles/wdw.49.rgba16.png +0xb95f40a9, textures/skybox_tiles/wdw.55.rgba16.png +0xbf1724e6, textures/skybox_tiles/wdw.31.rgba16.png +0xc0d56e70, textures/skybox_tiles/wdw.52.rgba16.png +0x42b3e0b5, textures/skybox_tiles/wdw.5.rgba16.png +0x4c61073d, textures/skybox_tiles/wdw.6.rgba16.png +0x7e90bb9f, textures/skybox_tiles/wdw.7.rgba16.png +0xd6d33f3f, textures/skybox_tiles/wdw.8.rgba16.png +0xdc871416, textures/skybox_tiles/wdw.28.rgba16.png +0xdcf416d6, textures/skybox_tiles/wdw.3.rgba16.png +0xdeddb605, textures/skybox_tiles/wdw.24.rgba16.png +0xe4274af3, textures/skybox_tiles/wdw.15.rgba16.png +0xe503f102, textures/skybox_tiles/wdw.12.rgba16.png +0xed75bba0, textures/skybox_tiles/wdw.32.rgba16.png +0xee13a838, textures/skybox_tiles/wdw.33.rgba16.png +0xf1591c2a, textures/skybox_tiles/wdw.34.rgba16.png From e9f0519bc47a7a05e6efa7965ba568dc94ccc818 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 5 Jun 2020 20:23:18 +0300 Subject: [PATCH 091/166] text saves now utilize the save path --- src/game/text_save.inc.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index 0c34f1b8..39ad1fc4 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -4,7 +4,7 @@ #include "course_table.h" #include "pc/ini.h" -#define FILENAME_FORMAT "save_file_%d.sav" +#define FILENAME_FORMAT "%s/save_file_%d.sav" #define NUM_COURSES 15 #define NUM_BONUS_COURSES 10 #define NUM_FLAGS 21 @@ -87,7 +87,7 @@ static s32 write_text_save(s32 fileIndex) { u32 i, bit, flags, coins, stars, starFlags; /* Define savefile's name */ - if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) + if (sprintf(filename, FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) return -1; file = fopen(filename, "wt"); @@ -212,7 +212,7 @@ static s32 read_text_save(s32 fileIndex) { u32 capArea; /* Define savefile's name */ - if (sprintf(filename, FILENAME_FORMAT, fileIndex) < 0) + if (sprintf(filename, FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) return -1; /* Try to open the file */ From 5d2f4e1ba5f4d3cb33622f74bc736ab774274a63 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 5 Jun 2020 20:26:43 +0300 Subject: [PATCH 092/166] 32 chars is too small for this shit --- src/game/text_save.inc.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index 39ad1fc4..29b6851b 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -3,6 +3,7 @@ #include #include "course_table.h" #include "pc/ini.h" +#include "pc/platform.h" #define FILENAME_FORMAT "%s/save_file_%d.sav" #define NUM_COURSES 15 @@ -82,12 +83,12 @@ static s32 write_text_save(s32 fileIndex) { FILE* file; struct SaveFile *savedata; struct MainMenuSaveData *menudata; - char filename[32] = { 0 }; - char value[32] = { 0 }; + char filename[SYS_MAX_PATH] = { 0 }; + char value[SYS_MAX_PATH] = { 0 }; u32 i, bit, flags, coins, stars, starFlags; /* Define savefile's name */ - if (sprintf(filename, FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) + if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) return -1; file = fopen(filename, "wt"); @@ -203,8 +204,8 @@ static s32 write_text_save(s32 fileIndex) { * Read gSaveBuffer data from a text-based savefile. */ static s32 read_text_save(s32 fileIndex) { - char filename[32] = { 0 }; - char temp[32] = { 0 }; + char filename[SYS_MAX_PATH] = { 0 }; + char temp[SYS_MAX_PATH] = { 0 }; const char *value; ini_t *savedata; @@ -212,7 +213,7 @@ static s32 read_text_save(s32 fileIndex) { u32 capArea; /* Define savefile's name */ - if (sprintf(filename, FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) + if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) return -1; /* Try to open the file */ From bcdaf1338628b3735f1b88e78ecb8e72b5a76a6b Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 5 Jun 2020 20:27:54 +0300 Subject: [PATCH 093/166] add script to unpack .pak-formatted texture packs --- tools/unpak.py | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 tools/unpak.py diff --git a/tools/unpak.py b/tools/unpak.py new file mode 100644 index 00000000..7e515aba --- /dev/null +++ b/tools/unpak.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 + +# requires Pillow and zstandard for Python +# on msys, install Pillow with +# pacman -S mingw-w64-x86_64-python-pillow +# zstd needs to be compiled, because the one in pip3 fails to do so: +# pacman -S mingw-w64-x86_64-python-setuptools mingw-w64-x86_64-zstd +# git clone https://github.com/indygreg/python-zstandard.git --recursive && cd python-zstandard +# python setup.py build_ext --external clean +# run like this: +# ./unpak.py pakfile.pak outdir tools/default_crcmap.txt +# any files not found in crcmap will go to the "nonmatching" folder + +import os +import sys +import zstd +import struct +from PIL import Image + +PAK_MAGIC = b'\x11\xde\x37\x10\x68\x75\xb6\xe8' + +if len(sys.argv) < 3: + print('usage: unpak []') + sys.exit(1) + +pakfname = sys.argv[1] +outpath = sys.argv[2] +mapfname = "crcmap.txt" +if len(sys.argv) > 3: + mapfname = sys.argv[3] + +# load the CRC map +crcmap = dict() +try: + with open(mapfname, 'r') as f: + for line in f: + line = line.strip() + if line == '' or line[0] == '#': + continue + tok = line.split(',') + crcstr = tok[0].strip() + if crcstr.startswith('0x'): + crc = int(crcstr[2:], 16) + else: + crc = int(crcstr) + path = os.path.join(outpath, tok[1].strip()) + if crc in crcmap: + crcmap[crc].append(path) + else: + crcmap[crc] = [path] +except OSError as e: + print('could not open {0}: {1}'.format(mapfname, e)) + sys.exit(2) +except ValueError as e: + print('invalid integer in {0}: {1}'.format(mapfname, e)) + sys.exit(2) + +unmatchdir = os.path.join(outpath, "nonmatching") +if not os.path.exists(unmatchdir): + os.makedirs(unmatchdir) + +# read the PAK +try: + texlist = [] + with open(pakfname, "rb") as f: + magic = f.read(len(PAK_MAGIC)) + if magic != PAK_MAGIC: + print('invalid magic in PAK ' + pakfname) + sys.exit(3) + texcount = int.from_bytes(f.read(8), byteorder='little') + print('reading {0} textures from {1}'.format(texcount, pakfname)) + for i in range(texcount): + crc = int.from_bytes(f.read(4), byteorder='little') + size = int.from_bytes(f.read(4), byteorder='little') + offset = int.from_bytes(f.read(8), byteorder='little') + width = int.from_bytes(f.read(8), byteorder='little') + height = int.from_bytes(f.read(8), byteorder='little') + texlist.append((crc, size, offset, width, height)) + for (crc, size, ofs, w, h) in texlist: + f.seek(ofs) + data = f.read(size) + img = Image.frombytes('RGBA', (w, h), zstd.decompress(data)) + if crc in crcmap: + for path in crcmap[crc]: + [fpath, fname] = os.path.split(path) + if not os.path.exists(fpath): + os.makedirs(fpath) + img.save(path) + else: + print('unknown crc: {0:08x}'.format(crc)) + path = os.path.join(unmatchdir, "{0:08x}.png".format(crc)) + img.save(path) +except OSError as e: + print('could not open {0}: {1}'.format(pakfname, e)) + sys.exit(3) From fa3b68b9c87524b58e52672e7f94336852715ff8 Mon Sep 17 00:00:00 2001 From: luciferin <40036150+hunterzero99@users.noreply.github.com> Date: Fri, 5 Jun 2020 14:07:16 -0400 Subject: [PATCH 094/166] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index efe50eda..7b23d0bc 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,9 @@ Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm * Disabling the HUD. * Cheats menu in Options. (Activate with `--cheats`) Please note that if a cheat asks you to press "L" it's referring to the N64 button. Check your bindings and make sure you have the "L" button mapped to a button in your controller. * Text-based save support. (Activate with `make TEXTSAVES=1`.) - * Recent changes in Nightly have moved save and configuration files, and they will *not* be read from the same directory as the executable. They are now stored in %HOMEPATH%\AppData\Roaming\sm64pc + * Recent changes in Nightly have moved the save and configuration file path to %HOMEPATH%\AppData\Roaming\sm64pc + This behaviour can be changed with the `--savepath` CLI option. For example `--savepath .` will read saves from the current directory (which not always matches the exe directory, but most of the time it does); +`--savepath '!'` will read saves from the executable directory. ## Building For building instructions, please refer to the [wiki](https://github.com/sm64pc/sm64pc/wiki). From 55692aebf89404f4bd352aea27ce7ef3350d3c66 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 5 Jun 2020 21:19:44 +0300 Subject: [PATCH 095/166] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7b23d0bc..882ee891 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,9 @@ Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm * Disabling the HUD. * Cheats menu in Options. (Activate with `--cheats`) Please note that if a cheat asks you to press "L" it's referring to the N64 button. Check your bindings and make sure you have the "L" button mapped to a button in your controller. * Text-based save support. (Activate with `make TEXTSAVES=1`.) - * Recent changes in Nightly have moved the save and configuration file path to %HOMEPATH%\AppData\Roaming\sm64pc - This behaviour can be changed with the `--savepath` CLI option. For example `--savepath .` will read saves from the current directory (which not always matches the exe directory, but most of the time it does); -`--savepath '!'` will read saves from the executable directory. + * Recent changes in Nightly have moved the save and configuration file path to `%HOMEPATH%\AppData\Roaming\sm64pc` on Windows and `$HOME/.local/share/sm64pc` on Linux. This behaviour can be changed with the `--savepath` CLI option. + For example `--savepath .` will read saves from the current directory (which not always matches the exe directory, but most of the time it does); + `--savepath '!'` will read saves from the executable directory. ## Building For building instructions, please refer to the [wiki](https://github.com/sm64pc/sm64pc/wiki). From b78997814adab1a3d11efd2208fa066cf4932b44 Mon Sep 17 00:00:00 2001 From: Jordy <33688327+jordy-u@users.noreply.github.com> Date: Sat, 6 Jun 2020 21:34:16 +0200 Subject: [PATCH 096/166] Remove description for the FPS counter The removed description is about applying a patch that does not exist anymore. It is removed from all branches on the 9th of may (commit 7a81769 , 094e570 & 5024cde). --- enhancements/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/enhancements/README.md b/enhancements/README.md index 241d82f3..1bc26dff 100644 --- a/enhancements/README.md +++ b/enhancements/README.md @@ -26,10 +26,6 @@ This allows you to draw 3D boxes for debugging purposes. Call the `debug_box` function whenever you want to draw one. `debug_box` by default takes two arguments: a center and bounds vec3f. This will draw a box starting from the point (center - bounds) to (center + bounds). Use `debug_box_rot` to draw a box rotated in the xz-plane. If you want to draw a box by specifying min and max points, use `debug_box_pos` instead. -## FPS Counter - `fps.patch` - -This patch provides an in-game FPS counter to measure the frame rate. - ## iQue Player Support - `ique_support.patch` This enhancement allows the same ROM to work on both the Nintendo 64 and the iQue Player. From e7218f043b1032ef5003c1fce39cf0399f3beb4e Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 7 Jun 2020 21:16:09 +0900 Subject: [PATCH 097/166] Add separate DEBUG flag for tools --- Makefile | 12 +++--------- tools/Makefile | 30 ++++++++++++++++++++++-------- tools/gen_asset_list.cpp | 2 +- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index b2154dda..a111fe56 100644 --- a/Makefile +++ b/Makefile @@ -75,9 +75,9 @@ else endif ifeq ($(TARGET_WEB),0) -ifeq ($(HOST_OS),Windows) -WINDOWS_BUILD := 1 -endif + ifeq ($(HOST_OS),Windows) + WINDOWS_BUILD := 1 + endif endif # MXE overrides @@ -96,8 +96,6 @@ endif ifneq ($(TARGET_BITS),0) BITS := -m$(TARGET_BITS) -else - BITS := endif # Release (version) flag defs @@ -340,10 +338,6 @@ GODDARD_C_FILES := $(foreach dir,$(GODDARD_SRC_DIRS),$(wildcard $(dir)/*.c)) GENERATED_C_FILES := $(BUILD_DIR)/assets/mario_anim_data.c $(BUILD_DIR)/assets/demo_data.c \ $(addprefix $(BUILD_DIR)/bin/,$(addsuffix _skybox.c,$(notdir $(basename $(wildcard textures/skyboxes/*.png))))) -ifeq ($(WINDOWS_BUILD),0) - CXX_FILES := -endif - # We need to keep this for now # If we're not N64 use below diff --git a/tools/Makefile b/tools/Makefile index 28ff49bf..d143bb46 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,17 +1,26 @@ UNAME := $(shell uname) +DEBUG ?= 0 + ifeq ($(UNAME),Darwin) - OSX_BUILD := -DOSX_BUILD + OSX_BUILD := -DOSX_BUILD +endif + +ifeq ($(DEBUG),1) + OPT_FLAG := -g +else + OPT_FLAG := -O2 endif CC := gcc -CFLAGS := -Llib -Iinclude -I../include -I . -Wall -Wextra -Wno-unused-parameter $(OSX_BUILD) -pedantic -std=c99 -O3 -s +CXX := g++ +CFLAGS := -Llib -Iinclude -I../include -I . -Wall -Wextra -Wno-unused-parameter $(OSX_BUILD) -pedantic -std=c99 $(OPT_FLAG) -s PROGRAMS := n64graphics n64graphics_ci mio0 n64cksum textconv patch_libultra_math iplfontutil aifc_decode aiff_extract_codebook vadpcm_enc tabledesign extract_data_for_mio skyconv n64graphics_SOURCES := n64graphics.c utils.c n64graphics_CFLAGS := -DN64GRAPHICS_STANDALONE n64graphics_ci_SOURCES := n64graphics_ci_dir/n64graphics_ci.c n64graphics_ci_dir/exoquant/exoquant.c n64graphics_ci_dir/utils.c -n64graphics_ci_CFLAGS := -O2 # 3s faster compile time +n64graphics_ci_CFLAGS := $(OPT_FLAG) mio0_SOURCES := libmio0.c mio0_CFLAGS := -DMIO0_STANDALONE @@ -22,10 +31,10 @@ textconv_SOURCES := textconv.c utf8.c hashtable.c patch_libultra_math_SOURCES := patch_libultra_math.c iplfontutil_SOURCES := iplfontutil.c -iplfontutil_CFLAGS := -O2 # faster compile time +iplfontutil_CFLAGS := $(OPT_FLAG) aifc_decode_SOURCES := aifc_decode.c -aifc_decode_CFLAGS := -O2 # both runs and compiles faster than -O3 +aifc_decode_CFLAGS := $(OPT_FLAG) aiff_extract_codebook_SOURCES := aiff_extract_codebook.c @@ -36,19 +45,24 @@ vadpcm_enc_SOURCES := sdk-tools/adpcm/vadpcm_enc.c sdk-tools/adpcm/vpredictor.c vadpcm_enc_CFLAGS := -Wno-unused-result -Wno-uninitialized -Wno-sign-compare -Wno-absolute-value extract_data_for_mio_SOURCES := extract_data_for_mio.c -extract_data_for_mio_CFLAGS := -O2 +extract_data_for_mio_CFLAGS := $(OPT_FLAG) skyconv_SOURCES := skyconv.c n64graphics.c utils.c -skyconv_CFLAGS := -O2 -lm +skyconv_CFLAGS := $(OPT_FLAG) -lm all: $(PROGRAMS) clean: $(RM) $(PROGRAMS) + $(RM) gen_asset_list define COMPILE $(1): $($1_SOURCES) $(CC) $(CFLAGS) $(OSX_BUILD) $$^ -lm -o $$@ $($1_CFLAGS) endef -$(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p)))) +# Separate build for debugging gen_asset_list.cpp +gen_asset_list: + $(CXX) -std=c++17 gen_asset_list.cpp -lstdc++fs $(OPT_FLAG) -Wall -o gen_asset_list + +$(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p)))) \ No newline at end of file diff --git a/tools/gen_asset_list.cpp b/tools/gen_asset_list.cpp index 050bd118..3096293e 100644 --- a/tools/gen_asset_list.cpp +++ b/tools/gen_asset_list.cpp @@ -222,7 +222,7 @@ tuple> compileSoundData(const string& lang) { } int main() { - intentional syntax error; // (see comment at top of file) + //intentional syntax error; // (see comment at top of file) map assets; map>> soundAssets; From 808bd99592887dab4d4c00fa492b9ae15ca2bcaa Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 7 Jun 2020 21:38:14 +0900 Subject: [PATCH 098/166] Remove some braindead comments --- src/game/text_save.inc.h | 75 ++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 50 deletions(-) diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index 29b6851b..55f6f85b 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -11,37 +11,32 @@ #define NUM_FLAGS 21 #define NUM_CAP_ON 4 -/* Flag keys */ const char *sav_flags[NUM_FLAGS] = { "file_exists", "wing_cap", "metal_cap", "vanish_cap", "key_1", "key_2", "basement_door", "upstairs_door", "ddd_moved_back", "moat_drained", "pps_door", "wf_door", "ccm_door", "jrb_door", "bitdw_door", - "bitfs_door", "", "", "", "", "50star_door" + "bitfs_door", "", "", "", "", "50star_door" // 4 Cap flags are processed in their own section }; -/* Main course keys */ const char *sav_courses[NUM_COURSES] = { "bob", "wf", "jrb", "ccm", "bbh", "hmc", "lll", "ssl", "ddd", "sl", "wdw", "ttm", "thi", "ttc", "rr" }; -/* Bonus courses keys (including Castle Course) */ const char *sav_bonus_courses[NUM_BONUS_COURSES] = { - "hub", "bitdw", "bitfs", "bits", "pss", "cotmc", - "totwc", "vcutm", "wmotr", "sa", + "bitdw", "bitfs", "bits", "pss", "cotmc", + "totwc", "vcutm", "wmotr", "sa", "hub" // hub is Castle Grounds }; -/* Mario's cap type keys */ const char *cap_on_types[NUM_CAP_ON] = { "ground", "klepto", "ukiki", "mrblizzard" }; -/* Sound modes */ const char *sound_modes[3] = { "stereo", "mono", "headset" }; -/* Get current timestamp */ +/* Get current timestamp string */ static void get_timestamp(char* buffer) { time_t timer; struct tm* tm_info; @@ -77,7 +72,7 @@ static u32 int_to_bin(u32 n) { } /** - * Write SaveFile and MainMenuSaveData structs to a text-based savefile. + * Write SaveFile and MainMenuSaveData structs to a text-based savefile */ static s32 write_text_save(s32 fileIndex) { FILE* file; @@ -87,7 +82,6 @@ static s32 write_text_save(s32 fileIndex) { char value[SYS_MAX_PATH] = { 0 }; u32 i, bit, flags, coins, stars, starFlags; - /* Define savefile's name */ if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) return -1; @@ -95,60 +89,53 @@ static s32 write_text_save(s32 fileIndex) { if (file == NULL) return -1; else - printf("Updating savefile in '%s'\n", filename); + printf("Saving updated progress to '%s'\n", filename); - /* Write header */ fprintf(file, "# Super Mario 64 save file\n"); fprintf(file, "# Comment starts with #\n"); fprintf(file, "# True = 1, False = 0\n"); - /* Write current timestamp */ get_timestamp(value); fprintf(file, "# %s\n", value); - /* Write MainMenuSaveData info */ menudata = &gSaveBuffer.menuData[0]; fprintf(file, "\n[menu]\n"); fprintf(file, "coin_score_age = %d\n", menudata->coinScoreAges[fileIndex]); - /* Sound mode */ if (menudata->soundMode == 0) { - fprintf(file, "sound_mode = %s\n", sound_modes[0]); // stereo + fprintf(file, "sound_mode = %s\n", sound_modes[0]); // stereo } else if (menudata->soundMode == 3) { - fprintf(file, "sound_mode = %s\n", sound_modes[1]); // mono + fprintf(file, "sound_mode = %s\n", sound_modes[1]); // mono } else if (menudata->soundMode == 1) { - fprintf(file, "sound_mode = %s\n", sound_modes[2]); // headset + fprintf(file, "sound_mode = %s\n", sound_modes[2]); // headset } else { printf("Undefined sound mode!"); return -1; } - /* Write all flags */ fprintf(file, "\n[flags]\n"); for (i = 1; i < NUM_FLAGS; i++) { if (strcmp(sav_flags[i], "")) { flags = save_file_get_flags(); - flags = (flags & (1 << i)); /* Get a specific bit */ - flags = (flags) ? 1 : 0; /* Determine if bit is set or not */ + flags = (flags & (1 << i)); // Get 'star' flag bit + flags = (flags) ? 1 : 0; fprintf(file, "%s = %d\n", sav_flags[i], flags); } } - /* Write coin count and star flags from each course (except Castle Grounds) */ fprintf(file, "\n[courses]\n"); for (i = 0; i < NUM_COURSES; i++) { stars = save_file_get_star_flags(fileIndex, i); coins = save_file_get_course_coin_score(fileIndex, i); - starFlags = int_to_bin(stars); /* 63 -> 111111 */ + starFlags = int_to_bin(stars); // 63 -> 111111 fprintf(file, "%s = \"%d, %07d\"\n", sav_courses[i], coins, starFlags); } - /* Write star flags from each bonus cource (including Castle Grounds) */ fprintf(file, "\n[bonus]\n"); for (i = 0; i < NUM_BONUS_COURSES; i++) { if (i == 0) { @@ -161,20 +148,18 @@ static s32 write_text_save(s32 fileIndex) { fprintf(file, "%s = %d\n", sav_bonus_courses[i], starFlags); } - /* Write who steal Mario's cap */ fprintf(file, "\n[cap]\n"); for (i = 0; i < NUM_CAP_ON; i++) { - flags = save_file_get_flags(); // Read all flags - bit = (1 << (i+16)); // Determine current flag - flags = (flags & bit); // Get `cap` flag - flags = (flags) ? 1 : 0; // Determine if bit is set or not + flags = save_file_get_flags(); + bit = (1 << (i+16)); // Determine current flag + flags = (flags & bit); // Get 'cap' flag bit + flags = (flags) ? 1 : 0; if (flags) { fprintf(file, "type = %s\n", cap_on_types[i]); break; } } - /* Write in what course and area Mario losted its cap, and cap's position */ savedata = &gSaveBuffer.files[fileIndex][0]; switch(savedata->capLevel) { case COURSE_SSL: @@ -192,7 +177,7 @@ static s32 write_text_save(s32 fileIndex) { } fprintf(file, "area = %d\n", savedata->capArea); - /* Update a backup */ + // Backup is nessecary for saving recent progress after gameover bcopy(&gSaveBuffer.files[fileIndex][0], &gSaveBuffer.files[fileIndex][1], sizeof(gSaveBuffer.files[fileIndex][1])); @@ -201,7 +186,7 @@ static s32 write_text_save(s32 fileIndex) { } /** - * Read gSaveBuffer data from a text-based savefile. + * Read gSaveBuffer data from a text-based savefile */ static s32 read_text_save(s32 fileIndex) { char filename[SYS_MAX_PATH] = { 0 }; @@ -212,11 +197,9 @@ static s32 read_text_save(s32 fileIndex) { u32 i, flag, coins, stars, starFlags; u32 capArea; - /* Define savefile's name */ if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) return -1; - /* Try to open the file */ savedata = ini_load(filename); if (savedata == NULL) { return -1; @@ -224,7 +207,6 @@ static s32 read_text_save(s32 fileIndex) { printf("Loading savefile from '%s'\n", filename); } - /* Read coin score age for selected file and sound mode */ ini_sget(savedata, "menu", "coin_score_age", "%d", &gSaveBuffer.menuData[0].coinScoreAges[fileIndex]); @@ -245,32 +227,29 @@ static s32 read_text_save(s32 fileIndex) { return -1; } - /* Parse main flags */ for (i = 1; i < NUM_FLAGS; i++) { value = ini_get(savedata, "flags", sav_flags[i]); if (value) { flag = strtol(value, &temp, 10); if (flag) { - flag = 1 << i; /* Look #define in header.. */ + flag = 1 << i; // Flags defined in 'save_file' header gSaveBuffer.files[fileIndex][0].flags |= flag; } } } - /* Parse coin and star values for each main course */ for (i = 0; i < NUM_COURSES; i++) { value = ini_get(savedata, "courses", sav_courses[i]); if (value) { sscanf(value, "%d, %d", &coins, &stars); - starFlags = bin_to_int(stars); /* 111111 -> 63 */ + starFlags = bin_to_int(stars); // 111111 -> 63 save_file_set_star_flags(fileIndex, i, starFlags); gSaveBuffer.files[fileIndex][0].courseCoinScores[i] = coins; } } - /* Parse star values for each bonus course */ for (i = 0; i < NUM_BONUS_COURSES; i++) { value = ini_get(savedata, "bonus", sav_bonus_courses[i]); if (value) { @@ -278,19 +257,18 @@ static s32 read_text_save(s32 fileIndex) { starFlags = bin_to_int(stars); if (strlen(value) == 5) { - /* Process Castle Grounds */ + // Process Castle Grounds save_file_set_star_flags(fileIndex, -1, starFlags); } else if (strlen(value) == 2) { - /* Process Princess's Secret Slide */ + // Process Princess's Secret Slide save_file_set_star_flags(fileIndex, COURSE_PSS, starFlags); } else { - /* Process another shitty bonus course */ + // Process bonus courses save_file_set_star_flags(fileIndex, i+15, starFlags); } } } - /* Find, who steal Mario's cap ... */ for (i = 0; i < NUM_CAP_ON; i++) { value = ini_get(savedata, "cap", "type"); if (value) { @@ -302,7 +280,6 @@ static s32 read_text_save(s32 fileIndex) { } } - /* ... it's level ... */ value = ini_get(savedata, "cap", "level"); if (value) { if (strcmp(value, "ssl") == 0) { @@ -323,7 +300,6 @@ static s32 read_text_save(s32 fileIndex) { } } - /* ... and it's area */ value = ini_get(savedata, "cap", "area"); if (value) { sscanf(value, "%d", &capArea); @@ -336,14 +312,13 @@ static s32 read_text_save(s32 fileIndex) { } } - /* Good, file exists for gSaveBuffer */ + // Good, file exists for gSaveBuffer gSaveBuffer.files[fileIndex][0].flags |= SAVE_FLAG_FILE_EXISTS; - /* Make a backup */ + // Backup is nessecary for saving recent progress after gameover bcopy(&gSaveBuffer.files[fileIndex][0], &gSaveBuffer.files[fileIndex][1], sizeof(gSaveBuffer.files[fileIndex][1])); - /* Cleaning up after ourselves */ ini_free(savedata); return 0; } From 6733bdb3ae9cd640e4cb5136b81ff8aee61b95c4 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 7 Jun 2020 21:44:00 +0900 Subject: [PATCH 099/166] Fix parsing for bonus and cap data --- src/game/text_save.inc.h | 49 ++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index 55f6f85b..8128711e 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -5,7 +5,7 @@ #include "pc/ini.h" #include "pc/platform.h" -#define FILENAME_FORMAT "%s/save_file_%d.sav" +#define FILENAME_FORMAT "%s\\sm64_save_file_%d.sav" #define NUM_COURSES 15 #define NUM_BONUS_COURSES 10 #define NUM_FLAGS 21 @@ -86,9 +86,10 @@ static s32 write_text_save(s32 fileIndex) { return -1; file = fopen(filename, "wt"); - if (file == NULL) + if (file == NULL) { + printf("Savefile '%s' not found!\n", path); return -1; - else + } else printf("Saving updated progress to '%s'\n", filename); fprintf(file, "# Super Mario 64 save file\n"); @@ -138,14 +139,26 @@ static s32 write_text_save(s32 fileIndex) { fprintf(file, "\n[bonus]\n"); for (i = 0; i < NUM_BONUS_COURSES; i++) { - if (i == 0) { - stars = save_file_get_star_flags(fileIndex, -1); - } else { - stars = save_file_get_star_flags(fileIndex, i+14); - } - starFlags = int_to_bin(stars); + char *format; - fprintf(file, "%s = %d\n", sav_bonus_courses[i], starFlags); + if (i == NUM_BONUS_COURSES-1) { + // Process Castle Grounds + stars = save_file_get_star_flags(fileIndex, -1); + format = "%05d"; + } else if (i == 3) { + // Process Princess's Secret Slide + stars = save_file_get_star_flags(fileIndex, 18); + format = "%02d"; + } else { + // Process bonus courses + stars = save_file_get_star_flags(fileIndex, i+15); + format = "%d"; + } + + starFlags = int_to_bin(stars); + if (sprintf(value, format, starFlags) < 0) + return -1; + fprintf(file, "%s = %s\n", sav_bonus_courses[i], value); } fprintf(file, "\n[cap]\n"); @@ -172,10 +185,11 @@ static s32 write_text_save(s32 fileIndex) { fprintf(file, "level = %s\n", "ttm"); break; default: - fprintf(file, "level = %s\n", "none"); break; } - fprintf(file, "area = %d\n", savedata->capArea); + if (savedata->capLevel) { + fprintf(file, "area = %d\n", savedata->capArea); + } // Backup is nessecary for saving recent progress after gameover bcopy(&gSaveBuffer.files[fileIndex][0], &gSaveBuffer.files[fileIndex][1], @@ -261,7 +275,7 @@ static s32 read_text_save(s32 fileIndex) { save_file_set_star_flags(fileIndex, -1, starFlags); } else if (strlen(value) == 2) { // Process Princess's Secret Slide - save_file_set_star_flags(fileIndex, COURSE_PSS, starFlags); + save_file_set_star_flags(fileIndex, 18, starFlags); } else { // Process bonus courses save_file_set_star_flags(fileIndex, i+15, starFlags); @@ -283,16 +297,13 @@ static s32 read_text_save(s32 fileIndex) { value = ini_get(savedata, "cap", "level"); if (value) { if (strcmp(value, "ssl") == 0) { - gSaveBuffer.files[fileIndex][0].capLevel = 8; // ssl + gSaveBuffer.files[fileIndex][0].capLevel = COURSE_SSL; // ssl } else if (strcmp(value, "sl") == 0) { - gSaveBuffer.files[fileIndex][0].capLevel = 10; // sl + gSaveBuffer.files[fileIndex][0].capLevel = COURSE_SL; // sl } else if (strcmp(value, "ttm") == 0) { - gSaveBuffer.files[fileIndex][0].capLevel = 12; // ttm - } - else if (strcmp(value, "none") == 0) { - gSaveBuffer.files[fileIndex][0].capLevel = 0; + gSaveBuffer.files[fileIndex][0].capLevel = COURSE_TTM; // ttm } else { printf("Invalid 'cap:level' flag!\n"); From f6ab82d144fe61ec29156068b54b744974065616 Mon Sep 17 00:00:00 2001 From: Zerocker Date: Sun, 7 Jun 2020 22:19:47 +0900 Subject: [PATCH 100/166] Fix a couple of warnings --- src/game/save_file.c | 2 +- src/game/text_save.inc.h | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/game/save_file.c b/src/game/save_file.c index a8db910b..934b122e 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -391,7 +391,6 @@ BAD_RETURN(s32) save_file_copy(s32 srcFileIndex, s32 destFileIndex) { void save_file_load_all(void) { s32 file; - s32 validSlots; gMainMenuDataModified = FALSE; gSaveFileModified = FALSE; @@ -405,6 +404,7 @@ void save_file_load_all(void) { gSaveFileModified = TRUE; gMainMenuDataModified = TRUE; #else + s32 validSlots; read_eeprom_data(&gSaveBuffer, sizeof(gSaveBuffer)); if (save_file_need_bswap(&gSaveBuffer)) diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index 8128711e..1325f0a5 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -79,7 +79,7 @@ static s32 write_text_save(s32 fileIndex) { struct SaveFile *savedata; struct MainMenuSaveData *menudata; char filename[SYS_MAX_PATH] = { 0 }; - char value[SYS_MAX_PATH] = { 0 }; + char *value; u32 i, bit, flags, coins, stars, starFlags; if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) @@ -87,7 +87,7 @@ static s32 write_text_save(s32 fileIndex) { file = fopen(filename, "wt"); if (file == NULL) { - printf("Savefile '%s' not found!\n", path); + printf("Savefile '%s' not found!\n", filename); return -1; } else printf("Saving updated progress to '%s'\n", filename); @@ -204,7 +204,6 @@ static s32 write_text_save(s32 fileIndex) { */ static s32 read_text_save(s32 fileIndex) { char filename[SYS_MAX_PATH] = { 0 }; - char temp[SYS_MAX_PATH] = { 0 }; const char *value; ini_t *savedata; @@ -243,9 +242,8 @@ static s32 read_text_save(s32 fileIndex) { for (i = 1; i < NUM_FLAGS; i++) { value = ini_get(savedata, "flags", sav_flags[i]); - if (value) { - flag = strtol(value, &temp, 10); + flag = value[0] - '0'; // Flag should be 0 or 1 if (flag) { flag = 1 << i; // Flags defined in 'save_file' header gSaveBuffer.files[fileIndex][0].flags |= flag; From 4feacc0065db65e7c9ef56663d3c481c595fb0b1 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 7 Jun 2020 21:05:26 +0300 Subject: [PATCH 101/166] add virtual filesystem thing w/ ZIP support similar to Quake 3: all the archives and folders get mounted to the same mountpoint in the VFS, read access to files in the VFS is transparent --- Makefile | 50 +- include/macros.h | 12 +- include/tinfl.h | 724 +++++++++++++++++++++++++++++ src/audio/load.c | 8 +- src/pc/configfile.c | 36 +- src/pc/controller/controller_sdl.c | 19 +- src/pc/fs/dirtree.c | 137 ++++++ src/pc/fs/dirtree.h | 32 ++ src/pc/fs/fs.c | 443 ++++++++++++++++++ src/pc/fs/fs.h | 136 ++++++ src/pc/fs/fs_packtype_dir.c | 117 +++++ src/pc/fs/fs_packtype_zip.c | 486 +++++++++++++++++++ src/pc/gfx/gfx_opengl.c | 4 +- src/pc/gfx/gfx_opengl_legacy.c | 9 +- src/pc/gfx/gfx_pc.c | 88 ++-- src/pc/pc_main.c | 3 + src/pc/platform.c | 247 +++------- src/pc/platform.h | 23 +- src/pc/ultra_reimplementation.c | 15 +- tools/mkzip.py | 22 + 20 files changed, 2294 insertions(+), 317 deletions(-) create mode 100644 include/tinfl.h create mode 100644 src/pc/fs/dirtree.c create mode 100644 src/pc/fs/dirtree.h create mode 100644 src/pc/fs/fs.c create mode 100644 src/pc/fs/fs.h create mode 100644 src/pc/fs/fs_packtype_dir.c create mode 100644 src/pc/fs/fs_packtype_zip.c create mode 100644 tools/mkzip.py diff --git a/Makefile b/Makefile index a111fe56..8ec64322 100644 --- a/Makefile +++ b/Makefile @@ -56,6 +56,11 @@ NO_LDIV ?= 0 LEGACY_GL ?= 0 +# Misc settings for EXTERNAL_DATA + +BASEDIR ?= res +BASEPACK ?= base.zip + # Automatic settings for PC port(s) NON_MATCHING := 1 @@ -266,7 +271,7 @@ LEVEL_DIRS := $(patsubst levels/%,%,$(dir $(wildcard levels/*/header.h))) # Directories containing source files # Hi, I'm a PC -SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers actors levels bin data assets src/pc src/pc/gfx src/pc/audio src/pc/controller +SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers actors levels bin data assets src/pc src/pc/gfx src/pc/audio src/pc/controller src/pc/fs src/pc/fs/packtypes ASM_DIRS := BIN_DIRS := bin bin/$(VERSION) @@ -556,8 +561,8 @@ endif # Load external textures ifeq ($(EXTERNAL_DATA),1) - CC_CHECK += -DEXTERNAL_DATA - CFLAGS += -DEXTERNAL_DATA + CC_CHECK += -DEXTERNAL_DATA -DFS_BASEDIR="\"$(BASEDIR)\"" + CFLAGS += -DEXTERNAL_DATA -DFS_BASEDIR="\"$(BASEDIR)\"" # tell skyconv to write names instead of actual texture data and save the split tiles so we can use them later SKYCONV_ARGS := --store-names --write-tiles "$(BUILD_DIR)/textures/skybox_tiles" endif @@ -619,27 +624,30 @@ all: $(EXE) ifeq ($(EXTERNAL_DATA),1) -# thank you apple very cool -ifeq ($(HOST_OS),Darwin) - CP := gcp -else - CP := cp -endif +BASEPACK_PATH := $(BUILD_DIR)/$(BASEDIR)/$(BASEPACK) +BASEPACK_LST := $(BUILD_DIR)/basepack.lst # depend on resources as well -all: res +all: $(BASEPACK_PATH) -# prepares the resource folder for external data -res: $(EXE) - @mkdir -p $(BUILD_DIR)/res/sound - @$(CP) -r -f textures/ $(BUILD_DIR)/res/ - @$(CP) -r -f $(BUILD_DIR)/textures/skybox_tiles/ $(BUILD_DIR)/res/textures/ - @$(CP) -f $(SOUND_BIN_DIR)/sound_data.ctl $(BUILD_DIR)/res/sound/ - @$(CP) -f $(SOUND_BIN_DIR)/sound_data.tbl $(BUILD_DIR)/res/sound/ - @$(CP) -f $(SOUND_BIN_DIR)/sequences.bin $(BUILD_DIR)/res/sound/ - @$(CP) -f $(SOUND_BIN_DIR)/bank_sets $(BUILD_DIR)/res/sound/ - @find actors -name \*.png -exec $(CP) --parents {} $(BUILD_DIR)/res/ \; - @find levels -name \*.png -exec $(CP) --parents {} $(BUILD_DIR)/res/ \; +# phony target for building resources +res: $(BASEPACK_PATH) + +# prepares the basepack.lst +$(BASEPACK_LST): $(EXE) + @mkdir -p $(BUILD_DIR)/$(BASEDIR) + @echo -n > $(BASEPACK_LST) + @echo "$(BUILD_DIR)/sound/bank_sets sound/bank_sets" >> $(BASEPACK_LST) + @echo "$(BUILD_DIR)/sound/sequences.bin sound/sequences.bin" >> $(BASEPACK_LST) + @echo "$(BUILD_DIR)/sound/sound_data.ctl sound/sound_data.ctl" >> $(BASEPACK_LST) + @echo "$(BUILD_DIR)/sound/sound_data.tbl sound/sound_data.tbl" >> $(BASEPACK_LST) + @find actors -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \; + @find levels -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \; + @find textures -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \; + +# prepares the resource ZIP with base data +$(BASEPACK_PATH): $(BASEPACK_LST) + @$(TOOLS_DIR)/mkzip.py $(BASEPACK_LST) $(BASEPACK_PATH) endif diff --git a/include/macros.h b/include/macros.h index f93642fb..85512d23 100644 --- a/include/macros.h +++ b/include/macros.h @@ -59,11 +59,15 @@ // Convenience macros for endian conversions #if IS_BIG_ENDIAN -#define BE_TO_HOST16(x) (x) -#define BE_TO_HOST32(x) (x) +# define BE_TO_HOST16(x) (x) +# define BE_TO_HOST32(x) (x) +# define LE_TO_HOST16(x) BSWAP16(x) +# define LE_TO_HOST32(x) BSWAP32(x) #else -#define BE_TO_HOST16(x) BSWAP16(x) -#define BE_TO_HOST32(x) BSWAP32(x) +# define BE_TO_HOST16(x) BSWAP16(x) +# define BE_TO_HOST32(x) BSWAP32(x) +# define LE_TO_HOST16(x) (x) +# define LE_TO_HOST32(x) (x) #endif #endif diff --git a/include/tinfl.h b/include/tinfl.h new file mode 100644 index 00000000..b6b31d0a --- /dev/null +++ b/include/tinfl.h @@ -0,0 +1,724 @@ +/* tinfl.c v1.11 - public domain inflate with zlib header parsing/adler32 checking (inflate-only subset of miniz.c) + See "unlicense" statement at the end of this file. + Rich Geldreich , last updated May 20, 2011 + Implements RFC 1950: https://www.ietf.org/rfc/rfc1950.txt and RFC 1951: https://www.ietf.org/rfc/rfc1951.txt + + The entire decompressor coroutine is implemented in tinfl_decompress(). The other functions are optional high-level helpers. +*/ +#ifndef TINFL_HEADER_INCLUDED +#define TINFL_HEADER_INCLUDED + +#include + +typedef uint8_t mz_uint8; +typedef int16_t mz_int16; +typedef uint16_t mz_uint16; +typedef uint32_t mz_uint32; +typedef unsigned int mz_uint; +typedef uint64_t mz_uint64; + +/* For more compatibility with zlib, miniz.c uses unsigned long for some parameters/struct members. */ +typedef unsigned long mz_ulong; + +/* Heap allocation callbacks. */ +typedef void *(*mz_alloc_func)(void *opaque, unsigned int items, unsigned int size); +typedef void (*mz_free_func)(void *opaque, void *address); + +#if defined(_M_IX86) || defined(_M_X64) +/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 if integer loads and stores to unaligned addresses are acceptable on the target platform (slightly faster). */ +#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 +/* Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian. */ +#define MINIZ_LITTLE_ENDIAN 1 +#endif + +#if defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) +/* Set MINIZ_HAS_64BIT_REGISTERS to 1 if the processor has 64-bit general purpose registers (enables 64-bit bitbuffer in inflator) */ +#define MINIZ_HAS_64BIT_REGISTERS 1 +#endif + +/* Works around MSVC's spammy "warning C4127: conditional expression is constant" message. */ +#ifdef _MSC_VER +#define MZ_MACRO_END while (0, 0) +#else +#define MZ_MACRO_END while (0) +#endif + +/* Decompression flags. */ +enum +{ + TINFL_FLAG_PARSE_ZLIB_HEADER = 1, + TINFL_FLAG_HAS_MORE_INPUT = 2, + TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF = 4, + TINFL_FLAG_COMPUTE_ADLER32 = 8 +}; + +struct tinfl_decompressor_tag; typedef struct tinfl_decompressor_tag tinfl_decompressor; + +/* Max size of LZ dictionary. */ +#define TINFL_LZ_DICT_SIZE 32768 + +/* Return status. */ +typedef enum +{ + TINFL_STATUS_BAD_PARAM = -3, + TINFL_STATUS_ADLER32_MISMATCH = -2, + TINFL_STATUS_FAILED = -1, + TINFL_STATUS_DONE = 0, + TINFL_STATUS_NEEDS_MORE_INPUT = 1, + TINFL_STATUS_HAS_MORE_OUTPUT = 2 +} tinfl_status; + +/* Initializes the decompressor to its initial state. */ +#define tinfl_init(r) do { (r)->m_state = 0; } MZ_MACRO_END +#define tinfl_get_adler32(r) (r)->m_check_adler32 + +/* Main low-level decompressor coroutine function. This is the only function actually needed for decompression. All the other functions are just high-level helpers for improved usability. */ +/* This is a universal API, i.e. it can be used as a building block to build any desired higher level decompression API. In the limit case, it can be called once per every byte input or output. */ +static tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags); + +/* Internal/private bits follow. */ +enum +{ + TINFL_MAX_HUFF_TABLES = 3, TINFL_MAX_HUFF_SYMBOLS_0 = 288, TINFL_MAX_HUFF_SYMBOLS_1 = 32, TINFL_MAX_HUFF_SYMBOLS_2 = 19, + TINFL_FAST_LOOKUP_BITS = 10, TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS +}; + +typedef struct +{ + mz_uint8 m_code_size[TINFL_MAX_HUFF_SYMBOLS_0]; + mz_int16 m_look_up[TINFL_FAST_LOOKUP_SIZE], m_tree[TINFL_MAX_HUFF_SYMBOLS_0 * 2]; +} tinfl_huff_table; + +#if MINIZ_HAS_64BIT_REGISTERS + #define TINFL_USE_64BIT_BITBUF 1 +#endif + +#if TINFL_USE_64BIT_BITBUF + typedef mz_uint64 tinfl_bit_buf_t; + #define TINFL_BITBUF_SIZE (64) +#else + typedef mz_uint32 tinfl_bit_buf_t; + #define TINFL_BITBUF_SIZE (32) +#endif + +struct tinfl_decompressor_tag +{ + mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter, m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES]; + tinfl_bit_buf_t m_bit_buf; + size_t m_dist_from_out_buf_start; + tinfl_huff_table m_tables[TINFL_MAX_HUFF_TABLES]; + mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137]; +}; + +#endif /* #ifdef TINFL_HEADER_INCLUDED */ + +/* ------------------- End of Header: Implementation follows. (If you only want the header, define MINIZ_HEADER_FILE_ONLY.) */ + +#ifndef TINFL_HEADER_FILE_ONLY + +#ifdef MINIZ_NO_MALLOC + #define MZ_MALLOC(x) NULL + #define MZ_FREE(x) x, ((void)0) + #define MZ_REALLOC(p, x) NULL +#else + #define MZ_MALLOC(x) malloc(x) + #define MZ_FREE(x) free(x) + #define MZ_REALLOC(p, x) realloc(p, x) +#endif + +#define MZ_MAX(a,b) (((a)>(b))?(a):(b)) +#define MZ_MIN(a,b) (((a)<(b))?(a):(b)) +#define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj)) + +#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN + #define MZ_READ_LE16(p) *((const mz_uint16 *)(p)) + #define MZ_READ_LE32(p) *((const mz_uint32 *)(p)) +#else + #define MZ_READ_LE16(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U)) + #define MZ_READ_LE32(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | ((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U)) +#endif + +#define TINFL_MEMCPY(d, s, l) memcpy(d, s, l) +#define TINFL_MEMSET(p, c, l) memset(p, c, l) + +#define TINFL_CR_BEGIN switch(r->m_state) { case 0: +#define TINFL_CR_RETURN(state_index, result) do { status = result; r->m_state = state_index; goto common_exit; case state_index:; } MZ_MACRO_END +#define TINFL_CR_RETURN_FOREVER(state_index, result) do { for ( ; ; ) { TINFL_CR_RETURN(state_index, result); } } MZ_MACRO_END +#define TINFL_CR_FINISH } + +/* TODO: If the caller has indicated that there's no more input, and we attempt to read beyond the input buf, then something is wrong with the input because the inflator never */ +/* reads ahead more than it needs to. Currently TINFL_GET_BYTE() pads the end of the stream with 0's in this scenario. */ +#define TINFL_GET_BYTE(state_index, c) do { \ + if (pIn_buf_cur >= pIn_buf_end) { \ + for ( ; ; ) { \ + if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) { \ + TINFL_CR_RETURN(state_index, TINFL_STATUS_NEEDS_MORE_INPUT); \ + if (pIn_buf_cur < pIn_buf_end) { \ + c = *pIn_buf_cur++; \ + break; \ + } \ + } else { \ + c = 0; \ + break; \ + } \ + } \ + } else c = *pIn_buf_cur++; } MZ_MACRO_END + +#define TINFL_NEED_BITS(state_index, n) do { mz_uint c; TINFL_GET_BYTE(state_index, c); bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); num_bits += 8; } while (num_bits < (mz_uint)(n)) +#define TINFL_SKIP_BITS(state_index, n) do { if (num_bits < (mz_uint)(n)) { TINFL_NEED_BITS(state_index, n); } bit_buf >>= (n); num_bits -= (n); } MZ_MACRO_END +#define TINFL_GET_BITS(state_index, b, n) do { if (num_bits < (mz_uint)(n)) { TINFL_NEED_BITS(state_index, n); } b = bit_buf & ((1 << (n)) - 1); bit_buf >>= (n); num_bits -= (n); } MZ_MACRO_END + +/* TINFL_HUFF_BITBUF_FILL() is only used rarely, when the number of bytes remaining in the input buffer falls below 2. */ +/* It reads just enough bytes from the input stream that are needed to decode the next Huffman code (and absolutely no more). It works by trying to fully decode a */ +/* Huffman code by using whatever bits are currently present in the bit buffer. If this fails, it reads another byte, and tries again until it succeeds or until the */ +/* bit buffer contains >=15 bits (deflate's max. Huffman code size). */ +#define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \ + do { \ + temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \ + if (temp >= 0) { \ + code_len = temp >> 9; \ + if ((code_len) && (num_bits >= code_len)) \ + break; \ + } else if (num_bits > TINFL_FAST_LOOKUP_BITS) { \ + code_len = TINFL_FAST_LOOKUP_BITS; \ + do { \ + temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ + } while ((temp < 0) && (num_bits >= (code_len + 1))); if (temp >= 0) break; \ + } TINFL_GET_BYTE(state_index, c); bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); num_bits += 8; \ + } while (num_bits < 15); + +/* TINFL_HUFF_DECODE() decodes the next Huffman coded symbol. It's more complex than you would initially expect because the zlib API expects the decompressor to never read */ +/* beyond the final byte of the deflate stream. (In other words, when this macro wants to read another byte from the input, it REALLY needs another byte in order to fully */ +/* decode the next Huffman code.) Handling this properly is particularly important on raw deflate (non-zlib) streams, which aren't followed by a byte aligned adler-32. */ +/* The slow path is only executed at the very end of the input buffer. */ +#define TINFL_HUFF_DECODE(state_index, sym, pHuff) do { \ + int temp; mz_uint code_len, c; \ + if (num_bits < 15) { \ + if ((pIn_buf_end - pIn_buf_cur) < 2) { \ + TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \ + } else { \ + bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); pIn_buf_cur += 2; num_bits += 16; \ + } \ + } \ + if ((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \ + code_len = temp >> 9, temp &= 511; \ + else { \ + code_len = TINFL_FAST_LOOKUP_BITS; do { temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; } while (temp < 0); \ + } sym = temp; bit_buf >>= code_len; num_bits -= code_len; } MZ_MACRO_END + +static void tinfl_def_free_func(void *opaque, void *address) { + (void)opaque, (void)address; + MZ_FREE(address); +} + +static void *tinfl_def_alloc_func(void *opaque, unsigned int items, unsigned int size) { + (void)opaque, (void)items, (void)size; + return MZ_MALLOC(items * size); +} + +static tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags) +{ + static const int s_length_base[31] = { 3,4,5,6,7,8,9,10,11,13, 15,17,19,23,27,31,35,43,51,59, 67,83,99,115,131,163,195,227,258,0,0 }; + static const int s_length_extra[31]= { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + static const int s_dist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + static const int s_dist_extra[32] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + static const mz_uint8 s_length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + static const int s_min_table_sizes[3] = { 257, 1, 4 }; + + tinfl_status status = TINFL_STATUS_FAILED; mz_uint32 num_bits, dist, counter, num_extra; tinfl_bit_buf_t bit_buf; + const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size; + mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next + *pOut_buf_size; + size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start; + + /* Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter). */ + if (((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start)) { *pIn_buf_size = *pOut_buf_size = 0; return TINFL_STATUS_BAD_PARAM; } + + num_bits = r->m_num_bits; bit_buf = r->m_bit_buf; dist = r->m_dist; counter = r->m_counter; num_extra = r->m_num_extra; dist_from_out_buf_start = r->m_dist_from_out_buf_start; + TINFL_CR_BEGIN + + bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0; r->m_z_adler32 = r->m_check_adler32 = 1; + if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) + { + TINFL_GET_BYTE(1, r->m_zhdr0); TINFL_GET_BYTE(2, r->m_zhdr1); + counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8)); + if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (r->m_zhdr0 >> 4))))); + if (counter) { TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED); } + } + + do + { + TINFL_GET_BITS(3, r->m_final, 3); r->m_type = r->m_final >> 1; + if (r->m_type == 0) + { + TINFL_SKIP_BITS(5, num_bits & 7); + for (counter = 0; counter < 4; ++counter) { if (num_bits) TINFL_GET_BITS(6, r->m_raw_header[counter], 8); else TINFL_GET_BYTE(7, r->m_raw_header[counter]); } + if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != (mz_uint)(0xFFFF ^ (r->m_raw_header[2] | (r->m_raw_header[3] << 8)))) { TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED); } + while ((counter) && (num_bits)) + { + TINFL_GET_BITS(51, dist, 8); + while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT); } + *pOut_buf_cur++ = (mz_uint8)dist; + counter--; + } + while (counter) + { + size_t n; while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT); } + while (pIn_buf_cur >= pIn_buf_end) + { + if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) + { + TINFL_CR_RETURN(38, TINFL_STATUS_NEEDS_MORE_INPUT); + } + else + { + TINFL_CR_RETURN_FOREVER(40, TINFL_STATUS_FAILED); + } + } + n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), (size_t)(pIn_buf_end - pIn_buf_cur)), counter); + TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n); pIn_buf_cur += n; pOut_buf_cur += n; counter -= (mz_uint)n; + } + } + else if (r->m_type == 3) + { + TINFL_CR_RETURN_FOREVER(10, TINFL_STATUS_FAILED); + } + else + { + if (r->m_type == 1) + { + mz_uint8 *p = r->m_tables[0].m_code_size; mz_uint i; + r->m_table_sizes[0] = 288; r->m_table_sizes[1] = 32; TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32); + for ( i = 0; i <= 143; ++i) *p++ = 8; + for ( ; i <= 255; ++i) *p++ = 9; + for ( ; i <= 279; ++i) *p++ = 7; + for ( ; i <= 287; ++i) *p++ = 8; + } + else + { + for (counter = 0; counter < 3; counter++) { TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); r->m_table_sizes[counter] += s_min_table_sizes[counter]; } + MZ_CLEAR_OBJ(r->m_tables[2].m_code_size); for (counter = 0; counter < r->m_table_sizes[2]; counter++) { mz_uint s; TINFL_GET_BITS(14, s, 3); r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s; } + r->m_table_sizes[2] = 19; + } + for ( ; (int)r->m_type >= 0; r->m_type--) + { + int tree_next, tree_cur; tinfl_huff_table *pTable; + mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16]; pTable = &r->m_tables[r->m_type]; MZ_CLEAR_OBJ(total_syms); MZ_CLEAR_OBJ(pTable->m_look_up); MZ_CLEAR_OBJ(pTable->m_tree); + for (i = 0; i < r->m_table_sizes[r->m_type]; ++i) total_syms[pTable->m_code_size[i]]++; + used_syms = 0, total = 0; next_code[0] = next_code[1] = 0; + for (i = 1; i <= 15; ++i) { used_syms += total_syms[i]; next_code[i + 1] = (total = ((total + total_syms[i]) << 1)); } + if ((65536 != total) && (used_syms > 1)) + { + TINFL_CR_RETURN_FOREVER(35, TINFL_STATUS_FAILED); + } + for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index) + { + mz_uint rev_code = 0, l, cur_code, code_size = pTable->m_code_size[sym_index]; if (!code_size) continue; + cur_code = next_code[code_size]++; for (l = code_size; l > 0; l--, cur_code >>= 1) rev_code = (rev_code << 1) | (cur_code & 1); + if (code_size <= TINFL_FAST_LOOKUP_BITS) { mz_int16 k = (mz_int16)((code_size << 9) | sym_index); while (rev_code < TINFL_FAST_LOOKUP_SIZE) { pTable->m_look_up[rev_code] = k; rev_code += (1 << code_size); } continue; } + if (0 == (tree_cur = pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)])) { pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next; tree_cur = tree_next; tree_next -= 2; } + rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1); + for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--) + { + tree_cur -= ((rev_code >>= 1) & 1); + if (!pTable->m_tree[-tree_cur - 1]) { pTable->m_tree[-tree_cur - 1] = (mz_int16)tree_next; tree_cur = tree_next; tree_next -= 2; } else tree_cur = pTable->m_tree[-tree_cur - 1]; + } + tree_cur -= ((rev_code >>= 1) & 1); pTable->m_tree[-tree_cur - 1] = (mz_int16)sym_index; + } + if (r->m_type == 2) + { + for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]); ) + { + mz_uint s; TINFL_HUFF_DECODE(16, dist, &r->m_tables[2]); if (dist < 16) { r->m_len_codes[counter++] = (mz_uint8)dist; continue; } + if ((dist == 16) && (!counter)) + { + TINFL_CR_RETURN_FOREVER(17, TINFL_STATUS_FAILED); + } + num_extra = "\02\03\07"[dist - 16]; TINFL_GET_BITS(18, s, num_extra); s += "\03\03\013"[dist - 16]; + TINFL_MEMSET(r->m_len_codes + counter, (dist == 16) ? r->m_len_codes[counter - 1] : 0, s); counter += s; + } + if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter) + { + TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED); + } + TINFL_MEMCPY(r->m_tables[0].m_code_size, r->m_len_codes, r->m_table_sizes[0]); TINFL_MEMCPY(r->m_tables[1].m_code_size, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]); + } + } + for ( ; ; ) + { + mz_uint8 *pSrc; + for ( ; ; ) + { + if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2)) + { + TINFL_HUFF_DECODE(23, counter, &r->m_tables[0]); + if (counter >= 256) + break; + while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT); } + *pOut_buf_cur++ = (mz_uint8)counter; + } + else + { + int sym2; mz_uint code_len; +#if TINFL_USE_64BIT_BITBUF + if (num_bits < 30) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits); pIn_buf_cur += 4; num_bits += 32; } +#else + if (num_bits < 15) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); pIn_buf_cur += 2; num_bits += 16; } +#endif + if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) + code_len = sym2 >> 9; + else + { + code_len = TINFL_FAST_LOOKUP_BITS; do { sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; } while (sym2 < 0); + } + counter = sym2; bit_buf >>= code_len; num_bits -= code_len; + if (counter & 256) + break; + +#if !TINFL_USE_64BIT_BITBUF + if (num_bits < 15) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); pIn_buf_cur += 2; num_bits += 16; } +#endif + if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) + code_len = sym2 >> 9; + else + { + code_len = TINFL_FAST_LOOKUP_BITS; do { sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; } while (sym2 < 0); + } + bit_buf >>= code_len; num_bits -= code_len; + + pOut_buf_cur[0] = (mz_uint8)counter; + if (sym2 & 256) + { + pOut_buf_cur++; + counter = sym2; + break; + } + pOut_buf_cur[1] = (mz_uint8)sym2; + pOut_buf_cur += 2; + } + } + if ((counter &= 511) == 256) break; + + num_extra = s_length_extra[counter - 257]; counter = s_length_base[counter - 257]; + if (num_extra) { mz_uint extra_bits; TINFL_GET_BITS(25, extra_bits, num_extra); counter += extra_bits; } + + TINFL_HUFF_DECODE(26, dist, &r->m_tables[1]); + num_extra = s_dist_extra[dist]; dist = s_dist_base[dist]; + if (num_extra) { mz_uint extra_bits; TINFL_GET_BITS(27, extra_bits, num_extra); dist += extra_bits; } + + dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start; + if ((dist > dist_from_out_buf_start) && (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) + { + TINFL_CR_RETURN_FOREVER(37, TINFL_STATUS_FAILED); + } + + pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask); + + if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end) + { + while (counter--) + { + while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT); } + *pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask]; + } + continue; + } +#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES + else if ((counter >= 9) && (counter <= dist)) + { + const mz_uint8 *pSrc_end = pSrc + (counter & ~7); + do + { + ((mz_uint32 *)pOut_buf_cur)[0] = ((const mz_uint32 *)pSrc)[0]; + ((mz_uint32 *)pOut_buf_cur)[1] = ((const mz_uint32 *)pSrc)[1]; + pOut_buf_cur += 8; + } while ((pSrc += 8) < pSrc_end); + if ((counter &= 7) < 3) + { + if (counter) + { + pOut_buf_cur[0] = pSrc[0]; + if (counter > 1) + pOut_buf_cur[1] = pSrc[1]; + pOut_buf_cur += counter; + } + continue; + } + } +#endif + do + { + pOut_buf_cur[0] = pSrc[0]; + pOut_buf_cur[1] = pSrc[1]; + pOut_buf_cur[2] = pSrc[2]; + pOut_buf_cur += 3; pSrc += 3; + } while ((int)(counter -= 3) > 2); + if ((int)counter > 0) + { + pOut_buf_cur[0] = pSrc[0]; + if ((int)counter > 1) + pOut_buf_cur[1] = pSrc[1]; + pOut_buf_cur += counter; + } + } + } + } while (!(r->m_final & 1)); + if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) + { + TINFL_SKIP_BITS(32, num_bits & 7); for (counter = 0; counter < 4; ++counter) { mz_uint s; if (num_bits) TINFL_GET_BITS(41, s, 8); else TINFL_GET_BYTE(42, s); r->m_z_adler32 = (r->m_z_adler32 << 8) | s; } + } + TINFL_CR_RETURN_FOREVER(34, TINFL_STATUS_DONE); + TINFL_CR_FINISH + +common_exit: + r->m_num_bits = num_bits; r->m_bit_buf = bit_buf; r->m_dist = dist; r->m_counter = counter; r->m_num_extra = num_extra; r->m_dist_from_out_buf_start = dist_from_out_buf_start; + *pIn_buf_size = pIn_buf_cur - pIn_buf_next; *pOut_buf_size = pOut_buf_cur - pOut_buf_next; + if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0)) + { + const mz_uint8 *ptr = pOut_buf_next; size_t buf_len = *pOut_buf_size; + mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16; size_t block_len = buf_len % 5552; + while (buf_len) + { + for (i = 0; i + 7 < block_len; i += 8, ptr += 8) + { + s1 += ptr[0], s2 += s1; s1 += ptr[1], s2 += s1; s1 += ptr[2], s2 += s1; s1 += ptr[3], s2 += s1; + s1 += ptr[4], s2 += s1; s1 += ptr[5], s2 += s1; s1 += ptr[6], s2 += s1; s1 += ptr[7], s2 += s1; + } + for ( ; i < block_len; ++i) s1 += *ptr++, s2 += s1; + s1 %= 65521U, s2 %= 65521U; buf_len -= block_len; block_len = 5552; + } + r->m_check_adler32 = (s2 << 16) + s1; if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32)) status = TINFL_STATUS_ADLER32_MISMATCH; + } + return status; +} + +/* Flush values. For typical usage you only need MZ_NO_FLUSH and MZ_FINISH. The other stuff is for advanced use. */ +enum { MZ_NO_FLUSH = 0, MZ_PARTIAL_FLUSH = 1, MZ_SYNC_FLUSH = 2, MZ_FULL_FLUSH = 3, MZ_FINISH = 4, MZ_BLOCK = 5 }; + +/* Return status codes. MZ_PARAM_ERROR is non-standard. */ +enum { MZ_OK = 0, MZ_STREAM_END = 1, MZ_NEED_DICT = 2, MZ_ERRNO = -1, MZ_STREAM_ERROR = -2, MZ_DATA_ERROR = -3, MZ_MEM_ERROR = -4, MZ_BUF_ERROR = -5, MZ_VERSION_ERROR = -6, MZ_PARAM_ERROR = -10000 }; + +/* Compression levels. */ +enum { MZ_NO_COMPRESSION = 0, MZ_BEST_SPEED = 1, MZ_BEST_COMPRESSION = 9, MZ_DEFAULT_COMPRESSION = -1 }; + +/* Window bits */ +#define MZ_DEFAULT_WINDOW_BITS 15 + +struct mz_internal_state; + +/* Compression/decompression stream struct. */ +typedef struct mz_stream_s +{ + const unsigned char *next_in; /* pointer to next byte to read */ + unsigned int avail_in; /* number of bytes available at next_in */ + mz_ulong total_in; /* total number of bytes consumed so far */ + + unsigned char *next_out; /* pointer to next byte to write */ + unsigned int avail_out; /* number of bytes that can be written to next_out */ + mz_ulong total_out; /* total number of bytes produced so far */ + + char *msg; /* error msg (unused) */ + struct mz_internal_state *state; /* internal state, allocated by zalloc/zfree */ + + mz_alloc_func zalloc; /* optional heap allocation function (defaults to malloc) */ + mz_free_func zfree; /* optional heap free function (defaults to free) */ + void *opaque; /* heap alloc function user pointer */ + + int data_type; /* data_type (unused) */ + mz_ulong adler; /* adler32 of the source or uncompressed data */ + mz_ulong reserved; /* not used */ +} mz_stream; + +typedef mz_stream *mz_streamp; + + +typedef struct +{ + tinfl_decompressor m_decomp; + mz_uint m_dict_ofs, m_dict_avail, m_first_call, m_has_flushed; int m_window_bits; + mz_uint8 m_dict[TINFL_LZ_DICT_SIZE]; + tinfl_status m_last_status; +} inflate_state; + +static int mz_inflateInit2(mz_streamp pStream, int window_bits) +{ + inflate_state *pDecomp; + if (!pStream) return MZ_STREAM_ERROR; + if ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS)) return MZ_PARAM_ERROR; + + pStream->data_type = 0; + pStream->adler = 0; + pStream->msg = NULL; + pStream->total_in = 0; + pStream->total_out = 0; + pStream->reserved = 0; + if (!pStream->zalloc) pStream->zalloc = tinfl_def_alloc_func; + if (!pStream->zfree) pStream->zfree = tinfl_def_free_func; + + pDecomp = (inflate_state*)pStream->zalloc(pStream->opaque, 1, sizeof(inflate_state)); + if (!pDecomp) return MZ_MEM_ERROR; + + pStream->state = (struct mz_internal_state *)pDecomp; + + tinfl_init(&pDecomp->m_decomp); + pDecomp->m_dict_ofs = 0; + pDecomp->m_dict_avail = 0; + pDecomp->m_last_status = TINFL_STATUS_NEEDS_MORE_INPUT; + pDecomp->m_first_call = 1; + pDecomp->m_has_flushed = 0; + pDecomp->m_window_bits = window_bits; + + return MZ_OK; +} + +static int mz_inflate(mz_streamp pStream, int flush) +{ + inflate_state* pState; + mz_uint n, first_call, decomp_flags = TINFL_FLAG_COMPUTE_ADLER32; + size_t in_bytes, out_bytes, orig_avail_in; + tinfl_status status; + + if ((!pStream) || (!pStream->state)) return MZ_STREAM_ERROR; + if (flush == MZ_PARTIAL_FLUSH) flush = MZ_SYNC_FLUSH; + if ((flush) && (flush != MZ_SYNC_FLUSH) && (flush != MZ_FINISH)) return MZ_STREAM_ERROR; + + pState = (inflate_state*)pStream->state; + if (pState->m_window_bits > 0) decomp_flags |= TINFL_FLAG_PARSE_ZLIB_HEADER; + orig_avail_in = pStream->avail_in; + + first_call = pState->m_first_call; pState->m_first_call = 0; + if (pState->m_last_status < 0) return MZ_DATA_ERROR; + + if (pState->m_has_flushed && (flush != MZ_FINISH)) return MZ_STREAM_ERROR; + pState->m_has_flushed |= (flush == MZ_FINISH); + + if ((flush == MZ_FINISH) && (first_call)) + { + /* MZ_FINISH on the first call implies that the input and output buffers are large enough to hold the entire compressed/decompressed file. */ + decomp_flags |= TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF; + in_bytes = pStream->avail_in; out_bytes = pStream->avail_out; + status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pStream->next_out, pStream->next_out, &out_bytes, decomp_flags); + pState->m_last_status = status; + pStream->next_in += (mz_uint)in_bytes; pStream->avail_in -= (mz_uint)in_bytes; pStream->total_in += (mz_uint)in_bytes; + pStream->adler = tinfl_get_adler32(&pState->m_decomp); + pStream->next_out += (mz_uint)out_bytes; pStream->avail_out -= (mz_uint)out_bytes; pStream->total_out += (mz_uint)out_bytes; + + if (status < 0) + return MZ_DATA_ERROR; + else if (status != TINFL_STATUS_DONE) + { + pState->m_last_status = TINFL_STATUS_FAILED; + return MZ_BUF_ERROR; + } + return MZ_STREAM_END; + } + /* flush != MZ_FINISH then we must assume there's more input. */ + if (flush != MZ_FINISH) decomp_flags |= TINFL_FLAG_HAS_MORE_INPUT; + + if (pState->m_dict_avail) + { + n = MZ_MIN(pState->m_dict_avail, pStream->avail_out); + memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n); + pStream->next_out += n; pStream->avail_out -= n; pStream->total_out += n; + pState->m_dict_avail -= n; pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); + return ((pState->m_last_status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK; + } + + for ( ; ; ) + { + in_bytes = pStream->avail_in; + out_bytes = TINFL_LZ_DICT_SIZE - pState->m_dict_ofs; + + status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pState->m_dict, pState->m_dict + pState->m_dict_ofs, &out_bytes, decomp_flags); + pState->m_last_status = status; + + pStream->next_in += (mz_uint)in_bytes; pStream->avail_in -= (mz_uint)in_bytes; + pStream->total_in += (mz_uint)in_bytes; pStream->adler = tinfl_get_adler32(&pState->m_decomp); + + pState->m_dict_avail = (mz_uint)out_bytes; + + n = MZ_MIN(pState->m_dict_avail, pStream->avail_out); + memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n); + pStream->next_out += n; pStream->avail_out -= n; pStream->total_out += n; + pState->m_dict_avail -= n; pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); + + if (status < 0) + return MZ_DATA_ERROR; /* Stream is corrupted (there could be some uncompressed data left in the output dictionary - oh well). */ + else if ((status == TINFL_STATUS_NEEDS_MORE_INPUT) && (!orig_avail_in)) + return MZ_BUF_ERROR; /* Signal caller that we can't make forward progress without supplying more input or by setting flush to MZ_FINISH. */ + else if (flush == MZ_FINISH) + { + /* The output buffer MUST be large to hold the remaining uncompressed data when flush==MZ_FINISH. */ + if (status == TINFL_STATUS_DONE) + return pState->m_dict_avail ? MZ_BUF_ERROR : MZ_STREAM_END; + /* status here must be TINFL_STATUS_HAS_MORE_OUTPUT, which means there's at least 1 more byte on the way. If there's no more room left in the output buffer then something is wrong. */ + else if (!pStream->avail_out) + return MZ_BUF_ERROR; + } + else if ((status == TINFL_STATUS_DONE) || (!pStream->avail_in) || (!pStream->avail_out) || (pState->m_dict_avail)) + break; + } + + return ((status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK; +} + +static int mz_inflateEnd(mz_streamp pStream) +{ + if (!pStream) + return MZ_STREAM_ERROR; + if (pStream->state) + { + pStream->zfree(pStream->opaque, pStream->state); + pStream->state = NULL; + } + return MZ_OK; +} + +/* make this a drop-in replacement for zlib... */ + #define voidpf void* + #define uInt unsigned int + #define z_stream mz_stream + #define inflateInit2 mz_inflateInit2 + #define inflate mz_inflate + #define inflateEnd mz_inflateEnd + #define Z_SYNC_FLUSH MZ_SYNC_FLUSH + #define Z_FINISH MZ_FINISH + #define Z_OK MZ_OK + #define Z_STREAM_END MZ_STREAM_END + #define Z_NEED_DICT MZ_NEED_DICT + #define Z_ERRNO MZ_ERRNO + #define Z_STREAM_ERROR MZ_STREAM_ERROR + #define Z_DATA_ERROR MZ_DATA_ERROR + #define Z_MEM_ERROR MZ_MEM_ERROR + #define Z_BUF_ERROR MZ_BUF_ERROR + #define Z_VERSION_ERROR MZ_VERSION_ERROR + #define MAX_WBITS 15 + +#endif /* #ifndef TINFL_HEADER_FILE_ONLY */ + +/* + This is free and unencumbered software released into the public domain. + + Anyone is free to copy, modify, publish, use, compile, sell, or + distribute this software, either in source code form or as a compiled + binary, for any purpose, commercial or non-commercial, and by any + means. + + In jurisdictions that recognize copyright laws, the author or authors + of this software dedicate any and all copyright interest in the + software to the public domain. We make this dedication for the benefit + of the public at large and to the detriment of our heirs and + successors. We intend this dedication to be an overt act of + relinquishment in perpetuity of all present and future rights to this + software under copyright law. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + For more information, please refer to +*/ + diff --git a/src/audio/load.c b/src/audio/load.c index affc6081..e85fcdf5 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -7,6 +7,7 @@ #include "seqplayer.h" #include "../pc/platform.h" +#include "../pc/fs/fs.h" #define ALIGN16(val) (((val) + 0xF) & ~0xF) @@ -875,11 +876,8 @@ void load_sequence_internal(u32 player, u32 seqId, s32 loadAsync) { # include # include static inline void *load_sound_res(const char *path) { - void *data = sys_load_res(path); - if (!data) { - fprintf(stderr, "could not load sound data from '%s'\n", path); - abort(); - } + void *data = fs_load_file(path, NULL); + if (!data) sys_fatal("could not load sound data from '%s'", path); // FIXME: figure out where it is safe to free this shit // can't free it immediately after in audio_init() return data; diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 79deadb6..ab0f166f 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -5,13 +5,20 @@ #include #include #include -#include + +#if USE_SDL == 2 +# include +# define WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED +#else +# define WINDOWPOS_CENTERED 0 +#endif #include "platform.h" #include "configfile.h" #include "cliopts.h" #include "gfx/gfx_screen_config.h" #include "controller/controller_api.h" +#include "fs/fs.h" #define ARRAY_LEN(arr) (sizeof(arr) / sizeof(arr[0])) @@ -38,8 +45,8 @@ struct ConfigOption { // Video/audio stuff ConfigWindow configWindow = { - .x = SDL_WINDOWPOS_CENTERED, - .y = SDL_WINDOWPOS_CENTERED, + .x = WINDOWPOS_CENTERED, + .y = WINDOWPOS_CENTERED, .w = DESIRED_SCREEN_WIDTH, .h = DESIRED_SCREEN_HEIGHT, .vsync = 1, @@ -130,7 +137,7 @@ static const struct ConfigOption options[] = { // Reads an entire line from a file (excluding the newline character) and returns an allocated string // Returns NULL if no lines could be read from the file -static char *read_file_line(FILE *file) { +static char *read_file_line(fs_file_t *file) { char *buffer; size_t bufferSize = 8; size_t offset = 0; // offset in buffer to write @@ -138,7 +145,7 @@ static char *read_file_line(FILE *file) { buffer = malloc(bufferSize); while (1) { // Read a line from the file - if (fgets(buffer + offset, bufferSize - offset, file) == NULL) { + if (fs_readline(file, buffer + offset, bufferSize - offset) == NULL) { free(buffer); return NULL; // Nothing could be read. } @@ -151,7 +158,7 @@ static char *read_file_line(FILE *file) { break; } - if (feof(file)) // EOF was reached + if (fs_eof(file)) // EOF was reached break; // If no newline or EOF was reached, then the whole line wasn't read. @@ -205,24 +212,17 @@ static unsigned int tokenize_string(char *str, int maxTokens, char **tokens) { // Gets the config file path and caches it const char *configfile_name(void) { - static char cfgpath[SYS_MAX_PATH] = { 0 }; - if (!cfgpath[0]) { - if (gCLIOpts.ConfigFile[0]) - snprintf(cfgpath, sizeof(cfgpath), "%s", gCLIOpts.ConfigFile); - else - snprintf(cfgpath, sizeof(cfgpath), "%s/%s", sys_save_path(), CONFIGFILE_DEFAULT); - } - return cfgpath; + return (gCLIOpts.ConfigFile[0]) ? gCLIOpts.ConfigFile : CONFIGFILE_DEFAULT; } // Loads the config file specified by 'filename' void configfile_load(const char *filename) { - FILE *file; + fs_file_t *file; char *line; printf("Loading configuration from '%s'\n", filename); - file = fopen(filename, "r"); + file = fs_open(filename); if (file == NULL) { // Create a new config file and save defaults printf("Config file '%s' not found. Creating it.\n", filename); @@ -286,7 +286,7 @@ void configfile_load(const char *filename) { free(line); } - fclose(file); + fs_close(file); } // Writes the config file to 'filename' @@ -295,7 +295,7 @@ void configfile_save(const char *filename) { printf("Saving configuration to '%s'\n", filename); - file = fopen(filename, "w"); + file = fopen(fs_get_write_path(filename), "w"); if (file == NULL) { // error return; diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index 9345daf1..10fe9d71 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -14,6 +14,7 @@ #include "controller_sdl.h" #include "../configfile.h" #include "../platform.h" +#include "../fs/fs.h" #include "game/level_update.h" @@ -92,15 +93,17 @@ static void controller_sdl_init(void) { } // try loading an external gamecontroller mapping file - char gcpath[SYS_MAX_PATH]; - snprintf(gcpath, sizeof(gcpath), "%s/gamecontrollerdb.txt", sys_save_path()); - int nummaps = SDL_GameControllerAddMappingsFromFile(gcpath); - if (nummaps < 0) { - snprintf(gcpath, sizeof(gcpath), "%s/gamecontrollerdb.txt", sys_data_path()); - nummaps = SDL_GameControllerAddMappingsFromFile(gcpath); + uint64_t gcsize = 0; + void *gcdata = fs_load_file("gamecontrollerdb.txt", &gcsize); + if (gcdata && gcsize) { + SDL_RWops *rw = SDL_RWFromConstMem(gcdata, gcsize); + if (rw) { + int nummaps = SDL_GameControllerAddMappingsFromRW(rw, SDL_TRUE); + if (nummaps >= 0) + printf("loaded %d controller mappings from 'gamecontrollerdb.txt'\n", nummaps); + } + free(gcdata); } - if (nummaps >= 0) - printf("loaded %d controller mappings from '%s'\n", nummaps, gcpath); #ifdef BETTERCAMERA if (newcam_mouse == 1) diff --git a/src/pc/fs/dirtree.c b/src/pc/fs/dirtree.c new file mode 100644 index 00000000..3ebdc5fe --- /dev/null +++ b/src/pc/fs/dirtree.c @@ -0,0 +1,137 @@ +#include +#include +#include +#include + +#include "../platform.h" +#include "fs.h" +#include "dirtree.h" + +static inline uint32_t dirtree_hash(const char *s, size_t len) { + // djb hash + uint32_t hash = 5381; + while (len--) hash = ((hash << 5) + hash) ^ *(s++); + return hash & (FS_NUMBUCKETS - 1); +} + +bool fs_dirtree_init(fs_dirtree_t *tree, const size_t entry_len) { + memset(tree, 0, sizeof(*tree)); + + tree->root = malloc(entry_len); + if (!tree->root) return false; + + tree->root->name = ""; // root + tree->root->is_dir = true; + tree->entry_len = entry_len; + + return true; +} + +void fs_dirtree_free(fs_dirtree_t *tree) { + if (!tree) return; + if (tree->root) free(tree->root); + for (int i = 0; i < FS_NUMBUCKETS; ++i) { + fs_dirtree_entry_t *ent, *next; + for (ent = tree->buckets[i]; ent; ent = next) { + next = ent->next_hash; + free(ent); + } + } +} + +static inline fs_dirtree_entry_t *dirtree_add_ancestors(fs_dirtree_t *tree, char *name) { + fs_dirtree_entry_t *ent = tree->root; + + // look for parent directory + char *last_sep = strrchr(name, '/'); + if (!last_sep) return ent; + *last_sep = 0; + ent = fs_dirtree_find(tree, name); + + if (ent) { + *last_sep = '/'; // put the separator back + return ent; // parent directory already in tree + } + + // add the parent directory + ent = fs_dirtree_add(tree, name, true); + *last_sep = '/'; + + return ent; +} + +fs_dirtree_entry_t *fs_dirtree_add(fs_dirtree_t *tree, char *name, const bool is_dir) { + fs_dirtree_entry_t *ent = fs_dirtree_find(tree, name); + if (ent) return ent; + + // add the parent directory into the tree first + fs_dirtree_entry_t *parent = dirtree_add_ancestors(tree, name); + if (!parent) return NULL; + + // we'll plaster the name at the end of the allocated chunk, after the actual entry + const size_t name_len = strlen(name); + const size_t allocsize = tree->entry_len + name_len + 1; + ent = calloc(1, allocsize); + if (!ent) return NULL; + + ent->name = (const char *)ent + tree->entry_len; + strcpy((char *)ent->name, name); + + const uint32_t hash = dirtree_hash(name, name_len); + ent->next_hash = tree->buckets[hash]; + tree->buckets[hash] = ent; + ent->next_sibling = parent->next_child; + ent->is_dir = is_dir; + parent->next_child = ent; + + return ent; +} + +fs_dirtree_entry_t *fs_dirtree_find(fs_dirtree_t *tree, const char *name) { + if (!name) return NULL; + if (!*name) return tree->root; + + const uint32_t hash = dirtree_hash(name, strlen(name)); + + fs_dirtree_entry_t *ent, *prev = NULL; + for (ent = tree->buckets[hash]; ent; ent = ent->next_hash) { + if (!strcmp(ent->name, name)) { + // if this path is not in front of the hash list, move it to the front + // in case of reccurring searches + if (prev) { + prev->next_hash = ent->next_hash; + ent->next_hash = tree->buckets[hash]; + tree->buckets[hash] = ent; + } + return ent; + } + prev = ent; + } + + return NULL; +} + +static fs_walk_result_t dirtree_walk_impl(fs_dirtree_entry_t *ent, walk_fn_t walkfn, void *user, const bool recur) { + fs_walk_result_t res = FS_WALK_SUCCESS;; + ent = ent->next_child; + while (ent && (res == FS_WALK_SUCCESS)) { + if (ent->is_dir) { + if (recur && ent->next_child) + res = dirtree_walk_impl(ent, walkfn, user, recur); + } else if (!walkfn(user, ent->name)) { + res = FS_WALK_INTERRUPTED; + break; + } + ent = ent->next_sibling; + } + return res; +} + +fs_walk_result_t fs_dirtree_walk(void *pack, const char *base, walk_fn_t walkfn, void *user, const bool recur) { + fs_dirtree_t *tree = (fs_dirtree_t *)pack; + + fs_dirtree_entry_t *ent = fs_dirtree_find(tree, base); + if (!ent) return FS_WALK_NOTFOUND; + + return dirtree_walk_impl(ent, walkfn, user, recur); +} diff --git a/src/pc/fs/dirtree.h b/src/pc/fs/dirtree.h new file mode 100644 index 00000000..6793a3a0 --- /dev/null +++ b/src/pc/fs/dirtree.h @@ -0,0 +1,32 @@ +#ifndef _SM64_DIRTREE_H_ +#define _SM64_DIRTREE_H_ + +#include +#include + +#include "fs.h" + +#define FS_NUMBUCKETS 64 + +typedef struct fs_dirtree_entry_s { + const char *name; + bool is_dir; + struct fs_dirtree_entry_s *next_hash, *next_child, *next_sibling; +} fs_dirtree_entry_t; + +typedef struct { + fs_dirtree_entry_t *root; + fs_dirtree_entry_t *buckets[FS_NUMBUCKETS]; + size_t entry_len; +} fs_dirtree_t; + +bool fs_dirtree_init(fs_dirtree_t *tree, const size_t entry_len); +void fs_dirtree_free(fs_dirtree_t *tree); + +fs_dirtree_entry_t *fs_dirtree_add(fs_dirtree_t *tree, char *name, const bool is_dir); +fs_dirtree_entry_t *fs_dirtree_find(fs_dirtree_t *tree, const char *name); + +// the first arg is void* so this could be used in walk() methods of various packtypes +fs_walk_result_t fs_dirtree_walk(void *tree, const char *base, walk_fn_t walkfn, void *user, const bool recur); + +#endif // _SM64_DIRTREE_H_ diff --git a/src/pc/fs/fs.c b/src/pc/fs/fs.c new file mode 100644 index 00000000..d125a60b --- /dev/null +++ b/src/pc/fs/fs.c @@ -0,0 +1,443 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef _WIN32 +#include +#endif + +#include "macros.h" +#include "../platform.h" +#include "fs.h" + +char fs_gamedir[SYS_MAX_PATH] = ""; +char fs_writepath[SYS_MAX_PATH] = ""; + +struct fs_dir_s { + void *pack; + const char *realpath; + fs_packtype_t *packer; + struct fs_dir_s *prev, *next; +}; + +extern fs_packtype_t fs_packtype_dir; +extern fs_packtype_t fs_packtype_zip; + +static fs_packtype_t *fs_packers[] = { + &fs_packtype_dir, + &fs_packtype_zip, +}; + +static fs_dir_t *fs_searchpaths = NULL; + +static inline fs_dir_t *fs_find_dir(const char *realpath) { + for (fs_dir_t *dir = fs_searchpaths; dir; dir = dir->next) + if (!sys_strcasecmp(realpath, dir->realpath)) + return dir; + return NULL; +} + +static int mount_cmp(const void *p1, const void *p2) { + const char *s1 = *(const char **)p1; + const char *s2 = *(const char **)p2; + + // check if one or both of these are basepacks + const int plen = strlen(FS_BASEPACK_PREFIX); + const bool is_base1 = !strncmp(s1, FS_BASEPACK_PREFIX, plen); + const bool is_base2 = !strncmp(s2, FS_BASEPACK_PREFIX, plen); + + // if both are basepacks, compare the postfixes only + if (is_base1 && is_base2) return strcmp(s1 + plen, s2 + plen); + // if only one is a basepack, it goes first + if (is_base1) return -1; + if (is_base2) return 1; + // otherwise strcmp order + return strcmp(s1, s2); +} + +static void scan_path_dir(const char *ropath, const char *dir) { + char dirpath[SYS_MAX_PATH]; + snprintf(dirpath, sizeof(dirpath), "%s/%s", ropath, dir); + + if (!fs_sys_dir_exists(dirpath)) return; + + // since filename order in readdir() isn't guaranteed, collect paths and sort them in strcmp() order + // (but with basepacks first) + fs_pathlist_t plist = fs_sys_enumerate(dirpath, false); + if (plist.paths) { + qsort(plist.paths, plist.numpaths, sizeof(char *), mount_cmp); + for (int i = 0; i < plist.numpaths; ++i) + fs_mount(plist.paths[i]); + fs_pathlist_free(&plist); + } + + // mount the directory itself + fs_mount(dirpath); +} + +bool fs_init(const char **rodirs, const char *gamedir, const char *writepath) { + char buf[SYS_MAX_PATH]; + + // expand and remember the write path + strncpy(fs_writepath, fs_convert_path(buf, sizeof(buf), writepath), sizeof(fs_writepath)); + fs_writepath[sizeof(fs_writepath)-1] = 0; + printf("fs: writepath set to `%s`\n", fs_writepath); + + // remember the game directory name + strncpy(fs_gamedir, gamedir, sizeof(fs_gamedir)); + fs_gamedir[sizeof(fs_gamedir)-1] = 0; + printf("fs: gamedir set to `%s`\n", fs_gamedir); + + // first, scan all possible paths and mount all basedirs in them + for (const char **p = rodirs; p && *p; ++p) + scan_path_dir(fs_convert_path(buf, sizeof(buf), *p), FS_BASEDIR); + scan_path_dir(fs_writepath, FS_BASEDIR); + + // then mount all the gamedirs in them, if the game dir isn't the same + if (sys_strcasecmp(FS_BASEDIR, fs_gamedir)) { + for (const char **p = rodirs; p && *p; ++p) + scan_path_dir(fs_convert_path(buf, sizeof(buf), *p), fs_gamedir); + scan_path_dir(fs_writepath, fs_gamedir); + } + + // as a special case, mount writepath itself + fs_mount(fs_writepath); + + return true; +} + +bool fs_mount(const char *realpath) { + if (fs_find_dir(realpath)) + return false; // already mounted + + const char *ext = sys_file_extension(realpath); + void *pack = NULL; + fs_packtype_t *packer = NULL; + bool tried = false; + for (unsigned int i = 0; i < sizeof(fs_packers) / sizeof(fs_packers[0]); ++i) { + if (ext && sys_strcasecmp(ext, fs_packers[i]->extension)) + continue; + tried = true; + pack = fs_packers[i]->mount(realpath); + if (pack) { + packer = fs_packers[i]; + break; + } + } + + if (!pack || !packer) { + if (tried) + fprintf(stderr, "fs: could not mount '%s'\n", realpath); + return false; + } + + fs_dir_t *dir = calloc(1, sizeof(fs_dir_t)); + if (!dir) { + packer->unmount(pack); + return false; + } + + dir->pack = pack; + dir->realpath = sys_strdup(realpath); + dir->packer = packer; + dir->prev = NULL; + dir->next = fs_searchpaths; + if (fs_searchpaths) + fs_searchpaths->prev = dir; + fs_searchpaths = dir; + + printf("fs: mounting '%s'\n", realpath); + + return true; +} + +bool fs_unmount(const char *realpath) { + fs_dir_t *dir = fs_find_dir(realpath); + if (dir) { + dir->packer->unmount(dir->pack); + free((void *)dir->realpath); + if (dir->prev) dir->prev->next = dir->next; + if (dir->next) dir->next->prev = dir->prev; + if (dir == fs_searchpaths) fs_searchpaths = dir->next; + free(dir); + return true; + } + return false; +} + +fs_walk_result_t fs_walk(const char *base, walk_fn_t walkfn, void *user, const bool recur) { + bool found = false; + for (fs_dir_t *dir = fs_searchpaths; dir; dir = dir->next) { + fs_walk_result_t res = dir->packer->walk(dir->pack, base, walkfn, user, recur); + if (res == FS_WALK_INTERRUPTED) + return res; + if (res != FS_WALK_NOTFOUND) + found = true; + } + return found ? FS_WALK_SUCCESS : FS_WALK_NOTFOUND; +} + +bool fs_is_file(const char *fname) { + for (fs_dir_t *dir = fs_searchpaths; dir; dir = dir->next) { + if (dir->packer->is_file(dir->pack, fname)) + return true; + } + return false; +} + +bool fs_is_dir(const char *fname) { + for (fs_dir_t *dir = fs_searchpaths; dir; dir = dir->next) { + if (dir->packer->is_dir(dir->pack, fname)) + return true; + } + return false; +} + +fs_file_t *fs_open(const char *vpath) { + for (fs_dir_t *dir = fs_searchpaths; dir; dir = dir->next) { + fs_file_t *f = dir->packer->open(dir->pack, vpath); + if (f) { + f->parent = dir; + return f; + } + } + return NULL; +} + +void fs_close(fs_file_t *file) { + if (!file) return; + file->parent->packer->close(file->parent->pack, file); +} + +int64_t fs_read(fs_file_t *file, void *buf, const uint64_t size) { + if (!file) return -1; + return file->parent->packer->read(file->parent->pack, file, buf, size); +} + +bool fs_seek(fs_file_t *file, const int64_t ofs) { + if (!file) return -1; + return file->parent->packer->seek(file->parent->pack, file, ofs); +} + +int64_t fs_tell(fs_file_t *file) { + if (!file) return -1; + return file->parent->packer->tell(file->parent->pack, file); +} + +int64_t fs_size(fs_file_t *file) { + if (!file) return -1; + return file->parent->packer->size(file->parent->pack, file); +} + +bool fs_eof(fs_file_t *file) { + if (!file) return true; + return file->parent->packer->eof(file->parent->pack, file); +} + +struct matchdata_s { + const char *prefix; + size_t prefix_len; + char *dst; + size_t dst_len; +}; + +static bool match_walk(void *user, const char *path) { + struct matchdata_s *data = (struct matchdata_s *)user; + if (!strncmp(path, data->prefix, data->prefix_len)) { + // found our lad, copy path to destination and terminate + strncpy(data->dst, path, data->dst_len); + data->dst[data->dst_len - 1] = 0; + return false; + } + return true; +} + +const char *fs_match(char *outname, const size_t outlen, const char *prefix) { + struct matchdata_s data = { + .prefix = prefix, + .prefix_len = strlen(prefix), + .dst = outname, + .dst_len = outlen, + }; + + if (fs_walk("", match_walk, &data, true) == FS_WALK_INTERRUPTED) + return outname; + + return NULL; +} + +static bool enumerate_walk(void *user, const char *path) { + fs_pathlist_t *data = (fs_pathlist_t *)user; + + if (data->listcap == data->numpaths) { + data->listcap *= 2; + char **newpaths = realloc(data->paths, data->listcap * sizeof(char *)); + if (!newpaths) return false; + data->paths = newpaths; + } + + data->paths[data->numpaths++] = sys_strdup(path); + return true; +} + +fs_pathlist_t fs_enumerate(const char *base, const bool recur) { + char **paths = malloc(sizeof(char *) * 32); + fs_pathlist_t pathlist = { paths, 0, 32 }; + + if (!paths) return pathlist; + + if (fs_walk(base, enumerate_walk, &pathlist, recur) == FS_WALK_INTERRUPTED) + fs_pathlist_free(&pathlist); + + return pathlist; +} + +void fs_pathlist_free(fs_pathlist_t *pathlist) { + if (!pathlist || !pathlist->paths) return; + for (int i = 0; i < pathlist->numpaths; ++i) + free(pathlist->paths[i]); + free(pathlist->paths); + pathlist->paths = NULL; + pathlist->numpaths = 0; +} + +const char *fs_readline(fs_file_t *file, char *dst, uint64_t size) { + int64_t rx = 0; + char chr, *p; + + // assume we got buffered input + for (p = dst, size--; size > 0; size--) { + if ((rx = fs_read(file, &chr, 1)) <= 0) + break; + *p++ = chr; + if (chr == '\n') + break; + } + + *p = 0; + if (p == dst || rx <= 0) + return NULL; + + return p; +} + +void *fs_load_file(const char *vpath, uint64_t *outsize) { + fs_file_t *f = fs_open(vpath); + if (!f) return NULL; + + int64_t size = fs_size(f); + if (size <= 0) { + fs_close(f); + return NULL; + } + + void *buf = malloc(size); + if (!buf) { + fs_close(f); + return NULL; + } + + int64_t rx = fs_read(f, buf, size); + fs_close(f); + + if (rx < size) { + free(buf); + return NULL; + } + + if (outsize) *outsize = size; + return buf; +} + +const char *fs_get_write_path(const char *vpath) { + static char path[SYS_MAX_PATH]; + snprintf(path, sizeof(path), "%s/%s", fs_writepath, vpath); + return path; +} + +const char *fs_convert_path(char *buf, const size_t bufsiz, const char *path) { + // ! means "executable directory" + if (path[0] == '!') { + snprintf(buf, bufsiz, "%s%s", sys_exe_path(), path + 1); + } else { + strncpy(buf, path, bufsiz); + buf[bufsiz-1] = 0; + } + + // change all backslashes + for (char *p = buf; *p; ++p) + if (*p == '\\') *p = '/'; + + return buf; +} + +/* these operate on the real file system */ + +bool fs_sys_file_exists(const char *name) { + struct stat st; + return (stat(name, &st) == 0 && S_ISREG(st.st_mode)); +} + +bool fs_sys_dir_exists(const char *name) { + struct stat st; + return (stat(name, &st) == 0 && S_ISDIR(st.st_mode)); +} + +bool fs_sys_walk(const char *base, walk_fn_t walk, void *user, const bool recur) { + char fullpath[SYS_MAX_PATH]; + DIR *dir; + struct dirent *ent; + + if (!(dir = opendir(base))) { + fprintf(stderr, "fs_dir_walk(): could not open `%s`\n", base); + return false; + } + + bool ret = true; + + while ((ent = readdir(dir)) != NULL) { + if (ent->d_name[0] == 0 || ent->d_name[0] == '.') continue; // skip ./.. and hidden files + snprintf(fullpath, sizeof(fullpath), "%s/%s", base, ent->d_name); + if (fs_sys_dir_exists(fullpath)) { + if (recur) { + if (!fs_sys_walk(fullpath, walk, user, recur)) { + ret = false; + break; + } + } + } else { + if (!walk(user, fullpath)) { + ret = false; + break; + } + } + } + + closedir(dir); + return ret; +} + +fs_pathlist_t fs_sys_enumerate(const char *base, const bool recur) { + char **paths = malloc(sizeof(char *) * 32); + fs_pathlist_t pathlist = { paths, 0, 32 }; + + if (!paths) return pathlist; + + if (!fs_sys_walk(base, enumerate_walk, &pathlist, recur)) + fs_pathlist_free(&pathlist); + + return pathlist; +} + +bool fs_sys_mkdir(const char *name) { + #ifdef _WIN32 + return _mkdir(name) == 0; + #else + return mkdir(name, 0777) == 0; + #endif +} diff --git a/src/pc/fs/fs.h b/src/pc/fs/fs.h new file mode 100644 index 00000000..e479cfbf --- /dev/null +++ b/src/pc/fs/fs.h @@ -0,0 +1,136 @@ +#ifndef _SM64_FS_H_ +#define _SM64_FS_H_ + +#include +#include +#include +#include + +#include "../platform.h" + +// FS_BASEDIR is usually defined in the build script +#ifndef FS_BASEDIR +# define FS_BASEDIR "res" +#endif + +#ifndef FS_BASEPACK_PREFIX +# define FS_BASEPACK_PREFIX "base" +#endif + +#define FS_TEXTUREDIR "gfx" +#define FS_SOUNDDIR "sound" + +extern char fs_gamedir[]; +extern char fs_userdir[]; +extern const char *fs_ropaths[]; + +// receives the full path +// should return `true` if traversal should continue +// first arg is user data +typedef bool (*walk_fn_t)(void *, const char *); + +typedef enum { + FS_WALK_SUCCESS = 0, + FS_WALK_INTERRUPTED = 1, + FS_WALK_NOTFOUND = 2, + FS_WALK_ERROR = 4, +} fs_walk_result_t; + +// opaque searchpath directory type +typedef struct fs_dir_s fs_dir_t; + +// virtual file handle +typedef struct fs_file_s { + void *handle; // opaque packtype-defined data + fs_dir_t *parent; // directory containing this file +} fs_file_t; + +// list of paths; returned by fs_enumerate() +typedef struct { + char **paths; + int numpaths; + int listcap; +} fs_pathlist_t; + +typedef struct { + const char *extension; // file extensions of this pack type + + void *(*mount)(const char *rpath); // open and initialize pack at real path `rpath` + void (*unmount)(void *pack); // free pack + + // walks the specified directory inside this pack, calling walkfn for each file + // returns FS_WALK_SUCCESS if the directory was successfully opened and walk() didn't ever return false + // returns FS_WALK_INTERRUPTED if the traversal started but walk() returned false at some point + // if recur is true, will recurse into subfolders + fs_walk_result_t (*walk)(void *pack, const char *base, walk_fn_t walkfn, void *user, const bool recur); + + bool (*is_file)(void *pack, const char *path); // returns true if `path` exists in this pack and is a file + bool (*is_dir)(void *pack, const char *path); // returns true if `path` exists in this pack and is a directory + + // file I/O functions; paths are virtual + fs_file_t *(*open)(void *pack, const char *path); // opens a virtual file contained in this pack for reading, returns NULL in case of error + int64_t (*read)(void *pack, fs_file_t *file, void *buf, const uint64_t size); // returns -1 in case of error + bool (*seek)(void *pack, fs_file_t *file, const int64_t ofs); // returns true if seek succeeded + int64_t (*tell)(void *pack, fs_file_t *file); // returns -1 in case of error, current virtual file position otherwise + int64_t (*size)(void *pack, fs_file_t *file); // returns -1 in case of error, size of the (uncompressed) file otherwise + bool (*eof)(void *pack, fs_file_t *file); // returns true if there's nothing more to read + void (*close)(void *pack, fs_file_t *file); // closes a virtual file previously opened with ->open() +} fs_packtype_t; + +// takes the supplied NULL-terminated list of read-only directories and mounts all the packs in them, +// then mounts the directories themselves, then mounts all the packs in `gamedir`, then mounts `gamedir` itself, +// then does the same with `userdir` +// initializes the `fs_gamedir` and `fs_userdir` variables +bool fs_init(const char **rodirs, const char *gamedir, const char *userdir); + +// mounts the pack at physical path `realpath` to the root of the filesystem +// packs mounted later take priority over packs mounted earlier +bool fs_mount(const char *realpath); + +// removes the pack at physical path from the virtual filesystem +bool fs_unmount(const char *realpath); + +/* generalized filesystem functions that call matching packtype functions for each pack in the searchpath */ + +// FIXME: this can walk in unorthodox patterns, since it goes through mountpoints linearly +fs_walk_result_t fs_walk(const char *base, walk_fn_t walkfn, void *user, const bool recur); + +// returns a list of files in the `base` directory +fs_pathlist_t fs_enumerate(const char *base, const bool recur); +// call this on a list returned by fs_enumerate() to free it +void fs_pathlist_free(fs_pathlist_t *pathlist); + +bool fs_is_file(const char *fname); +bool fs_is_dir(const char *fname); + +fs_file_t *fs_open(const char *vpath); +void fs_close(fs_file_t *file); +int64_t fs_read(fs_file_t *file, void *buf, const uint64_t size); +const char *fs_readline(fs_file_t *file, char *dst, const uint64_t size); +bool fs_seek(fs_file_t *file, const int64_t ofs); +int64_t fs_tell(fs_file_t *file); +int64_t fs_size(fs_file_t *file); +bool fs_eof(fs_file_t *file); + +void *fs_load_file(const char *vpath, uint64_t *outsize); +const char *fs_readline(fs_file_t *file, char *dst, uint64_t size); + +// tries to find the first file with the filename that starts with `prefix` +// puts full filename into `outname` and returns it or returns NULL if nothing matches +const char *fs_match(char *outname, const size_t outlen, const char *prefix); + +// takes a virtual path and prepends the write path to it +const char *fs_get_write_path(const char *vpath); + +// expands special chars in paths and changes backslashes to forward slashes +const char *fs_convert_path(char *buf, const size_t bufsiz, const char *path); + +/* these operate on the real filesystem and are used by fs_packtype_dir */ + +bool fs_sys_walk(const char *base, walk_fn_t walk, void *user, const bool recur); +fs_pathlist_t fs_sys_enumerate(const char *base, const bool recur); +bool fs_sys_file_exists(const char *name); +bool fs_sys_dir_exists(const char *name); +bool fs_sys_mkdir(const char *name); // creates with 0777 by default + +#endif // _SM64_FS_H_ diff --git a/src/pc/fs/fs_packtype_dir.c b/src/pc/fs/fs_packtype_dir.c new file mode 100644 index 00000000..afd0c97a --- /dev/null +++ b/src/pc/fs/fs_packtype_dir.c @@ -0,0 +1,117 @@ +#include +#include +#include +#include +#include + +#include "macros.h" +#include "../platform.h" +#include "fs.h" + +static void *pack_dir_mount(const char *realpath) { + if (!fs_sys_dir_exists(realpath)) + return NULL; + // the pack is actually just the real folder path + void *pack = (void *)sys_strdup(realpath); + return pack; +} + +static void pack_dir_unmount(void *pack) { + free(pack); +} + +struct walkdata_s { + size_t baselen; + walk_fn_t userwalk; + void *userdata; +}; + +// wrap the actual user walk function to return virtual paths instead of real paths +static bool packdir_walkfn(void *userdata, const char *path) { + struct walkdata_s *walk = (struct walkdata_s *)userdata; + return walk->userwalk(walk->userdata, path + walk->baselen); +} + +static fs_walk_result_t pack_dir_walk(void *pack, const char *base, walk_fn_t walkfn, void *user, const bool recur) { + char path[SYS_MAX_PATH]; + snprintf(path, SYS_MAX_PATH, "%s/%s", (const char *)pack, base); + + if (!fs_sys_dir_exists(path)) + return FS_WALK_NOTFOUND; + + struct walkdata_s walkdata = { strlen((const char *)pack) + 1, walkfn, user }; + return fs_sys_walk(path, packdir_walkfn, &walkdata, recur); +} + +static bool pack_dir_is_file(void *pack, const char *fname) { + char path[SYS_MAX_PATH]; + snprintf(path, sizeof(path), "%s/%s", (const char *)pack, fname); + return fs_sys_dir_exists(path); +} + +static bool pack_dir_is_dir(void *pack, const char *fname) { + char path[SYS_MAX_PATH]; + snprintf(path, sizeof(path), "%s/%s", (const char *)pack, fname); + return fs_sys_file_exists(path); +} + +static fs_file_t *pack_dir_open(void *pack, const char *vpath) { + char path[SYS_MAX_PATH]; + snprintf(path, sizeof(path), "%s/%s", (const char *)pack, vpath); + + FILE *f = fopen(path, "rb"); + if (!f) return NULL; + + fs_file_t *fsfile = malloc(sizeof(fs_file_t)); + if (!fsfile) { fclose(f); return NULL; } + + fsfile->parent = NULL; + fsfile->handle = f; + + return fsfile; +} + +static void pack_dir_close(UNUSED void *pack, fs_file_t *file) { + fclose((FILE *)file->handle); + free(file); +} + +static int64_t pack_dir_read(UNUSED void *pack, fs_file_t *file, void *buf, const uint64_t size) { + return fread(buf, 1, size, (FILE *)file->handle); +} + +static bool pack_dir_seek(UNUSED void *pack, fs_file_t *file, const int64_t ofs) { + return fseek((FILE *)file->handle, ofs, SEEK_SET) == 0; +} + +static int64_t pack_dir_tell(UNUSED void *pack, fs_file_t *file) { + return ftell((FILE *)file->handle); +} + +static int64_t pack_dir_size(UNUSED void *pack, fs_file_t *file) { + int64_t oldofs = ftell((FILE *)file->handle); + fseek((FILE *)file->handle, 0, SEEK_END); + int64_t size = ftell((FILE *)file->handle); + fseek((FILE *)file->handle, oldofs, SEEK_SET); + return size; +} + +static bool pack_dir_eof(UNUSED void *pack, fs_file_t *file) { + return feof((FILE *)file->handle); +} + +fs_packtype_t fs_packtype_dir = { + "", + pack_dir_mount, + pack_dir_unmount, + pack_dir_walk, + pack_dir_is_file, + pack_dir_is_dir, + pack_dir_open, + pack_dir_read, + pack_dir_seek, + pack_dir_tell, + pack_dir_size, + pack_dir_eof, + pack_dir_close, +}; diff --git a/src/pc/fs/fs_packtype_zip.c b/src/pc/fs/fs_packtype_zip.c new file mode 100644 index 00000000..d331cbe1 --- /dev/null +++ b/src/pc/fs/fs_packtype_zip.c @@ -0,0 +1,486 @@ +#include +#include +#include +#include +#include +#include + +#include + +#include "macros.h" +#include "../platform.h" +#include "fs.h" +#include "dirtree.h" + +#define ZIP_BUFSIZE 16384 +#define ZIP_EOCD_BUFSIZE 65578 + +#define ZIP_LFH_SIG 0x04034b50 +#define ZIP_CDH_SIG 0x02014b50 +#define ZIP_EOCD_SIG 0x06054b50 + +typedef struct { + fs_dirtree_t tree; // this should always be first, so this could be used as a dirtree root + const char *realpath; // physical path to the zip file + FILE *zipf; // open zip file handle, if any +} zip_pack_t; + +typedef struct { + fs_dirtree_entry_t tree; // this should always be first, so this could be used as a dirtree entry + uint64_t ofs; // offset to compressed data in zip + uint16_t bits; // general purpose zip flags + uint16_t comptype; // compression method + uint32_t crc; // CRC-32 + uint64_t comp_size; // size of compressed data in zip + uint64_t uncomp_size; // size of decompressed data + uint16_t attr_int; // internal attributes + uint32_t attr_ext; // external attributes + bool ofs_fixed; // if true, `ofs` points to the file data, otherwise to LFH +} zip_entry_t; + +typedef struct { + zip_entry_t *entry; // the dirtree entry of this file + uint32_t comp_pos; // read position in compressed data + uint32_t uncomp_pos; // read position in uncompressed data + uint8_t *buffer; // decompression buffer (if compressed) + z_stream zstream; // tinfl zlib stream + FILE *fstream; // duplicate of zipf of the parent zip file +} zip_file_t; + +static int64_t zip_find_eocd(FILE *f, int64_t *outlen) { + // the EOCD is somewhere in the last 65557 bytes of the file + // get the total file size + fseek(f, 0, SEEK_END); + const int64_t fsize = ftell(f); + if (fsize <= 16) return -1; // probably not a zip + + const int64_t rx = (fsize < ZIP_EOCD_BUFSIZE ? fsize : ZIP_EOCD_BUFSIZE); + uint8_t *buf = malloc(rx); + if (!buf) return -1; + + // read that entire chunk and search for EOCD backwards from the end + fseek(f, fsize - rx, SEEK_SET); + if (fread(buf, rx, 1, f)) { + for (int64_t i = rx - 8; i >= 0; --i) { + if ((buf[i + 0] == 0x50) && (buf[i + 1] == 0x4B) && + (buf[i + 2] == 0x05) && (buf[i + 3] == 0x06)) { + // gotem + free(buf); + if (outlen) *outlen = fsize; + return fsize - rx + i; + } + } + } + + free(buf); + return -1; +} + +static bool zip_parse_eocd(FILE *f, uint64_t *cdir_ofs, uint64_t *data_ofs, uint64_t *count) { + int64_t fsize = 0; + + // EOCD record struct + struct eocd_s { + uint32_t sig; + uint16_t this_disk; + uint16_t cdir_disk; + uint16_t disk_entry_count; + uint16_t total_entry_count; + uint32_t cdir_size; + uint32_t cdir_ofs; + uint16_t comment_len; + // zip comment follows + } __attribute__((__packed__)); + struct eocd_s eocd; + + // find the EOCD and seek to it + int64_t pos = zip_find_eocd(f, &fsize); + if (pos < 0) return false; + fseek(f, pos, SEEK_SET); + + // read it + if (!fread(&eocd, sizeof(eocd), 1, f)) return false; + + // double check the sig + if (LE_TO_HOST32(eocd.sig) != ZIP_EOCD_SIG) return false; + + // disks should all be 0 + if (eocd.this_disk || eocd.cdir_disk) return false; + + // total entry count should be the same as disk entry count + if (eocd.disk_entry_count != eocd.total_entry_count) return false; + + *count = LE_TO_HOST16(eocd.total_entry_count); + *cdir_ofs = LE_TO_HOST32(eocd.cdir_ofs); + eocd.cdir_size = LE_TO_HOST32(eocd.cdir_size); + + // end of central dir can't be before central dir + if ((uint64_t)pos < *cdir_ofs + eocd.cdir_size) return false; + + *data_ofs = (uint64_t)(pos - (*cdir_ofs + eocd.cdir_size)); + *cdir_ofs += *data_ofs; + + // make sure end of comment matches end of file + eocd.comment_len = LE_TO_HOST16(eocd.comment_len); + return ((pos + 22 + eocd.comment_len) == fsize); +} + +static bool zip_fixup_offset(zip_file_t *zipfile) { + // LFH record struct + struct lfh_s { + uint32_t sig; + uint16_t version_required; + uint16_t bits; + uint16_t comptype; + uint16_t mod_time; + uint16_t mod_date; + uint32_t crc; + uint32_t comp_size; + uint32_t uncomp_size; + uint16_t fname_len; + uint16_t extra_len; + // file name, extra field and data follow + } __attribute__((__packed__)); + + struct lfh_s lfh; + + zip_entry_t *ent = zipfile->entry; + + fseek(zipfile->fstream, ent->ofs, SEEK_SET); + if (!fread(&lfh, sizeof(lfh), 1, zipfile->fstream)) return false; + + // we only need these two + lfh.fname_len = LE_TO_HOST16(lfh.fname_len); + lfh.extra_len = LE_TO_HOST16(lfh.extra_len); + + // ofs will now point to actual data + ent->ofs += sizeof(lfh) + lfh.fname_len + lfh.extra_len; + ent->ofs_fixed = true; // only need to do this once + + return true; +} + +static zip_entry_t *zip_load_entry(FILE *f, fs_dirtree_t *tree, const uint64_t data_ofs) { + // CDH record struct + struct cdh_s { + uint32_t sig; + uint16_t version_used; + uint16_t version_required; + uint16_t bits; + uint16_t comptype; + uint16_t mod_time; + uint16_t mod_date; + uint32_t crc; + uint32_t comp_size; + uint32_t uncomp_size; + uint16_t fname_len; + uint16_t extra_len; + uint16_t comment_len; + uint16_t start_disk; + uint16_t attr_int; + uint32_t attr_ext; + uint32_t lfh_ofs; + // file name, extra field and comment follow + } __attribute__((__packed__)); + + struct cdh_s cdh; + zip_entry_t zipent; + + memset(&zipent, 0, sizeof(zipent)); + + if (!fread(&cdh, sizeof(cdh), 1, f)) return NULL; + + // check cdir entry header signature + if (LE_TO_HOST32(cdh.sig) != ZIP_CDH_SIG) return NULL; + + // byteswap and copy some important fields + zipent.bits = LE_TO_HOST16(cdh.bits); + zipent.comptype = LE_TO_HOST16(cdh.comptype); + zipent.crc = LE_TO_HOST32(cdh.crc); + zipent.comp_size = LE_TO_HOST32(cdh.comp_size); + zipent.uncomp_size = LE_TO_HOST32(cdh.uncomp_size); + zipent.ofs = LE_TO_HOST32(cdh.lfh_ofs); + zipent.attr_int = LE_TO_HOST16(cdh.attr_int); + zipent.attr_ext = LE_TO_HOST32(cdh.attr_ext); + cdh.fname_len = LE_TO_HOST16(cdh.fname_len); + cdh.comment_len = LE_TO_HOST16(cdh.comment_len); + cdh.extra_len = LE_TO_HOST16(cdh.extra_len); + + // read the name + char *name = calloc(1, cdh.fname_len + 1); + if (!name) return NULL; + if (!fread(name, cdh.fname_len, 1, f)) { free(name); return NULL; } + + // this is a directory if the name ends in a path separator + bool is_dir = false; + if (name[cdh.fname_len - 1] == '/') { + is_dir = true; + name[cdh.fname_len - 1] = 0; + } + name[cdh.fname_len] = 0; + + // add to directory tree + zip_entry_t *retent = (zip_entry_t *)fs_dirtree_add(tree, name, is_dir); + free(name); + if (!retent) return NULL; + + // copy the data we read into the new entry + zipent.tree = retent->tree; + memcpy(retent, &zipent, sizeof(zipent)); + + // this points to the LFH now; will be fixed up on file open + // while the CDH includes an "extra field length" field, it's usually different + retent->ofs += data_ofs; + + // skip to the next CDH + fseek(f, cdh.extra_len + cdh.comment_len, SEEK_CUR); + + return retent; +} + +static inline bool zip_load_entries(FILE *f, fs_dirtree_t *tree, const uint64_t cdir_ofs, const uint64_t data_ofs, const uint64_t count) { + fseek(f, cdir_ofs, SEEK_SET); + for (uint64_t i = 0; i < count; ++i) { + if (!zip_load_entry(f, tree, data_ofs)) + return false; + } + return true; +} + +static inline bool is_zip(FILE *f) { + uint32_t sig = 0; + if (fread(&sig, sizeof(sig), 1, f)) { + // the first LFH might be at the start of the zip + if (LE_TO_HOST32(sig) == ZIP_LFH_SIG) + return true; + // no signature, might still be a zip because fuck you + // the only way now is to try and find the end of central directory + return zip_find_eocd(f, NULL) >= 0; + } + return false; +} + +static void *pack_zip_mount(const char *realpath) { + uint64_t cdir_ofs, data_ofs, count; + zip_pack_t *pack = NULL; + FILE *f = NULL; + + f = fopen(realpath, "rb"); + if (!f) goto _fail; + + if (!is_zip(f)) goto _fail; + + pack = calloc(1, sizeof(zip_pack_t)); + if (!pack) goto _fail; + + if (!zip_parse_eocd(f, &cdir_ofs, &data_ofs, &count)) + goto _fail; + + if (!fs_dirtree_init(&pack->tree, sizeof(zip_entry_t))) + goto _fail; + + if (!zip_load_entries(f, &pack->tree, cdir_ofs, data_ofs, count)) + goto _fail; + + pack->realpath = sys_strdup(realpath); + pack->zipf = f; + + return pack; + +_fail: + if (f) fclose(f); + if (pack) free(pack); + return NULL; +} + +static void pack_zip_unmount(void *pack) { + zip_pack_t *zip = (zip_pack_t *)pack; + fs_dirtree_free(&zip->tree); + if (zip->realpath) free((void *)zip->realpath); + if (zip->zipf) fclose(zip->zipf); + free(zip); +} + +static bool pack_zip_is_file(void *pack, const char *fname) { + zip_entry_t *ent = (zip_entry_t *)fs_dirtree_find((fs_dirtree_t *)pack, fname); + return ent && !ent->tree.is_dir; +} + +static bool pack_zip_is_dir(void *pack, const char *fname) { + zip_entry_t *ent = (zip_entry_t *)fs_dirtree_find((fs_dirtree_t *)pack, fname); + return ent && ent->tree.is_dir; +} + +static inline void pack_zip_close_zipfile(zip_file_t *zipfile) { + if (zipfile->buffer) { + inflateEnd(&zipfile->zstream); + free(zipfile->buffer); + } + if (zipfile->fstream) fclose(zipfile->fstream); + free(zipfile); +} + +static fs_file_t *pack_zip_open(void *pack, const char *vpath) { + fs_file_t *fsfile = NULL; + zip_file_t *zipfile = NULL; + zip_pack_t *zip = (zip_pack_t *)pack; + zip_entry_t *ent = (zip_entry_t *)fs_dirtree_find((fs_dirtree_t *)zip, vpath); + if (!ent || ent->tree.is_dir) goto _fail; // we're expecting a fucking file here + + zipfile = calloc(1, sizeof(zip_file_t)); + if (!zipfile) goto _fail; + zipfile->entry = ent; + + // obtain an additional file descriptor + // fdopen(dup(fileno())) is not very portable and might not create separate state + zipfile->fstream = fopen(zip->realpath, "rb"); + if (!zipfile->fstream) goto _fail; + + // make ent->ofs point to the actual file data if it doesn't already + if (!ent->ofs_fixed) + if (!zip_fixup_offset(zipfile)) + goto _fail; // this shouldn't generally happen but oh well + + // if there's compression, assume it's zlib + if (ent->comptype != 0) { + zipfile->buffer = malloc(ZIP_BUFSIZE); + if (!zipfile->buffer) + goto _fail; + if (inflateInit2(&zipfile->zstream, -MAX_WBITS) != Z_OK) + goto _fail; + } + + fsfile = malloc(sizeof(fs_file_t)); + if (!fsfile) goto _fail; + fsfile->handle = zipfile; + fsfile->parent = NULL; + + // point to the start of the file data + fseek(zipfile->fstream, ent->ofs, SEEK_SET); + + return fsfile; + +_fail: + if (zipfile) pack_zip_close_zipfile(zipfile); + if (fsfile) free(fsfile); + return NULL; +} + +static void pack_zip_close(UNUSED void *pack, fs_file_t *file) { + if (!file) return; + + zip_file_t *zipfile = (zip_file_t *)file->handle; + if (zipfile) pack_zip_close_zipfile(zipfile); + + free(file); +} + +static int64_t pack_zip_read(UNUSED void *pack, fs_file_t *file, void *buf, const uint64_t size) { + zip_file_t *zipfile = (zip_file_t *)file->handle; + zip_entry_t *ent = zipfile->entry; + + int64_t avail = ent->uncomp_size - zipfile->uncomp_pos; + int64_t max_read = ((int64_t)size > avail) ? avail : (int64_t)size; + int64_t rx = 0; + int err = 0; + + if (max_read == 0) return 0; + + if (ent->comptype == 0) { + // no compression, just read + rx = fread(buf, 1, size, zipfile->fstream); + } else { + zipfile->zstream.next_out = buf; + zipfile->zstream.avail_out = (unsigned int)max_read; + while (rx < max_read) { + const uint32_t before = (uint32_t)zipfile->zstream.total_out; + // check if we ran out of compressed bytes and read more if we did + if (zipfile->zstream.avail_in == 0) { + int32_t comp_rx = ent->comp_size - zipfile->comp_pos; + if (comp_rx > 0) { + if (comp_rx > ZIP_BUFSIZE) comp_rx = ZIP_BUFSIZE; + comp_rx = fread(zipfile->buffer, 1, comp_rx, zipfile->fstream); + if (comp_rx == 0) break; + zipfile->comp_pos += (uint32_t)comp_rx; + zipfile->zstream.next_in = zipfile->buffer; + zipfile->zstream.avail_in = (unsigned int)comp_rx; + } + } + // inflate + err = inflate(&zipfile->zstream, Z_SYNC_FLUSH); + rx += zipfile->zstream.total_out - before; + if (err != Z_OK) break; + } + } + + zipfile->uncomp_pos += rx; + return rx; +} + +static bool pack_zip_seek(UNUSED void *pack, fs_file_t *file, const int64_t ofs) { + zip_file_t *zipfile = (zip_file_t *)file->handle; + zip_entry_t *ent = zipfile->entry; + uint8_t buf[512]; + + if (ofs > (int64_t)ent->uncomp_size) return false; + + if (ent->comptype == 0) { + if (fseek(zipfile->fstream, ofs + ent->ofs, SEEK_SET) == 0) + zipfile->uncomp_pos = ofs; + } else { + // if seeking backwards, gotta redecode the stream from the start until that point + // so we make a copy of the zstream and clear it with a new one + if (ofs < zipfile->uncomp_pos) { + z_stream zstream; + memset(&zstream, 0, sizeof(zstream)); + if (inflateInit2(&zstream, -MAX_WBITS) != Z_OK) + return false; + // reset the underlying file handle back to the start + if (fseek(zipfile->fstream, ent->ofs, SEEK_SET) != 0) + return false; + // free and replace the old one + inflateEnd(&zipfile->zstream); + memcpy(&zipfile->zstream, &zstream, sizeof(zstream)); + zipfile->uncomp_pos = zipfile->comp_pos = 0; + } + // continue decoding the stream until we hit the new offset + while (zipfile->uncomp_pos != ofs) { + uint32_t max_read = (uint32_t)(ofs - zipfile->uncomp_pos); + if (max_read > sizeof(buf)) max_read = sizeof(buf); + if (pack_zip_read(pack, file, buf, max_read) != max_read) + return false; + } + } + + return true; +} + +static int64_t pack_zip_tell(UNUSED void *pack, fs_file_t *file) { + return ((zip_file_t *)file->handle)->uncomp_pos; +} + +static int64_t pack_zip_size(UNUSED void *pack, fs_file_t *file) { + zip_file_t *zipfile = (zip_file_t *)file->handle; + return zipfile->entry->uncomp_size; +} + +static bool pack_zip_eof(UNUSED void *pack, fs_file_t *file) { + zip_file_t *zipfile = (zip_file_t *)file->handle; + return zipfile->uncomp_pos >= zipfile->entry->uncomp_size; +} + +fs_packtype_t fs_packtype_zip = { + "zip", + pack_zip_mount, + pack_zip_unmount, + fs_dirtree_walk, + pack_zip_is_file, + pack_zip_is_dir, + pack_zip_open, + pack_zip_read, + pack_zip_seek, + pack_zip_tell, + pack_zip_size, + pack_zip_eof, + pack_zip_close, +}; diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 7909d341..a0c27bed 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -317,7 +317,7 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad fprintf(stderr, "Vertex shader compilation failed\n"); glGetShaderInfoLog(vertex_shader, max_length, &max_length, &error_log[0]); fprintf(stderr, "%s\n", &error_log[0]); - abort(); + sys_fatal("vertex shader compilation failed (see terminal)"); } GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); @@ -331,7 +331,7 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad fprintf(stderr, "Fragment shader compilation failed\n"); glGetShaderInfoLog(fragment_shader, max_length, &max_length, &error_log[0]); fprintf(stderr, "%s\n", &error_log[0]); - abort(); + sys_fatal("fragment shader compilation failed (see terminal)"); } GLuint shader_program = glCreateProgram(); diff --git a/src/pc/gfx/gfx_opengl_legacy.c b/src/pc/gfx/gfx_opengl_legacy.c index 21dc4a00..6ff04a78 100644 --- a/src/pc/gfx/gfx_opengl_legacy.c +++ b/src/pc/gfx/gfx_opengl_legacy.c @@ -516,17 +516,16 @@ static void gfx_opengl_init(void) { int vmajor, vminor; bool is_es = false; gl_get_version(&vmajor, &vminor, &is_es); - if (vmajor < 2 && vminor < 2 && !is_es) { - fprintf(stderr, "OpenGL 1.2+ is required. Reported version: %s%d.%d\n", is_es ? "ES" : "", vmajor, vminor); - abort(); - } + if (vmajor < 2 && vminor < 2 && !is_es) + sys_fatal("OpenGL 1.2+ is required. Reported version: %s%d.%d\n", is_es ? "ES" : "", vmajor, vminor); // check extensions that we need const bool supported = gl_check_ext("GL_ARB_multitexture") && gl_check_ext("GL_ARB_texture_env_combine"); - if (!supported) abort(); + if (!supported) + sys_fatal("required GL extensions are not supported"); gl_adv_fog = false; diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 1e86ec5a..8e8a7e51 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -26,6 +26,7 @@ #include "../platform.h" #include "../configfile.h" +#include "../fs/fs.h" #define SUPPORT_CHECK(x) assert(x) @@ -494,6 +495,28 @@ static void import_texture_ci8(int tile) { #else // EXTERNAL_DATA +static inline void load_texture(const char *fullpath) { + int w, h; + u64 imgsize = 0; + u8 *imgdata = fs_load_file(fullpath, &imgsize); + if (!imgdata) { + fprintf(stderr, "could not open texture: `%s`\n", fullpath); + return; + } + + // TODO: implement stbi_callbacks or some shit instead of loading the whole texture + u8 *data = stbi_load_from_memory(imgdata, imgsize, &w, &h, NULL, 4); + free(imgdata); + if (!data) { + fprintf(stderr, "could not load texture: `%s`\n", fullpath); + return; + } + + gfx_rapi->upload_texture(data, w, h); + stbi_image_free(data); // don't need this anymore +} + + // this is taken straight from n64graphics static bool texname_to_texformat(const char *name, u8 *fmt, u8 *siz) { static const struct { @@ -531,7 +554,7 @@ static bool texname_to_texformat(const char *name, u8 *fmt, u8 *siz) { // calls import_texture() on every texture in the res folder // we can get the format and size from the texture files // and then cache them using gfx_texture_cache_lookup -static bool preload_texture(const char *path) { +static bool preload_texture(void *user, const char *path) { // strip off the extension char texname[SYS_MAX_PATH]; strncpy(texname, path, sizeof(texname)); @@ -546,55 +569,20 @@ static bool preload_texture(const char *path) { return true; // just skip it, might be a stray skybox or something } - // strip off the data path - const char *datapath = sys_data_path(); - const unsigned int datalen = strlen(datapath); - const char *actualname = (!strncmp(texname, datapath, datalen)) ? - texname + datalen + 1 : texname; - // skip any separators - while (*actualname == '/' || *actualname == '\\') ++actualname; + char *actualname = texname; + // strip off the prefix // TODO: make a fs_ function for this shit + if (!strncmp(FS_TEXTUREDIR "/", actualname, 4)) actualname += 4; // this will be stored in the hashtable, so make a copy actualname = sys_strdup(actualname); assert(actualname); struct TextureHashmapNode *n; - if (!gfx_texture_cache_lookup(0, &n, actualname, fmt, siz)) { - // new texture, load it - int w, h; - u8 *data = stbi_load(path, &w, &h, NULL, 4); - if (!data) { - fprintf(stderr, "could not load texture: `%s`\n", path); - return false; - } - // upload it - gfx_rapi->upload_texture(data, w, h); - stbi_image_free(data); - } + if (!gfx_texture_cache_lookup(0, &n, actualname, fmt, siz)) + load_texture(path); // new texture, load it return true; } -static inline void load_texture(const char *name) { - static char fpath[SYS_MAX_PATH]; - int w, h; - const char *texname = name; - - if (!texname[0]) { - fprintf(stderr, "empty texture name at %p\n", texname); - return; - } - - snprintf(fpath, sizeof(fpath), "%s/%s.png", sys_data_path(), texname); - u8 *data = stbi_load(fpath, &w, &h, NULL, 4); - if (!data) { - fprintf(stderr, "could not load texture: `%s`\n", fpath); - return; - } - - gfx_rapi->upload_texture(data, w, h); - stbi_image_free(data); // don't need this anymore -} - #endif // EXTERNAL_DATA static void import_texture(int tile) { @@ -614,7 +602,9 @@ static void import_texture(int tile) { #ifdef EXTERNAL_DATA // the "texture data" is actually a C string with the path to our texture in it // load it from an external image in our data path - load_texture((const char*)rdp.loaded_texture[tile].addr); + char texname[SYS_MAX_PATH]; + snprintf(texname, sizeof(texname), FS_TEXTUREDIR "/%s.png", (const char*)rdp.loaded_texture[tile].addr); + load_texture(texname); #else // the texture data is actual texture data int t0 = get_time(); @@ -625,7 +615,7 @@ static void import_texture(int tile) { else if (siz == G_IM_SIZ_16b) { import_texture_rgba16(tile); } else { - abort(); + sys_fatal("unsupported RGBA texture size: %u", siz); } } else if (fmt == G_IM_FMT_IA) { if (siz == G_IM_SIZ_4b) { @@ -635,7 +625,7 @@ static void import_texture(int tile) { } else if (siz == G_IM_SIZ_16b) { import_texture_ia16(tile); } else { - abort(); + sys_fatal("unsupported IA texture size: %u", siz); } } else if (fmt == G_IM_FMT_CI) { if (siz == G_IM_SIZ_4b) { @@ -643,7 +633,7 @@ static void import_texture(int tile) { } else if (siz == G_IM_SIZ_8b) { import_texture_ci8(tile); } else { - abort(); + sys_fatal("unsupported CI texture size: %u", siz); } } else if (fmt == G_IM_FMT_I) { if (siz == G_IM_SIZ_4b) { @@ -651,10 +641,10 @@ static void import_texture(int tile) { } else if (siz == G_IM_SIZ_8b) { import_texture_i8(tile); } else { - abort(); + sys_fatal("unsupported I texture size: %u", siz); } } else { - abort(); + sys_fatal("unsupported texture format: %u", fmt); } int t1 = get_time(); //printf("Time diff: %d\n", t1 - t0); @@ -1764,8 +1754,8 @@ void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi) { #ifdef EXTERNAL_DATA // preload all textures if needed if (configPrecacheRes) { - printf("Precaching textures from `%s`\n", sys_data_path()); - sys_dir_walk(sys_data_path(), preload_texture, true); + printf("Precaching textures\n"); + fs_walk(FS_TEXTUREDIR, preload_texture, NULL, true); } #endif } diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index da548635..3a2d6613 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -22,6 +22,7 @@ #include "cliopts.h" #include "configfile.h" #include "controller/controller_api.h" +#include "fs/fs.h" #include "game/main.h" #include "game/thread6.h" @@ -153,6 +154,8 @@ void main_func(void) { main_pool_init(pool, pool + sizeof(pool) / sizeof(pool[0])); gEffectsMemoryPool = mem_pool_init(0x4000, MEMORY_POOL_LEFT); + fs_init(sys_ropaths, FS_BASEDIR, sys_user_path()); + configfile_load(configfile_name()); wm_api = &gfx_sdl; diff --git a/src/pc/platform.c b/src/pc/platform.c index 80c0eb74..fb4b08ec 100644 --- a/src/pc/platform.c +++ b/src/pc/platform.c @@ -1,17 +1,26 @@ #include #include #include +#include #include -#include -#include -#include -#include #include -#ifdef _WIN32 -#include -#endif #include "cliopts.h" +#include "fs/fs.h" + +/* NULL terminated list of platform specific read-only data paths */ +/* priority is top first */ +const char *sys_ropaths[] = { + ".", // working directory + "!", // executable directory +#if defined(__linux__) || defined(__unix__) + // some common UNIX directories for read only stuff + "/usr/local/share/sm64pc", + "/usr/share/sm64pc", + "/opt/sm64pc", +#endif + NULL, +}; /* these are not available on some platforms, so might as well */ @@ -40,81 +49,24 @@ int sys_strcasecmp(const char *s1, const char *s2) { return result; } -/* file system stuff */ - -bool sys_file_exists(const char *name) { - struct stat st; - return (stat(name, &st) == 0 && S_ISREG(st.st_mode)); +const char *sys_file_extension(const char *fname) { + const char *dot = strrchr(fname, '.'); + if (!dot || !dot[1]) return NULL; + return dot + 1; } -bool sys_dir_exists(const char *name) { - struct stat st; - return (stat(name, &st) == 0 && S_ISDIR(st.st_mode)); -} +/* this calls a platform-specific impl function after forming the error message */ -bool sys_dir_walk(const char *base, walk_fn_t walk, const bool recur) { - char fullpath[SYS_MAX_PATH]; - DIR *dir; - struct dirent *ent; +static void sys_fatal_impl(const char *msg) __attribute__ ((noreturn)); - if (!(dir = opendir(base))) { - fprintf(stderr, "sys_dir_walk(): could not open `%s`\n", base); - return false; - } - - bool ret = true; - - while ((ent = readdir(dir)) != NULL) { - if (ent->d_name[0] == 0 || ent->d_name[0] == '.') continue; // skip ./.. and hidden files - snprintf(fullpath, sizeof(fullpath), "%s/%s", base, ent->d_name); - if (sys_dir_exists(fullpath)) { - if (recur) { - if (!sys_dir_walk(fullpath, walk, recur)) { - ret = false; - break; - } - } - } else { - if (!walk(fullpath)) { - ret = false; - break; - } - } - } - - closedir(dir); - return ret; -} - -void *sys_load_res(const char *name) { - char path[SYS_MAX_PATH] = { 0 }; - snprintf(path, sizeof(path), "%s/%s", sys_data_path(), name); - - FILE *f = fopen(path, "rb"); - if (!f) return NULL; - - fseek(f, 0, SEEK_END); - size_t size = ftell(f); - fseek(f, 0, SEEK_SET); - - void *buf = malloc(size); - if (!buf) { - fclose(f); - return NULL; - } - - fread(buf, 1, size, f); - fclose(f); - - return buf; -} - -bool sys_mkdir(const char *name) { - #ifdef _WIN32 - return _mkdir(name) == 0; - #else - return mkdir(name, 0777) == 0; - #endif +void sys_fatal(const char *fmt, ...) { + static char msg[2048]; + va_list args; + va_start(args, fmt); + vsnprintf(msg, sizeof(msg), fmt, args); + va_end(args); + fflush(stdout); // push all crap out + sys_fatal_impl(msg); } #if USE_SDL @@ -122,125 +74,50 @@ bool sys_mkdir(const char *name) { // we can just ask SDL for most of this shit if we have it #include -const char *sys_data_path(void) { +const char *sys_user_path(void) { static char path[SYS_MAX_PATH] = { 0 }; - - if (!path[0]) { - // prefer the override, if it is set - // "!" expands to executable path - if (gCLIOpts.DataPath[0]) { - if (gCLIOpts.DataPath[0] == '!') - snprintf(path, sizeof(path), "%s%s", sys_exe_path(), gCLIOpts.DataPath + 1); - else - snprintf(path, sizeof(path), "%s", gCLIOpts.DataPath); - if (sys_dir_exists(path)) return path; - printf("Warning: Specified data path ('%s') doesn't exist\n", path); - } - - // then the executable directory - snprintf(path, sizeof(path), "%s/" DATADIR, sys_exe_path()); - if (sys_dir_exists(path)) return path; - - // then the save path - snprintf(path, sizeof(path), "%s/" DATADIR, sys_save_path()); - if (sys_dir_exists(path)) return path; - - #if defined(__linux__) || defined(__unix__) - // on Linux/BSD try some common paths for read-only data - const char *try[] = { - "/usr/local/share/sm64pc/" DATADIR, - "/usr/share/sm64pc/" DATADIR, - "/opt/sm64pc/" DATADIR, - }; - for (unsigned i = 0; i < sizeof(try) / sizeof(try[0]); ++i) { - if (sys_dir_exists(try[i])) { - strcpy(path, try[i]); - return path; - } - } - #endif - - // hope for the best - strcpy(path, "./" DATADIR); + // get it from SDL + char *sdlpath = SDL_GetPrefPath("", "sm64pc"); + if (sdlpath) { + const unsigned int len = strlen(sdlpath); + strncpy(path, sdlpath, sizeof(path)); + path[sizeof(path)-1] = 0; + SDL_free(sdlpath); + if (path[len-1] == '/' || path[len-1] == '\\') + path[len-1] = 0; // strip the trailing separator + if (!fs_sys_dir_exists(path) && !fs_sys_mkdir(path)) + path[0] = 0; } - - return path; -} - -const char *sys_save_path(void) { - static char path[SYS_MAX_PATH] = { 0 }; - - if (!path[0]) { - // if the override is set, use that - // "!" expands to executable path - if (gCLIOpts.SavePath[0]) { - if (gCLIOpts.SavePath[0] == '!') - snprintf(path, sizeof(path), "%s%s", sys_exe_path(), gCLIOpts.SavePath + 1); - else - snprintf(path, sizeof(path), "%s", gCLIOpts.SavePath); - if (!sys_dir_exists(path) && !sys_mkdir(path)) { - printf("Warning: Specified save path ('%s') doesn't exist and can't be created\n", path); - path[0] = 0; // doesn't exist and no write access - } - } - - // didn't work? get it from SDL - if (!path[0]) { - char *sdlpath = SDL_GetPrefPath("", "sm64pc"); - if (sdlpath) { - const unsigned int len = strlen(sdlpath); - strncpy(path, sdlpath, sizeof(path)); - path[sizeof(path)-1] = 0; - SDL_free(sdlpath); - if (path[len-1] == '/' || path[len-1] == '\\') - path[len-1] = 0; // strip the trailing separator - if (!sys_dir_exists(path) && !sys_mkdir(path)) - path[0] = 0; - } - } - - // if all else fails, just store near the EXE - if (!path[0]) - strcpy(path, sys_exe_path()); - - printf("Save path set to '%s'\n", path); - } - return path; } const char *sys_exe_path(void) { static char path[SYS_MAX_PATH] = { 0 }; - - if (!path[0]) { - char *sdlpath = SDL_GetBasePath(); - if (sdlpath) { - // use the SDL path if it exists - const unsigned int len = strlen(sdlpath); - strncpy(path, sdlpath, sizeof(path)); - path[sizeof(path)-1] = 0; - SDL_free(sdlpath); - if (path[len-1] == '/' || path[len-1] == '\\') - path[len-1] = 0; // strip the trailing separator - } else { - // hope for the best - strcpy(path, "."); - } - printf("Executable path set to '%s'\n", path); + char *sdlpath = SDL_GetBasePath(); + if (sdlpath && sdlpath[0]) { + // use the SDL path if it exists + const unsigned int len = strlen(sdlpath); + strncpy(path, sdlpath, sizeof(path)); + path[sizeof(path)-1] = 0; + SDL_free(sdlpath); + if (path[len-1] == '/' || path[len-1] == '\\') + path[len-1] = 0; // strip the trailing separator } - return path; } +static void sys_fatal_impl(const char *msg) { + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR , "Fatal error", msg, NULL); + fprintf(stderr, "FATAL ERROR:\n%s\n", msg); + fflush(stderr); + exit(1); +} + #else #warning "You might want to implement these functions for your platform" -const char *sys_data_path(void) { - return "."; -} - -const char *sys_save_path(void) { +const char *sys_user_path(void) { return "."; } @@ -248,4 +125,10 @@ const char *sys_exe_path(void) { return "."; } +static void sys_fatal_impl(const char *msg) { + fprintf(stderr, "FATAL ERROR:\n%s\n", msg); + fflush(stderr); + exit(1); +} + #endif // platform switch diff --git a/src/pc/platform.h b/src/pc/platform.h index 30b33dcc..53b2ad16 100644 --- a/src/pc/platform.h +++ b/src/pc/platform.h @@ -7,29 +7,22 @@ /* Platform-specific functions and whatnot */ -#define DATADIR "res" #define SYS_MAX_PATH 1024 // FIXME: define this on different platforms +// NULL terminated list of platform specific read-only data paths +extern const char *sys_ropaths[]; + // crossplatform impls of misc stuff char *sys_strdup(const char *src); char *sys_strlwr(char *src); int sys_strcasecmp(const char *s1, const char *s2); -// filesystem stuff -bool sys_mkdir(const char *name); // creates with 0777 by default -bool sys_file_exists(const char *name); -bool sys_dir_exists(const char *name); -void *sys_load_res(const char *name); - -// receives the full path -// should return `true` if traversal should continue -typedef bool (*walk_fn_t)(const char *); -// returns `true` if the directory was successfully opened and walk() didn't ever return false -bool sys_dir_walk(const char *base, walk_fn_t walk, const bool recur); - // path stuff -const char *sys_data_path(void); -const char *sys_save_path(void); +const char *sys_user_path(void); const char *sys_exe_path(void); +const char *sys_file_extension(const char *fname); + +// shows an error message in some way and terminates the game +void sys_fatal(const char *fmt, ...) __attribute__ ((noreturn)); #endif // _SM64_PLATFORM_H_ diff --git a/src/pc/ultra_reimplementation.c b/src/pc/ultra_reimplementation.c index c28894f6..65e5f01b 100644 --- a/src/pc/ultra_reimplementation.c +++ b/src/pc/ultra_reimplementation.c @@ -3,6 +3,9 @@ #include "lib/src/libultra_internal.h" #include "macros.h" #include "platform.h" +#include "fs/fs.h" + +#define SAVE_FILENAME "sm64_save_file.bin" #ifdef TARGET_WEB #include @@ -120,17 +123,15 @@ s32 osEepromLongRead(UNUSED OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) ret = 0; } #else - char save_path[SYS_MAX_PATH] = { 0 }; - snprintf(save_path, sizeof(save_path), "%s/sm64_save_file.bin", sys_save_path()); - FILE *fp = fopen(save_path, "rb"); + fs_file_t *fp = fs_open(SAVE_FILENAME); if (fp == NULL) { return -1; } - if (fread(content, 1, 512, fp) == 512) { + if (fs_read(fp, content, 512) == 512) { memcpy(buffer, content + address * 8, nbytes); ret = 0; } - fclose(fp); + fs_close(fp); #endif return ret; } @@ -152,9 +153,7 @@ s32 osEepromLongWrite(UNUSED OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes }, content); s32 ret = 0; #else - char save_path[SYS_MAX_PATH] = { 0 }; - snprintf(save_path, sizeof(save_path), "%s/sm64_save_file.bin", sys_save_path()); - FILE *fp = fopen(save_path, "wb"); + FILE *fp = fopen(fs_get_write_path(SAVE_FILENAME), "wb"); if (fp == NULL) { return -1; } diff --git a/tools/mkzip.py b/tools/mkzip.py new file mode 100644 index 00000000..5481bc59 --- /dev/null +++ b/tools/mkzip.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 + +import sys +import os +import zipfile + +if len(sys.argv) < 3: + print('usage: mkzip ') + sys.exit(1) + +lst = [] +with open(sys.argv[1], 'r') as f: + for line in f: + line = line.strip() + if line == '' or line[0] == '#': + continue + tok = line.split() + lst.append((tok[0], tok[1])) + +with zipfile.ZipFile(sys.argv[2], 'w', allowZip64=False) as zipf: + for (fname, aname) in lst: + zipf.write(fname, arcname=aname) From b9c94ad57dc2883d4ecb5367ea9cefdb65c8a300 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 7 Jun 2020 22:00:23 +0300 Subject: [PATCH 102/166] fix text saves --- src/game/text_save.inc.h | 9 +++++---- src/pc/fs/fs.h | 3 +-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/game/text_save.inc.h b/src/game/text_save.inc.h index 1325f0a5..a9ce6c2a 100644 --- a/src/game/text_save.inc.h +++ b/src/game/text_save.inc.h @@ -4,8 +4,9 @@ #include "course_table.h" #include "pc/ini.h" #include "pc/platform.h" +#include "pc/fs/fs.h" -#define FILENAME_FORMAT "%s\\sm64_save_file_%d.sav" +#define FILENAME_FORMAT "%s/sm64_save_file_%d.sav" #define NUM_COURSES 15 #define NUM_BONUS_COURSES 10 #define NUM_FLAGS 21 @@ -79,10 +80,10 @@ static s32 write_text_save(s32 fileIndex) { struct SaveFile *savedata; struct MainMenuSaveData *menudata; char filename[SYS_MAX_PATH] = { 0 }; - char *value; + char value[64]; u32 i, bit, flags, coins, stars, starFlags; - if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) + if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, fs_writepath, fileIndex) < 0) return -1; file = fopen(filename, "wt"); @@ -210,7 +211,7 @@ static s32 read_text_save(s32 fileIndex) { u32 i, flag, coins, stars, starFlags; u32 capArea; - if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, sys_save_path(), fileIndex) < 0) + if (snprintf(filename, sizeof(filename), FILENAME_FORMAT, fs_writepath, fileIndex) < 0) return -1; savedata = ini_load(filename); diff --git a/src/pc/fs/fs.h b/src/pc/fs/fs.h index e479cfbf..c7765144 100644 --- a/src/pc/fs/fs.h +++ b/src/pc/fs/fs.h @@ -21,8 +21,7 @@ #define FS_SOUNDDIR "sound" extern char fs_gamedir[]; -extern char fs_userdir[]; -extern const char *fs_ropaths[]; +extern char fs_writepath[]; // receives the full path // should return `true` if traversal should continue From 0bf5a192f465f3f8d92497a0fe32e4006e9ed0f3 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 7 Jun 2020 22:00:49 +0300 Subject: [PATCH 103/166] fix sys_fatal() warnings in gfx --- src/pc/gfx/gfx_opengl.c | 1 + src/pc/gfx/gfx_opengl_legacy.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index a0c27bed..b1311442 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -33,6 +33,7 @@ #endif +#include "../platform.h" #include "gfx_cc.h" #include "gfx_rendering_api.h" diff --git a/src/pc/gfx/gfx_opengl_legacy.c b/src/pc/gfx/gfx_opengl_legacy.c index 6ff04a78..29a3a699 100644 --- a/src/pc/gfx/gfx_opengl_legacy.c +++ b/src/pc/gfx/gfx_opengl_legacy.c @@ -40,6 +40,7 @@ static PFNMGLFOGCOORDPOINTERPROC mglFogCoordPointer = NULL; #define GL_FOG_COORD 0x8451 #define GL_FOG_COORD_ARRAY 0x8457 +#include "../platform.h" #include "gfx_cc.h" #include "gfx_rendering_api.h" #include "macros.h" From 9ebde3c219feb6b8aa7b08c3e4275fc9ad2aa49a Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 7 Jun 2020 22:00:57 +0300 Subject: [PATCH 104/166] add sky tiles to the zip as well --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8ec64322..791c1d16 100644 --- a/Makefile +++ b/Makefile @@ -564,7 +564,8 @@ ifeq ($(EXTERNAL_DATA),1) CC_CHECK += -DEXTERNAL_DATA -DFS_BASEDIR="\"$(BASEDIR)\"" CFLAGS += -DEXTERNAL_DATA -DFS_BASEDIR="\"$(BASEDIR)\"" # tell skyconv to write names instead of actual texture data and save the split tiles so we can use them later - SKYCONV_ARGS := --store-names --write-tiles "$(BUILD_DIR)/textures/skybox_tiles" + SKYTILE_DIR := $(BUILD_DIR)/textures/skybox_tiles + SKYCONV_ARGS := --store-names --write-tiles "$(SKYTILE_DIR)" endif ASFLAGS := -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) @@ -641,6 +642,7 @@ $(BASEPACK_LST): $(EXE) @echo "$(BUILD_DIR)/sound/sequences.bin sound/sequences.bin" >> $(BASEPACK_LST) @echo "$(BUILD_DIR)/sound/sound_data.ctl sound/sound_data.ctl" >> $(BASEPACK_LST) @echo "$(BUILD_DIR)/sound/sound_data.tbl sound/sound_data.tbl" >> $(BASEPACK_LST) + @$(foreach f, $(wildcard $(SKYTILE_DIR)/*), echo $(f) gfx/$(f:$(BUILD_DIR)/%=%) >> $(BASEPACK_LST);) @find actors -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \; @find levels -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \; @find textures -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \; From 51651d52d0ef826c6270b9d028d6109f9bfe6221 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 7 Jun 2020 23:54:39 +0300 Subject: [PATCH 105/166] restore --savepath and replace --datapath with --gamedir --- src/pc/cliopts.c | 4 ++-- src/pc/cliopts.h | 2 +- src/pc/gfx/gfx_pc.c | 18 +++++++++--------- src/pc/gfx/gfx_pc.h | 1 + src/pc/pc_main.c | 17 +++++++++++++++-- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/pc/cliopts.c b/src/pc/cliopts.c index bff335a2..fd07eb31 100644 --- a/src/pc/cliopts.c +++ b/src/pc/cliopts.c @@ -54,8 +54,8 @@ void parse_cli_opts(int argc, char* argv[]) { else if (strcmp(argv[i], "--configfile") == 0 && (i + 1) < argc) arg_string("--configfile", argv[++i], gCLIOpts.ConfigFile); - else if (strcmp(argv[i], "--datapath") == 0 && (i + 1) < argc) - arg_string("--datapath", argv[++i], gCLIOpts.DataPath); + else if (strcmp(argv[i], "--gamedir") == 0 && (i + 1) < argc) + arg_string("--gamedir", argv[++i], gCLIOpts.GameDir); else if (strcmp(argv[i], "--savepath") == 0 && (i + 1) < argc) arg_string("--savepath", argv[++i], gCLIOpts.SavePath); diff --git a/src/pc/cliopts.h b/src/pc/cliopts.h index 2d084eda..f9a45e18 100644 --- a/src/pc/cliopts.h +++ b/src/pc/cliopts.h @@ -8,7 +8,7 @@ struct PCCLIOptions { unsigned int FullScreen; char ConfigFile[SYS_MAX_PATH]; char SavePath[SYS_MAX_PATH]; - char DataPath[SYS_MAX_PATH]; + char GameDir[SYS_MAX_PATH]; }; extern struct PCCLIOptions gCLIOpts; diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 8e8a7e51..8dd91e08 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -1748,18 +1748,18 @@ void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi) { 0x05200200, 0x03200200 }; - for (size_t i = 0; i < sizeof(precomp_shaders) / sizeof(uint32_t); i++) { + + for (size_t i = 0; i < sizeof(precomp_shaders) / sizeof(uint32_t); i++) gfx_lookup_or_create_shader_program(precomp_shaders[i]); - } - #ifdef EXTERNAL_DATA - // preload all textures if needed - if (configPrecacheRes) { - printf("Precaching textures\n"); - fs_walk(FS_TEXTUREDIR, preload_texture, NULL, true); - } - #endif } +#ifdef EXTERNAL_DATA +void gfx_precache_textures(void) { + // preload all textures + fs_walk(FS_TEXTUREDIR, preload_texture, NULL, true); +} +#endif + void gfx_start_frame(void) { gfx_wapi->handle_events(); gfx_wapi->get_dimensions(&gfx_current_dimensions.width, &gfx_current_dimensions.height); diff --git a/src/pc/gfx/gfx_pc.h b/src/pc/gfx/gfx_pc.h index 8d62e2b7..53a1677b 100644 --- a/src/pc/gfx/gfx_pc.h +++ b/src/pc/gfx/gfx_pc.h @@ -15,6 +15,7 @@ void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi); void gfx_start_frame(void); void gfx_run(Gfx *commands); void gfx_end_frame(void); +void gfx_precache_textures(void); void gfx_shutdown(void); #endif diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 3a2d6613..ea322305 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -1,4 +1,5 @@ #include +#include #ifdef TARGET_WEB #include @@ -24,6 +25,7 @@ #include "controller/controller_api.h" #include "fs/fs.h" +#include "game/game_init.h" #include "game/main.h" #include "game/thread6.h" @@ -154,7 +156,9 @@ void main_func(void) { main_pool_init(pool, pool + sizeof(pool) / sizeof(pool[0])); gEffectsMemoryPool = mem_pool_init(0x4000, MEMORY_POOL_LEFT); - fs_init(sys_ropaths, FS_BASEDIR, sys_user_path()); + const char *gamedir = gCLIOpts.GameDir[0] ? gCLIOpts.GameDir : FS_BASEDIR; + const char *userpath = gCLIOpts.SavePath[0] ? gCLIOpts.SavePath : sys_user_path(); + fs_init(sys_ropaths, gamedir, userpath); configfile_load(configfile_name()); @@ -173,9 +177,18 @@ void main_func(void) { sound_init(); thread5_game_loop(NULL); - + inited = true; +#ifdef EXTERNAL_DATA + // precache data if needed + if (configPrecacheRes) { + printf("precaching data\n"); + fflush(stdout); + gfx_precache_textures(); + } +#endif + #ifdef TARGET_WEB emscripten_set_main_loop(em_main_loop, 0, 0); request_anim_frame(on_anim_frame); From 504b38725ec08ec1dbf449a0fd6ccdb5abac8040 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 8 Jun 2020 06:06:40 +0300 Subject: [PATCH 106/166] use 'python3 mkzip' instead of just 'mkzip' --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 791c1d16..d7c5a6c6 100644 --- a/Makefile +++ b/Makefile @@ -649,7 +649,7 @@ $(BASEPACK_LST): $(EXE) # prepares the resource ZIP with base data $(BASEPACK_PATH): $(BASEPACK_LST) - @$(TOOLS_DIR)/mkzip.py $(BASEPACK_LST) $(BASEPACK_PATH) + @$(PYTHON) $(TOOLS_DIR)/mkzip.py $(BASEPACK_LST) $(BASEPACK_PATH) endif From 585c24a2822ea5b5b5f61f9d7d00da4360dd2b08 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 8 Jun 2020 06:38:41 +0300 Subject: [PATCH 107/166] updated usage text --- src/pc/cliopts.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pc/cliopts.c b/src/pc/cliopts.c index fd07eb31..b9e9ee77 100644 --- a/src/pc/cliopts.c +++ b/src/pc/cliopts.c @@ -16,7 +16,7 @@ static void print_help(void) { printf("Super Mario 64 PC Port\n"); printf("%-20s\tEnables the cheat menu.\n", "--cheats"); printf("%-20s\tSaves the configuration file as CONFIGNAME.\n", "--configfile CONFIGNAME"); - printf("%-20s\tOverrides the default read-only data path ('!' expands to executable path).\n", "--datapath DATAPATH"); + printf("%-20s\tSets additional data directory name (only 'res' is used by default).\n", "--gamedir DIRNAME"); printf("%-20s\tOverrides the default save/config path ('!' expands to executable path).\n", "--savepath SAVEPATH"); printf("%-20s\tStarts the game in full screen mode.\n", "--fullscreen"); printf("%-20s\tSkips the Peach and Castle intro when starting a new game.\n", "--skip-intro"); From ef5eab2263099cabb678b86bd1f8f261d7d5139d Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 8 Jun 2020 07:44:03 +0300 Subject: [PATCH 108/166] fix sys_file_extension for folders that start with dot --- src/pc/platform.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pc/platform.c b/src/pc/platform.c index fb4b08ec..0aea20fa 100644 --- a/src/pc/platform.c +++ b/src/pc/platform.c @@ -51,7 +51,10 @@ int sys_strcasecmp(const char *s1, const char *s2) { const char *sys_file_extension(const char *fname) { const char *dot = strrchr(fname, '.'); - if (!dot || !dot[1]) return NULL; + const char *sep = strrchr(fname, '/'); + if (!sep) sep = strrchr(fname, '\\'); + if (!dot || !dot[1]) return NULL; // no dot + if (dot <= sep + 1) return NULL; // dot is before the last separator or right after it (e.g. /.local) return dot + 1; } From 326f8ed071b88196a1c6c18b2aa8ea59891a2a2e Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 8 Jun 2020 08:49:06 +0300 Subject: [PATCH 109/166] properly check for basepacks --- src/pc/fs/fs.c | 4 ++-- src/pc/platform.c | 15 +++++++++++---- src/pc/platform.h | 3 ++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/pc/fs/fs.c b/src/pc/fs/fs.c index d125a60b..37f85edf 100644 --- a/src/pc/fs/fs.c +++ b/src/pc/fs/fs.c @@ -43,8 +43,8 @@ static inline fs_dir_t *fs_find_dir(const char *realpath) { } static int mount_cmp(const void *p1, const void *p2) { - const char *s1 = *(const char **)p1; - const char *s2 = *(const char **)p2; + const char *s1 = sys_file_name(*(const char **)p1); + const char *s2 = sys_file_name(*(const char **)p2); // check if one or both of these are basepacks const int plen = strlen(FS_BASEPACK_PREFIX); diff --git a/src/pc/platform.c b/src/pc/platform.c index 0aea20fa..d6bfd6e2 100644 --- a/src/pc/platform.c +++ b/src/pc/platform.c @@ -49,15 +49,22 @@ int sys_strcasecmp(const char *s1, const char *s2) { return result; } -const char *sys_file_extension(const char *fname) { +const char *sys_file_extension(const char *fpath) { + const char *fname = sys_file_name(fpath); const char *dot = strrchr(fname, '.'); - const char *sep = strrchr(fname, '/'); - if (!sep) sep = strrchr(fname, '\\'); if (!dot || !dot[1]) return NULL; // no dot - if (dot <= sep + 1) return NULL; // dot is before the last separator or right after it (e.g. /.local) + if (dot == fname) return NULL; // dot is the first char (e.g. .local) return dot + 1; } +const char *sys_file_name(const char *fpath) { + const char *sep1 = strrchr(fpath, '/'); + const char *sep2 = strrchr(fpath, '\\'); + const char *sep = sep1 > sep2 ? sep1 : sep2; + if (!sep) return fpath; + return sep + 1; +} + /* this calls a platform-specific impl function after forming the error message */ static void sys_fatal_impl(const char *msg) __attribute__ ((noreturn)); diff --git a/src/pc/platform.h b/src/pc/platform.h index 53b2ad16..168333d1 100644 --- a/src/pc/platform.h +++ b/src/pc/platform.h @@ -20,7 +20,8 @@ int sys_strcasecmp(const char *s1, const char *s2); // path stuff const char *sys_user_path(void); const char *sys_exe_path(void); -const char *sys_file_extension(const char *fname); +const char *sys_file_extension(const char *fpath); +const char *sys_file_name(const char *fpath); // shows an error message in some way and terminates the game void sys_fatal(const char *fmt, ...) __attribute__ ((noreturn)); From 3589d7cfedba84655bda7bf18a9e0586d9c2b30d Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 9 Jun 2020 05:23:15 +0300 Subject: [PATCH 110/166] texrename: put textures in gfx folder --- tools/texrename.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/texrename.py b/tools/texrename.py index e8ac24e0..600c8bfc 100644 --- a/tools/texrename.py +++ b/tools/texrename.py @@ -53,7 +53,7 @@ try: crc = int(crcstr[2:], 16) else: crc = int(crcstr) - crcmap.append((crc, os.path.join(outpath, tok[1].strip()))) + crcmap.append((crc, os.path.join(outpath, 'gfx', tok[1].strip()))) except OSError as e: print('could not open {0}: {1}'.format(mapfname, e)) except ValueError as e: From 13120042c97339d9bc899154c65c60c8ba7a998c Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 9 Jun 2020 05:24:26 +0300 Subject: [PATCH 111/166] add crcmap for RICE-formatted texture packs --- tools/rice_crcmap.txt | 1700 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1700 insertions(+) create mode 100644 tools/rice_crcmap.txt diff --git a/tools/rice_crcmap.txt b/tools/rice_crcmap.txt new file mode 100644 index 00000000..f2726f09 --- /dev/null +++ b/tools/rice_crcmap.txt @@ -0,0 +1,1700 @@ +0xfff8437e, textures/spooky/bbh_textures.06800.rgba16.png +0xffea1ffe, textures/segment2/segment2.04000.rgba16.png +0xffdebbc5, textures/skybox_tiles/bitfs.17.rgba16.png +0xff6c67f0, textures/skybox_tiles/ssl.31.rgba16.png +0xff50bd43, textures/effect/lava_bubble.05020.rgba16.png +0xff309aa3, textures/skybox_tiles/bitfs.5.rgba16.png +0xff00d1bf, textures/machine/ttc_textures.06800.rgba16.png +0xfebedae8, textures/water/jrb_textures.06000.rgba16.png +0xfeb13915, textures/skybox_tiles/wdw.27.rgba16.png +0xfe7ec2b3, textures/sky/rr_textures.03000.rgba16.png +0xfe55b4f9, levels/ccm/9.ia16.png +0xfe391ddb, levels/castle_inside/36.rgba16.png +0xfe1ab8d0, levels/hmc/0.rgba16.png +0xfddf5c31, actors/breakable_box/cork_box_surface.rgba16.png +0xfdc48aeb, textures/skybox_tiles/ssl.10.rgba16.png +0xfdbce221, textures/generic/bob_textures.0A000.rgba16.png +0xfdb6de70, textures/skybox_tiles/clouds.4.rgba16.png +0xfdb50546, textures/inside/inside_castle_textures.06000.rgba16.png +0xfd9aa14e, actors/blue_fish/blue_fish.rgba16.png +0xfd83b121, actors/goomba/goomba_body.rgba16.png +0xfd820701, actors/door/polished_wooden_door.rgba16.png +0xfd6af08f, actors/mad_piano/mad_piano_body.rgba16.png +0xfd57ea27, actors/dorrie/dorrie_eye.rgba16.png +0xfd569cd5, actors/power_meter/power_meter_left_side.rgba16.png +0xfcfc8637, textures/skybox_tiles/bits.35.rgba16.png +0xfc6ef688, textures/skybox_tiles/bidw.24.rgba16.png +0xfc58ed51, textures/segment2/segment2.06C00.rgba16.png +0xfc53c33b, actors/bub/bub_eyes.rgba16.png +0xfc53c33b, actors/bubba/bubba_eyes_unused.rgba16.png +0xfc4b4762, levels/castle_inside/17.rgba16.png +0xfc489936, textures/skybox_tiles/water.53.rgba16.png +0xfc424ecc, textures/skybox_tiles/cloud_floor.13.rgba16.png +0xfc10a1b3, textures/segment2/segment2.02400.rgba16.png +0xfc0dd433, textures/skybox_tiles/bits.54.rgba16.png +0xfbec7687, textures/skybox_tiles/cake.8.rgba16.png +0xfbe08cab, actors/coin/coin_tilt_right.ia16.png +0xfbcb7598, levels/menu/main_menu_seg7.04C68.rgba16.png +0xfba28e17, actors/water_wave/water_wave_0.ia16.png +0xfb4e7d3c, textures/skybox_tiles/cloud_floor.17.rgba16.png +0xfb38796a, actors/mad_piano/mad_piano_mouth.rgba16.png +0xfb04de95, textures/skybox_tiles/cloud_floor.16.rgba16.png +0xfad8c6e1, levels/menu/main_menu_seg7.0E1A8.rgba16.png +0xfacea23f, actors/snufit/snufit_eye.rgba16.png +0xfaaff848, textures/skybox_tiles/bidw.41.rgba16.png +0xfa825d44, textures/skybox_tiles/cake.12.rgba16.png +0xfa49a60a, textures/skybox_tiles/cake.15.rgba16.png +0xfa421c73, actors/explosion/explosion_1.rgba16.png +0xfa11921a, actors/water_splash/water_splash_0.rgba16.png +0xf9889333, textures/skybox_tiles/bitfs.38.rgba16.png +0xf97dc072, actors/clam_shell/clam_shell_mouth.rgba16.png +0xf92708ad, textures/outside/castle_grounds_textures.05800.rgba16.png +0xf91048ed, textures/effect/lava_bubble.02020.rgba16.png +0xf902b80b, textures/mountain/ttm_textures.07800.rgba16.png +0xf8d78296, textures/mountain/ttm_textures.08000.rgba16.png +0xf8d3168e, textures/skybox_tiles/cake.5.rgba16.png +0xf8cc42d7, textures/skybox_tiles/bitfs.6.rgba16.png +0xf8cab46c, textures/skybox_tiles/wdw.29.rgba16.png +0xf8b79a21, textures/skybox_tiles/cake.4.rgba16.png +0xf8775564, actors/peach/peach_dress.rgba16.png +0xf861446c, textures/skybox_tiles/wdw.35.rgba16.png +0xf831589e, textures/snow/ccm_textures.05000.rgba16.png +0xf8303731, textures/outside/castle_grounds_textures.01000.rgba16.png +0xf7844a94, actors/king_bobomb/king_bob-omb_arm.rgba16.png +0xf765d232, textures/skybox_tiles/ssl.16.rgba16.png +0xf71bcbca, levels/lll/22.rgba16.png +0xf6c53a3c, levels/ddd/0.rgba16.png +0xf6beeb24, actors/bookend/bookend_mouth.rgba16.png +0xf6bb8446, textures/skybox_tiles/cloud_floor.25.rgba16.png +0xf6affec8, levels/lll/19.rgba16.png +0xf69986ce, textures/skybox_tiles/bits.45.rgba16.png +0xf66ca88b, actors/piranha_plant/piranha_plant_tongue.rgba16.png +0xf66ca88b, actors/bowser/bowser_tongue.rgba16.png +0xf66738c7, textures/skybox_tiles/cake.42.rgba16.png +0xf5e69d71, textures/skybox_tiles/bbh.26.rgba16.png +0xf5a3113c, textures/grass/wf_textures.09000.rgba16.png +0xf5974867, textures/segment2/segment2.03C00.rgba16.png +0xf566b5fa, textures/skybox_tiles/wdw.33.rgba16.png +0xf5013c4a, textures/skybox_tiles/wdw.45.rgba16.png +0xf4fab5f3, actors/sparkle/sparkle_4.rgba16.png +0xf4d429fd, levels/lll/8.rgba16.png +0xf476b374, textures/intro_raw/sparkle_2.rgba16.png +0xf4472db5, textures/skybox_tiles/ssl.53.rgba16.png +0xf3cc9e98, textures/generic/bob_textures.07800.rgba16.png +0xf3b23497, textures/grass/wf_textures.05000.rgba16.png +0xf399a4e9, actors/swoop/swoop_eye.rgba16.png +0xf37a7379, textures/skybox_tiles/wdw.2.rgba16.png +0xf3247d8b, textures/skybox_tiles/cake.26.rgba16.png +0xf2ede87d, textures/skybox_tiles/wdw.31.rgba16.png +0xf2979267, textures/segment2/segment2.06B00.rgba16.png +0xf2897e05, levels/castle_inside/5.rgba16.png +0xf22e4881, levels/cotmc/3.rgba16.png +0xf21f608e, actors/dirt/dirt_particle.rgba16.png +0xf1c23131, actors/power_meter/power_meter_full.rgba16.png +0xf19d33e5, textures/skybox_tiles/clouds.25.rgba16.png +0xf16f1966, textures/skybox_tiles/ssl.56.rgba16.png +0xf148ae1e, actors/bowser/bowser_nostrils.rgba16.png +0xf11e411f, actors/sparkle/sparkle_0.rgba16.png +0xf10816c6, textures/skybox_tiles/water.52.rgba16.png +0xf0fd9fe8, textures/skybox_tiles/clouds.38.rgba16.png +0xf0edea43, textures/skybox_tiles/wdw.57.rgba16.png +0xf0dd9d26, textures/skybox_tiles/cloud_floor.33.rgba16.png +0xf0b319a6, actors/flame/flame_2.ia16.png +0xf0a134bd, textures/spooky/bbh_textures.0B000.ia16.png +0xf09d711e, actors/wooden_signpost/wooden_signpost_back.rgba16.png +0xf0729e14, actors/unagi/unagi_body.rgba16.png +0xf05aadee, textures/skybox_tiles/cloud_floor.52.rgba16.png +0xf03aef7d, textures/skybox_tiles/cloud_floor.28.rgba16.png +0xef44fc69, textures/skybox_tiles/bitfs.31.rgba16.png +0xef35da31, textures/skybox_tiles/water.32.rgba16.png +0xef1d1e70, textures/skybox_tiles/ccm.57.rgba16.png +0xef161d97, textures/skybox_tiles/bitfs.44.rgba16.png +0xeed115d8, actors/sparkle_animation/sparkle_animation_1.ia16.png +0xeeb51695, textures/skybox_tiles/clouds.33.rgba16.png +0xee949d98, textures/skybox_tiles/bitfs.43.rgba16.png +0xee5c9999, textures/skybox_tiles/cloud_floor.20.rgba16.png +0xedff0bd2, textures/skybox_tiles/water.37.rgba16.png +0xedbbe3d1, actors/unagi/unagi_tooth.rgba16.png +0xeda45656, actors/haunted_cage/bbh_cage_ornament.rgba16.png +0xece06c79, levels/ssl/10.rgba16.png +0xecd57ce8, textures/segment2/segment2.06780.rgba16.png +0xecacf737, actors/peach/peach_eye_closed.rgba16.png +0xec819d1b, textures/sky/rr_textures.01000.rgba16.png +0xec60ed0c, levels/menu/main_menu_seg7.03468.rgba16.png +0xec390c33, textures/skybox_tiles/cake.35.rgba16.png +0xec24c279, textures/segment2/segment2.08150.rgba16.png +0xec004254, textures/skybox_tiles/bits.39.rgba16.png +0xeba8bfca, textures/skybox_tiles/cloud_floor.15.rgba16.png +0xeba48ba7, textures/skybox_tiles/cloud_floor.53.rgba16.png +0xeb871023, levels/castle_inside/14.rgba16.png +0xeb70d69c, textures/skybox_tiles/ccm.23.rgba16.png +0xeb5c820f, textures/skybox_tiles/cloud_floor.27.rgba16.png +0xeb37a9b8, levels/thi/0.rgba16.png +0xeb0dfb0a, textures/skybox_tiles/bbh.23.rgba16.png +0xeaa27132, actors/lakitu_enemy/lakitu_enemy_eyes_open.rgba16.png +0xeaa27132, actors/lakitu_cameraman/lakitu_cameraman_eyes_open.rgba16.png +0xea6f033e, actors/ukiki/ukiki_fur.rgba16.png +0xea566cb8, textures/skybox_tiles/bitfs.28.rgba16.png +0xea11fb10, levels/lll/23.rgba16.png +0xe9fcbf74, actors/mario/mario_mustache.rgba16.png +0xe9e0c62a, textures/snow/ccm_textures.05800.rgba16.png +0xe9cabb44, actors/warp_pipe/warp_pipe_side.rgba16.png +0xe944a81b, levels/wf/3.rgba16.png +0xe8fabcc5, levels/castle_inside/31.rgba16.png +0xe8f6fff7, textures/skybox_tiles/water.62.rgba16.png +0xe8e37186, textures/snow/ccm_textures.08800.rgba16.png +0xe7f503ac, textures/intro_raw/white_star_7.rgba16.png +0xe7d08e45, textures/skybox_tiles/cloud_floor.56.rgba16.png +0xe747f9b9, textures/skybox_tiles/cloud_floor.19.rgba16.png +0xe7161d98, textures/skybox_tiles/bitfs.45.rgba16.png +0xe702818c, textures/skybox_tiles/ccm.61.rgba16.png +0xe69d9617, textures/skybox_tiles/bitfs.42.rgba16.png +0xe6959da0, textures/skybox_tiles/bitfs.47.rgba16.png +0xe6919896, actors/scuttlebug/scuttlebug_eye.rgba16.png +0xe67c070b, textures/segment2/segment2.06D00.rgba16.png +0xe6640e91, textures/skybox_tiles/cloud_floor.30.rgba16.png +0xe61e849b, levels/wf/2.rgba16.png +0xe60ffd91, actors/treasure_chest/treasure_chest_lock.rgba16.png +0xe6061d88, textures/skybox_tiles/bitfs.40.rgba16.png +0xe5d87cd6, levels/menu/main_menu_seg7.04468.rgba16.png +0xe5bcf46e, actors/coin/coin_side.ia16.png +0xe56f0bbf, textures/cave/hmc_textures.02800.rgba16.png +0xe559fc96, levels/bbh/0.rgba16.png +0xe52ee127, actors/snowman/mr_blizzard_mouth.rgba16.png +0xe52ee127, levels/ccm/5.rgba16.png +0xe4bd5580, textures/segment2/segment2.00200.rgba16.png +0xe49dcfb8, textures/fire/lll_textures.03000.rgba16.png +0xe48f835f, levels/ccm/6.rgba16.png +0xe48f835f, actors/snowman/mr_blizzard_eye.rgba16.png +0xe47fb00e, textures/skybox_tiles/ccm.1.rgba16.png +0xe473fb5d, textures/sky/rr_textures.05800.rgba16.png +0xe447e6b0, textures/skybox_tiles/water.48.rgba16.png +0xe42d6aa8, levels/lll/11.rgba16.png +0xe3c3f224, textures/water/jrb_textures.0A000.rgba16.png +0xe3a23a76, textures/skybox_tiles/cake.44.rgba16.png +0xe3a23a76, textures/skybox_tiles/cake.47.rgba16.png +0xe398c0e5, textures/skybox_tiles/bitfs.2.rgba16.png +0xe383fd85, textures/mountain/ttm_textures.03000.rgba16.png +0xe361666a, textures/outside/castle_grounds_textures.08000.rgba16.png +0xe3548182, actors/moneybag/moneybag_mouth.rgba16.png +0xe351cff2, actors/bowser/bowser_claw_edge.rgba16.png +0xe348762e, textures/skybox_tiles/ccm.50.rgba16.png +0xe2fad209, textures/skybox_tiles/bbh.33.rgba16.png +0xe2e864a2, textures/fire/lll_textures.0A800.rgba16.png +0xe2de3e2b, textures/segment2/segment2.02200.rgba16.png +0xe22b8125, textures/outside/castle_grounds_textures.06000.rgba16.png +0xe20d5c69, textures/skybox_tiles/clouds.9.rgba16.png +0xe1ca8b50, textures/snow/ccm_textures.06000.rgba16.png +0xe169c3bf, textures/skybox_tiles/water.9.rgba16.png +0xe144c219, textures/skybox_tiles/bits.49.rgba16.png +0xe127cedd, actors/sushi/sushi_eye.rgba16.png +0xe0c22a3c, textures/mountain/ttm_textures.0A000.rgba16.png +0xe0c22a3c, textures/sky/rr_textures.06000.rgba16.png +0xe0bb9b61, actors/cannon_lid/cannon_lid.rgba16.png +0xe0901c5a, textures/skybox_tiles/cloud_floor.5.rgba16.png +0xe075472a, textures/skybox_tiles/wdw.53.rgba16.png +0xe04ef9fc, textures/skybox_tiles/water.21.rgba16.png +0xe04dcb5d, actors/water_splash/water_splash_4.rgba16.png +0xe01b30f4, textures/skybox_tiles/wdw.41.rgba16.png +0xe00d840e, textures/skybox_tiles/bitfs.20.rgba16.png +0xdffbb688, textures/segment2/segment2.11C58.rgba16.png +0xdff2a421, textures/intro_raw/white_star_4.rgba16.png +0xdf68e5a6, textures/skybox_tiles/ssl.27.rgba16.png +0xdf5317b2, levels/bowser_3/1.rgba16.png +0xdf2a6551, actors/swoop/swoop_nose.rgba16.png +0xdf22ebff, textures/intro_raw/white_star_0.rgba16.png +0xdf0e0d87, textures/skybox_tiles/bitfs.41.rgba16.png +0xdf07ed35, textures/skybox_tiles/bidw.20.rgba16.png +0xdeef869f, textures/skybox_tiles/ccm.56.rgba16.png +0xdee37e88, textures/intro_raw/white_star_1.rgba16.png +0xdeae047b, levels/castle_inside/34.rgba16.png +0xde5450b9, textures/skybox_tiles/wdw.50.rgba16.png +0xde415a3c, textures/skybox_tiles/bits.40.rgba16.png +0xde38650f, textures/skybox_tiles/bidw.46.rgba16.png +0xdde6049e, textures/skybox_tiles/wdw.59.rgba16.png +0xdde47b60, textures/effect/lava_bubble.03820.rgba16.png +0xdde2c14f, textures/skybox_tiles/water.20.rgba16.png +0xddd906e3, textures/skybox_tiles/ssl.50.rgba16.png +0xddcbd0bf, textures/skybox_tiles/ccm.39.rgba16.png +0xdd78fbd8, textures/generic/bob_textures.04800.rgba16.png +0xdd432c19, actors/fwoosh/fwoosh_face.ia16.png +0xdcf4de07, levels/wdw/3.rgba16.png +0xdcdca548, textures/skybox_tiles/bitfs.23.rgba16.png +0xdcd89861, actors/spindrift/spindrift_leaf.rgba16.png +0xdcc12774, actors/bubble/bubble.rgba16.png +0xdc7bde10, levels/wf/4.rgba16.png +0xdc55f053, levels/castle_inside/16.ia16.png +0xdc5422cc, textures/skybox_tiles/ccm.32.rgba16.png +0xdc28412d, textures/skybox_tiles/clouds.34.rgba16.png +0xdbf4274c, actors/peach/peach_crown_jewel.rgba16.png +0xdbca0482, textures/machine/ttc_textures.00800.rgba16.png +0xdbca0482, textures/inside/inside_castle_textures.04800.rgba16.png +0xdbc08093, textures/skybox_tiles/water.10.rgba16.png +0xdba34b25, textures/skybox_tiles/ssl.35.rgba16.png +0xdb6c3044, actors/lakitu_enemy/lakitu_enemy_eyes_closed.rgba16.png +0xdb6c3044, actors/lakitu_cameraman/lakitu_cameraman_eyes_closed.rgba16.png +0xdb5b2455, textures/skybox_tiles/clouds.13.rgba16.png +0xdb4b54d5, textures/skybox_tiles/wdw.22.rgba16.png +0xdb4164d7, actors/flame/flame_3.ia16.png +0xdb3edfed, textures/skybox_tiles/water.13.rgba16.png +0xdb37ff1f, textures/skybox_tiles/bits.48.rgba16.png +0xdb1cf863, actors/unagi/unagi_mouth.rgba16.png +0xdad0c429, actors/bowser/bowser_claw_horn_tooth.rgba16.png +0xdaa65afc, textures/skybox_tiles/bitfs.12.rgba16.png +0xda971b4e, textures/segment2/segment2.06380.rgba16.png +0xda83e7ab, textures/skybox_tiles/wdw.9.rgba16.png +0xda375ba5, levels/sl/3.rgba16.png +0xda354d71, textures/skybox_tiles/ccm.9.rgba16.png +0xd9e8f2f0, levels/lll/18.rgba16.png +0xd97fb4f5, textures/skybox_tiles/bidw.38.rgba16.png +0xd97d5a21, textures/skybox_tiles/bits.23.rgba16.png +0xd951b3da, textures/cave/hmc_textures.06800.rgba16.png +0xd91da963, levels/thi/1.rgba16.png +0xd910f455, textures/skybox_tiles/bbh.36.rgba16.png +0xd8f79383, textures/skybox_tiles/wdw.21.rgba16.png +0xd8e02894, textures/skybox_tiles/cloud_floor.63.rgba16.png +0xd8a463df, textures/skybox_tiles/bidw.48.rgba16.png +0xd89fbca9, textures/skybox_tiles/bidw.18.rgba16.png +0xd89b4538, textures/segment2/segment2.01E00.rgba16.png +0xd8903b0b, actors/koopa_flag/koopa_flag_banner.rgba16.png +0xd872cf6b, textures/machine/ttc_textures.05000.rgba16.png +0xd872790d, textures/sky/rr_textures.01800.rgba16.png +0xd8504ee4, actors/stomp_smoke/stomp_smoke_1.ia16.png +0xd8502ff0, textures/segment2/segment2.07000.rgba16.png +0xd83419b2, levels/ccm/10.rgba16.png +0xd816c431, textures/intro_raw/white_star_5.rgba16.png +0xd813a5e5, actors/bowser/bowser_muzzle.rgba16.png +0xd7d14c92, textures/outside/castle_grounds_textures.03000.rgba16.png +0xd7b09499, textures/skybox_tiles/clouds.6.rgba16.png +0xd795fe9f, levels/pss/2.rgba16.png +0xd742b346, textures/skybox_tiles/ccm.15.rgba16.png +0xd6f1a677, textures/segment2/segment2.06E80.rgba16.png +0xd6acb89d, textures/skybox_tiles/bits.16.rgba16.png +0xd68e7d47, textures/skybox_tiles/ccm.16.rgba16.png +0xd678c04f, textures/skybox_tiles/bbh.19.rgba16.png +0xd658ab33, textures/skybox_tiles/clouds.39.rgba16.png +0xd61dc576, textures/skybox_tiles/cloud_floor.11.rgba16.png +0xd6096833, actors/monty_mole/monty_mole_tooth.rgba16.png +0xd5bd2cf3, textures/outside/castle_grounds_textures.07800.rgba16.png +0xd5b932a2, levels/ssl/9.rgba16.png +0xd53a754e, actors/seaweed/seaweed_upper_center.rgba16.png +0xd4e4f405, textures/mountain/ttm_textures.09800.rgba16.png +0xd4c2dc38, textures/skybox_tiles/wdw.25.rgba16.png +0xd494eb3b, levels/lll/1.rgba16.png +0xd42e66e7, actors/whomp/whomp_back.rgba16.png +0xd4291cf0, textures/grass/wf_textures.02800.rgba16.png +0xd4178125, actors/sushi/sushi_tooth.rgba16.png +0xd41593d8, levels/ttm/2.rgba16.png +0xd405bfc1, actors/bowser/bowser_eye_far_left_1.rgba16.png +0xd405bfc1, actors/bowser/bowser_eye_far_left_0.rgba16.png +0xd404f7b3, textures/skybox_tiles/cloud_floor.58.rgba16.png +0xd3f0d281, textures/skybox_tiles/cloud_floor.18.rgba16.png +0xd3ea4d38, textures/skybox_tiles/wdw.28.rgba16.png +0xd3d96165, textures/skybox_tiles/cloud_floor.46.rgba16.png +0xd3d78f68, textures/skybox_tiles/cake.9.rgba16.png +0xd35575d6, actors/bully/bully_horn.rgba16.png +0xd314e722, textures/intro_raw/red_star_7.rgba16.png +0xd2ebc589, actors/manta/manta_gills.rgba16.png +0xd2e92870, textures/segment2/segment2.06280.rgba16.png +0xd2a5d574, textures/effect/lava_bubble.02820.rgba16.png +0xd2a5272b, textures/skybox_tiles/ccm.19.rgba16.png +0xd2a1c338, levels/castle_inside/28.rgba16.png +0xd2a05119, actors/capswitch/cap_switch_head.ia16.png +0xd26ee300, textures/skybox_tiles/ssl.30.rgba16.png +0xd220aa57, actors/swoop/swoop_body.rgba16.png +0xd1f883f5, textures/mountain/ttm_textures.0C000.rgba16.png +0xd1c5de12, levels/ttm/8.rgba16.png +0xd1c5de12, textures/mountain/ttm_textures.0A800.rgba16.png +0xd17f99c6, actors/exclamation_box_outline/exclamation_point.rgba16.png +0xd13a97c9, textures/skybox_tiles/wdw.13.rgba16.png +0xd135687e, levels/menu/main_menu_seg7.0D1A8.rgba16.png +0xd10d7b85, textures/inside/inside_castle_textures.08800.rgba16.png +0xd0ab7f94, textures/mountain/ttm_textures.05800.rgba16.png +0xd04a00d5, textures/intro_raw/red_star_2.rgba16.png +0xcfb45caf, textures/skybox_tiles/wdw.20.rgba16.png +0xcf717c3c, textures/sky/metal_hole.rgba16.png +0xcf52a490, textures/grass/wf_textures.01800.rgba16.png +0xcf390916, textures/skybox_tiles/bitfs.22.rgba16.png +0xceb6caa7, textures/skybox_tiles/bitfs.39.rgba16.png +0xcea7425d, textures/skybox_tiles/ssl.5.rgba16.png +0xce8e25fa, textures/segment2/segment2.06A80.rgba16.png +0xce142635, textures/skybox_tiles/bitfs.30.rgba16.png +0xcd7a591f, textures/skybox_tiles/ccm.2.rgba16.png +0xcd71304b, textures/sky/rr_textures.00000.rgba16.png +0xcd5f7595, actors/heart/spinning_heart.rgba16.png +0xcd56c1f2, textures/skybox_tiles/wdw.42.rgba16.png +0xcd381281, actors/purple_switch/purple_switch_base.rgba16.png +0xcd2a5787, actors/sand/sand_particle.rgba16.png +0xccfdae7d, levels/lll/20.rgba16.png +0xccfb8478, textures/skybox_tiles/ccm.40.rgba16.png +0xcceb38f6, textures/intro_raw/sparkle_1.rgba16.png +0xccad2f1e, textures/skybox_tiles/ccm.3.rgba16.png +0xcca2987c, levels/castle_inside/27.rgba16.png +0xcc89fe99, textures/skybox_tiles/bidw.39.rgba16.png +0xcc57ade9, levels/wdw/0.rgba16.png +0xcc4fe796, actors/peach/peach_eye_open.rgba16.png +0xcc25ce0f, levels/castle_inside/7.rgba16.png +0xcbe026c4, levels/bob/0.rgba16.png +0xcbbc8294, actors/koopa/koopa_eyes_open.rgba16.png +0xcbab007a, textures/skybox_tiles/wdw.39.rgba16.png +0xcb7b6e97, levels/castle_inside/9.rgba16.png +0xcb67da9f, textures/skybox_tiles/bidw.23.rgba16.png +0xcb57b47b, textures/segment2/segment2.10458.ia8.png +0xcb509d6a, textures/effect/tiny_bubble.0684C.rgba16.png +0xcb4982b2, actors/chain_ball/chain_ball.rgba16.png +0xcb3c5d47, textures/skybox_tiles/ssl.38.rgba16.png +0xcb2a2930, levels/cotmc/2.rgba16.png +0xcabc445d, textures/skybox_tiles/clouds.16.rgba16.png +0xca7e41b1, levels/bowser_1/2.rgba16.png +0xc9f30baf, actors/breakable_box/crazy_box_surface.rgba16.png +0xc9e2883e, textures/spooky/bbh_textures.08000.rgba16.png +0xc9a1f57e, actors/mad_piano/mad_piano_keys_edge.rgba16.png +0xc99f67f2, textures/skybox_tiles/bbh.3.rgba16.png +0xc99b5909, actors/door/three_star_door_sign.rgba16.png +0xc99707d9, textures/spooky/bbh_textures.09000.rgba16.png +0xc989266f, actors/seaweed/seaweed_base.rgba16.png +0xc96fd4b4, textures/skybox_tiles/clouds.29.rgba16.png +0xc9524eee, textures/machine/ttc_textures.08000.rgba16.png +0xc9425d35, textures/skybox_tiles/ccm.8.rgba16.png +0xc91c9210, textures/segment2/segment2.06A00.rgba16.png +0xc8922002, textures/skybox_tiles/ssl.2.rgba16.png +0xc8782e13, textures/skybox_tiles/cake.29.rgba16.png +0xc833ef43, actors/flyguy/flyguy_cloth_wrinkle.rgba16.png +0xc82a46f3, actors/water_mine/water_mine_left_side_unused.rgba16.png +0xc82a46f3, actors/bomb/bomb_left_side.rgba16.png +0xc80078c1, textures/skybox_tiles/bits.18.rgba16.png +0xc7b5dbc9, actors/stomp_smoke/stomp_smoke_2.ia16.png +0xc70e2879, textures/skybox_tiles/cloud_floor.23.rgba16.png +0xc6d80baf, textures/skybox_tiles/ssl.47.rgba16.png +0xc6b026aa, textures/fire/lll_textures.02800.rgba16.png +0xc6a1c158, actors/goomba/goomba_face.rgba16.png +0xc64ad046, levels/lll/25.rgba16.png +0xc63f7abb, textures/skybox_tiles/clouds.19.rgba16.png +0xc6028757, textures/generic/bob_textures.00800.rgba16.png +0xc6028757, actors/eyerok/eyerok_bricks.rgba16.png +0xc5e87355, levels/jrb/1.rgba16.png +0xc55ca18e, textures/skybox_tiles/bbh.22.rgba16.png +0xc55c829f, textures/outside/castle_grounds_textures.0A800.rgba16.png +0xc540c44c, actors/scuttlebug/scuttlebug_leg.rgba16.png +0xc518bf93, textures/fire/lll_textures.06800.rgba16.png +0xc4d1c3ce, actors/leaves/leaf.rgba16.png +0xc4c356fa, textures/skybox_tiles/bidw.50.rgba16.png +0xc4c331e8, textures/skybox_tiles/bidw.42.rgba16.png +0xc4845a3e, levels/castle_grounds/4.rgba16.png +0xc3f5c275, actors/klepto/klepto_eye.rgba16.png +0xc3eb2fc6, textures/skybox_tiles/water.54.rgba16.png +0xc3941398, textures/skybox_tiles/clouds.22.rgba16.png +0xc3459917, textures/water/jrb_textures.07800.rgba16.png +0xc30b4fe2, textures/skybox_tiles/bidw.40.rgba16.png +0xc2e48c81, actors/tree/pine_tree.rgba16.png +0xc20fc383, levels/wf/1.rgba16.png +0xc2050f68, actors/bomb/bomb_right_side.rgba16.png +0xc2050f68, actors/water_mine/water_mine_right_side_unused.rgba16.png +0xc199118a, textures/cave/hmc_textures.01800.rgba16.png +0xc136bc10, textures/skybox_tiles/cake.0.rgba16.png +0xc0bcccf4, levels/lll/4.rgba16.png +0xc0a7d217, textures/skybox_tiles/clouds.24.rgba16.png +0xc072c80f, textures/mountain/ttm_textures.04800.rgba16.png +0xbfe56f11, textures/skybox_tiles/bidw.53.rgba16.png +0xbfc9a9dd, textures/skybox_tiles/wdw.5.rgba16.png +0xbfaff600, textures/skybox_tiles/bitfs.9.rgba16.png +0xbf952514, actors/bubba/bubba_sunglasses.rgba16.png +0xbf89df6a, textures/skybox_tiles/ccm.37.rgba16.png +0xbf00c323, textures/skybox_tiles/cake.16.rgba16.png +0xbe721e4b, textures/skybox_tiles/bbh.10.rgba16.png +0xbe5ab2ee, textures/skybox_tiles/bidw.44.rgba16.png +0xbe04ce2e, textures/cave/hmc_textures.09800.rgba16.png +0xbde331e7, textures/skybox_tiles/bitfs.25.rgba16.png +0xbdd76307, textures/skybox_tiles/ccm.13.rgba16.png +0xbdc75108, textures/skybox_tiles/ssl.63.rgba16.png +0xbd9c82de, textures/skybox_tiles/bbh.30.rgba16.png +0xbd8c842f, textures/skybox_tiles/ssl.22.rgba16.png +0xbd4ba854, levels/wmotr/3.rgba16.png +0xbd423336, textures/grass/wf_textures.01000.rgba16.png +0xbd28248a, textures/spooky/bbh_textures.00800.rgba16.png +0xbcbd0842, actors/power_meter/power_meter_two_segments.rgba16.png +0xbc16978d, actors/checkerboard_platform/checkerboard_platform.rgba16.png +0xbbed1dad, textures/skybox_tiles/ccm.18.rgba16.png +0xbbd69d4a, actors/walk_smoke/walk_smoke_1.ia16.png +0xbbca6538, levels/lll/21.rgba16.png +0xbbc6b061, actors/door/door_lock.rgba16.png +0xbb980031, textures/title_screen_bg/title_screen_bg.033C0.rgba16.png +0xbb5327e0, textures/skybox_tiles/bitfs.15.rgba16.png +0xbb48f1bc, actors/stomp_smoke/stomp_smoke_4.ia16.png +0xbb2fb09f, textures/skybox_tiles/ccm.12.rgba16.png +0xba8930c5, textures/skybox_tiles/bbh.2.rgba16.png +0xba6d7331, textures/fire/lll_textures.04800.rgba16.png +0xba568bd1, textures/skybox_tiles/cake.24.rgba16.png +0xba25c107, textures/skybox_tiles/cloud_floor.14.rgba16.png +0xb9c749b9, actors/sparkle/sparkle_5.rgba16.png +0xb92bf6c1, textures/skybox_tiles/bits.52.rgba16.png +0xb9299e61, actors/eyerok/eyerok_eye_closed.rgba16.png +0xb8f6006f, textures/spooky/bbh_textures.06000.rgba16.png +0xb8e3120b, textures/skybox_tiles/water.2.rgba16.png +0xb8ab2c4e, textures/skybox_tiles/bitfs.4.rgba16.png +0xb8a77d4d, actors/pokey/pokey_face.rgba16.png +0xb8755755, textures/skybox_tiles/water.11.rgba16.png +0xb858a9a4, textures/skybox_tiles/ccm.29.rgba16.png +0xb8378cd9, textures/skybox_tiles/ssl.3.rgba16.png +0xb7c60055, actors/peach/peach_nostril.rgba16.png +0xb7c38322, levels/intro/1.rgba16.png +0xb7c222a8, textures/skybox_tiles/ssl.43.rgba16.png +0xb7b83492, textures/generic/bob_textures.02000.rgba16.png +0xb76d42dd, textures/skybox_tiles/bidw.21.rgba16.png +0xb6cec061, textures/skybox_tiles/water.28.rgba16.png +0xb6a89482, levels/castle_inside/32.rgba16.png +0xb63a3055, textures/sky/rr_textures.03800.rgba16.png +0xb616a7c2, textures/skybox_tiles/bbh.14.rgba16.png +0xb602ab34, textures/skybox_tiles/bits.53.rgba16.png +0xb5da0b63, textures/skybox_tiles/bits.10.rgba16.png +0xb5b2c148, textures/spooky/bbh_textures.00000.rgba16.png +0xb5ac8928, levels/castle_inside/19.rgba16.png +0xb59d468a, levels/ttm/4.rgba16.png +0xb596cb90, actors/explosion/explosion_4.rgba16.png +0xb55e9b94, textures/skybox_tiles/ssl.36.rgba16.png +0xb54d1a02, actors/water_splash/water_splash_5.rgba16.png +0xb5135c61, textures/water/jrb_textures.00000.rgba16.png +0xb50de959, textures/fire/lll_textures.09800.rgba16.png +0xb4cad4f7, textures/mountain/ttm_textures.0B800.rgba16.png +0xb4aa0e1c, actors/chillychief/chill_bully_right_side.rgba16.png +0xb48bb452, textures/skybox_tiles/ssl.9.rgba16.png +0xb484b601, textures/skybox_tiles/cloud_floor.7.rgba16.png +0xb45578dc, textures/skybox_tiles/bbh.34.rgba16.png +0xb453cc4a, textures/skybox_tiles/bitfs.24.rgba16.png +0xb452cbbe, actors/tree/tree_right_side.rgba16.png +0xb416574c, textures/skybox_tiles/cloud_floor.24.rgba16.png +0xb401e19f, levels/ttm/3.rgba16.png +0xb3f25163, textures/skybox_tiles/bbh.24.rgba16.png +0xb3c88877, textures/skybox_tiles/ssl.48.rgba16.png +0xb2efd400, textures/skybox_tiles/bidw.47.rgba16.png +0xb2dbccae, actors/penguin/penguin_eye_open.rgba16.png +0xb271db5b, textures/skybox_tiles/bits.60.rgba16.png +0xb2718db8, levels/ccm/3.rgba16.png +0xb26d42c0, textures/skybox_tiles/bits.51.rgba16.png +0xb267fdf0, actors/chain_chomp/chain_chomp_eye.rgba16.png +0xb2444e60, textures/skybox_tiles/bits.58.rgba16.png +0xb1f1cc42, textures/grass/wf_textures.07000.rgba16.png +0xb1e98f62, textures/skybox_tiles/ssl.32.rgba16.png +0xb1386a2e, textures/fire/lll_textures.00000.rgba16.png +0xb1330909, textures/skybox_tiles/ccm.11.rgba16.png +0xb1237167, levels/castle_inside/15.rgba16.png +0xb11fdc36, actors/boo/boo_eyes.rgba16.png +0xb11fdc36, actors/boo_castle/bbh_boo_eyes.rgba16.png +0xb114863b, textures/sky/rr_textures.07800.rgba16.png +0xb0fe2869, textures/skybox_tiles/ccm.42.rgba16.png +0xb0cd69ef, levels/bits/2.rgba16.png +0xb0a791ee, textures/skybox_tiles/ssl.39.rgba16.png +0xb09f7ff5, textures/skybox_tiles/cloud_floor.39.rgba16.png +0xb017cff7, levels/bowser_1/0.rgba16.png +0xafcc9de7, textures/skybox_tiles/ssl.7.rgba16.png +0xaf89c8f8, levels/wdw/4.rgba16.png +0xaf7b75c2, textures/skybox_tiles/bbh.38.rgba16.png +0xaef22277, textures/generic/bob_textures.05800.rgba16.png +0xaec008c0, textures/generic/bob_textures.09800.rgba16.png +0xae1d5dc1, actors/bomb/bomb_spike.rgba16.png +0xae1d5dc1, actors/water_mine/water_mine_spike_unused.rgba16.png +0xae019762, levels/bob/4.rgba16.png +0xadb81440, textures/skybox_tiles/bidw.51.rgba16.png +0xad35a744, actors/unagi/unagi_tail.rgba16.png +0xacec3f69, textures/skybox_tiles/bbh.37.rgba16.png +0xac05a9ff, levels/castle_grounds/5.ia8.png +0xab7a67d1, textures/skybox_tiles/clouds.18.rgba16.png +0xaacf41c9, textures/skybox_tiles/clouds.35.rgba16.png +0xaa5a7898, textures/skybox_tiles/bbh.11.rgba16.png +0xa9f1685a, textures/skybox_tiles/bits.17.rgba16.png +0xa9de87a8, textures/skybox_tiles/water.41.rgba16.png +0xa8ff4543, levels/castle_inside/26.rgba16.png +0xa87f6678, textures/skybox_tiles/cloud_floor.44.rgba16.png +0xa84756ae, textures/skybox_tiles/wdw.47.rgba16.png +0xa833e954, actors/mr_i_iris/mr_i_iris_closed.rgba16.png +0xa808d20a, textures/fire/lll_textures.07000.rgba16.png +0xa804c734, levels/lll/17.rgba16.png +0xa7c0a6eb, levels/totwc/3.ia16.png +0xa7bdd88f, actors/whirlpool/whirlpool.ia16.png +0xa7bdd88f, actors/tornado/tornado.ia16.png +0xa765aaa8, actors/exclamation_box/wing_cap_box_front.rgba16.png +0xa742c5e3, textures/skybox_tiles/wdw.60.rgba16.png +0xa7398f08, textures/segment2/segment2.081D0.rgba16.png +0xa72c7c50, textures/skybox_tiles/wdw.46.rgba16.png +0xa71d06b9, actors/bobomb/bob-omb_left_side.rgba16.png +0xa6e20840, textures/outside/castle_grounds_textures.08800.rgba16.png +0xa6d0d0cc, textures/skybox_tiles/ssl.61.rgba16.png +0xa65a6e86, levels/menu/main_menu_seg7_us.0B1C0.ia8.png +0xa6592f52, textures/skybox_tiles/wdw.34.rgba16.png +0xa6469110, actors/skeeter/skeeter_iris.rgba16.png +0xa6463a8d, textures/inside/inside_castle_textures.05000.rgba16.png +0xa6411501, actors/stomp_smoke/stomp_smoke_0.ia16.png +0xa608942f, textures/skybox_tiles/water.4.rgba16.png +0xa5e5250e, textures/skybox_tiles/clouds.17.rgba16.png +0xa58a82f8, textures/skybox_tiles/cake.19.rgba16.png +0xa554538a, textures/skybox_tiles/wdw.54.rgba16.png +0xa5063adb, textures/skybox_tiles/bitfs.36.rgba16.png +0xa4c2448b, textures/skybox_tiles/ssl.40.rgba16.png +0xa4b86dc8, textures/skybox_tiles/ssl.0.rgba16.png +0xa4af5230, textures/spooky/bbh_textures.0A000.rgba16.png +0xa4af5230, actors/haunted_cage/bbh_cage_floor.rgba16.png +0xa4908044, textures/skybox_tiles/cloud_floor.1.rgba16.png +0xa4841a07, actors/flame/flame_0.ia16.png +0xa46217ab, textures/skybox_tiles/bitfs.11.rgba16.png +0xa44df3e3, textures/segment2/shadow_quarter_circle.ia8.png +0xa436e205, textures/skybox_tiles/bits.29.rgba16.png +0xa4316e88, textures/skybox_tiles/bidw.31.rgba16.png +0xa3da7f18, textures/generic/bob_textures.08000.rgba16.png +0xa3da7f18, levels/ssl/7.rgba16.png +0xa3c0d76f, actors/mad_piano/mad_piano_keys_corner.rgba16.png +0xa3936ee4, textures/skybox_tiles/wdw.43.rgba16.png +0xa356667c, textures/skybox_tiles/cloud_floor.55.rgba16.png +0xa34f223c, levels/menu/main_menu_seg7.02018.rgba16.png +0xa349a078, textures/skybox_tiles/bits.36.rgba16.png +0xa34577b4, textures/skybox_tiles/ssl.42.rgba16.png +0xa3067f0b, textures/skybox_tiles/ccm.52.rgba16.png +0xa2f695a8, levels/vcutm/1.rgba16.png +0xa2f30414, actors/wiggler/wiggler_nose_right_side.rgba16.png +0xa2d48f6c, levels/bob/3.rgba16.png +0xa290798b, levels/bits/1.rgba16.png +0xa23342e2, actors/mushroom_1up/1-up_mushroom.rgba16.png +0xa22a5a73, levels/cotmc/0.rgba16.png +0xa2013a12, textures/segment2/segment2.03A00.rgba16.png +0xa1ae1a01, textures/water/jrb_textures.04800.rgba16.png +0xa15fb7b8, textures/intro_raw/white_star_2.rgba16.png +0xa1261baa, textures/skybox_tiles/clouds.31.rgba16.png +0xa11b5cf3, textures/grass/wf_textures.06000.rgba16.png +0xa11b5cf3, textures/sky/rr_textures.05000.rgba16.png +0xa11454a9, actors/bubba/bubba_fins.rgba16.png +0xa11454a9, actors/bub/bub_fins.rgba16.png +0xa0a0a907, textures/skybox_tiles/ssl.51.rgba16.png +0xa0974d75, textures/segment2/segment2.04A00.rgba16.png +0xa08e284c, levels/castle_inside/11.rgba16.png +0xa0869522, actors/bowser/bowser_eye_right_1.rgba16.png +0xa0869522, actors/bowser/bowser_eye_right_0.rgba16.png +0xa07bcde0, textures/skybox_tiles/clouds.20.rgba16.png +0xa055e62e, levels/cotmc/1.rgba16.png +0x9fcddce1, textures/inside/inside_castle_textures.09000.rgba16.png +0x9fbecef9, actors/mario/mario_eyes_half_closed.rgba16.png +0x9fb76a34, textures/skybox_tiles/cloud_floor.38.rgba16.png +0x9fa96b1f, textures/mountain/ttm_textures.01800.rgba16.png +0x9f82c465, textures/skybox_tiles/ccm.41.rgba16.png +0x9f6dd214, textures/skybox_tiles/bidw.17.rgba16.png +0x9f6bff93, textures/skybox_tiles/ccm.55.rgba16.png +0x9f02a40f, actors/power_meter/power_meter_five_segments.rgba16.png +0x9eb76583, textures/skybox_tiles/bitfs.34.rgba16.png +0x9e94b9f1, textures/skybox_tiles/bidw.26.rgba16.png +0x9e520cb2, textures/skybox_tiles/bbh.16.rgba16.png +0x9e4203ff, textures/skybox_tiles/bitfs.13.rgba16.png +0x9e30aed1, textures/skybox_tiles/bitfs.10.rgba16.png +0x9df06e15, levels/wdw/2.rgba16.png +0x9dc7c1e8, actors/spindrift/spindrift_head.rgba16.png +0x9dbb856e, textures/skybox_tiles/ccm.54.rgba16.png +0x9d15e307, levels/ccm/12.rgba16.png +0x9d13156e, textures/skybox_tiles/water.8.rgba16.png +0x9cfe9f81, textures/grass/wf_textures.0B000.ia16.png +0x9cfe9f81, textures/generic/bob_textures.0B000.ia16.png +0x9cfe9f81, textures/outside/castle_grounds_textures.0BC00.ia16.png +0x9cab9c3a, textures/snow/ccm_textures.04800.rgba16.png +0x9c977cff, actors/door/hmc_mural_door_overlay.rgba16.png +0x9c8d6967, textures/skybox_tiles/cake.10.rgba16.png +0x9c6fa38a, textures/skybox_tiles/bbh.18.rgba16.png +0x9c50af6d, actors/walk_smoke/walk_smoke_4.ia16.png +0x9c0e821e, textures/water/jrb_textures.09000.rgba16.png +0x9bf7992d, textures/skybox_tiles/ssl.25.rgba16.png +0x9be30b6e, textures/inside/inside_castle_textures.03000.rgba16.png +0x9bd37209, textures/skybox_tiles/cake.18.rgba16.png +0x9b6b4dbc, textures/snow/ccm_textures.03000.rgba16.png +0x9b650ed0, actors/heave_ho/heave-ho_logo.rgba16.png +0x9b61a230, textures/grass/wf_textures.08800.rgba16.png +0x9b4befb8, textures/cave/hmc_textures.04800.rgba16.png +0x9b42abea, actors/manta/manta_fin_edge.rgba16.png +0x9af43b47, textures/skybox_tiles/bits.61.rgba16.png +0x9ae320d1, textures/segment2/segment2.06F80.rgba16.png +0x9a729c51, textures/fire/lll_textures.03800.rgba16.png +0x9a6d7782, levels/menu/main_menu_seg7_us.0B4C0.ia8.png +0x9a5a2fb3, actors/door/bbh_door_overlay.rgba16.png +0x99a009d0, textures/skybox_tiles/ccm.58.rgba16.png +0x9965c006, actors/door/polished_wooden_door_overlay.rgba16.png +0x99302633, textures/skybox_tiles/bitfs.37.rgba16.png +0x992737d1, textures/skybox_tiles/cake.32.rgba16.png +0x98daf219, textures/skybox_tiles/wdw.63.rgba16.png +0x98c99a4d, textures/skybox_tiles/clouds.37.rgba16.png +0x98c45311, textures/skybox_tiles/clouds.23.rgba16.png +0x988f8d4a, textures/segment2/segment2.06D80.rgba16.png +0x981fc4c1, levels/castle_inside/37.rgba16.png +0x97e53259, textures/cave/hmc_textures.07800.rgba16.png +0x9791b947, textures/skybox_tiles/bits.56.rgba16.png +0x976dbc10, textures/outside/castle_grounds_textures.00000.rgba16.png +0x9759dcd0, actors/bowser/bowser_hair.rgba16.png +0x96fad568, textures/skybox_tiles/ssl.19.rgba16.png +0x96a88f3b, textures/skybox_tiles/water.3.rgba16.png +0x968fa8ce, textures/outside/castle_grounds_textures.0B400.rgba16.png +0x968ec1c4, actors/moneybag/moneybag_eyes.rgba16.png +0x9678001c, textures/snow/ccm_textures.02000.rgba16.png +0x9663b6f7, textures/skybox_tiles/bbh.27.rgba16.png +0x964a7e66, levels/menu/main_menu_seg7_us.0B200.ia8.png +0x962278d5, textures/segment2/segment2.06500.rgba16.png +0x95c4562e, levels/castle_inside/20.rgba16.png +0x9513887c, textures/segment2/segment2.00600.rgba16.png +0x94776f27, actors/cannon_barrel/cannon_barrel.rgba16.png +0x946f580c, actors/metal_box/metal_box_side.rgba16.png +0x946e561b, levels/castle_inside/18.rgba16.png +0x945c9872, levels/menu/main_menu_seg7_us.0B440.ia8.png +0x945943b1, levels/lll/5.rgba16.png +0x942949f4, textures/skybox_tiles/water.18.rgba16.png +0x940954ac, textures/skybox_tiles/wdw.40.rgba16.png +0x93d4ee01, actors/door/metal_door_overlay.rgba16.png +0x93ae5517, textures/grass/wf_textures.02000.rgba16.png +0x937650b4, textures/skybox_tiles/bidw.16.rgba16.png +0x9374994c, actors/stomp_smoke/stomp_smoke_5.ia16.png +0x93507e3b, textures/skybox_tiles/bidw.28.rgba16.png +0x934dc3b3, textures/intro_raw/red_star_1.rgba16.png +0x933c8f9c, textures/machine/ttc_textures.08400.rgba16.png +0x933976b9, textures/skybox_tiles/water.26.rgba16.png +0x931ab56d, levels/wf/5.ia8.png +0x931ab56d, textures/segment2/shadow_quarter_square.ia8.png +0x930392d9, textures/skybox_tiles/bits.44.rgba16.png +0x92f79940, textures/cave/hmc_textures.07000.rgba16.png +0x92e17e06, textures/skybox_tiles/wdw.3.rgba16.png +0x92ad1eef, textures/segment2/segment2.05600.rgba16.png +0x92a6e121, textures/skybox_tiles/ccm.46.rgba16.png +0x928d4e78, actors/water_splash/water_splash_3.rgba16.png +0x92828a2b, actors/walk_smoke/walk_smoke_2.ia16.png +0x92766b78, levels/menu/main_menu_seg7_us.0B400.ia8.png +0x923c687e, actors/flyguy/flyguy_face.rgba16.png +0x9205f8fc, textures/skybox_tiles/bidw.37.rgba16.png +0x91787803, textures/skybox_tiles/ssl.26.rgba16.png +0x912f6e5e, textures/skybox_tiles/ccm.44.rgba16.png +0x91252367, levels/bitfs/1.rgba16.png +0x90ef51bb, levels/castle_inside/22.rgba16.png +0x908bb0a5, textures/skybox_tiles/bidw.30.rgba16.png +0x906ff62e, actors/sparkle/sparkle_1.rgba16.png +0x9066e92b, levels/vcutm/0.rgba16.png +0x905d3214, actors/mario_cap/mario_cap_logo.rgba16.png +0x905d3214, actors/mario/mario_logo.rgba16.png +0x90581231, actors/klepto/klepto_chest_tuft.rgba16.png +0x9026cba3, textures/generic/bob_textures.08800.rgba16.png +0x90027a49, actors/poundable_pole/poundable_pole_side.rgba16.png +0x8fc7fac2, textures/sky/rr_textures.02000.rgba16.png +0x8f92529c, textures/skybox_tiles/water.5.rgba16.png +0x8f698cc1, actors/treasure_chest/treasure_chest_side.rgba16.png +0x8f523ef1, textures/mountain/ttm_textures.0B000.rgba16.png +0x8f25c650, levels/lll/32.rgba16.png +0x8ee5398c, levels/castle_inside/4.rgba16.png +0x8edc5be4, textures/skybox_tiles/bbh.32.rgba16.png +0x8ecffabb, textures/title_screen_bg/title_screen_bg.04040.rgba16.png +0x8e58d68a, textures/skybox_tiles/water.49.rgba16.png +0x8e41ffcd, actors/king_bobomb/king_bob-omb_hand.rgba16.png +0x8e41ffcd, actors/yellow_sphere/yellow_sphere.rgba16.png +0x8e41ffcd, actors/yellow_sphere_small/small_yellow_sphere.rgba16.png +0x8e28628b, levels/bitfs/2.rgba16.png +0x8db2e5ca, textures/snow/ccm_textures.06800.rgba16.png +0x8d6b1df6, actors/bowser/bowser_claw_horn_angle.rgba16.png +0x8d5f88c4, textures/skybox_tiles/cake.41.rgba16.png +0x8d2f37b0, levels/hmc/5.rgba16.png +0x8d030865, levels/castle_inside/13.rgba16.png +0x8cc10b27, textures/skybox_tiles/clouds.2.rgba16.png +0x8c748686, levels/menu/main_menu_seg7_us.0B380.ia8.png +0x8c1ebb7f, actors/manta/manta_fin_corner.rgba16.png +0x8b826df7, textures/title_screen_bg/title_screen_bg.01AC0.rgba16.png +0x8b6c6929, levels/castle_inside/33.rgba16.png +0x8b50e442, levels/ssl/0.rgba16.png +0x8b462047, textures/skybox_tiles/ccm.45.rgba16.png +0x8af0e7be, textures/skybox_tiles/water.1.rgba16.png +0x8ac74230, actors/chain_chomp/chain_chomp_bright_shine.rgba16.png +0x8a94d5a3, actors/walk_smoke/walk_smoke_0.ia16.png +0x8a6a5e6e, levels/menu/main_menu_seg7_us.0B3C0.ia8.png +0x8a687694, textures/segment2/font_graphics.06410.ia1.png +0x8a4df121, textures/skybox_tiles/cake.1.rgba16.png +0x8a4df121, textures/skybox_tiles/cake.2.rgba16.png +0x89cfd188, textures/skybox_tiles/clouds.7.rgba16.png +0x89b90233, actors/klepto/klepto_wing.rgba16.png +0x89ac3c05, textures/skybox_tiles/clouds.11.rgba16.png +0x890b9632, actors/heave_ho/heave-ho_face.rgba16.png +0x88e7e346, textures/skybox_tiles/ccm.43.rgba16.png +0x88dc2d34, actors/amp/amp_mouth.rgba16.png +0x88c0ccf9, actors/snowman/mr_blizzard_right_side.rgba16.png +0x889e61ff, textures/skybox_tiles/ccm.14.rgba16.png +0x889d2b5c, textures/skybox_tiles/cloud_floor.6.rgba16.png +0x8899587d, textures/spooky/bbh_textures.03800.rgba16.png +0x888f7075, textures/skybox_tiles/bbh.9.rgba16.png +0x88898880, levels/menu/main_menu_seg7_us.0B680.ia8.png +0x8886887e, levels/menu/main_menu_seg7_us.0B180.ia8.png +0x88788776, levels/menu/main_menu_seg7_us.0AFC0.ia8.png +0x88703c55, textures/segment2/segment2.05800.rgba16.png +0x886b2ff9, actors/king_bobomb/king_bob-omb_left_side.rgba16.png +0x88654139, textures/machine/ttc_textures.07000.rgba16.png +0x8853b016, textures/skybox_tiles/wdw.12.rgba16.png +0x88493238, levels/castle_inside/21.rgba16.png +0x880ed312, textures/skybox_tiles/cloud_floor.0.rgba16.png +0x87d447af, actors/treasure_chest/treasure_chest_lock_top.rgba16.png +0x87c25fe2, textures/skybox_tiles/water.40.rgba16.png +0x87805a7c, actors/sparkle_animation/sparkle_animation_3.ia16.png +0x87786913, actors/mr_i_eyeball/mr_i_eyeball_right_side.rgba16.png +0x877137a9, actors/door/hmc_mural_door.rgba16.png +0x875630d6, actors/blue_coin_switch/blue_coin_switch_top.rgba16.png +0x8726a741, textures/skybox_tiles/ccm.25.rgba16.png +0x86fb2f22, actors/koopa/koopa_shell_front_top.rgba16.png +0x86fb0c9f, textures/machine/ttc_textures.05800.rgba16.png +0x86b7d553, textures/segment2/segment2.03200.rgba16.png +0x86b5c15f, textures/skybox_tiles/cloud_floor.50.rgba16.png +0x86a4d0dc, textures/skybox_tiles/ccm.51.rgba16.png +0x869d1c9b, textures/skybox_tiles/bbh.12.rgba16.png +0x86868886, levels/menu/main_menu_seg7_us.0B640.ia8.png +0x8675f075, textures/skybox_tiles/wdw.1.rgba16.png +0x86712a04, actors/amp/amp_electricity.rgba16.png +0x861dc3cf, textures/grass/wf_textures.00000.rgba16.png +0x85a91338, textures/skybox_tiles/ssl.13.rgba16.png +0x85887ee4, actors/piranha_plant/piranha_plant_tooth.rgba16.png +0x8541d92c, textures/skybox_tiles/ccm.47.rgba16.png +0x852361b6, actors/koopa/koopa_eye_border.rgba16.png +0x85204772, levels/ssl/3.rgba16.png +0x84fed0d8, textures/snow/ccm_textures.00800.rgba16.png +0x84836b2d, actors/walk_smoke/walk_smoke_6.ia16.png +0x84806080, levels/menu/main_menu_seg7_us.0B140.ia8.png +0x84788778, levels/menu/main_menu_seg7_us.0B000.ia8.png +0x846a6656, levels/menu/main_menu_seg7_us.0B080.ia8.png +0x84651765, textures/skybox_tiles/cloud_floor.32.rgba16.png +0x8464cc0c, actors/whomp/whomp_surface.rgba16.png +0x8413a8fa, actors/exclamation_box/metal_cap_box_side.rgba16.png +0x83d5ba14, textures/machine/ttc_textures.04000.rgba16.png +0x83101fa2, levels/rr/quarter_flying_carpet.rgba16.png +0x8300dd14, levels/castle_inside/25.rgba16.png +0x82c55dc1, textures/skybox_tiles/clouds.15.rgba16.png +0x82b146cd, textures/fire/lll_textures.05000.rgba16.png +0x829b7107, levels/hmc/2.rgba16.png +0x8299c450, levels/ccm/4.rgba16.png +0x8296d820, textures/outside/castle_grounds_textures.03800.rgba16.png +0x82888684, levels/menu/main_menu_seg7_us.0B600.ia8.png +0x82868870, levels/menu/main_menu_seg7_us.0AC80.ia8.png +0x82487dab, textures/skybox_tiles/ccm.28.rgba16.png +0x822ff6df, actors/scuttlebug/scuttlebug_iris.rgba16.png +0x822b53ed, textures/skybox_tiles/ccm.33.rgba16.png +0x8213677c, actors/mad_piano/mad_piano_keys.rgba16.png +0x8202be27, textures/skybox_tiles/cake.21.rgba16.png +0x81f9d9f5, textures/grass/wf_textures.04800.rgba16.png +0x81bb18e0, textures/segment2/segment2.04800.rgba16.png +0x81b554a7, actors/monty_mole_hole/monty_mole_hole.ia16.png +0x8188e2dd, actors/sparkle/sparkle_3.rgba16.png +0x8141bbbc, textures/skybox_tiles/bits.42.rgba16.png +0x812626f9, textures/skybox_tiles/bitfs.33.rgba16.png +0x81175ed5, textures/skybox_tiles/bitfs.32.rgba16.png +0x810a6136, textures/fire/lll_textures.08800.rgba16.png +0x8093d98d, textures/skybox_tiles/bidw.12.rgba16.png +0x808c10c2, actors/king_bobomb/king_bob-omb_right_side.rgba16.png +0x80788486, levels/menu/main_menu_seg7_us.0B6C0.ia8.png +0x8076d349, textures/skybox_tiles/ccm.24.rgba16.png +0x8073de72, actors/bookend/bookend_cover.rgba16.png +0x8073de72, actors/book/book_cover.rgba16.png +0x80707e74, levels/menu/main_menu_seg7_us.0B100.ia8.png +0x80443eae, textures/skybox_tiles/cake.11.rgba16.png +0x7fcd908d, textures/skybox_tiles/clouds.26.rgba16.png +0x7fcb976c, textures/skybox_tiles/bidw.29.rgba16.png +0x7f9ccd83, textures/cave/hmc_textures.03000.rgba16.png +0x7f86b16b, textures/skybox_tiles/clouds.8.rgba16.png +0x7f832c86, textures/generic/bob_textures.00000.rgba16.png +0x7f5468e5, textures/skybox_tiles/bidw.43.rgba16.png +0x7f0c0d1a, textures/skybox_tiles/bbh.35.rgba16.png +0x7ecf9e44, textures/fire/lll_textures.04000.rgba16.png +0x7ebe7d5e, actors/exclamation_box/vanish_cap_box_front.rgba16.png +0x7eb3fe85, actors/bowser/bowser_shell_edge.rgba16.png +0x7e91d91e, textures/skybox_tiles/cloud_floor.37.rgba16.png +0x7e7433a6, levels/vcutm/3.rgba16.png +0x7e5c3a04, actors/exclamation_box/metal_cap_box_front.rgba16.png +0x7e5c24f7, textures/sky/rr_textures.07000.rgba16.png +0x7e28666b, textures/water/jrb_textures.0B800.rgba16.png +0x7e27e43f, textures/skybox_tiles/ssl.17.rgba16.png +0x7e216e16, actors/peach/peach_chest_jewel.rgba16.png +0x7e1d47db, textures/skybox_tiles/ssl.55.rgba16.png +0x7dcc1ab5, textures/skybox_tiles/bits.38.rgba16.png +0x7d398ef0, textures/skybox_tiles/bits.50.rgba16.png +0x7d23e625, textures/skybox_tiles/water.15.rgba16.png +0x7cfb23b0, textures/fire/lll_textures.0B000.rgba16.png +0x7ce8869d, actors/mist/mist.ia16.png +0x7cc51e15, textures/segment2/segment2.02000.rgba16.png +0x7cb09e26, textures/skybox_tiles/water.34.rgba16.png +0x7c9e686e, levels/menu/main_menu_seg7_us.0B500.ia8.png +0x7c98dfa7, textures/skybox_tiles/cloud_floor.8.rgba16.png +0x7c2d13c9, textures/segment2/segment2.00400.rgba16.png +0x7b8e4ac2, actors/peach/peach_eye_mostly_closed.rgba16.png +0x7b8e447d, levels/ddd/3.rgba16.png +0x7b84a495, actors/bowser/bowser_eye_left_1.rgba16.png +0x7b84a495, actors/bowser/bowser_eye_left_0.rgba16.png +0x7b7a6ad1, actors/chuckya/chuckya_hand_antenna.rgba16.png +0x7af76431, textures/skybox_tiles/bidw.45.rgba16.png +0x7af18328, actors/tree/palm_tree.rgba16.png +0x7ae8e843, levels/lll/28.rgba16.png +0x7ab277b8, textures/segment2/segment2.02A00.rgba16.png +0x7a96785c, levels/menu/main_menu_seg7_us.0AD80.ia8.png +0x7a86845c, levels/menu/main_menu_seg7_us.0ADC0.ia8.png +0x7a6ab5a7, textures/sky/rr_textures.08000.rgba16.png +0x7a1b62b1, textures/mountain/ttm_textures.07000.rgba16.png +0x79d8c749, textures/grass/wf_textures.05800.rgba16.png +0x79d25afb, textures/machine/ttc_textures.00000.rgba16.png +0x79c8997d, textures/skybox_tiles/ssl.14.rgba16.png +0x795fe3b9, textures/skybox_tiles/bits.25.rgba16.png +0x78b59e82, actors/penguin/penguin_beak.rgba16.png +0x78ab0f9f, textures/spooky/bbh_textures.07000.rgba16.png +0x78a6db75, actors/mr_i_iris/mr_i_iris_mostly_closed.rgba16.png +0x78986182, levels/menu/main_menu_seg7_us.0AF40.ia8.png +0x788c8286, levels/menu/main_menu_seg7_us.0B0C0.ia8.png +0x7889781a, textures/skybox_tiles/wdw.61.rgba16.png +0x786b7070, levels/menu/main_menu_seg7_us.0AF80.ia8.png +0x784949ca, textures/segment2/segment2.06E00.rgba16.png +0x783b816b, levels/sl/0.rgba16.png +0x77ec8240, textures/skybox_tiles/ccm.38.rgba16.png +0x77c0ff44, textures/skybox_tiles/cake.3.rgba16.png +0x775a5057, textures/water/jrb_textures.02800.rgba16.png +0x7749b0d9, textures/segment2/segment2.0F458.ia8.png +0x77290eb2, actors/lakitu_enemy/lakitu_enemy_frown.rgba16.png +0x77290eb2, actors/lakitu_cameraman/lakitu_cameraman_frown.rgba16.png +0x76f2963d, textures/skybox_tiles/cloud_floor.60.rgba16.png +0x76e8d87c, textures/mountain/ttm_textures.06800.rgba16.png +0x76abe6db, textures/skybox_tiles/cloud_floor.51.rgba16.png +0x767c6068, levels/menu/main_menu_seg7_us.0AF00.ia8.png +0x761b53e2, actors/bub/bub_eye_border.rgba16.png +0x761b53e2, actors/bubba/bubba_eye_border.rgba16.png +0x75ef9a90, textures/skybox_tiles/ssl.8.rgba16.png +0x75d9483a, textures/segment2/segment2.06980.rgba16.png +0x75701f22, textures/title_screen_bg/title_screen_bg.04CC0.rgba16.png +0x74c13ed4, textures/skybox_tiles/cloud_floor.36.rgba16.png +0x747b1b07, textures/skybox_tiles/bits.55.rgba16.png +0x746a5d31, textures/fire/lll_textures.00800.rgba16.png +0x74535372, textures/skybox_tiles/ccm.22.rgba16.png +0x744a7d8e, textures/snow/ccm_textures.02800.rgba16.png +0x742fd706, textures/grass/wf_textures.00800.rgba16.png +0x74141022, levels/wdw/1.rgba16.png +0x73d7c121, levels/castle_inside/8.rgba16.png +0x7378a96f, textures/effect/lava_bubble.04020.rgba16.png +0x73505869, textures/grass/wf_textures.03800.rgba16.png +0x73276400, textures/skybox_tiles/bbh.25.rgba16.png +0x7323e612, levels/lll/13.rgba16.png +0x730da5f2, textures/inside/inside_castle_textures.02000.rgba16.png +0x72d28485, textures/skybox_tiles/bbh.7.rgba16.png +0x72cb8c7f, levels/menu/main_menu_seg7.05468.rgba16.png +0x72a1d4b8, textures/skybox_tiles/cake.36.rgba16.png +0x729c6184, levels/menu/main_menu_seg7_us.0B340.ia8.png +0x726d3efe, textures/outside/castle_grounds_textures.04800.rgba16.png +0x723edcd4, actors/peach/peach_lips_scrunched.rgba16.png +0x71ffbf4d, textures/skybox_tiles/cloud_floor.41.rgba16.png +0x71d8c330, textures/skybox_tiles/cloud_floor.22.rgba16.png +0x718c4694, textures/skybox_tiles/bidw.34.rgba16.png +0x7134b6dd, textures/inside/inside_castle_textures.05800.rgba16.png +0x6ff2aac5, levels/castle_inside/39.rgba16.png +0x6fa30457, textures/fire/lll_textures.08000.rgba16.png +0x6f7df292, actors/amp/amp_body.rgba16.png +0x6f5155ba, textures/grass/wf_textures.0B800.ia16.png +0x6f32a4fb, textures/segment2/segment2.07B50.rgba16.png +0x6f146752, textures/skybox_tiles/water.51.rgba16.png +0x6eb6822e, textures/skybox_tiles/bidw.49.rgba16.png +0x6eb46458, levels/menu/main_menu_seg7_us.0B800.ia8.png +0x6e969590, textures/skybox_tiles/bitfs.46.rgba16.png +0x6e88f5e0, textures/skybox_tiles/bbh.39.rgba16.png +0x6e6a49ef, actors/bowser/bowser_body.rgba16.png +0x6e489603, actors/heave_ho/heave-ho_arm_ornament.rgba16.png +0x6e3243f8, textures/machine/ttc_textures.01800.rgba16.png +0x6dca9cd5, textures/generic/bob_textures.01000.rgba16.png +0x6db140ad, textures/skybox_tiles/ccm.31.rgba16.png +0x6dabf6c8, textures/skybox_tiles/bits.12.rgba16.png +0x6da0b1b9, textures/inside/inside_castle_textures.07000.rgba16.png +0x6d8cfa2f, levels/bowser_2/0.rgba16.png +0x6d6c38e3, actors/unagi/unagi_eye.rgba16.png +0x6d1039d9, textures/skybox_tiles/wdw.16.rgba16.png +0x6d0c18aa, textures/skybox_tiles/ssl.52.rgba16.png +0x6d083a48, actors/bookend/bookend_spine.rgba16.png +0x6d00c07c, textures/skybox_tiles/cloud_floor.29.rgba16.png +0x6cf04010, levels/sl/1.rgba16.png +0x6ca78364, actors/power_meter/power_meter_right_side.rgba16.png +0x6c902269, actors/dorrie/dorrie_skin.rgba16.png +0x6c889c54, levels/menu/main_menu_seg7_us.0AD00.ia8.png +0x6c706165, textures/skybox_tiles/cake.22.rgba16.png +0x6c6a6686, textures/segment2/font_graphics.06420.ia1.png +0x6c64eb0b, textures/segment2/segment2.01800.rgba16.png +0x6c5cc56f, actors/heave_ho/heave-ho_platform.rgba16.png +0x6c42dff7, textures/skybox_tiles/clouds.0.rgba16.png +0x6c3ce89f, textures/cave/hmc_textures.0C000.ia16.png +0x6c3ce89f, textures/spooky/bbh_textures.0A800.ia16.png +0x6c064a7f, textures/skybox_tiles/clouds.36.rgba16.png +0x6bf1d4ea, textures/intro_raw/sparkle_4.rgba16.png +0x6befedb8, levels/hmc/4.rgba16.png +0x6bcc2e51, actors/snufit/snufit_mouth.rgba16.png +0x6bc84af5, textures/skybox_tiles/cake.46.rgba16.png +0x6bc75681, textures/segment2/segment2.02E00.rgba16.png +0x6b8d43c4, actors/mario/mario_eyes_center.rgba16.png +0x6b3a40a5, actors/bowser/bowser_eye_center_0.rgba16.png +0x6b3a40a5, actors/bowser/bowser_eye_center_1.rgba16.png +0x6b1fc91a, textures/segment2/segment2.00000.rgba16.png +0x6af6b17f, actors/bowser/bowser_eyebrow.rgba16.png +0x6aca7d17, textures/skybox_tiles/water.38.rgba16.png +0x6ac8d5d1, actors/skeeter/skeeter_eye.rgba16.png +0x6abebff0, actors/klepto/klepto_wing_flap.rgba16.png +0x6aa1be26, textures/inside/inside_castle_textures.04000.rgba16.png +0x6a925357, levels/ddd/1.rgba16.png +0x6a925357, textures/cave/hmc_textures.01000.rgba16.png +0x6a925357, levels/jrb/0.rgba16.png +0x6a8bf6a8, textures/skybox_tiles/wdw.32.rgba16.png +0x6a799547, textures/skybox_tiles/cake.40.rgba16.png +0x6a748651, levels/lll/31.rgba16.png +0x6a4bef91, actors/snowman/mr_blizzard_mitten.rgba16.png +0x6a32a053, textures/effect/tiny_bubble.06AD8.rgba16.png +0x6a17a436, textures/skybox_tiles/ssl.11.rgba16.png +0x69553f79, levels/ttm/6.rgba16.png +0x6926316a, textures/skybox_tiles/cake.27.rgba16.png +0x6906c074, actors/coin/coin_front.ia16.png +0x6905fbf2, textures/skybox_tiles/ccm.30.rgba16.png +0x68cbbcd3, textures/skybox_tiles/bits.9.rgba16.png +0x68c4a756, textures/skybox_tiles/bidw.35.rgba16.png +0x6899f91f, textures/skybox_tiles/ssl.4.rgba16.png +0x688defb4, textures/skybox_tiles/bits.31.rgba16.png +0x688c825c, levels/menu/main_menu_seg7_us.0AE40.ia8.png +0x68886576, levels/menu/main_menu_seg7_us.0B040.ia8.png +0x68886272, levels/menu/main_menu_seg7_us.0B240.ia8.png +0x6879f1f6, textures/water/jrb_textures.0A800.rgba16.png +0x6872e4ff, textures/skybox_tiles/bitfs.14.rgba16.png +0x686c2f97, textures/intro_raw/red_star_6.rgba16.png +0x67d8b446, actors/water_wave/water_wave_3.ia16.png +0x67b3cf11, textures/skybox_tiles/ssl.44.rgba16.png +0x67ad777b, actors/flame/flame_4.ia16.png +0x67a98771, actors/warp_pipe/warp_pipe_top.rgba16.png +0x679a4c71, actors/clam_shell/clam_shell.rgba16.png +0x678bbbc1, levels/castle_inside/10.rgba16.png +0x677cf935, textures/skybox_tiles/cloud_floor.43.rgba16.png +0x677a5e03, textures/skybox_tiles/bits.41.rgba16.png +0x676b6cf3, textures/segment2/segment2.07F50.rgba16.png +0x674fa5c8, actors/water_splash/water_splash_2.rgba16.png +0x6695e997, actors/whomp/whomp_face.rgba16.png +0x66799dcc, levels/menu/main_menu_seg7.06328.rgba16.png +0x6626c09a, textures/fire/lll_textures.07800.rgba16.png +0x65bfa19a, levels/hmc/1.rgba16.png +0x65abbfe9, textures/skybox_tiles/water.30.rgba16.png +0x65542036, textures/cave/hmc_textures.0B800.ia16.png +0x65542036, levels/castle_inside/castle_light.ia16.png +0x6543184d, textures/snow/ccm_textures.00000.rgba16.png +0x6541dd48, levels/lll/15.rgba16.png +0x6505fac3, textures/skybox_tiles/ssl.28.rgba16.png +0x64df79e9, textures/skybox_tiles/ccm.49.rgba16.png +0x648dffc2, textures/skybox_tiles/cloud_floor.42.rgba16.png +0x646a9c64, levels/menu/main_menu_seg7_us.0B480.ia8.png +0x63f6e568, levels/lll/26.rgba16.png +0x63860579, textures/skybox_tiles/bitfs.16.rgba16.png +0x63820423, textures/skybox_tiles/bbh.28.rgba16.png +0x62c94802, actors/koopa/koopa_shell_front.rgba16.png +0x62c94802, actors/koopa_shell/koopa_shell_front.rgba16.png +0x62aefde2, textures/skybox_tiles/ssl.41.rgba16.png +0x629a458d, actors/swoop/swoop_wing.rgba16.png +0x626b987c, textures/skybox_tiles/cloud_floor.57.rgba16.png +0x6218470c, textures/skybox_tiles/bidw.14.rgba16.png +0x61c24b5e, levels/bowser_3/0.rgba16.png +0x61afcdd5, actors/bowser/bowser_armband.rgba16.png +0x617bfb7b, actors/flame/flame_5.ia16.png +0x613a2612, textures/skybox_tiles/cloud_floor.35.rgba16.png +0x611b82b3, levels/ccm/0.rgba16.png +0x610b81d3, levels/intro/2_copyright.rgba16.png +0x6108550a, textures/water/jrb_textures.08800.rgba16.png +0x60dd861c, textures/skybox_tiles/water.14.rgba16.png +0x60dd36f6, textures/grass/wf_textures.0A800.rgba16.png +0x60bcef6e, textures/skybox_tiles/cake.7.rgba16.png +0x60aa80aa, textures/generic/bob_textures.0A800.rgba16.png +0x607a828a, levels/menu/main_menu_seg7_us.0B700.ia8.png +0x6069e288, levels/bits/0.rgba16.png +0x603ab9fe, levels/castle_inside/35.rgba16.png +0x60351310, levels/bowser_1/1.rgba16.png +0x602ef33f, textures/generic/bob_textures.05000.rgba16.png +0x5ff8d3ef, actors/water_wave/water_wave_2.ia16.png +0x5fc183ba, textures/skybox_tiles/bitfs.26.rgba16.png +0x5f5e3df7, textures/skybox_tiles/ssl.46.rgba16.png +0x5f328955, textures/outside/castle_grounds_textures.09800.rgba16.png +0x5f035ec5, actors/koopa_shell/koopa_shell_back.rgba16.png +0x5f035ec5, actors/koopa/koopa_shell_back.rgba16.png +0x5ef65dd9, textures/segment2/segment2.00A00.rgba16.png +0x5e819c11, textures/skybox_tiles/bbh.5.rgba16.png +0x5dfa73ac, actors/bubble/mr_i_bubble.rgba16.png +0x5ddd4bf0, textures/skybox_tiles/bbh.8.rgba16.png +0x5d6b0678, actors/mario/mario_eyes_closed_unused_0.rgba16.png +0x5d6b0678, actors/mario/mario_eyes_closed.rgba16.png +0x5d6b0678, actors/mario/mario_eyes_closed_unused_1.rgba16.png +0x5d617ea0, actors/lakitu_enemy/lakitu_enemy_shell.rgba16.png +0x5d617ea0, actors/lakitu_cameraman/lakitu_cameraman_shell.rgba16.png +0x5d5bb4d6, textures/sky/rr_textures.00800.rgba16.png +0x5d58d20c, textures/skybox_tiles/cloud_floor.2.rgba16.png +0x5d3df26f, textures/fire/lll_textures.06000.rgba16.png +0x5cfeb1db, textures/mountain/ttm_textures.08800.rgba16.png +0x5cc5caf7, textures/skybox_tiles/ccm.4.rgba16.png +0x5cc4bed3, actors/mr_i_iris/mr_i_iris_mostly_open.rgba16.png +0x5c403031, textures/water/jrb_textures.01800.rgba16.png +0x5c3873c6, textures/grass/wf_textures.03000.rgba16.png +0x5c293288, textures/skybox_tiles/ccm.5.rgba16.png +0x5c153daf, textures/skybox_tiles/bits.34.rgba16.png +0x5bc5ca75, actors/piranha_plant/piranha_plant_leaf.rgba16.png +0x5b8676cf, actors/white_particle/snow_particle.rgba16.png +0x5af9dfde, levels/ssl/2.rgba16.png +0x5aea7079, actors/piranha_plant/piranha_plant_bottom_lip.rgba16.png +0x5ac90b8d, levels/cotmc/4.rgba16.png +0x5a967a74, levels/menu/main_menu_seg7_us.0B280.ia8.png +0x5a838c70, textures/skybox_tiles/clouds.30.rgba16.png +0x5a807466, levels/menu/main_menu_seg7_us.0AEC0.ia8.png +0x5a2fa13a, textures/skybox_tiles/water.31.rgba16.png +0x5a1a4fbf, textures/skybox_tiles/wdw.52.rgba16.png +0x59d072f0, textures/inside/inside_castle_textures.0B800.rgba16.png +0x59c798d4, textures/skybox_tiles/cake.31.rgba16.png +0x59c3cdd9, levels/bitdw/1.rgba16.png +0x59bbf047, actors/unagi/unagi_head_base.rgba16.png +0x599da7cb, textures/skybox_tiles/water.27.rgba16.png +0x5996660e, levels/lll/7.rgba16.png +0x5996660e, textures/fire/lll_textures.01800.rgba16.png +0x58f28a81, textures/skybox_tiles/ccm.20.rgba16.png +0x58c547bd, textures/skybox_tiles/bidw.19.rgba16.png +0x58a11d1e, textures/skybox_tiles/bits.37.rgba16.png +0x585285d7, actors/bobomb/bob-omb_buddy_left_side.rgba16.png +0x585285d7, actors/king_bobomb/bob-omb_buddy_left_side_unused.rgba16.png +0x580e00a9, textures/segment2/segment2.05A00.rgba16.png +0x57f55b58, actors/sparkle/sparkle_2.rgba16.png +0x57dd4de0, textures/skybox_tiles/cloud_floor.34.rgba16.png +0x57c29c7d, textures/machine/ttc_textures.02800.rgba16.png +0x57a58c22, textures/title_screen_bg/title_screen_bg.02740.rgba16.png +0x579d6c8a, textures/skybox_tiles/cloud_floor.62.rgba16.png +0x579c53ed, textures/water/jrb_textures.05800.rgba16.png +0x579b80b3, textures/skybox_tiles/cloud_floor.10.rgba16.png +0x578aa0e9, actors/penguin/penguin_eye_half_closed.rgba16.png +0x5730faaa, textures/skybox_tiles/water.35.rgba16.png +0x56da6b66, textures/snow/ccm_textures.04000.rgba16.png +0x5691c606, textures/skybox_tiles/bbh.17.rgba16.png +0x56886274, levels/menu/main_menu_seg7_us.0B2C0.ia8.png +0x5663d126, textures/skybox_tiles/cake.17.rgba16.png +0x56450e91, textures/skybox_tiles/wdw.55.rgba16.png +0x5643908b, textures/skybox_tiles/water.25.rgba16.png +0x563280bd, textures/title_screen_bg/title_screen_bg.05940.rgba16.png +0x55eb7a33, textures/skybox_tiles/ssl.33.rgba16.png +0x55e07c1c, textures/effect/lava_bubble.04820.rgba16.png +0x55da5d92, actors/scuttlebug/scuttlebug_right_side.rgba16.png +0x55620576, actors/bowser/bowser_chest.rgba16.png +0x5535f203, actors/pebble/pebble.rgba16.png +0x54fac607, actors/white_particle_small/small_snow_particle.rgba16.png +0x54f2c81a, levels/castle_inside/1.rgba16.png +0x54ca6ddc, textures/skybox_tiles/cloud_floor.40.rgba16.png +0x54670bb6, levels/bitdw/0.rgba16.png +0x540f30ff, textures/skybox_tiles/clouds.27.rgba16.png +0x53cbf3e0, textures/skybox_tiles/water.33.rgba16.png +0x53c1213e, actors/water_ring/water_ring.rgba16.png +0x537d0a34, textures/skybox_tiles/cake.37.rgba16.png +0x53405a73, textures/grass/wf_textures.04000.rgba16.png +0x531bebd4, textures/intro_raw/red_star_4.rgba16.png +0x530a2cf4, textures/title_screen_bg/title_screen_bg.001C0.rgba16.png +0x52fedeb7, actors/wiggler/wiggler_frown.rgba16.png +0x52f9e748, textures/machine/ttc_textures.03800.rgba16.png +0x52d5a8b9, textures/skybox_tiles/ssl.1.rgba16.png +0x52bc0e5e, textures/fire/lll_textures.05800.rgba16.png +0x52a84252, textures/segment2/segment2.03600.rgba16.png +0x527e926c, levels/menu/main_menu_seg7_us.0AD40.ia8.png +0x52749e6e, textures/skybox_tiles/ssl.18.rgba16.png +0x51d4da7f, levels/wmotr/2.rgba16.png +0x51d0a5d0, textures/skybox_tiles/ccm.7.rgba16.png +0x51b5cd93, textures/skybox_tiles/bbh.20.rgba16.png +0x51762e4c, levels/ttm/1.rgba16.png +0x514a29bc, actors/bowser/bowser_upper_face.rgba16.png +0x513bd6b7, actors/seaweed/seaweed_tip.rgba16.png +0x50964858, textures/sky/rr_textures.04800.rgba16.png +0x5095921b, textures/segment2/segment2.12458.rgba16.png +0x508e888f, levels/lll/9.rgba16.png +0x506d1a26, actors/yoshi/yoshi_eye.rgba16.png +0x5050548f, textures/skybox_tiles/bidw.22.rgba16.png +0x4fe1a0ed, actors/peach/peach_lips.rgba16.png +0x4f503c6e, textures/skybox_tiles/bits.24.rgba16.png +0x4f3ece62, textures/skybox_tiles/wdw.38.rgba16.png +0x4f265622, textures/grass/wf_textures.0A000.rgba16.png +0x4f1cac41, textures/skybox_tiles/bitfs.21.rgba16.png +0x4eeefe7d, textures/inside/inside_castle_textures.08000.rgba16.png +0x4ee951e9, textures/segment2/segment2.06C80.rgba16.png +0x4ee94f84, textures/intro_raw/sparkle_3.rgba16.png +0x4ed23be0, levels/hmc/6.rgba16.png +0x4ed18843, textures/skybox_tiles/bbh.13.rgba16.png +0x4eb8714c, actors/door/rough_wooden_door_overlay.rgba16.png +0x4e80fa6f, textures/skybox_tiles/bidw.15.rgba16.png +0x4e6eca8d, textures/cave/hmc_textures.0A000.rgba16.png +0x4e4571c1, textures/segment2/segment2.00800.rgba16.png +0x4e43931b, actors/wiggler/wiggler_nose_left_side.rgba16.png +0x4e0a3338, levels/lll/16.rgba16.png +0x4dedbc41, actors/whomp/whomp_hand.rgba16.png +0x4dc0bbdf, actors/power_meter/power_meter_seven_segments.rgba16.png +0x4d606a9b, textures/skybox_tiles/water.45.rgba16.png +0x4d03386e, textures/generic/bob_textures.03000.rgba16.png +0x4ceef375, textures/skybox_tiles/bits.15.rgba16.png +0x4cdb236c, textures/skybox_tiles/bidw.36.rgba16.png +0x4c947c72, levels/menu/main_menu_seg7_us.0B300.ia8.png +0x4c6ede9f, actors/flame/flame_6.ia16.png +0x4c26a305, textures/machine/ttc_textures.06000.rgba16.png +0x4c001ad4, textures/mountain/ttm_textures.00000.rgba16.png +0x4bcae8d6, textures/skybox_tiles/water.22.rgba16.png +0x4b0c0c56, actors/water_wave/water_wave_1.ia16.png +0x4b070bc3, textures/generic/bob_textures.03800.rgba16.png +0x4a750285, levels/lll/14.rgba16.png +0x4a5830ad, textures/effect/bubble.06048.rgba16.png +0x4a4683bc, textures/spooky/bbh_textures.04800.rgba16.png +0x4a0af053, textures/segment2/segment2.13458.ia16.png +0x4a043c67, textures/skybox_tiles/clouds.32.rgba16.png +0x49f74eb1, actors/ukiki/ukiki_face.rgba16.png +0x49d68918, textures/skybox_tiles/bitfs.3.rgba16.png +0x49a828db, textures/skybox_tiles/cloud_floor.12.rgba16.png +0x49a3631e, textures/grass/wf_textures.08000.rgba16.png +0x49997119, levels/jrb/3.rgba16.png +0x4944d2c9, actors/mips/mips_eyes.rgba16.png +0x49313621, actors/haunted_cage/bbh_cage_wooden_base.rgba16.png +0x48e57582, textures/skybox_tiles/bidw.13.rgba16.png +0x48bc2fc8, textures/skybox_tiles/water.57.rgba16.png +0x48b717ee, textures/machine/ttc_textures.07800.rgba16.png +0x48a5f126, textures/skybox_tiles/cloud_floor.3.rgba16.png +0x48a3e423, textures/segment2/segment2.06F00.rgba16.png +0x486f9bd1, textures/skybox_tiles/bits.27.rgba16.png +0x4844ccb0, actors/water_splash/water_splash_6.rgba16.png +0x4783c2bf, textures/skybox_tiles/bitfs.19.rgba16.png +0x474f8a1b, levels/menu/main_menu_seg7.00018.rgba16.png +0x46ee72e8, textures/skybox_tiles/ccm.21.rgba16.png +0x46beff45, textures/skybox_tiles/bbh.21.rgba16.png +0x46a556f1, levels/lll/12.rgba16.png +0x468bc569, textures/segment2/segment2.01C00.rgba16.png +0x4676f47d, levels/rr/2.rgba16.png +0x465f9b72, textures/skybox_tiles/wdw.49.rgba16.png +0x45f63ae1, textures/skybox_tiles/water.60.rgba16.png +0x458c0935, actors/snufit/snufit_body.rgba16.png +0x45667aed, textures/skybox_tiles/clouds.40.rgba16.png +0x452aad60, textures/skybox_tiles/bits.47.rgba16.png +0x44d5aa4b, textures/skybox_tiles/bits.43.rgba16.png +0x44ae3d51, textures/intro_raw/sparkle_0.rgba16.png +0x44789e8c, levels/menu/main_menu_seg7_us.0ACC0.ia8.png +0x444b37f6, actors/water_splash/water_splash_1.rgba16.png +0x4446f65d, actors/stomp_smoke/stomp_smoke_3.ia16.png +0x4443d529, actors/haunted_cage/bbh_cage_double_ornament.rgba16.png +0x438cc5be, textures/segment2/segment2.07D50.rgba16.png +0x432d56be, actors/mario_cap/mario_cap_metal.rgba16.png +0x432d56be, actors/mario/mario_metal.rgba16.png +0x431e1944, levels/menu/main_menu_seg7.03C68.rgba16.png +0x42f2325a, textures/skybox_tiles/bits.13.rgba16.png +0x42a20f7e, actors/explosion/explosion_5.rgba16.png +0x428d4124, actors/exclamation_box/exclamation_box_side.rgba16.png +0x428bef9c, textures/water/jrb_textures.00800.rgba16.png +0x4276db5e, levels/ccm/7.rgba16.png +0x41d56401, textures/skybox_tiles/bits.22.rgba16.png +0x4166f73d, textures/outside/castle_grounds_textures.02000.rgba16.png +0x41590b79, textures/skybox_tiles/wdw.23.rgba16.png +0x414026b4, textures/segment2/segment2.01400.rgba16.png +0x41304acc, levels/ttc/1.rgba16.png +0x40fa0dca, textures/cave/hmc_textures.05800.rgba16.png +0x40e6bbfb, textures/skybox_tiles/clouds.10.rgba16.png +0x40ad9dab, textures/skybox_tiles/cloud_floor.45.rgba16.png +0x40aa862f, textures/skybox_tiles/cake.6.rgba16.png +0x4089d798, textures/skybox_tiles/water.17.rgba16.png +0x408779a6, textures/skybox_tiles/cloud_floor.26.rgba16.png +0x40568542, textures/fire/lll_textures.0A000.rgba16.png +0x403c6122, levels/pss/0.rgba16.png +0x40226c48, textures/skybox_tiles/ccm.63.rgba16.png +0x401b923f, actors/door/bbh_door.rgba16.png +0x4010bae8, levels/jrb/2.rgba16.png +0x3ffa0be7, textures/skybox_tiles/ccm.59.rgba16.png +0x3ff93da3, levels/ccm/11.rgba16.png +0x3fb69c59, actors/tree/snowy_pine_tree.rgba16.png +0x3f817c21, textures/fire/lll_textures.09000.rgba16.png +0x3f817c21, textures/segment2/segment2.13C58.rgba16.png +0x3ec818de, textures/skybox_tiles/wdw.11.rgba16.png +0x3e5af02c, actors/bookend/bookend_pages.rgba16.png +0x3e40e693, textures/cave/hmc_textures.08800.rgba16.png +0x3de0ed4e, textures/segment2/segment2.06400.rgba16.png +0x3d51e423, levels/intro/3_tm.rgba16.png +0x3d354167, textures/skybox_tiles/water.42.rgba16.png +0x3d244f64, textures/skybox_tiles/water.55.rgba16.png +0x3d21394e, textures/skybox_tiles/water.39.rgba16.png +0x3cfba273, textures/skybox_tiles/wdw.62.rgba16.png +0x3ce9e494, textures/segment2/segment2.06900.rgba16.png +0x3ccf8886, textures/skybox_tiles/bidw.27.rgba16.png +0x3cc93124, textures/skybox_tiles/ccm.6.rgba16.png +0x3cb6f1a9, actors/walk_smoke/walk_smoke_3.ia16.png +0x3c183177, textures/skybox_tiles/ssl.54.rgba16.png +0x3bac2b9a, levels/ccm/8.ia16.png +0x3bac2b9a, levels/lll/27.ia16.png +0x3ba40ee9, levels/intro/0.rgba16.png +0x3b111d77, actors/heave_ho/heave-ho_turnkey.rgba16.png +0x3b0d1e46, actors/koopa/koopa_shoe.rgba16.png +0x3ae6bec9, textures/skybox_tiles/water.47.rgba16.png +0x3ac6c19c, actors/purple_switch/purple_switch_exclamation_point.rgba16.png +0x3aadb102, textures/skybox_tiles/water.16.rgba16.png +0x3a9a3561, levels/lll/10.rgba16.png +0x39f5a629, actors/toad/toad_face.rgba16.png +0x39e90b67, textures/segment2/segment2.06700.rgba16.png +0x39e470dd, levels/ttc/0.rgba16.png +0x39d86d67, actors/thwomp/thwomp_surface.rgba16.png +0x39cc9592, actors/bowser/bowser_eye_closed_0.rgba16.png +0x39cc9592, actors/bowser/bowser_eye_closed_1.rgba16.png +0x39c55c7f, textures/skybox_tiles/ccm.26.rgba16.png +0x39a50598, textures/skybox_tiles/cake.14.rgba16.png +0x397f1da4, textures/skybox_tiles/wdw.19.rgba16.png +0x393ba6ae, textures/skybox_tiles/ssl.34.rgba16.png +0x3909f67d, textures/snow/ccm_textures.01000.rgba16.png +0x3902d1b8, actors/monty_mole/monty_mole_eye.rgba16.png +0x38ec1b66, textures/skybox_tiles/ssl.29.rgba16.png +0x38afcd8f, textures/segment2/segment2.06580.rgba16.png +0x38afccee, levels/ssl/6.rgba16.png +0x38894888, actors/bobomb/bob-omb_right_side.rgba16.png +0x387d6d33, actors/mario_cap/mario_cap_wing_tip.rgba16.png +0x387d6d33, actors/mario/mario_wing_tip.rgba16.png +0x386a9785, actors/bowser/bowser_shell.rgba16.png +0x3867cbee, actors/wiggler/wiggler_segment_left_side.rgba16.png +0x385055f4, textures/skybox_tiles/wdw.37.rgba16.png +0x384e2a31, actors/goomba/goomba_face_blink.rgba16.png +0x383bbd9b, actors/toad/toad_head.rgba16.png +0x381ea750, levels/bbh/3.rgba16.png +0x37f10a8c, actors/bookend/bookend_tooth.rgba16.png +0x374e253a, actors/bowser/bowser_armband_spike.rgba16.png +0x373df028, actors/piranha_plant/piranha_plant_skin.rgba16.png +0x370fc06b, textures/outside/castle_grounds_textures.0A000.rgba16.png +0x36fc4c04, levels/lll/24.rgba16.png +0x36f00556, textures/cave/hmc_textures.0A800.rgba16.png +0x36d9c81e, actors/bully/bully_right_side.rgba16.png +0x36b1482f, actors/pokey/pokey_face_blink.rgba16.png +0x362e3e52, textures/segment2/segment2.05C00.rgba16.png +0x35bbd200, actors/bullet_bill/bullet_bill_eye.rgba16.png +0x3556a0c8, textures/skybox_tiles/bbh.4.rgba16.png +0x35456b51, actors/bobomb/bob-omb_eyes_blink.rgba16.png +0x354089bb, actors/dorrie/dorrie_tongue.rgba16.png +0x354089bb, actors/chain_chomp/chain_chomp_tongue.rgba16.png +0x34e02944, textures/skybox_tiles/bits.46.rgba16.png +0x349b3bbd, actors/scuttlebug/scuttlebug_left_side.rgba16.png +0x3486bf66, actors/checkerboard_platform/checkerboard_platform_side.rgba16.png +0x3411743e, actors/wiggler/wiggler_segment_right_side.rgba16.png +0x33ea5d90, actors/chuckya/chuckya_body_arm_right_side.rgba16.png +0x33c58d86, textures/cave/hmc_textures.03800.rgba16.png +0x33b314af, levels/wmotr/1.rgba16.png +0x33ae70aa, levels/castle_inside/40.rgba16.png +0x339b3765, textures/skybox_tiles/bbh.31.rgba16.png +0x336d534a, textures/segment2/segment2.00E00.rgba16.png +0x3342ae2e, textures/skybox_tiles/bitfs.18.rgba16.png +0x32da5c54, textures/skybox_tiles/cloud_floor.48.rgba16.png +0x32beb053, textures/skybox_tiles/ssl.6.rgba16.png +0x32b61b3e, textures/skybox_tiles/ccm.53.rgba16.png +0x325a3830, levels/ssl/8.rgba16.png +0x32169e73, levels/rr/1.rgba16.png +0x31c66e6f, actors/ukiki/ukiki_butt.rgba16.png +0x31b77240, actors/poundable_pole/poundable_pole_top.rgba16.png +0x31764a00, actors/amp/amp_eyes.rgba16.png +0x3163aa92, levels/totwc/2.rgba16.png +0x3157cd18, textures/spooky/bbh_textures.05000.rgba16.png +0x308c95f5, textures/skybox_tiles/bits.20.rgba16.png +0x304306e0, textures/cave/hmc_textures.00000.rgba16.png +0x2fc064c1, textures/skybox_tiles/bidw.32.rgba16.png +0x2fa4b137, textures/skybox_tiles/bitfs.27.rgba16.png +0x2f5f1297, actors/door/metal_door.rgba16.png +0x2f3fdba3, textures/skybox_tiles/clouds.21.rgba16.png +0x2f25120f, actors/pokey/pokey_body.rgba16.png +0x2ed4ba24, actors/bobomb/bob-omb_eyes.rgba16.png +0x2ece83fa, textures/skybox_tiles/bits.8.rgba16.png +0x2eb2480c, textures/spooky/bbh_textures.0B800.ia16.png +0x2eb2480c, levels/castle_inside/2.ia16.png +0x2e5dd16d, textures/skybox_tiles/water.7.rgba16.png +0x2e1eb8aa, levels/ssl/5.rgba16.png +0x2e0c1e02, actors/bowser/bowser_eye_half_closed_1.rgba16.png +0x2e0c1e02, actors/bowser/bowser_eye_half_closed_0.rgba16.png +0x2dec812e, actors/bub/bub_scales.rgba16.png +0x2ddb1ab2, textures/skybox_tiles/cloud_floor.61.rgba16.png +0x2dc59b5c, levels/castle_inside/3.rgba16.png +0x2d898713, textures/segment2/segment2.06480.rgba16.png +0x2d6492f4, textures/skybox_tiles/ssl.12.rgba16.png +0x2d31f48b, textures/skybox_tiles/cloud_floor.9.rgba16.png +0x2d0c2e11, textures/segment2/segment2.0FC58.ia8.png +0x2ce5532e, textures/skybox_tiles/bits.63.rgba16.png +0x2cdb87de, levels/wmotr/0.rgba16.png +0x2c44217c, textures/skybox_tiles/bits.57.rgba16.png +0x2c246943, textures/skybox_tiles/bits.59.rgba16.png +0x2bea0a29, actors/mario/mario_sideburn.rgba16.png +0x2bc420f5, textures/grass/wf_textures.06800.rgba16.png +0x2b851f69, textures/segment2/segment2.02C00.rgba16.png +0x2b846815, actors/power_meter/power_meter_six_segments.rgba16.png +0x2b8359bb, textures/skybox_tiles/wdw.0.rgba16.png +0x2b644522, textures/water/jrb_textures.03800.rgba16.png +0x2b3f9b9c, textures/skybox_tiles/bits.33.rgba16.png +0x2b08f032, levels/totwc/1.rgba16.png +0x2aab5196, actors/door/zero_star_door_sign.rgba16.png +0x2a9f12c7, textures/skybox_tiles/bits.14.rgba16.png +0x2a93afc0, actors/mr_i_iris/mr_i_iris_open.rgba16.png +0x2a83d55a, levels/lll/0.rgba16.png +0x2a359204, textures/segment2/segment2.01000.rgba16.png +0x2a283a6a, actors/sparkle_animation/sparkle_animation_2.ia16.png +0x29f15a68, actors/piranha_plant/piranha_plant_stem.rgba16.png +0x29c0c7d2, actors/koopa/koopa_eyes_closed.rgba16.png +0x29904548, textures/skybox_tiles/water.63.rgba16.png +0x292e5fd8, actors/king_bobomb/bob-omb_buddy_right_side_unused.rgba16.png +0x292e5fd8, actors/bobomb/bob-omb_buddy_right_side.rgba16.png +0x292c40a1, textures/skybox_tiles/cake.13.rgba16.png +0x28df6c96, actors/flame/flame_1.ia16.png +0x28a7f52b, textures/segment2/segment2.01200.rgba16.png +0x28964b59, actors/mario/mario_eyes_dead.rgba16.png +0x2811c57f, textures/segment2/segment2.06880.rgba16.png +0x28061018, levels/ttm/5.rgba16.png +0x27ece31d, textures/outside/castle_grounds_textures.04000.rgba16.png +0x27b29129, textures/mountain/ttm_textures.00800.rgba16.png +0x27b1aa10, textures/skybox_tiles/bitfs.1.rgba16.png +0x276489c6, textures/segment2/segment2.06800.rgba16.png +0x27183c4f, levels/castle_inside/30.rgba16.png +0x26dfc97d, actors/butterfly/butterfly_wing.rgba16.png +0x26a34f80, textures/skybox_tiles/ccm.48.rgba16.png +0x268b611d, actors/power_meter/power_meter_three_segments.rgba16.png +0x2677a2a0, textures/skybox_tiles/cake.33.rgba16.png +0x266a1564, levels/ccm/2.rgba16.png +0x25ee1ba5, actors/blue_coin_switch/blue_coin_switch_side.rgba16.png +0x258a8627, textures/skybox_tiles/water.46.rgba16.png +0x2563bf4c, actors/cyan_fish/cyan_fish.rgba16.png +0x252a4b98, textures/snow/ccm_textures.09800.ia16.png +0x24ec3198, textures/skybox_tiles/ccm.35.rgba16.png +0x24e61683, textures/segment2/segment2.06200.rgba16.png +0x24d27245, textures/skybox_tiles/water.0.rgba16.png +0x24ad7055, textures/skybox_tiles/bits.26.rgba16.png +0x24a049bd, textures/skybox_tiles/cloud_floor.31.rgba16.png +0x2499ce37, textures/skybox_tiles/water.50.rgba16.png +0x24767d89, levels/bbh/1.rgba16.png +0x2465b806, actors/sparkle_animation/sparkle_animation_0.ia16.png +0x245ea00f, levels/bob/2.rgba16.png +0x2447b7f9, textures/segment2/segment2.06680.rgba16.png +0x23f84d6a, actors/exclamation_box/exclamation_box_front.rgba16.png +0x239f9e44, levels/castle_inside/38.rgba16.png +0x2395da7b, actors/snowman/mr_blizzard_left_side.rgba16.png +0x22f743bf, textures/outside/castle_grounds_textures.06800.rgba16.png +0x2282c30a, textures/skybox_tiles/cake.45.rgba16.png +0x22628916, textures/skybox_tiles/ccm.10.rgba16.png +0x22348f8b, textures/skybox_tiles/bitfs.7.rgba16.png +0x222768fa, levels/bbh/2.rgba16.png +0x221c9f08, textures/skybox_tiles/ccm.62.rgba16.png +0x21f3a705, actors/monty_mole/monty_mole_cheek.rgba16.png +0x21dd7803, textures/skybox_tiles/water.58.rgba16.png +0x21bfea1a, actors/chair/chair_leg.rgba16.png +0x21a99bef, textures/skybox_tiles/cake.39.rgba16.png +0x2193cd76, textures/skybox_tiles/ssl.60.rgba16.png +0x21854115, textures/skybox_tiles/bits.30.rgba16.png +0x216a674d, textures/skybox_tiles/bidw.54.rgba16.png +0x21676bdd, textures/skybox_tiles/clouds.1.rgba16.png +0x215ce254, textures/generic/bob_textures.09000.rgba16.png +0x214f09c8, textures/skybox_tiles/clouds.14.rgba16.png +0x213ebd50, textures/skybox_tiles/ssl.15.rgba16.png +0x212a4546, textures/skybox_tiles/cloud_floor.54.rgba16.png +0x21247806, actors/bully/bully_eye.rgba16.png +0x21247806, actors/chillychief/chill_bully_eye.rgba16.png +0x211edf33, textures/skybox_tiles/bitfs.48.rgba16.png +0x211edf33, textures/skybox_tiles/bbh.40.rgba16.png +0x20e1ea4d, actors/seaweed/seaweed_lower_center.rgba16.png +0x208f2137, textures/skybox_tiles/water.19.rgba16.png +0x20725250, actors/flyguy/flyguy_propeller.ia16.png +0x204d81e4, levels/bowser_3/2.rgba16.png +0x202d35be, textures/segment2/segment2.01A00.rgba16.png +0x20167de7, levels/totwc/0.rgba16.png +0x1fc70576, levels/sl/4.rgba16.png +0x1f71da85, actors/capswitch/cap_switch_base.rgba16.png +0x1f6da0f2, levels/ssl/1.ia16.png +0x1f5b1636, textures/machine/ttc_textures.01000.rgba16.png +0x1f4cdab4, actors/snufit/snufit_mask_strap.rgba16.png +0x1f3b7abc, textures/mountain/ttm_textures.05000.rgba16.png +0x1f31633f, textures/intro_raw/red_star_0.rgba16.png +0x1f04daf4, actors/exclamation_box_outline/exclamation_box_outline.rgba16.png +0x1effd4e0, textures/grass/wf_textures.07800.rgba16.png +0x1eed9296, textures/skybox_tiles/water.36.rgba16.png +0x1ecb06af, levels/lll/6.rgba16.png +0x1ebae88a, levels/castle_inside/6.rgba16.png +0x1e940db1, textures/skybox_tiles/water.12.rgba16.png +0x1e834eb0, actors/explosion/explosion_0.rgba16.png +0x1e520811, textures/inside/inside_castle_textures.01000.rgba16.png +0x1cb6e388, levels/ssl/11.rgba16.png +0x1cb6dc98, textures/segment2/segment2.06600.rgba16.png +0x1ca18f8f, textures/skybox_tiles/water.61.rgba16.png +0x1c786ee9, levels/castle_inside/12.rgba16.png +0x1c62cc15, actors/haunted_cage/bbh_cage_bars.rgba16.png +0x1c3b41cf, levels/ttc/2.rgba16.png +0x1b6acd5e, actors/treasure_chest/treasure_chest_front.rgba16.png +0x1b1fa1c6, textures/skybox_tiles/wdw.30.rgba16.png +0x1ae70860, actors/flame/flame_7.ia16.png +0x1adecd70, textures/skybox_tiles/ssl.62.rgba16.png +0x1a808da7, textures/water/jrb_textures.06800.rgba16.png +0x1a6f8a0e, textures/skybox_tiles/cake.34.rgba16.png +0x1a66c67f, textures/skybox_tiles/water.43.rgba16.png +0x1a4bcc77, levels/castle_inside/24_us.rgba16.png +0x1a43df6a, actors/walk_smoke/walk_smoke_5.ia16.png +0x19e8f076, levels/pss/1.ia16.png +0x19d0a651, textures/skybox_tiles/wdw.36.rgba16.png +0x19cf329b, textures/skybox_tiles/ssl.57.rgba16.png +0x19bb64c1, textures/machine/ttc_textures.03000.rgba16.png +0x19442fc9, actors/mario/mario_overalls_button.rgba16.png +0x192fa726, actors/tree/tree_left_side.rgba16.png +0x19132bcc, textures/skybox_tiles/water.6.rgba16.png +0x18a7104c, textures/skybox_tiles/bits.19.rgba16.png +0x188b6465, textures/intro_raw/white_star_6.rgba16.png +0x1872fa6c, actors/explosion/explosion_2.rgba16.png +0x184368ca, levels/castle_inside/29.rgba16.png +0x184368ca, levels/hmc/7.rgba16.png +0x18102121, textures/skybox_tiles/bidw.52.rgba16.png +0x180bde92, actors/penguin/penguin_eye_closed.rgba16.png +0x17f35f3c, textures/skybox_tiles/bits.32.rgba16.png +0x17eb8cf3, textures/title_screen_bg/title_screen_bg.00E40.rgba16.png +0x17ea3392, textures/snow/ccm_textures.09000.ia16.png +0x17cde57d, actors/thwomp/thwomp_face.rgba16.png +0x17c50cf2, actors/mario_cap/mario_cap_wing.rgba16.png +0x17c50cf2, actors/mario/mario_wing.rgba16.png +0x177d197c, levels/bitdw/3.rgba16.png +0x176c2e93, actors/coin/coin_tilt_left.ia16.png +0x17405808, levels/bbh/5.rgba16.png +0x17060726, actors/yoshi/yoshi_nostril.rgba16.png +0x16db7146, textures/skybox_tiles/cake.38.rgba16.png +0x16ce5dc5, textures/intro_raw/mario_face_shine.ia8.png +0x167cac52, levels/ttm/7.rgba16.png +0x16733b9a, textures/skybox_tiles/wdw.17.rgba16.png +0x166dd880, actors/explosion/explosion_6.rgba16.png +0x1660c971, levels/ttm/0.ia16.png +0x165f940a, textures/skybox_tiles/bbh.6.rgba16.png +0x164fbe11, levels/ddd/2.rgba16.png +0x163f6e7c, textures/skybox_tiles/cake.28.rgba16.png +0x15d30589, textures/spooky/bbh_textures.02800.rgba16.png +0x15b65397, textures/skybox_tiles/ssl.23.rgba16.png +0x158aa64c, textures/skybox_tiles/wdw.18.rgba16.png +0x15686bed, levels/ccm/1.rgba16.png +0x1541a06e, levels/lll/30.rgba16.png +0x1501ad26, actors/chuckya/chuckya_body_arm_left_side.rgba16.png +0x14c95ba0, actors/water_bubble/water_bubble.rgba16.png +0x146f813f, levels/castle_grounds/0.rgba16.png +0x1465e49f, textures/skybox_tiles/water.24.rgba16.png +0x1450f56e, textures/skybox_tiles/bits.21.rgba16.png +0x144c8cf3, levels/lll/29.rgba16.png +0x1448c073, textures/generic/bob_textures.01800.rgba16.png +0x1411177b, textures/skybox_tiles/ssl.24.rgba16.png +0x13e4332a, textures/mountain/ttm_textures.04000.rgba16.png +0x13c541ea, levels/wf/0.rgba16.png +0x134a35b3, textures/segment2/segment2.03800.rgba16.png +0x13207bbb, actors/spindrift/spindrift_face.rgba16.png +0x13132153, levels/bitdw/2.rgba16.png +0x130ca9a8, textures/snow/ccm_textures.08000.rgba16.png +0x12c0f052, textures/skybox_tiles/wdw.8.rgba16.png +0x12733b4f, actors/door/rough_wooden_door.rgba16.png +0x125e068d, actors/wooden_signpost/wooden_signpost_front.rgba16.png +0x1203baa7, actors/manta/manta_eye.rgba16.png +0x11f1b791, textures/skybox_tiles/ssl.20.rgba16.png +0x11a852cb, textures/skybox_tiles/ccm.36.rgba16.png +0x1198c8ab, actors/chair/chair_front.rgba16.png +0x11543850, textures/skybox_tiles/bits.62.rgba16.png +0x112c8257, textures/skybox_tiles/water.44.rgba16.png +0x10f30b26, actors/power_meter/power_meter_four_segments.rgba16.png +0x10e998f8, actors/star/star_eye.rgba16.png +0x10e998f8, actors/wiggler/wiggler_eye.rgba16.png +0x10e452c9, textures/fire/lll_textures.01000.rgba16.png +0x10c87d57, textures/skybox_tiles/cake.23.rgba16.png +0x1096c02e, textures/skybox_tiles/water.56.rgba16.png +0x108d6cae, textures/skybox_tiles/cake.43.rgba16.png +0x10675a01, textures/fire/lll_textures.0B800.rgba16.png +0x1056b1f2, levels/menu/main_menu_seg7.06B28.rgba16.png +0x101ca508, textures/skybox_tiles/ssl.49.rgba16.png +0x0ff0d650, textures/skybox_tiles/wdw.10.rgba16.png +0x0fdd80ca, levels/castle_grounds/1.rgba16.png +0x0f8eba38, actors/spindrift/spindrift_petal.rgba16.png +0x0f5d756e, actors/water_splash/water_splash_7.rgba16.png +0x0f1c2159, textures/skybox_tiles/cloud_floor.47.rgba16.png +0x0ee19c09, textures/skybox_tiles/bidw.25.rgba16.png +0x0e9c4e15, actors/wiggler/wiggler_flower.rgba16.png +0x0e7107e3, actors/klepto/klepto_beak.rgba16.png +0x0e40fa10, actors/heave_ho/heave-ho_roller.rgba16.png +0x0e1e7eb2, textures/skybox_tiles/wdw.56.rgba16.png +0x0df6bdff, actors/door/one_star_door_sign.rgba16.png +0x0ddc6f87, textures/skybox_tiles/water.29.rgba16.png +0x0ddbbc70, levels/bob/1.rgba16.png +0x0d9fd7e4, actors/koopa/koopa_nostrils.rgba16.png +0x0d6a8490, textures/skybox_tiles/bbh.29.rgba16.png +0x0d487556, textures/inside/inside_castle_textures.0A000.rgba16.png +0x0d344fc8, textures/skybox_tiles/clouds.28.rgba16.png +0x0d09f13e, levels/castle_grounds/2.rgba16.png +0x0c89d16b, textures/outside/castle_grounds_textures.00800.rgba16.png +0x0be35913, textures/skybox_tiles/wdw.4.rgba16.png +0x0ba8d96e, textures/skybox_tiles/ccm.17.rgba16.png +0x0b962372, levels/lll/2.rgba16.png +0x0b6d2926, actors/explosion/explosion_3.rgba16.png +0x0ad7a8f7, textures/spooky/bbh_textures.08800.rgba16.png +0x0ab43f69, actors/yoshi/yoshi_eye_blink.rgba16.png +0x0a45ef5b, textures/skybox_tiles/wdw.48.rgba16.png +0x0a18adca, textures/skybox_tiles/bits.28.rgba16.png +0x0a10018c, textures/skybox_tiles/clouds.3.rgba16.png +0x09cabb08, actors/bully/bully_left_side.rgba16.png +0x0993e63e, actors/lakitu_cameraman/lakitu_camera_lens.rgba16.png +0x09820848, textures/outside/castle_grounds_textures.09000.rgba16.png +0x09740389, actors/mad_piano/mad_piano_tooth.rgba16.png +0x09740389, actors/chain_chomp/chain_chomp_tooth.rgba16.png +0x094b9235, levels/vcutm/2.rgba16.png +0x09208466, textures/generic/bob_textures.04000.rgba16.png +0x08c865bc, textures/segment2/segment2.03000.rgba16.png +0x08b8530e, levels/castle_inside/23_us.rgba16.png +0x087f8f7b, textures/intro_raw/white_star_3.rgba16.png +0x08758cde, textures/mountain/ttm_textures.03800.rgba16.png +0x086772e7, textures/skybox_tiles/cake.30.rgba16.png +0x082cd478, textures/skybox_tiles/ssl.37.rgba16.png +0x08170b98, textures/skybox_tiles/water.59.rgba16.png +0x07ff7cd2, textures/skybox_tiles/bitfs.29.rgba16.png +0x07cf15a6, textures/mountain/ttm_textures.02800.rgba16.png +0x07c7c401, textures/skybox_tiles/cake.20.rgba16.png +0x076b5c8f, actors/power_meter/power_meter_one_segment.rgba16.png +0x074933da, textures/skybox_tiles/ssl.45.rgba16.png +0x0731beea, textures/skybox_tiles/wdw.44.rgba16.png +0x07155d85, textures/skybox_tiles/bitfs.35.rgba16.png +0x070e836f, actors/boo_castle/bbh_boo_mouth.rgba16.png +0x070e836f, actors/boo/boo_mouth.rgba16.png +0x07059f23, textures/skybox_tiles/wdw.51.rgba16.png +0x0702fde6, textures/inside/inside_castle_textures.0B000.rgba16.png +0x06ab9733, textures/skybox_tiles/ssl.21.rgba16.png +0x06682e2e, levels/hmc/3.rgba16.png +0x0659ab56, textures/segment2/segment2.00C00.rgba16.png +0x064f172d, actors/sparkle_animation/sparkle_animation_4.ia16.png +0x064b5c5f, levels/castle_grounds/3.rgba16.png +0x06343afc, actors/monty_mole/monty_mole_claw.rgba16.png +0x061a6c74, textures/generic/bob_textures.06000.rgba16.png +0x0612269d, actors/cannon_base/cannon_base.rgba16.png +0x05ec9e16, textures/skybox_tiles/cloud_floor.21.rgba16.png +0x05d86d02, textures/skybox_tiles/bidw.55.rgba16.png +0x0571fc7c, textures/skybox_tiles/bbh.15.rgba16.png +0x04f846f7, levels/wmotr/4.rgba16.png +0x04a6ffc8, actors/monty_mole/monty_mole_nose.rgba16.png +0x04a35759, textures/generic/bob_textures.02800.rgba16.png +0x044f24ef, textures/effect/lava_bubble.03020.rgba16.png +0x0430de55, textures/skybox_tiles/cake.25.rgba16.png +0x042dee1b, textures/spooky/bbh_textures.01800.rgba16.png +0x03eeab38, textures/skybox_tiles/ccm.27.rgba16.png +0x03daf3d5, actors/peach/peach_eye_mostly_open.rgba16.png +0x0391ee74, textures/skybox_tiles/wdw.24.rgba16.png +0x038be28f, textures/snow/ccm_textures.07000.rgba16.png +0x0374425d, textures/skybox_tiles/wdw.26.rgba16.png +0x03298536, actors/bullet_bill/bullet_bill_mouth.rgba16.png +0x031dc071, textures/skybox_tiles/cloud_floor.49.rgba16.png +0x0303136f, textures/inside/inside_castle_textures.00000.rgba16.png +0x02cfd740, actors/mr_i_eyeball/mr_i_eyeball_left_side.rgba16.png +0x02c423f8, textures/skybox_tiles/clouds.12.rgba16.png +0x02aaddf6, textures/skybox_tiles/cloud_floor.59.rgba16.png +0x027c89db, textures/skybox_tiles/cloud_floor.4.rgba16.png +0x02429854, textures/skybox_tiles/bbh.1.rgba16.png +0x02330ccd, textures/segment2/segment2.06300.rgba16.png +0x022f69e3, textures/inside/inside_castle_textures.03800.rgba16.png +0x02040b88, textures/intro_raw/red_star_3.rgba16.png +0x01bf1983, textures/intro_raw/red_star_5.rgba16.png +0x01a60ccd, actors/chain_chomp/chain_chomp_dull_shine.rgba16.png +0x019bfb97, textures/skybox_tiles/clouds.5.rgba16.png +0x01755b95, textures/grass/wf_textures.09800.rgba16.png +0x014c6e73, textures/skybox_tiles/ccm.34.rgba16.png +0x011c8c77, textures/skybox_tiles/water.23.rgba16.png +0x0110314c, textures/machine/ttc_textures.02000.rgba16.png +0x00b11930, textures/skybox_tiles/bidw.33.rgba16.png +0x00866b3f, actors/chillychief/chill_bully_left_side.rgba16.png +0x006a1516, textures/skybox_tiles/wdw.58.rgba16.png +0x0010fdc4, actors/sushi/sushi_snout.rgba16.png +0x1195aecc, actors/chair/chair_bottom.rgba16.png +0xb16edfa9, actors/exclamation_box/vanish_cap_box_sides.rgba16.png +0x4838a16e, actors/exclamation_box/wing_cap_box_sides.rgba16.png +0x2c14636c, actors/eyerok/eyerok_eye_mostly_closed.rgba16.png +0x761e51a0, actors/eyerok/eyerok_eye_mostly_open.rgba16.png +0x93944d54, actors/eyerok/eyerok_eye_open.rgba16.png +0x9df33cc7, actors/hoot/hoot_eyes.rgba16.png +0x0ce27cd0, actors/hoot/hoot_wing.rgba16.png +0x1f8b71ca, actors/hoot/hoot_wing_tip.rgba16.png +0x3cf309e4, actors/impact_ring/impact_ring_left_side.ia16.png +0x20655b3c, actors/impact_ring/impact_ring_right_side.ia16.png +0x2996ca88, actors/king_bobomb/king_bob-omb_crown_rim.rgba16.png +0xa7c43afc, levels/bitfs/0.rgba16.png +0x1d6fcb73, levels/ddd/4.rgba16.png +0x3c99819f, levels/menu/main_menu_seg7.00818.rgba16.png +0xfae4a688, levels/menu/main_menu_seg7.01018.rgba16.png +0x8a748466, levels/menu/main_menu_seg7_us.0AC40.ia8.png +0x66729882, levels/menu/main_menu_seg7_us.0AE00.ia8.png +0x72768866, levels/menu/main_menu_seg7_us.0AE80.ia8.png +0x686c9480, levels/menu/main_menu_seg7_us.0B540.ia8.png +0x4c8a74ac, levels/menu/main_menu_seg7_us.0B580.ia8.png +0x76406e6e, levels/menu/main_menu_seg7_us.0B5C0.ia8.png +0xc4f693e5, levels/menu/main_menu_seg7_us.0B740.ia8.png +0x7e87867a, levels/menu/main_menu_seg7_us.0B780.ia8.png +0x8c868486, levels/menu/main_menu_seg7_us.0B7C0.ia8.png +0x2ea7c781, textures/fire/lll_textures.02000.rgba16.png +0xa2c3484f, textures/outside/castle_grounds_textures.0B000.rgba16.png +0x98bb898e, textures/segment2/font_graphics.05900.ia4.png +0xd057b494, textures/segment2/font_graphics.05940.ia4.png +0xb0f373b0, textures/segment2/font_graphics.05980.ia4.png +0x87ba54c8, textures/segment2/font_graphics.059C0.ia4.png +0x60d4a5c2, textures/segment2/font_graphics.05A00.ia4.png +0xb6ba71d3, textures/segment2/font_graphics.05A40.ia4.png +0x97baa58e, textures/segment2/font_graphics.05A80.ia4.png +0x68f155a5, textures/segment2/font_graphics.05AC0.ia4.png +0x87ba9198, textures/segment2/font_graphics.05B00.ia4.png +0xb0d568a0, textures/segment2/font_graphics.05B40.ia4.png +0x6cab6e7c, textures/segment2/font_graphics.05B80.ia4.png +0xaeb2b780, textures/segment2/font_graphics.05BC0.ia4.png +0x897ab77f, textures/segment2/font_graphics.05C00.ia4.png +0x86a979a6, textures/segment2/font_graphics.05C40.ia4.png +0x8798cfbf, textures/segment2/font_graphics.05C80.ia4.png +0x69b6b1a1, textures/segment2/font_graphics.05CC0.ia4.png +0x8894b7a4, textures/segment2/font_graphics.05D00.ia4.png +0x78a6e268, textures/segment2/font_graphics.05D40.ia4.png +0xb9a790a1, textures/segment2/font_graphics.05D80.ia4.png +0x9f8995a3, textures/segment2/font_graphics.05DC0.ia4.png +0xa8df6863, textures/segment2/font_graphics.05E00.ia4.png +0x988aa5ae, textures/segment2/font_graphics.05E40.ia4.png +0xafb97693, textures/segment2/font_graphics.05E80.ia4.png +0xb0ab7771, textures/segment2/font_graphics.05EC0.ia4.png +0x887ab795, textures/segment2/font_graphics.05F00.ia4.png +0x69b2b1a2, textures/segment2/font_graphics.05F40.ia4.png +0xa698b795, textures/segment2/font_graphics.05F80.ia4.png +0x6bb0b3a0, textures/segment2/font_graphics.05FC0.ia4.png +0xc1799951, textures/segment2/font_graphics.06000.ia4.png +0xb9a79083, textures/segment2/font_graphics.06040.ia4.png +0x9789a886, textures/segment2/font_graphics.06080.ia4.png +0x8d8f8692, textures/segment2/font_graphics.060C0.ia4.png +0x7d8d66c4, textures/segment2/font_graphics.06100.ia4.png +0xbdf14875, textures/segment2/font_graphics.06140.ia4.png +0xac848284, textures/segment2/font_graphics.06180.ia4.png +0xb97d6191, textures/segment2/font_graphics.061C0.ia4.png +0x80a7c266, textures/segment2/font_graphics.06200.ia4.png +0x6089a2c3, textures/segment2/font_graphics.06240.ia4.png +0xc089a462, textures/segment2/font_graphics.06280.ia4.png +0x8187c266, textures/segment2/font_graphics.062C0.ia4.png +0xbea7a284, textures/segment2/font_graphics.06300.ia4.png +0xaa77a182, textures/segment2/font_graphics.06340.ia4.png +0x8d8682b6, textures/segment2/font_graphics.06380.ia4.png +0x62a7c2a1, textures/segment2/font_graphics.063C0.ia4.png +0x788aa257, textures/segment2/font_graphics.06400.ia4.png +0x81697994, textures/segment2/font_graphics.06440.ia4.png +0x49e284a3, textures/segment2/font_graphics.06480.ia4.png +0x6aa886a1, textures/segment2/font_graphics.064C0.ia4.png +0x64c774d2, textures/segment2/font_graphics.06500.ia4.png +0x62a980c3, textures/segment2/font_graphics.06540.ia4.png +0x8089a286, textures/segment2/font_graphics.06580.ia4.png +0xa087a286, textures/segment2/font_graphics.065C0.ia4.png +0x8187c284, textures/segment2/font_graphics.06600.ia4.png +0xa2c46681, textures/segment2/font_graphics.06640.ia4.png +0xc5c3a662, textures/segment2/font_graphics.06680.ia4.png +0x8c87859e, textures/segment2/font_graphics.066C0.ia4.png +0x7f8ac166, textures/segment2/font_graphics.06700.ia4.png +0xc3688681, textures/segment2/font_graphics.06740.ia4.png +0x9fa8c268, textures/segment2/font_graphics.06780.ia4.png +0xa2c49f94, textures/segment2/font_graphics.067C0.ia4.png +0xbd8c84af, textures/segment2/font_graphics.06800.ia4.png +0xc2a56782, textures/segment2/font_graphics.06840.ia4.png +0x8c7275a4, textures/segment2/font_graphics.068C0.ia4.png +0xa88fc5a2, textures/segment2/font_graphics.06900.ia4.png +0xa48a62b0, textures/segment2/font_graphics.06940.ia4.png +0xa77a8863, textures/segment2/font_graphics.06980.ia4.png +0x637878b3, textures/segment2/font_graphics.06A00.ia4.png +0x8a6886a4, textures/segment2/font_graphics.06A80.ia4.png +0x8a4886a6, textures/segment2/font_graphics.06B40.ia4.png +0x8a688695, textures/segment2/font_graphics.06B80.ia4.png +0x5297b884, textures/segment2/font_graphics.06BC0.ia4.png +0x7771686e, textures/segment2/font_graphics.06C00.ia4.png +0x9a887684, textures/segment2/font_graphics.06C80.ia4.png +0x9b877585, textures/segment2/font_graphics.06CC0.ia4.png +0xb35be951, textures/segment2/font_graphics.06D80.ia4.png +0xd1d18587, textures/segment2/font_graphics.06DC0.ia4.png +0x9ac5a4a5, textures/segment2/font_graphics.06E00.ia4.png +0xb97c9fad, textures/segment2/font_graphics.06E40.ia4.png +0x0ecc73b4, textures/segment2/font_graphics.06E80.ia4.png +0xb1c091a7, textures/segment2/font_graphics.06EC0.ia4.png +0xb0c2949a, textures/segment2/font_graphics.06F00.ia4.png +0x92819878, textures/segment2/font_graphics.06F40.ia4.png +0x92a5a679, textures/segment2/font_graphics.06FC0.ia4.png +0xdb3c7c79, textures/segment2/segment2.02800.rgba16.png +0x095ccd5f, textures/segment2/segment2.04400.rgba16.png +0x98347689, textures/segment2/segment2.11458.ia8.png +0x543ae92e, textures/skybox_tiles/bbh.8.rgba16.png +0x543ae92e, textures/skybox_tiles/bbh.0.rgba16.png +0x3d7adde3, textures/skybox_tiles/bitfs.18.rgba16.png +0x3d7adde3, textures/skybox_tiles/bitfs.10.rgba16.png +0x14c6a0db, textures/skybox_tiles/bits.13.rgba16.png +0x5e2b9c03, textures/skybox_tiles/wdw.6.rgba16.png +0xa6c56aa3, textures/skybox_tiles/wdw.7.rgba16.png +0x6df82bbe, textures/skybox_tiles/wdw.16.rgba16.png +0xb3b76bce, textures/skybox_tiles/wdw.17.rgba16.png From f1ba90d25bbcdd10c7db66e788a4047fcab4c020 Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Mon, 8 Jun 2020 22:48:23 +0200 Subject: [PATCH 112/166] add discord rpc support --- Makefile | 38 ++++- src/game/area.c | 4 + src/pc/configfile.c | 6 + src/pc/configfile.h | 3 + src/pc/discord/discordrpc.c | 289 ++++++++++++++++++++++++++++++++++++ src/pc/discord/discordrpc.h | 88 +++++++++++ src/pc/gfx/gfx_sdl2.c | 6 + 7 files changed, 431 insertions(+), 3 deletions(-) create mode 100644 src/pc/discord/discordrpc.c create mode 100644 src/pc/discord/discordrpc.h diff --git a/Makefile b/Makefile index 49b60620..f22231da 100644 --- a/Makefile +++ b/Makefile @@ -44,6 +44,8 @@ EXT_OPTIONS_MENU ?= 1 TEXTSAVES ?= 0 # Load resources from external files EXTERNAL_DATA ?= 0 +# Enable Discord Rich Presence +DISCORDRPC ?= 0 # Various workarounds for weird toolchains @@ -269,6 +271,10 @@ LEVEL_DIRS := $(patsubst levels/%,%,$(dir $(wildcard levels/*/header.h))) SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers actors levels bin data assets src/pc src/pc/gfx src/pc/audio src/pc/controller ASM_DIRS := +ifeq ($(DISCORDRPC),1) + SRC_DIRS += src/pc/discord +endif + BIN_DIRS := bin bin/$(VERSION) ULTRA_SRC_DIRS := lib/src lib/src/math @@ -448,6 +454,18 @@ ULTRA_O_FILES := $(foreach file,$(ULTRA_S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \ GODDARD_O_FILES := $(foreach file,$(GODDARD_C_FILES),$(BUILD_DIR)/$(file:.c=.o)) +RPC_LIBS := +ifeq ($(DISCORDRPC),1) + ifeq ($(WINDOWS_BUILD),1) + RPC_LIBS := src/pc/discord/libs/libdiscord-rpc-win.a + else ifeq ($(OSX_BUILD),1) + # needs testing + RPC_LIBS := src/pc/discord/libs/libdiscord-rpc-osx.a + else + RPC_LIBS := src/pc/discord/libs/libdiscord-rpc-unix.a + endif +endif + # Automatic dependency files DEP_FILES := $(O_FILES:.o=.d) $(ULTRA_O_FILES:.o=.d) $(GODDARD_O_FILES:.o=.d) $(BUILD_DIR)/$(LD_SCRIPT).d @@ -475,7 +493,9 @@ endif LD := $(CC) -ifeq ($(WINDOWS_BUILD),1) +ifeq ($(DISCORDRPC),1) + LD := $(CXX) +else ifeq ($(WINDOWS_BUILD),1) ifeq ($(CROSS),i686-w64-mingw32.static-) # fixes compilation in MXE on Linux and WSL LD := $(CC) else ifeq ($(CROSS),x86_64-w64-mingw32.static-) @@ -536,6 +556,12 @@ ifeq ($(NODRAWINGDISTANCE),1) CFLAGS += -DNODRAWINGDISTANCE endif +# Check for Discord Rich Presence option +ifeq ($(DISCORDRPC),1) +CC_CHECK += -DDISCORDRPC +CFLAGS += -DDISCORDRPC +endif + # Check for texture fix option ifeq ($(TEXTURE_FIX),1) CC_CHECK += -DTEXTURE_FIX @@ -737,11 +763,17 @@ $(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD $(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o $(BUILD_DIR)/src/game/options_menu.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o O_FILES += $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o +ifeq ($(DISCORDRPC),1) +$(BUILD_DIR)/src/pc/discord/discordrpc.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o +endif else $(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/src/game/options_menu.o: $(BUILD_DIR)/include/text_strings.h +ifeq ($(DISCORDRPC),1) +$(BUILD_DIR)/src/pc/discord/discordrpc.o: $(BUILD_DIR)/include/text_strings.h +endif endif ################################################################ @@ -924,8 +956,8 @@ $(BUILD_DIR)/%.o: %.s -$(EXE): $(O_FILES) $(MIO0_FILES:.mio0=.o) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) - $(LD) -L $(BUILD_DIR) -o $@ $(O_FILES) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(LDFLAGS) +$(EXE): $(O_FILES) $(MIO0_FILES:.mio0=.o) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(RPC_LIBS) + $(LD) -L $(BUILD_DIR) -o $@ $(O_FILES) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(RPC_LIBS) $(LDFLAGS) .PHONY: all clean distclean default diff test load libultra res .PRECIOUS: $(BUILD_DIR)/bin/%.elf $(SOUND_BIN_DIR)/%.ctl $(SOUND_BIN_DIR)/%.tbl $(SOUND_SAMPLE_TABLES) $(SOUND_BIN_DIR)/%.s $(BUILD_DIR)/% diff --git a/src/game/area.c b/src/game/area.c index d408190c..d3257642 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -421,4 +421,8 @@ void render_game(void) { D_8032CE74 = NULL; D_8032CE78 = 0; + +#ifdef DISCORDRPC + discordUpdateRichPresence(); +#endif } diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 79deadb6..2d7745f4 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -85,6 +85,9 @@ bool configCameraMouse = false; #endif unsigned int configSkipIntro = 0; bool configHUD = true; +#ifdef DISCORDRPC +bool configDiscordRPC = true; +#endif static const struct ConfigOption options[] = { {.name = "fullscreen", .type = CONFIG_TYPE_BOOL, .boolValue = &configWindow.fullscreen}, @@ -126,6 +129,9 @@ static const struct ConfigOption options[] = { {.name = "bettercam_degrade", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraDegrade}, #endif {.name = "skip_intro", .type = CONFIG_TYPE_UINT, .uintValue = &configSkipIntro}, // Add this back! +#ifdef DISCORDRPC + {.name = "discordrpc_enable", .type = CONFIG_TYPE_BOOL, .boolValue = &configDiscordRPC}, +#endif }; // Reads an entire line from a file (excluding the newline character) and returns an allocated string diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 850d05b3..48d65379 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -52,6 +52,9 @@ extern bool configEnableCamera; extern bool configCameraMouse; #endif extern bool configHUD; +#ifdef DISCORDRPC +extern bool configDiscordRPC; +#endif void configfile_load(const char *filename); void configfile_save(const char *filename); diff --git a/src/pc/discord/discordrpc.c b/src/pc/discord/discordrpc.c new file mode 100644 index 00000000..af8d6300 --- /dev/null +++ b/src/pc/discord/discordrpc.c @@ -0,0 +1,289 @@ +#include +#include +#include +#include +#include "PR/ultratypes.h" +#include "memory.h" +#include "pc/configfile.h" +#include "discordrpc.h" + +#define DISCORD_APP_ID "709083908708237342" +#define DISCORD_UPDATE_RATE 5 + +time_t lastUpdatedTime; + +DiscordRichPresence discordRichPresence; + +extern s16 gCurrCourseNum; +extern s16 gCurrActNum; +s16 lastCourseNum = -1; +s16 lastActNum = -1; + +extern u8 seg2_course_name_table[]; +extern u8 seg2_act_name_table[]; + +#ifdef VERSION_EU +extern s32 gInGameLanguage; +#endif + +char stage[188]; +char act[188]; + +char smallImageKey[5]; +char largeImageKey[5]; + +char charset[0xFF+1] = { + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7 + ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', // 15 + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 23 + 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', // 31 + 'w', 'x', 'y', 'z', ' ', ' ', ' ', ' ', // 39 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 49 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 55 + ' ', ' ', ' ', ' ', ' ', ' ', '\'', ' ', // 63 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 71 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 79 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 87 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 95 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 103 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ',', // 111 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 119 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 127 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 135 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 143 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 151 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', '-', // 159 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 167 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 175 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 183 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 192 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 199 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 207 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 215 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 223 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 231 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 239 + ' ', ' ', '!', ' ', ' ', ' ', ' ', ' ', // 247 + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // 255 +}; + +void convertstring(const u8 *str, char* output) +{ + s32 strPos = 0; + bool capitalizeChar = true; + + while (str[strPos] != 0xFF) + { + if (str[strPos] < 0xFF) + { + output[strPos] = charset[str[strPos]]; + + // if the char is a letter we can capatalize it + if (capitalizeChar && 0x0A <= str[strPos] && str[strPos] <= 0x23) + { + output[strPos] -= ('a' - 'A'); + capitalizeChar = false; + } + + } + else output[strPos] = ' '; + + switch (output[strPos]) // decide if the next character should be capitalized + { + case ' ': + if (str[strPos] != 158) printf(stdout, "Unknown Character (%i)\n", str[strPos]); // inform that an unknown char was found + case '-': + capitalizeChar = true; + break; + default: + capitalizeChar = false; + break; + } + + strPos++; + } + + output[strPos] = '\0'; +} + +void reverse(char s[]) +{ + int i, j; + char c; + + for (i = 0, j = strlen(s)-1; i 0); + + s[i] = '\0'; + reverse(s); +} + +void OnReady( const DiscordUser* user ) +{ + discordReset(); +} + +void InitializeDiscord() +{ + DiscordEventHandlers handlers; + memset(&handlers, 0, sizeof(handlers)); + handlers.ready = OnReady; + + Discord_Initialize( DISCORD_APP_ID, &handlers, false, "" ); +} + +void SetDetails() +{ + if (lastCourseNum != gCurrCourseNum) + { + // If we are in in Course 0 we are in the castle which doesn't have a string + if (gCurrCourseNum) + { + void **courseNameTbl; + +#ifndef VERSION_EU + courseNameTbl = segmented_to_virtual(seg2_course_name_table); +#else + switch (gInGameLanguage) { + case LANGUAGE_ENGLISH: + courseNameTbl = segmented_to_virtual(course_name_table_eu_en); + break; + case LANGUAGE_FRENCH: + courseNameTbl = segmented_to_virtual(course_name_table_eu_fr); + break; + case LANGUAGE_GERMAN: + courseNameTbl = segmented_to_virtual(course_name_table_eu_de); + break; + } +#endif + u8 *courseName = segmented_to_virtual(courseNameTbl[gCurrCourseNum - 1]); + + convertstring(&courseName[3], stage); + } + else strcpy(stage, "Peach's Castle"); + + lastCourseNum = gCurrCourseNum; + } +} + +void SetState() +{ + if (lastActNum != gCurrActNum || lastCourseNum != gCurrCourseNum) + { + // when exiting a stage the act doesn't get reset + if (gCurrActNum && gCurrCourseNum) + { + if (gCurrCourseNum < 19) // any stage over 19 is a special stage without acts + { + void **actNameTbl; +#ifndef VERSION_EU + actNameTbl = segmented_to_virtual(seg2_act_name_table); +#else + switch (gInGameLanguage) { + case LANGUAGE_ENGLISH: + actNameTbl = segmented_to_virtual(act_name_table_eu_en); + break; + case LANGUAGE_FRENCH: + actNameTbl = segmented_to_virtual(act_name_table_eu_fr); + break; + case LANGUAGE_GERMAN: + actNameTbl = segmented_to_virtual(act_name_table_eu_de); + break; + } +#endif + u8 *actName = actName = segmented_to_virtual(actNameTbl[(gCurrCourseNum - 1) * 6 + gCurrActNum - 1]); + + convertstring(actName, act); + } + else + { + act[0] = '\0'; + gCurrActNum = 0; + } + } + else act[0] = '\0'; + + lastActNum = gCurrActNum; + } +} + +void SetLogo() +{ + if (lastCourseNum) + { + itoa(lastCourseNum, largeImageKey); + } + else strcpy(largeImageKey, "0"); + + + /* + if (lastActNum) + { + itoa(lastActNum, smallImageKey); + } + else smallImageKey[0] = '\0'; + */ + + discordRichPresence.largeImageKey = largeImageKey; + //discordRichPresence.largeImageText = ""; + //discordRichPresence.smallImageKey = smallImageKey; + //discordRichPresence.smallImageText = ""; +} + +void discordUpdateRichPresence() +{ + if (!configDiscordRPC) return; + if (time(NULL) < lastUpdatedTime + DISCORD_UPDATE_RATE) return; + + lastUpdatedTime = time(NULL); + + SetState(); + SetDetails(); + SetLogo(); + Discord_UpdatePresence(&discordRichPresence); +} + +void discordShutdown() +{ + Discord_Shutdown(); +}; + +void discordInit() +{ + if (configDiscordRPC) + { + InitializeDiscord(); + + discordRichPresence.details = stage; + discordRichPresence.state = act; + + + lastUpdatedTime = 0; + } +}; + +void discordReset() +{ + memset( &discordRichPresence, 0, sizeof( discordRichPresence ) ); + + SetState(); + SetDetails(); + SetLogo(); + Discord_UpdatePresence( &discordRichPresence ); +} + diff --git a/src/pc/discord/discordrpc.h b/src/pc/discord/discordrpc.h new file mode 100644 index 00000000..6ae80345 --- /dev/null +++ b/src/pc/discord/discordrpc.h @@ -0,0 +1,88 @@ +#ifndef DISCORDRPC_H +#define DISCORDRPC_H + +#include + +// clang-format off + +#if defined(DISCORD_DYNAMIC_LIB) +# if defined(_WIN32) +# if defined(DISCORD_BUILDING_SDK) +# define DISCORD_EXPORT __declspec(dllexport) +# else +# define DISCORD_EXPORT __declspec(dllimport) +# endif +# else +# define DISCORD_EXPORT __attribute__((visibility("default"))) +# endif +#else +# define DISCORD_EXPORT +#endif + +// clang-format on + +typedef struct DiscordRichPresence { + const char* state; /* max 128 bytes */ + const char* details; /* max 128 bytes */ + int64_t startTimestamp; + int64_t endTimestamp; + const char* largeImageKey; /* max 32 bytes */ + const char* largeImageText; /* max 128 bytes */ + const char* smallImageKey; /* max 32 bytes */ + const char* smallImageText; /* max 128 bytes */ + const char* partyId; /* max 128 bytes */ + int partySize; + int partyMax; + const char* matchSecret; /* max 128 bytes */ + const char* joinSecret; /* max 128 bytes */ + const char* spectateSecret; /* max 128 bytes */ + int8_t instance; +} DiscordRichPresence; + +typedef struct DiscordUser { + const char* userId; + const char* username; + const char* discriminator; + const char* avatar; +} DiscordUser; + +typedef struct DiscordEventHandlers { + void (*ready)(const DiscordUser* request); + void (*disconnected)(int errorCode, const char* message); + void (*errored)(int errorCode, const char* message); + void (*joinGame)(const char* joinSecret); + void (*spectateGame)(const char* spectateSecret); + void (*joinRequest)(const DiscordUser* request); +} DiscordEventHandlers; + +#define DISCORD_REPLY_NO 0 +#define DISCORD_REPLY_YES 1 +#define DISCORD_REPLY_IGNORE 2 + +DISCORD_EXPORT void Discord_Initialize(const char* applicationId, + DiscordEventHandlers* handlers, + int autoRegister, + const char* optionalSteamId); +DISCORD_EXPORT void Discord_Shutdown(void); + +/* checks for incoming messages, dispatches callbacks */ +DISCORD_EXPORT void Discord_RunCallbacks(void); + +/* If you disable the lib starting its own io thread, you'll need to call this from your own */ +#ifdef DISCORD_DISABLE_IO_THREAD +DISCORD_EXPORT void Discord_UpdateConnection(void); +#endif + +DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence* presence); +DISCORD_EXPORT void Discord_ClearPresence(void); + +DISCORD_EXPORT void Discord_Respond(const char* userid, /* DISCORD_REPLY_ */ int reply); + +DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers* handlers); + +void discordUpdateRichPresence(); +void discordShutdown(); +void discordInit(); +void discordReset(); + +#endif // DISCORDRPC_H diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index 58ef09af..5f643a61 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -194,6 +194,9 @@ static void gfx_sdl_init(void) { static void gfx_sdl_main_loop(void (*run_one_game_iter)(void)) { Uint32 t; +#ifdef DISCORDRPC + discordInit(); +#endif while (1) { t = SDL_GetTicks(); run_one_game_iter(); @@ -258,6 +261,9 @@ static void gfx_sdl_handle_events(void) { } break; case SDL_QUIT: +#ifdef DISCORDRPC + discordShutdown(); +#endif game_exit(); break; } From 5933742f82e5d57d0c5de8421f1405ee350f8c57 Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Tue, 9 Jun 2020 17:15:49 +0200 Subject: [PATCH 113/166] replace static linking with dynamically loaded libraries --- Makefile | 20 +++++--- src/game/area.c | 4 ++ src/pc/discord/discordrpc.c | 64 +++++++++++++++++++++--- src/pc/discord/discordrpc.h | 39 --------------- src/pc/discord/lib/libdiscord-rpc.dll | Bin 0 -> 399880 bytes src/pc/discord/lib/libdiscord-rpc.dylib | Bin 0 -> 273216 bytes src/pc/discord/lib/libdiscord-rpc.so | Bin 0 -> 661560 bytes src/pc/gfx/gfx_sdl2.c | 4 ++ 8 files changed, 79 insertions(+), 52 deletions(-) create mode 100644 src/pc/discord/lib/libdiscord-rpc.dll create mode 100755 src/pc/discord/lib/libdiscord-rpc.dylib create mode 100644 src/pc/discord/lib/libdiscord-rpc.so diff --git a/Makefile b/Makefile index f22231da..c63ecf7b 100644 --- a/Makefile +++ b/Makefile @@ -457,12 +457,12 @@ GODDARD_O_FILES := $(foreach file,$(GODDARD_C_FILES),$(BUILD_DIR)/$(file:.c=.o)) RPC_LIBS := ifeq ($(DISCORDRPC),1) ifeq ($(WINDOWS_BUILD),1) - RPC_LIBS := src/pc/discord/libs/libdiscord-rpc-win.a + RPC_LIBS := src/pc/discord/lib/libdiscord-rpc.dll else ifeq ($(OSX_BUILD),1) # needs testing - RPC_LIBS := src/pc/discord/libs/libdiscord-rpc-osx.a + RPC_LIBS := src/pc/discord/lib/libdiscord-rpc.dylib else - RPC_LIBS := src/pc/discord/libs/libdiscord-rpc-unix.a + RPC_LIBS := src/pc/discord/lib/libdiscord-rpc.so endif endif @@ -620,6 +620,9 @@ ifeq ($(OSX_BUILD),1) LDFLAGS := -lm -framework OpenGL `$(SDLCONFIG) --libs` -no-pie -lpthread `pkg-config --libs libusb-1.0 glfw3 glew` else LDFLAGS := $(BITS) -march=$(TARGET_ARCH) -lm -lGL `$(SDLCONFIG) --libs` -no-pie -lpthread +ifeq ($(DISCORDRPC),1) + LDFLAGS += -ldl -Wl,-rpath . +endif endif endif # End of LDFLAGS @@ -655,8 +658,6 @@ ZEROTERM = $(PYTHON) $(TOOLS_DIR)/zeroterm.py all: $(EXE) -ifeq ($(EXTERNAL_DATA),1) - # thank you apple very cool ifeq ($(HOST_OS),Darwin) CP := gcp @@ -664,6 +665,8 @@ else CP := cp endif +ifeq ($(EXTERNAL_DATA),1) + # depend on resources as well all: res @@ -697,6 +700,9 @@ test: $(ROM) load: $(ROM) $(LOADER) $(LOADER_FLAGS) $< +$(BUILD_DIR)/$(RPC_LIBS): + @$(CP) -f $(RPC_LIBS) $(BUILD_DIR) + libultra: $(BUILD_DIR)/libultra.a asm/boot.s: $(BUILD_DIR)/lib/bin/ipl3_font.bin @@ -956,8 +962,8 @@ $(BUILD_DIR)/%.o: %.s -$(EXE): $(O_FILES) $(MIO0_FILES:.mio0=.o) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(RPC_LIBS) - $(LD) -L $(BUILD_DIR) -o $@ $(O_FILES) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(RPC_LIBS) $(LDFLAGS) +$(EXE): $(O_FILES) $(MIO0_FILES:.mio0=.o) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(BUILD_DIR)/$(RPC_LIBS) + $(LD) -L $(BUILD_DIR) -o $@ $(O_FILES) $(SOUND_OBJ_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(LDFLAGS) .PHONY: all clean distclean default diff test load libultra res .PRECIOUS: $(BUILD_DIR)/bin/%.elf $(SOUND_BIN_DIR)/%.ctl $(SOUND_BIN_DIR)/%.tbl $(SOUND_SAMPLE_TABLES) $(SOUND_BIN_DIR)/%.s $(BUILD_DIR)/% diff --git a/src/game/area.c b/src/game/area.c index d3257642..d8a36024 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -23,6 +23,10 @@ #include "gfx_dimensions.h" +#ifdef DISCORDRPC +#include "pc/discord/discordrpc.h" +#endif + struct SpawnInfo gPlayerSpawnInfos[1]; struct GraphNode *D_8033A160[0x100]; struct Area gAreaData[8]; diff --git a/src/pc/discord/discordrpc.c b/src/pc/discord/discordrpc.c index af8d6300..db7416a0 100644 --- a/src/pc/discord/discordrpc.c +++ b/src/pc/discord/discordrpc.c @@ -7,12 +7,42 @@ #include "pc/configfile.h" #include "discordrpc.h" +#define DISCORDLIBFILE "libdiscord-rpc" + +// Thanks Microsoft for being non posix compliant +#if defined(_WIN32) +#include +#define DISCORDLIBEXT ".dll" +#define itoa(int, str) itoa(int, str, "10") +#define dlopen(lib, flag) LoadLibrary(TEXT(lib)) +#define dlerror() "" +#define dlsym(handle, func) GetProcAddress(handle, func) +#define dlclose(handle) FreeLibrary(handle) +#elif defined(__APPLE__) +#include +#define DISCORDLIBEXT ".dylib" +#elif defined(__linux__) || defined(__FreeBSD__) // lets make the bold assumption for FreeBSD +#include +#define DISCORDLIBEXT ".so" +#else +#error Unknown System +#endif +#define DISCORDLIB DISCORDLIBFILE DISCORDLIBEXT + #define DISCORD_APP_ID "709083908708237342" #define DISCORD_UPDATE_RATE 5 time_t lastUpdatedTime; DiscordRichPresence discordRichPresence; +bool initd = false; + +void* handle; + +void (*Discord_Initialize)(const char*, DiscordEventHandlers*, int, const char*); +void (*Discord_Shutdown)(void); +void (*Discord_ClearPresence)(void); +void (*Discord_UpdatePresence)(DiscordEventHandlers*); extern s16 gCurrCourseNum; extern s16 gCurrActNum; @@ -91,7 +121,7 @@ void convertstring(const u8 *str, char* output) switch (output[strPos]) // decide if the next character should be capitalized { case ' ': - if (str[strPos] != 158) printf(stdout, "Unknown Character (%i)\n", str[strPos]); // inform that an unknown char was found + if (str[strPos] != 158) fprintf(stdout, "Unknown Character (%i)\n", str[strPos]); // inform that an unknown char was found case '-': capitalizeChar = true; break; @@ -106,6 +136,7 @@ void convertstring(const u8 *str, char* output) output[strPos] = '\0'; } +#ifndef _WIN32 void reverse(char s[]) { int i, j; @@ -132,6 +163,7 @@ void itoa(int n, char s[]) s[i] = '\0'; reverse(s); } +#endif void OnReady( const DiscordUser* user ) { @@ -142,9 +174,11 @@ void InitializeDiscord() { DiscordEventHandlers handlers; memset(&handlers, 0, sizeof(handlers)); - handlers.ready = OnReady; + handlers.ready = OnReady; - Discord_Initialize( DISCORD_APP_ID, &handlers, false, "" ); + (*Discord_Initialize)(DISCORD_APP_ID, &handlers, false, ""); + + initd = true; } void SetDetails() @@ -247,7 +281,7 @@ void SetLogo() void discordUpdateRichPresence() { - if (!configDiscordRPC) return; + if (!configDiscordRPC || !initd) return; if (time(NULL) < lastUpdatedTime + DISCORD_UPDATE_RATE) return; lastUpdatedTime = time(NULL); @@ -260,13 +294,31 @@ void discordUpdateRichPresence() void discordShutdown() { - Discord_Shutdown(); + if (handle) + { + (*Discord_ClearPresence)(); + (*Discord_Shutdown)(); + + dlclose(handle); + } + }; void discordInit() { if (configDiscordRPC) { + handle = dlopen(DISCORDLIB, RTLD_LAZY); + if (!handle) { + fprintf(stderr, "Unable to load Discord\n%s\n", dlerror()); + return; + } + + Discord_Initialize = dlsym(handle, "Discord_Initialize"); + Discord_Shutdown = dlsym(handle, "Discord_Shutdown"); + Discord_ClearPresence = dlsym(handle, "Discord_ClearPresence"); + Discord_UpdatePresence = dlsym(handle, "Discord_UpdatePresence"); + InitializeDiscord(); discordRichPresence.details = stage; @@ -284,6 +336,6 @@ void discordReset() SetState(); SetDetails(); SetLogo(); - Discord_UpdatePresence( &discordRichPresence ); + (*Discord_UpdatePresence)(&discordRichPresence); } diff --git a/src/pc/discord/discordrpc.h b/src/pc/discord/discordrpc.h index 6ae80345..a4985715 100644 --- a/src/pc/discord/discordrpc.h +++ b/src/pc/discord/discordrpc.h @@ -3,24 +3,6 @@ #include -// clang-format off - -#if defined(DISCORD_DYNAMIC_LIB) -# if defined(_WIN32) -# if defined(DISCORD_BUILDING_SDK) -# define DISCORD_EXPORT __declspec(dllexport) -# else -# define DISCORD_EXPORT __declspec(dllimport) -# endif -# else -# define DISCORD_EXPORT __attribute__((visibility("default"))) -# endif -#else -# define DISCORD_EXPORT -#endif - -// clang-format on - typedef struct DiscordRichPresence { const char* state; /* max 128 bytes */ const char* details; /* max 128 bytes */ @@ -59,27 +41,6 @@ typedef struct DiscordEventHandlers { #define DISCORD_REPLY_YES 1 #define DISCORD_REPLY_IGNORE 2 -DISCORD_EXPORT void Discord_Initialize(const char* applicationId, - DiscordEventHandlers* handlers, - int autoRegister, - const char* optionalSteamId); -DISCORD_EXPORT void Discord_Shutdown(void); - -/* checks for incoming messages, dispatches callbacks */ -DISCORD_EXPORT void Discord_RunCallbacks(void); - -/* If you disable the lib starting its own io thread, you'll need to call this from your own */ -#ifdef DISCORD_DISABLE_IO_THREAD -DISCORD_EXPORT void Discord_UpdateConnection(void); -#endif - -DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence* presence); -DISCORD_EXPORT void Discord_ClearPresence(void); - -DISCORD_EXPORT void Discord_Respond(const char* userid, /* DISCORD_REPLY_ */ int reply); - -DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers* handlers); - void discordUpdateRichPresence(); void discordShutdown(); void discordInit(); diff --git a/src/pc/discord/lib/libdiscord-rpc.dll b/src/pc/discord/lib/libdiscord-rpc.dll new file mode 100644 index 0000000000000000000000000000000000000000..8493c5490041059c525b28f351bb0a0658ed8e74 GIT binary patch literal 399880 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�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 z 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 literal 0 HcmV?d00001 diff --git a/src/pc/discord/lib/libdiscord-rpc.dylib b/src/pc/discord/lib/libdiscord-rpc.dylib new file mode 100755 index 0000000000000000000000000000000000000000..f01acd67d5d5c296cd7fc92e1be0ec5d9d1b262f GIT binary patch literal 273216 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

xezs&G9f4|U$M<1ge?Gb0`)0q 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%0Dk- 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ࣨ?2 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%0DjlU!+G+_!7O|Z1O*` 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

N-syH!iO@ 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 z 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/x`t9^)gcLznEvG{z_ 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 Date: Tue, 9 Jun 2020 19:02:00 +0200 Subject: [PATCH 114/166] remove explicit dereference --- src/pc/discord/discordrpc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pc/discord/discordrpc.c b/src/pc/discord/discordrpc.c index db7416a0..870657bb 100644 --- a/src/pc/discord/discordrpc.c +++ b/src/pc/discord/discordrpc.c @@ -176,7 +176,7 @@ void InitializeDiscord() memset(&handlers, 0, sizeof(handlers)); handlers.ready = OnReady; - (*Discord_Initialize)(DISCORD_APP_ID, &handlers, false, ""); + Discord_Initialize(DISCORD_APP_ID, &handlers, false, ""); initd = true; } @@ -296,8 +296,8 @@ void discordShutdown() { if (handle) { - (*Discord_ClearPresence)(); - (*Discord_Shutdown)(); + Discord_ClearPresence(); + Discord_Shutdown(); dlclose(handle); } From c04c315410bcf76fcaa0ab5645f35c194503f8de Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 9 Jun 2020 20:19:22 +0300 Subject: [PATCH 115/166] move the discord-rpc libs to lib/ --- Makefile | 10 +++++----- src/pc/discord/lib/libdiscord-rpc.dll | Bin 399880 -> 0 bytes src/pc/discord/lib/libdiscord-rpc.dylib | Bin 273216 -> 0 bytes src/pc/discord/lib/libdiscord-rpc.so | Bin 661560 -> 0 bytes 4 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 src/pc/discord/lib/libdiscord-rpc.dll delete mode 100755 src/pc/discord/lib/libdiscord-rpc.dylib delete mode 100644 src/pc/discord/lib/libdiscord-rpc.so diff --git a/Makefile b/Makefile index 2c012985..890fb3f9 100644 --- a/Makefile +++ b/Makefile @@ -450,12 +450,12 @@ GODDARD_O_FILES := $(foreach file,$(GODDARD_C_FILES),$(BUILD_DIR)/$(file:.c=.o)) RPC_LIBS := ifeq ($(DISCORDRPC),1) ifeq ($(WINDOWS_BUILD),1) - RPC_LIBS := src/pc/discord/lib/libdiscord-rpc.dll + RPC_LIBS := lib/discord/libdiscord-rpc.dll else ifeq ($(OSX_BUILD),1) # needs testing - RPC_LIBS := src/pc/discord/lib/libdiscord-rpc.dylib + RPC_LIBS := lib/discord/libdiscord-rpc.dylib else - RPC_LIBS := src/pc/discord/lib/libdiscord-rpc.so + RPC_LIBS := lib/discord/libdiscord-rpc.so endif endif @@ -775,7 +775,7 @@ $(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h $(BUILD $(BUILD_DIR)/src/game/options_menu.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o O_FILES += $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o ifeq ($(DISCORDRPC),1) -$(BUILD_DIR)/src/pc/discord/discordrpc.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o + $(BUILD_DIR)/src/pc/discord/discordrpc.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/bin/eu/translation_en.o $(BUILD_DIR)/bin/eu/translation_de.o $(BUILD_DIR)/bin/eu/translation_fr.o endif else $(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h @@ -783,7 +783,7 @@ $(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/src/game/options_menu.o: $(BUILD_DIR)/include/text_strings.h ifeq ($(DISCORDRPC),1) -$(BUILD_DIR)/src/pc/discord/discordrpc.o: $(BUILD_DIR)/include/text_strings.h + $(BUILD_DIR)/src/pc/discord/discordrpc.o: $(BUILD_DIR)/include/text_strings.h endif endif diff --git a/src/pc/discord/lib/libdiscord-rpc.dll b/src/pc/discord/lib/libdiscord-rpc.dll deleted file mode 100644 index 8493c5490041059c525b28f351bb0a0658ed8e74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399880 zcmdSC4SW>U)jvL)&60(X%<{4l1!RFmqY(_G)x?1AkX@LC4Mq_`K|p~Bii*iDFY*@L z1hWonsSj3LZA+_GYHh_ws{!9O1oJ`=0{9ZdYJ8t{eF<1ez}EeJ&%HCVn-F~I=V|-@ z=cDY*eL45sbI&>V+;h*pQ+(}a!7K?Mrq};Kr?6w=ruD`{x;QCu{z0L2qVUeROaI0gX1`@yj^X$EvElpZcj4G&?ET6m3l>vbr|VgXM-Ucnv{Vp^=$lZ?=7t9D+rDcQ-vXT?f%z_^lT)$ z@Vli;W~xv_1Am&oG5$p>{m6UkBNQT(sqe%jNq-JOm_Md$;r0IO1;Kg;A%_BM@cU_3 zz%DdDh8Gjuk0Y-FG|WfwQcg=eu|Jm}M8+)B3Q`~SzW(Nva;`BqmM&RXE(o8296|;D z>4V?49?JQbqLd&|F<~?Q#TW^no>DF{rmVbd0kRm4L2Fj-vs22s#*{5udK(H7&58B` z*h2W?lyZdq|1bXJ;Ah!8i6(M5W9!EjLA~%U_Uy#C%fa2*(fFSQVQ=D(%Bzpvi83LJ zqr<|=)Fra_Cd1o)9Pr-V$l!hWp$6~CQ{m+`slR?bMUZ#Q(Eb2>(`|qq%CH0>24Txa zyzL|glXhH;AMei5>+kc8{`(cPHp@z5aoA;*YonLSd9_~g$z8H}mmJ^a4Y@kK!Kf+l zj+kv((P0+E^DL1&Ekc9k9Kgy45b9ms-n87fEms!>LRCA@YP-giB8l2%oMHdT!s*W9=W@eg(SHBZMB>S9Z_D zcr23}T-&~l$K!HnmQ@Zdw#lJoS+a6cR*uTy(ebY^NTJ0oa#(IvFNMHWMf_<>qk8|( z1fkyT%r?o2+gT!q+|JzRiHyo2IqY-JQZEY{MVF#z^&DrutRO=U`J66PoG++bc@Zn1 zc~NAu9JXBXcWTY;lw~DNZoo(pL%E%cePK!q+oOY!pzKqd)(S$fGgb7oRviI4&8igu zD%JpM;QUf?SS3|N!K=_78ZA+KClG(<9<8MRUCLW5S2g+5cUn3RQgJInHHXWwy<$+??fA${k+igL!p(UDH9`67f90 z(^d0Rz!%S3Z*e7yTxpf7G(QY%m&%T>;^F#M2G$?nO!G` z<~VJ{@wuRV1Il4cgdH^U;C6NA!$dQ;(}i*H50aHZatM+D-0O%BWPr$>S0^`^sZ!TO zU1zyCY=X?iX%2uXhh@dk&~9Hrqy&d%6NyXq_bD;!RWxiN9IT z9`>uZgA0*DKp8HiOY>#DwTe|%!Ecw9-s&w$P>w28C%8MGv=%Z6k3NjqqrHGfLYGk= z7{5B?;Eu(BfIc4f&nB+P)%inKo~InS@cEVa@eh#|g}p25ZK{6{%?LcdDjs-ER)Rc_ zsE;o7lM91XD`17TA(8{WQjG*QRjR9gPYKQHDhvHi&E9E48Q|@h9i59TPT`6I!QUIy zv_?xIeRX>i?{}=DcR8WYYBYU@5nP-FeddrA%db~sn$FuzV?1A0PN-pO>&2(Hym5}2 zKBk{I3=OA=&)O;vij~hZ{D#TFIw(Y@xti5uXhYL|58lmmp9{M0Vs+9T0CRKWLU}{2 zu;|sHvhs@D5tVCCo+T^0!1b5O<`y}0736)%E@98F3gw(eXuxd7r={Y0(w*pc74%tE zBw!88sp={~Cw+$u=+bGkR5yD2$A5y^nc_Vg+3EoZA>)n;juml?1sR*87c-&op^JHY z)yMxppty2^V!9cMsXUu2CpO+QuAV7fC0#8MyS;@HO?=ULBQ+7F6J4^j7##3Y8l_4M_y+G!;7otsnfKhcs ztn36Zm`Qb?)8xO!xs8#!S-mWSv<6gw1>DOh6B6Kv^Eh`f1;ufw~AND^%F%zli}1ERe%X0PJ)B902;c28foJvhu3> zI|AepIC{lN=*a|$l>(#@;&am3rL}6GZ6^O2a(I=k)LnIBW*|dW)}u;1mYVl@UYwe^ z3Qb(ZnjppieCc%X!2~`O0dPkW@PTspb^>0S8Az9v*hq=LM;Z!R#-~i2}L92z5K>JWm zFck9SaK^b*u@D9%!x;jWdX_w)0{tPZ%^KEqD8UTKSX#a1??4-tt<_ewWs;Or!*;+*r#c*UaaN*mzl-%X1iEx-%n}p zr^!p+vbq30Y*~kupKNaRU#?i{mRkh362VkzsllTho@(7Gpp^RfwI~`gqyB{ZQ6B=? z2xJoinaR`&n@>KefO4_ z`3K4hxDHBx{cckFh2V|A2Qq{gb1_r)nQ~!~Em_k~b#OI*??X`d*^GM4T)S5wg*}00 zt{G59GnhIGKjGX8O;$6%3BC0H4rOxMNI%Wudi^2iW@N~rXPghP-xr))=~uDr2!K4K zsyZz~NI|3wa0St|fFSwNacI zfvWek;2FK}r~;t7LyOw+-YGX!*-%uV;$aUURAsTpDwYzea^TGudNezc&l+m*2r3K% zK(OL}8ya*`i4boWZ`JHApH-W&6`XO=o9Ntmd4f<0YTN@Rh7LMk<%+@~hl{tWFM!V# z&sI&zZS#(NRnx)q4J9-zNeK-g?OR$^o*C#10|tuXZ!xo1c^hEg{6yD31a{Hsz`|t1 zOb7)eR&ItMBtVOm6?n�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 z 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 diff --git a/src/pc/discord/lib/libdiscord-rpc.dylib b/src/pc/discord/lib/libdiscord-rpc.dylib deleted file mode 100755 index f01acd67d5d5c296cd7fc92e1be0ec5d9d1b262f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273216 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

xezs&G9f4|U$M<1ge?Gb0`)0q zG+S7suV#($JX(>gAPmwm!0|Drdm~!b0x)4wpMpm7MMnRnMrU$UqxWhA0T?)|PeG$O zgVAq9^g^S8^0RTf%X}EEQvL+}M9x0vMbnG0IDHitV6D#vH;1C+x zkLHLyG$0y=c_;*PHzMb5Mv+Q_nB?USL|u^sBa_zLk*IwHQ^KkWrhuF#rl|_^rDr%( zj2>wI456Y2_HZSY&wKF9$Mab{Ct!xk=S)23;kgPA&!>jZyBS>WviKfV&l}x|Eh5jJ z6yQbvLRF^?d^9fssWAdKB}jKbd|2xR5+Y(R$g4#pOd)F+H)~e`FaR=30Crj#j=IBe z?8noG#a;nk9g#SqMITnn0Q?;)?1VAMNmD?qiExP^fi(*};_d^k7ydr@doeZ6$V8ks zdUWA$1P~9zz>=Z7DhMkKG7H=~uj>`e0(p8P)ePqTTv|ujJAq(FlRFtFKdnI&5dW@0 zInM%wE$fn*E(&;x#HJ&|ikA0u(Lk?ox~WEn>#bCO-2!PZBoadx0lMnOjiV~y{6uOQ zgcW3s&2<*|1c`x&MAKa;ysl43VqM_gApvmun^FN!pUWWCiP^tsRhMWzPmunLA#s)r zi&$EM{(B%(vQ~<-WC%bCb+9PN&y_3~Neuz!+yZ=L(OEAp(nu13tx6^95Rh6eU|^+?=xIZ&g=$zrkSPJ)K$lVuYFNL93Bbt;^(mm7 z7WDG$CjM?u_cGAaT`EW4WbgUQfhohVth|U$h1GD^Kcwit*4}@=zJFFv-j9!pR3#-O z$n7U?fB*JP88F+P?&0qy`PBt}FSU@VIQ{`W0o&iReJ&dv2xz{BHU#c|x^GZ-AKb8? zF##T_P+q#BV#@{y>KNJx#IgvmxCIcM6^R~eFNACRCizWAG*DuADe*a}K_Y|QC!0Qv z*h9Q$3qWVDQ3^g$1U7I(w;NXP>=n)MhwMeLo_v01m`pAKm zB*7q;z)R}}etLt(>(MX)&OpEV6yRjyz(Q!}*-iZYRpm#}3_tVG_H>u<8R%68BkB{R zGmxPVBRc>s@&O5V(+oi4#Q-*%0%Y}<>uU75iqs|H?X$O^wtZ7C@Y~a?`MXJe^{|OI zP%qI3jK(8?jbODiRU;TVwz7TJGdY;2Xx7e%X7!|ur`w9yo+A?G381q2Cuvd=0C_Z0 zl_Zvm2$0uVqQnI03KG`V2=fH-_H+%Sp#9UBE7d2+{06BYv01Go9RgCT39$MsKzz|z z)1t>lwr?UUm_3aY<|DRhujGE7XNw(!FMVht1*9YlOB(b!sf329&)%Ru1*{dliV%S5 zwfZDZ(dMO^Ft-S|Z<62iYLa>y1E+7)CrH@7vJoWCaY@)f9|1mjAwagSA>FuA8X-xI zN?58&_c3r7On0SUk{C!x0W(8WN#M3Qq2P=z3|^e9L@Pvt7WtLc=oL&H`R zV1}r^4eC=s>t7_+&);8FejEd3T0gfou}<8jQTo*t_Ji zjtEF+h=lg&a}|kt0-suc7hUOv{M{tK=^9dc0|K0ZQTlMcn*?h8LR_iFsvpfDuVsAu1Dk4z_Y6YYXkQfPd3GkK*NR3Sr zxp5r8@-{{UIZ!JgZ5Za>&QVf}yNPXXt9uCsM4LJkBf!}tEYN=l^(FyMx`r&AO;rTg z#S~w`kUmV*0hk${Yh!?$VnB<#kpUQAjtfYQ3D`I)VTyEpWNJc? z0x)E(L4o3MeHF_U$|b<7tJEhzl?$X;0F)~vsd@q^7eJMpk^m@I<1zqsd!c{^>nB&~hru{`PtpQq(&N!ob4C z2GJ=hkpkRe<@*<~hi0$b4ZgUfA|N#)U|?K8dJuqHJ_5W5EzwIg3fQ=iMel8_6W_p6 zAxU@9g1y_>48ydUGK^J_&g~r}!2tsTthK2xp+16E_jCmJC_;df7PhX&!TC>(Gb$v$ z&z=BXxQcXrWO|k$1;D~BjnE7LLl@v| zT%y<))lZpt^>k*`Y{PmAf!Px{_g{U>HWP@+JfOJ2Bn-Zj}NNh*TZ4NOhydq2z@p=W=8wk(|2=K&*-cm{W zG)#Q1r#^q4(#WQ_s_>II}{NmxpdXadCN>p)UPlTJ|_ z&k}mOStxAr;pIJwTqM9-sA1xBeV?xb$q!bdRR;=02Q64QX#Y8OD1U&T`#C9{^8|9d zkkeu>-OCxXXO9W+CIqB10yZuJK$UJ3-@r<6Zt>Dx5EfN>gMdw|MRa=>Q$@F^zB=_a zs;^dk&FZUBUq1nk2B~kU`XU6FS*TBtScOyHLPp1+Qhk>C1c~9D`V?@`wo(xSFsoLd z#KD@P`V^4ZC_(^cMCubUF-BCMWC5Ed>Qf}6N`A44szUW@umT28{#j(!Xhf_A1scFH zB_u$rNUE0OX0c(E;M)fUr29#Q(<}gLY_V#1-WsxhOH#h8CXgm&WZ_O)@Uo}>pK*$ z06pgj5jhkIKl}5df9PmH;d=F&vW@C7UI{s}qo_l`vb7 zSg?REe|UUCxZ9(WvI0yY;6qbV4?-?c2{?U$b1H_pT?}%4aEdi|BHHpWR_;+KuFYSp z+;NR9bhB;hef8k}3vW+-WCGX1!y^qRid)|K?)dpnO3crpj{Zm0;sSB^vnpBUz zj_T|o$f2a8X4j)=KJu^Bn({iT-yj&vmNmRV{$;omv7*;e$-y45G6NyHOW<~5ujY_X z9bfYTf9zE^_9}AH%nLt7=bIK<;mdCNir)W+z8}QP^jJpx@4P{|?CblkXF>5Wc<}l@ zeGl^g{_h8Iy;EPH{NMh5(7)#W$rq^xir$|LjRfEP34K8+kK&mb)l(jI^iRTO5bQ0^zIOoZ0a(q$F>Ad10-#2VG(e-baEb;XP z+(*KBQ2iE{vAD*GD`t5I2rRLj9&eXE=FQ{>}dw_Xz4I`BrZ0A*Olb> z){VT6{LFViDk&n`W^v;rcISh#9d=akzNe+Ezx>`FPmAIhH|{BoLAXhmD7+@DHDg|p zxIEDf>6{POSi$>?<6G-c>q(BR;}u`HlqZ7-TTZ@q$H8>8(oy);l z6gz8fD52nE zN1XRTG5zNLEF{F}fvwI`IZ!%iTEQF2LI$(uWsU;y@>{cTE0u*S3-j~u$Ewe_cSQ<= zefTfCq&8Uo1}7YtfSfok#D~13<@jZWgxByya=Gxk%7)hk@d3w8)3$=HVNV%^X3ZBv z<^C>aMcUSoZNQ#<(z8RPf4^UHJz>sAmymzIZyjESjBcKvOZE)~vdgE7I}P3>jQQ4Y zhWV-Io%_v;-dcKC^j*}k*OYjcpkY3CVlA)wI{1d#pl)*pVoHHW5A@5u@|picZ-%ez zJ-os_c_GTftZ-Hz4DOXto4e(6c0qN^Ygj+@)=!TQfp`S;VPzSuv> zap*!hnXjt>pxY_0e~b%RekJ9zcYY7N4!`YF`Q_i=!wLw!9v9o0*pm2IHT&kG_alky zZE9m!QOM$*&*YZiOU5DR?#QY)C;qt7PJO||;YT)vBV({8p=i?Zf@NE?zuK^qb zMBe7rAw49bUlTbQ-?`FV?m~!J1@U~_>@>B}n=*`E z9Q6i``b~}c4o2-})D!bjMFFj&!H1yZrq*(CG-8_NR^ZdlY60R@Bao)1c>cie(+^4~ zwN=zWHKX^6XKUa^b{}KOzSjGiO6@@m0q-Y)JxmuH!z<&$_bGz+4N5}jZ3a+~e${4a zT6KB>q_w0pXTemoG=p0FOuxK6sboHc{Am4C{w8?;t`+ACcwdaJ=jn7Y5x2@Z)vAf6 zwkFzMOvYZ!EB`$q0(Sw_zza%M(1f`qEm7e`Pv=zRdNCdrR`Euh)v61{BV##W9Hf+; zr-k9aE^Iw$^Zf-it?m8wTO^Yu?MXh|a<8fNZG9sD;pqwUf-GG_l{50uL-y_SmiK>- z*YWUY@!R>P>Mx&Oah#X;;D|qsqS#39_%&qq8j@oK)xGcyU4o9&IGIqn;=oAowy)Pn zFEoDAN`9c^jBh;4nxp7eCPno*JpbUFS!u%cJD(q}9sJ9~^?f?fOAngo9>5KN8vuI& zdjSXW+LC@G46EZSY2*zw8IJd08+amc_QBbYpm7~11vld=(6aO)yfYD9zd#spPRv>Y zlML?B@q@O!XNQ-i0grcw@(OcnSKdCl%vGBu?Jn~?99q@7w{?M^%%)zeJn+2$a|UCJ z-nG9eu3zJ3H-=$B{T;`kp@W6BQj(NGghl@W1%DO&^~w|-Yw4Inq90ozm*_v$ibwVm z{bljP;(vWN+JK_<5Y&G}NjFN>RKQWWe#cnO7iI1F2t@W#AcAl`BDiP=;CP>ssN!+e zqsM|AkC(K#$_L=8M{fW+-Z~BGkPv#Xcf@4<3E)UJhEW(3jE%Uh+fasMPU|n=8*>4i zm~mS12FRFk0dO73X+>8b!;9>8f=&Lr!-;H6nhgXc+*aI>ifwROZ-8%u3jiZ>T5p4| z&jrBSWbr9@_y*n9d%z^V%__X_wVZx*o#y|ze*6z?{m=B{udDpa^iyNGm8*V-(()Nj=GzwZ0c#94idhOtJ0NFrH##1$;@8wdBj|D0*K6xB5%0if(1b4}+&#w__<9$qR5gcF*Ia z;F<4AO?JW`%O_%gf_l;PYJ1+jqsAe(%FW{hEP+WhpbM{*wvK>lqIH}Fr{DD_G3G}@ zNDKloPk)PuAPA=T=kJ6L_bx6XhP?7_Ue7LE0;~fcbGl)IY4XGtfS}Gr%!GXuFw(&! z#hD+c&4q=-YR-IuU*mD|xBC9_1E6tiHi!i|=?1Eiz-yQs<(hrrR^K*_P!)Udge9f#>k!sIn&wqORF95H8~4<{g}J+Xf1Tz9cG$zeVExgg8-E}C z3%O5e<}!%WQtVK(!5D&4A*#n>$aY^q9}(SK=+t#tEh4GH>B%doD9jN&y3E(FU~A)B zhSRf>ad4-&QX(r;_j+Qn1jaW7;dqxY;8)D(GJgvj&KsDrS{W2UQF1!J6A8?tIOnE$ zaVw`iLsI;=>M`#(iO}0<*>cRA$}qQM6oy0I2czh4+WRPfKHI&c2g^vb|KBJNwSR-J z7el^r0=%pVz^?|Qa7Nd^Rb`_`Dxu6ghwa_)M{+-b-Ris3V3pn^a6EM-;54pg--cZB zoAS>BwM%|cD?VA^i0Q_z3ZS@d4}0l&O!Pno+2*CxgI4jZdG>n@NegQnPym79*|0#4 zCdd&_zX~)ypp+11wo2ovG;=wia#N(>dHRFO$5=|iEK`cQIn^#e|(A9B2L*;%V2jjCu2(}D@DIq3Lb`Rp_ZZ8xC&MN{l zg9w$!a_4G+jpY%W_Tl&DrQ^Y%FV{Xl{{@3HYmgk4}9<=6xW==NPE#oFg^;?e_Z)u-Gc+( z;`v-&E`RTk-vj)RE~d!4{;!tRk}fJi#*6v)b@;Jj>Usv1)3F_)WB7^F}m=aAOV+{zrT>-zi}Mj1>HW z-mx6}>T8K{9T&0NJA2KK`?PzX@7qIA z|Kg{IzW5wk9}Db}<8r0Zb==Z*u1}3H{f18qsQv}O5XRNGV-4F4a*N@1MD0Gj{#2K* zTe4=ZZ3YV3n7h!@f*xb>F#T%KqweE9ukxyvHn=%ls+W(Fv<;f*ouY|R*vO#i!;}OL zv=jKI-~$K|S$u(j`T(??h}|cMWbD3^_k@<2@mdaQauB0QFy}I-)d+|U^b8x{TmuH5 zQ2D5o?+8D>G_*g^yqa2+%D6cgg_Vfi>!)&Wbn^(7p`tfz#g#Dp<5HM!WzQ8%1G4o( zfr;3FA8VjUws%oBuj$GxLBkaSstv%<%aF|+hipl_{Js#jx^B1=#8?QC0B&a@cYG6c zTc7zdtU}NwKcco;k>d^tO2+OelA}(z>|IBPp!SD&zKB${INI1`4w~^h!r_9tQ zKe=!JQ^|b`{0qtD3x4a=RL+o8Zue8U{hvw&-*GNV1-d;R3QWXq^V!|zmvHKJN_g{~ zjP)OWEWGt0WPN@Kr+y+Oe1m}M{f1G(yliV0Kz@lAF5w>_pD5uC60liDp<2Ql%%*RL zWflVY5tW~EC*`}xOw2>8NQ5wM5G;UJ@8jUu3Q z(cG8Y^4l3;hvDJXwbrqZTNUVL;Br4&i??K}koo=U8flNALvzt z-dx(hunVs;2I zD%;<`DdXp0eQnMzS>W({GBfi(0;xD!nyPP=U&mJy=J7mruzsJ=4ZEaG8(-% zql%cqFX%tr)1#a96LV$DH#i@{8A5z(JHg5iP%td{T$HuS420rJ{JG$0fJ%m4=~k&sRkyxIrdn5awdkZiPoWHY$!kOJ%I@_ zp)W~7_e(;#ZXG&~$?zrPwEoCk1-e|6#5{F-2_5qJ0>sUjYj2g7`L*kl)O90kHG7%g zgzOo!2f0TSjc$%WcT?)0`G`s&Gno0I`Vh30a#j+rmEI4neU*i;ujvVh57nSaK@Ip& zZJGILK7IBNQ45_uOiX< zjNfB%Eo?Jq782)ql+_dx)`J4c7LX)j&m?2d6!rF4{38ovDv%08LSm;7rltc2sm9HJ z^(s}~)cmYnCV6Uj=0~9Osu#jH#Dg&AtE`ZI>sHSyx1L7L8u^j-1L?*uLNoC zPX6Et|CEtzS#NpCekmd~%vZ_o1sHmmlKmC*LDCau6$IIgaeQ8~OE(sR$IX7F%tbQR zoD#`Uf9gxmckJC>UPK}?a$Hx|UW|(FU_Ba2eV(E}M$u0z61@*hHm_09CulEE-BQLF z#9jicGWV1t5qnwgGcwnMq>R0AZ9JGt;7flXdVQlAfpUus%Qu>;A2DMMcX9{Lt3DE} zhkn8QeHLa?D4Iu+Mv>9{{Og6_adS~A^MA%@PArY=OLi$_fn-sYtQ%m6FCsGAKwpsT zWJ(q`nz==iJ&uAY%Jyp;O};(cyS>~8{$ejH%G%4%McjsSZ~_7P9HrDxQ|g0@r0xKd z&F6*e<&LkFu@{W=LXF4zawK9>YXf^ZuN+CSNu36gGA4zcpWu|@6`**1d+PA5uCx*Q zxn#WI956)we+n@4oa8@LmnY2CNTbM};x`uxb=(|T%KV?Pr)Qwsq9XV0X|784qO12J(73}GG2vTHExebNjanoJO{C~-wbp0dpui@Z;v_h zT{-hcEC3@6ett0sQ}%ffD`9i-T0~8XQ_S$~x};H9&uF4Gcugy$1R6%sxu75}V0Mp3 zJux!Wel3fk@tj+O)yP$ICdA?=0WpQ;IR(ILnl75 zxG@Xv#ey&-mbVeh$?%8GcW?4p`lR}%;zrt`{keccQk+G_b`bKBjonfKkUJ<4D=!;{ zr@f|0<=_&X1PsE#EgUx`t9J1}V0)vj$C}&P(;U5VxVdZBp5|S{!Me}8R8OagJv8(U zh@M*E8{!(1SquS%X@0(m%wb`4SL{W+6757r<`5KXqWHesoQKR@WHVu(9f*udx3X3O&1f8_$EYhf-;}$WA zhI{Xk9M3|=hd#(0Uli2Ae2!7nzqk=py5uQr{aUL9?54OBYKAcsD9BTA`F3DhM6xpr zlF?ZtS-7n0igH)rCN3BRf??4Z9MAg;&OF6#iJJ<2EmQQmBZ8=fbyyypZ~iJr(V_j- zz0cpq%u~pWRIIDYw(r-d@;?7VQC=r}Lmy=;aw76562dAb%my%_c_d;_nSQ1_$5Ikmnib5=6F0Ixo z{FbO!Cw&m767fZ@p0ZI-45DuCWN9$VFF?up&R`H&|IqtlaC-ghA6uG?pZ%Hv>bcv#g2&7wehK8olk8tOV@mdOX91UuJrC(MQxAiW z-^%j);jc9=A2Z8KlkxM=a*yQUL*JJ?3<3--VIKYt`asADa}ko-jO0b_EW*`aDFlz1 zs#4~X2fnGcqzL8ucxduIW~PIYl;t+RD2nxPe!wGN_*FrKua=E~*WYQPo8KSk$z1=x zQpod5+4%}O?uVkFW3VfYLcR%LXeAZ&YtR=I^kGP~nYm_OsGyG_(I9xtya@djm5?aN z2A>iI<+FJ-;)`DHE*tg3LDV8;-qzzsy0UDf!;2%KCOr^D_)ysh&!c}60db{vPe#AG zJz+ip(O`GZ!|^{HkJI~38&-kxjT@Ho;-*tpfzE_Fa(FK{^D$xGE*X+_zcF0vHO)cN zKZWY1>Sk4tbnepuhjEQz-1g@av0?K~cwfKnUQ){4FV;_eA98sOALWLhSDgVEx|+p0 z9f}CbZNjWY8bx)t>g~BL9%yI zvTjPY3W*gY`xOM)ykE%Rp85Ae@R+%xl(|TDSdkQJdf&&<6MyY1SZ~?e{9??UjZ~${ z`ApgV=hG_sU$NH&(a(l&=qnWcyO5?JdM%hh1JeJjhSaZLh*!g1WzlG>Wo+&zB0pW2U8) zxn!Ti2DJ}l!FRnMxP1SUUp*Z&CxV}-qoORU=>aP=BK%}-3@5jJMSdWNnf1*euOkuS zp`Z=ee0-qDw;)EI=oG>Fye3>I``0E`_U5GCxJMJj44n8MZKnvb}!M99){1 zUx^oPlA`(3ol-RCVQX&adn}sUKwl`D!;nT%(HsG3g5WXpecw9r@`+Y{m@g1G{G$0r z-bI`g#=6qTzGU~_Et0jVWLbcrA5yXdiX{6t2(o#9pBMYHYm#Bf-c-t5B+GXKl7-OE z&-h|Ly-URf@#6iE?i~|s;km3@v}J*E^>~9f-HZV_=AMll&3_G_famxchaTw1WQw8Y zq>}>aIQHJ+ke|H0RD{4O4t68YtzRYHR4DkYnjD3tGdqNO9cQ!^? zGUer6gxryDVnO+nU}DT$aVR}E!$%trMU=3Q4`TD)Rx(9zbo18u_4s1euGp=Zd44#k zWfJ3$u$hFsn^x4S63&uXkgz`Cy_@cWgbxV)y9z1L8Iq9XNt?e#5{@E=-JKgAdE}9U zqF>Dv1zn7w{t7=ZVIM<&c3vYNk@VgPq{x@F>6G*uqu+o=NS>5PMNAI`Q(Pk9QK!}( zSVTqcqreCYpet|&%A4Ux$;m5o&1u(B4M!D{p;Hy-rt09Xco<)8#w&%f_kouS=lB}d zT(Ks<>5#?S0v4)CdZnzP$+yy7(B$Pp&m)9>&gcwjlH^I7zePFoHF@*RHy^QAO)@ZH zA4z@%O;$*HZwAs&k4{OiK{QG7q(mx8@1M}*Vc=kP+El|E3dztJXp$7=G>Ni_m%%3H?=xjd!pTH1I3}dfKl54E+F=)%+3+gk!KO!HV`lNQvgB zDq!oc*!fqip5$KsJ) zFxBY#C`Kn*S-XlVt6J%PL5gZ(^adtYNq51-4i*V#1oTOp&X9?bJZbZ{NNjw}1@E&) zUFF|F*4$W+o@6LGTZeH3s;zauQjx5+Ct*)#0tK7%uB9?{{LO*cLwxHo6eB_NuIR%TafUo~~=ueCE&-vg#rGLKq+WfYg`hT$?1f50tmp5dW)jx|>MBjyyj;?>a zs5;DEPsYCw7;ACR8x+S2bQg+aj~K%90e#Y@GgKTTPulz~(gt4^@k+F&@eplp3P_{7 zY15e>V^=^mq&3|jLp2`>=rD?;8z_APK1dGuBIU{k6lx^&21YVWcfm-0E!O&zfIex{ z88Q-*CvE;xi=hR*^4-_ zwd8v+V7nRRhUPEmzKA!MgGM5j{P<*McNZ0NU%&$2gDI6PY#DnFEYD4tOXajrMLm)J z%bp2o@}n=IkkYzFQoJ`vQHz4!peP3DE)>Pbgr1*K6dp;N&QMX1JZbZ{NTC=p=0C@9 zR79H3Yb$}vUCw|heMBGPo71oiov`nK(@%;{wO+rEAX(5ycr@7f7Jd;64&37G!A&;J zbV8=j3E`5Hu6b7FUm;OZJ30x()OHlosa2mX#{ca=7}XQKfu3%syP&6c3;k^YebS~g zq$iRmZT=SN>0YE4?@SyL^-!PLvT5zU3c`hJ_Xfl>Z~FrEa}%7Bv*_8Gr1(@tsNm?2 zYf>ad1%DhBysg(Q))K<~mh+}5=WB~q$0@4V%biy-(HnzARj0qE_ZZyCCNtDbC9R`lL-~NKTR`<&*YBaxy`^)>1TYTnTEkvxB04 zuE3H`6&)X6h8we;6tmEs<}b(7(Jy@!3=6qfB~q;jSZFTj4RW!Z?m{l+3jGBEebS~g zlnat4ZT=SJB44ZKiO9=>___RsH4K55e#5|rdgo4-YZwjk{?>OL2A#=es3{tTR=zoa+=b(11cw<~sYs=Uym zIrNxuEee0S`JC9|rwb|2StOs|U!Qn0t+(O(*j7V-{SIs=4!sN2&#XYM zh2!2vY`?m~ClIQ_kL63SL?k$;AOW345`_EZ&tZ&E;8E(DA8^^r6ZjM6Le)g~$NWA$uXiB98 zRX}FW5y?Ilut?f;7D*P?!g**)%5f81zV+ZBX-?)i=@dd&)`sn6sG1dGXf(#g7MI?ZC(0Y}gE0V4#8 zM;d=_zHkWuYpb(B5M6&Pl{1JR{&fi>^deVpvF2=HZ-N2#A$A>EadsfV0fu}Tf)XGr z^Aa+EwJy?<7v4YsC$DZ(4Y@a=`t6E+1C8zR2&5Ro%nVAbw-sX1nUD1}Xtf7iB`z*B zp6th${&4rGwFfiuVRNDId24|Woq0ZDZb%c`4?X7NLi&~hDV=%J3-Sro`w5|=-93su z&|&l9T4wRcLQFdIF^>u8+c%hB3gw#%lyv4PK^U^Dq-cmn7#jAMZ$`cbJ4)C`6xh;P z6wj|%FWvwpdkq(2WdjxKX@H@NSh0=@T8W@yapI?=3!V6VWldN#DM|SWnvq(Optc|Z zokbFaD^OigMho1;6}+Q|*57nK3<+!gX2ugdJhNU7&m0EU(d*tG@WA02ZWrJR4GFhD zPSe9lpub&)RUMq7DSO_&t~oJ*{RNzT{S$~M%=O4#bn^tx&;M!eqq311()r;?NvJLd z6|XlZVlU;;5Yin9U3JE_j9|aChFA9SE(qDfkZY0II`bA3KF{{AM9}vux}L+05u9%4 zs}D=|KT7ZWKteDwyu8T!LUOHf*zATh{=V6`Nzx-1iOS};CJ@9tz+upo`#Ni2+C!ILD57}v=~Q<%I;QlzgfrbW@%_1Av2|$`km@TX7y5@BbG<4 zEdIZ>_I_vH83x4EI{)wa=6PoA{qDW?+H0@9_Wj1oZK^s!$AbHMPMh?!rGJk+yF`hT z+tn{6u~(05!aN96b`VAlP}wi=wSEbF)O<)&svsTlj_ZrLcNAnC!QAwfUz{&}+&W`(wFvm}meXu32Q>&ks z)fysd;Jt)6EP#Uo&F3R1FWktJNpy5bT#f89K)#uk3_doVAB~cgxF?Nu@)@ zvN(9?o9nzoknR9c1!!vL;S6r_f*vB9)Tu6(o8lY>Tq8+pwufa?+Ncg;hLImQRRTSQ z`)2j30^*Y{vW><84E#BT(a0yZx4=CJEVtPY9|gkjM8fR2hk%aelO!t3_dsUlIE~MW zSZ_W`EH~!>PzC(Kd%IH)uvzA=sB($nnsho zY8NC#Y8p~OXJl@IC?V>j5IG%8jH2!P%P4N`JeJ^<7qxL+30+Eu;_D0Rs5r+c6euW3 zDIS38ix8jzZ@O#%_f5(a$m~Q)MI0XVao*Z^cpX*GcDEZRSw=h6mnq*-5OV6H(Ff5A zyN*AENBt+ZUTf-IYg6#Z?7vD=M}wlIDX< zlPd9a;&5G+`6=~-Ssh^ z@_Xv4%ulW`yPur?9!=xMX#Z%W= zBF5FbAWk3%U+pYAc9M49VwjcX3i0L{)&%Kc4E z-5rVBmo!sS&TIfSZWd=1QXOaw67xXZ3-4cY{_1pH@?OQ6WvaV{c@HMuZNz&i*b=;V zXBCq2{&A+B_Z6N*nfIHa@h-M?Ho9I71?9WSqd1-5>gY&)yhu~kV#r7A60R~orcNel z4R(eM3b?aPNV)?+&_!qB?zZ~+HDux~-&S&lnYJwFw1+_i>&q$a^N}oO8*0^}HY3R! z&l1e7qsH~$X!tbmb?Pmi#90ROz!KvK;DxCq&u}tBj&M$xh6|=1g|U7yF|`l)OpKXI zBc?>olrvLP+?YBDp}D1)ncC|n8o}8+n$)|1BHF<^BG0w&Sc{;c(-|*%b*pDgG8qPu zj9fH_C=>sHvHliH#>HAPHum6{>4^YTDGwkrEp_YEU{9jV{$*a+hm&5;n{YK0TA}Ik z_^+4#m$UCZw;QK)$nUtr@y2)M`Sl>zVH|tLm!_p))|R~xfX|EzLT5M9@thuo8qAU^7k>;XP)@KyI` zlNY*sDBX_q?dTY*k5Hv}xpzvJ>L{T*{VGt``e?jz2dV-Awf+;@+ft<7dA?2SUpPA| zi*aQl_2uZgaNJtHoHIgZaV9bq)%{Iu^lXH&{y~sdM?jM}FS%nvg9Thj&iBHA$eeCf zUE1%TL?ISe|C8?5GNYEG?G~u`5Su-{0i995fNC?!7o?)9*JX2??nwL`!x0>-M;~Fg zZ{p|DR{66bVC97fDca}AfZJ)dh|k6w?B>s#_c^_y^>|}+c;STih7&JSkC&svn?!gk zfTyW(gE|{(;#LZ!;Qm(0f=gIJM$e5f)+dSf@xK|9%mBsQpvX6T9b@gz#+ zsNQ@G5ck~>V4FK&QT59rQPty4P+ra2)BF+!_>hJE$tJh{wY+Z#XYBE2!Qy~hNsyp) z)L}j}s1^3AO#vGZs&5c`bnn@c@K-9Nh>%!Zlc4gF_bx!x%0&p#xYHWo@^kk%lOkCI8pLfY?y9_pwcA~@`z}Si z)h1!|tj5=R8d0j#p=?_Ak`y+n=L)7;oJ>8Nsb|?e?rOcC2g7q*e(r%L!^4%OC^~`q z^6KnAi&`7ynddLmVS=2B$riN_?5;Y%t-cE6@H`}03|Tl!y2r)ozO*o1ZMyzuGJ4W7 z^?Ls^A&+Eel#~bE-x?Jt*mKo~sN6*V9e5D85V1ag6UT~LR2z>`eFcK))Tzf^xn>pVQ5-z%Y=ZM1H3C7L%W_m@V;H(8 zr#|Xz|BFZfjyb3qadRCJh6mVDo3GPj^)yV(Q5QVS~5%FR9)i|xW)G`LwR1HpLS zf@dQ3s4BL-!vP%ATr1x`h~(9)>U5%C-h}HFFw)z!mpiq4$uLnx+drhyqghoaC()E3O{-9&*fu=B4`MGrc8&QM?L6ao zIpFE8>>*!FnLJG>`2l_~vw5tHaP)T=uw*O@I` zn_(Xt#7TFQA!bBJ9N^m4$8TUoK>va!W0r|=ElG)3!0n7s4ct=;qM#&2Me{x5pk;*7 zjb>lHO}!G+`uqxV<`>_2z3g13h-R5Coq-IG3V}+2AugK6fpU11A5lI@pS1fD>$?i( zpz|pC;?l=Pn(^Yvw^CN#2aqR1{NmEb2KDo)h?TXMQ0?h;YIY*#urH0$=GVN=7w?~j zzBDQnFkG+R1=D@fSfAb~D(`gX4An*AB20c-in?s|ssn_iGD7loLF86RZkWt)q*EZE zQ7IQayK^a%+B1A798A# z)nRauNgUJ=2me4Yt=OR!!t8V9CR7>?$axZkKEIMlUXZuG{-^0WUu==tkG#SQILneL z=c#fu@5iL`rmy^|05wj5Bjpvp2!^T1yU-Uw;UEW6Nn8}Q={sOjHHsObbQtD3^#S6H z>J-QZ7eyo3Gzx|%4&{GE9(-51TS>QRpF8OJX-jC=JY4oN-;ZBI2 z)(j$b#M@J##cg4|8sO(iO4Cn0KOW(8T;Yq_39r?P+FAiMI`&}w{ELBwZZF@zqnQ2tL%D_R*$v+UTE4kwx96txw4wizj}N+xv{v za6>)OfYU;#if;IIh@Hk9NDZ?7{G9r+XWxT5kRG*LiAh_zl?EGLFc3li{*CL;Ub2m5 z6msmla_n=?j=K!yk6*439aS?>;?AyoFDeI5G}@ET=0=uOqrw|jki=>xjJPF;6o>&U z-AOr-;7PSJI=i0zH<7H)$-}ib$oSs+Kq9FX0-anio`nKm2EF72(Cv)&E;;q1&+a3- z`p#7MCIT3tQL2}`SAj1r;oS9LxjB*D({*AZ5(#fRz6m7uWx=QZD>Ec@ks6RT`mpYG zF!|8PTb5mUL$hwr7)_hIiqP>n8%^meJ&O?M5|P7dcM%*J^=Y$ zwfuYpmA<_n5WdMw^feCrIA$TVz!kc{{WYSF*C;U>56>kK%|1?=l^d+EV~Qgh69#xL zC0dY()5WmK8G}O#BoGPcuZ!!Bc#Q`QBe@$;{B$TbPn1f2^jXxAf^213U+^&!RRQ>D zEMPfA>G+60(<2rpvFvY9H$?WF2*5HidPe53f@P5jo1nQ>%X@1AXtp9aZGc)n9ZvS@ zY2>lizpY!17dNXHHx+#^#6^sIkX7R-0S)9Y#UxUEok+led=AJ7$d29k>OMt=& z=;cfRLTeGK-y*AA#DgHtUgWFgN>oqv8T z2Gaati!PiaDuS?y7#;2>Os1Lb#W~8h{Iux)8s!dj!MjVK-M$iuqJ2-6B*%LCxW1?P9c(^ zh|xoA%`}9R(R+BQgD4D(rg{U3K<(Al!@-vvDoIw(LX_M_=E+_(cyb%8$zC*gI>lz3k!~$&-OHL5C987G*k6 zj5?HXCrb4OVn98Ls-!tc2$LKPi2flkEg4b(2E6+~BN5U5(6guS(wgFm{|p4Q7so9vs_5>V5&OYq>J9eSSfe(MrW4hI1VIiC}>j*|)Q zwb>3Zj-I3sP-wCQ@v7&^7e6IZU%#U9$^CpiVEv+5sQz}Q;jy^f_Qxqad$T>GLRHQ*<<44gV8^za^@N!cs zO$9DiNf@He4-{u2Hee-5wwx$^&q6U_e$Pa^;Q+N3uF zo%r_hA71U|N9W{=*3qN99~jkceEZ?mZhWr%Z>K(=2yWf#^W`AtR`lHJD_Sq%{rPW_ z4p3oqZqny{?g8e5a8%XnK?M#2F`tHAaM)%)OOh4kdz@z^n*KTS7i$1f>aRc(WxVbD zz-%x1kNd&7W8uGJCW#CDc^~h`*{iMSFLW@{=PpMB;W$V7?DUPRCu6!d1Chuv%R?j3 zBZ5Q}_ZfhzMQPtXO*)&-iT1p*_?k0jQQLnXOFiH_CJc$QR)?^B?lV-=;tsexVn z6bm(Rj*&ZZDE+RE71kW_&FFNcGlV4GC(;jsFC-k1TF;K%%%+l^ygu&{Mm7X%e@MU?w&ulrMY~ca)xrxpA-(&CVz}5s9M(cL>79>pPqEp ztz%@@EO?)~{CVTBE9U2^Ov`c8O!R6oZfXQG9{JNK>QmZL>$UvE;h_a2$6jp%j6LoI zDvuuL{K#C;U=bA`JKY8+&L-qXicYc#V2s@>H&6uFPd1)wDbvWQF7f{W?W$Tn7XFOd zOeh{TSo0`MAb7f60yo4*yFIk*sAW=PoTNaBP|idBsiC|R>QoUPn8wM8t@jVQlJKbx z|4}Et`^2n?qcUqzfjl=by-;(wYtdsa!lE5GDAb(m`wu_``a`oZ z*Z*?t(?R%;p(O2vk8(B~Jl;vi@Ppo4h4XIoFeb07fIxVCtdU%B)E1BO!kS)}fT1l< zrO5pyakRnpXSmtEau@^q zf=PQZF$>m<$eI=x$yt3GNLnwJn9=C5yq!}ENM&6&aMVO$2SSZ_75nZs=cQUnR$>nq z(CgK2KpnY^Y{8#4(cY3PFx10Q-EieYAAHG+pt14G5utu$fa0L1t*pKJr4bN69AQwt zhQ(EWiw$nSgI@Wbs>Iz@=3N2HXbxnBnd~dfyO5qev@88Kq5%)$M8vZkH6?#h)m(`a zvAj}G(ct)jzt?NeW6}|#+9ZsguiA&PPi z$(C)GLPTH~*9FxZyidNfi$= zGwtrj{0!ACq~e=IM$ZrNCH7;EgZgN4#&{^MZ#(-jWm>eeMfAqsHT2#eMpTu3!M5wT zP@wC$P+(OToxTS#zuLACdO-EW?@#FM9El&dJh!Fa{{0EHEEdx@Sa*VS9>Ul9B}kNd zHH4~32jv9PIj#36yhN#^$xYhxRmV2mpO839tJG;;){(dld%WAZKVcRKbZ~#dTPU`! zy28u-32O*}s3^tRV;s^=Tkcam|p}uvIa%aZ#Gz0U`&f?gtxoDLN7nXdB*+#d)^$ zhOItBuQG4JORIQ`9R31zSv+j(XyVI}2)}jqhWjD)BR|{I-*%*Lu{Yiit9gsV{B~5; z)~JAuTk+;DY-nQb^_BHL$hm~9y3tiO|HkGQun7R}m36JyVO&{Whn-GWfNWfrxo$;* zf1}_RI{*bURo$Gp%{vj2yth(1{Z~v9VsM~Aj>HulJTc8uSD!`(2#L3ue|Odoj_Ztv z)xx3FrX3OL%nchW7`Ce(!;RLc!MuiV(>|%x=+IkPsNvh&{C!3;ysJ%l6UgXEyH(cj zLbBB_5KJphXsoEcLt6*FR>XB{r#63^X_zh%q?%x?-%X_M)JSQYro{mYP~53*y_%#& zli%1`bum7;)+HD9M)_4Ins&GP)V+QZQ^V>5;EpT&4&RTS$`yy{$v94MGQPxq`~3*b z3D)hm@AUi8+IdcA`$0STDmNjCl(e1d&q#~g3B?|yTGS0dEC1tQS-6}BUEAbupm^v> z*WSE=K(51P?(GfGJlY>2FVR#%zm8qmo_?*yJ?1B-Ujvb}4)m)lDro4}nTag!$6>7B zM@mtSU~Tkk3-}WHb$FBZPTZv=sp^p%nSg0i0@Hbu=zK$TOd1_8%9RIlPUTuZM6X;5 zytIxU){;EeR|3WJ89I57MP<-|yb%q$0@%-mQImLneHplO_SezSimrnCK8=awj;dIv ze<#mFkCJJSMMBpfs%m(XR+l&$G~2F2)!NEQ6SfZj1f8J*LPve51$Y$ST6t?y|0Tb? zmA7ONMhB@>wWrIsO-9X5-`BNra~B+vYlKG~^|ky-J-HQLsZ4?oRs};x^?E(%& zdtH_J9rYia)RCW}^MqyuuIB{2Ub-{djzpBN70-{a9gW*Xx~OXzv*+``BozCPa6PB; z_tJpn*@$2xT3JvK$yp9mHwPPs^`FPF(32h45s6K|`^9DL0GV!Tsz8|NWFwLgD!&bg z%i0BmKs6W$a-#!@iQ+M+!w0pw5#UU)LDzFNQ*mgRMcVV{?eR* zrze8C(Ii`)*t&*Njd{swTs9DG3gw2=|C&nUg=!ijcq znyEyAAYCW12?HVAD91B~G_#3 zZ@2vjTHg)2(eZle<4nN&dTVF+dHzB-elF>lpYF%y=e!R1!OlvWLGAh5Sc+5IOt%M0 zj#iIvTWl09;yU#{kU@*sB%8f;=(nO#X`mMIQR0{gVMYL%Q->C@!Pz1T#Kbyk5%Y-# zA&3^SPHPbtarE$#a{=xxB06X4Dzq$U5!Cw@ax+|L=A)% zj4QZ7#-Nh7*|n$*7lSXJKXBVWwq$=4b+%=QMIoU z_ofoHAn+$z=UT7S7AN&ZCp3PY68PjNDl#YjO+}p>cRtzHEBnq$L(Rr5EpBaSq8bk7 z9%b7D*Cg1}8x!n_4Jh4pn8v}3SmIhl{S5M=7Kgizibm@Z1V=KC+Bew~S1&1FEgI|3 zKvOo>tL^;!4_7?ZhtTzvbrn|~vuF<7?nInCruFkD+m{+=d z@8)+lAZyR|x~knI0NJy_uIeyBl$D+>_Of=#vxJs)OptLZIwnzZd=mVQMu$}7OB)^Z z)|$EFzKSqXCshKX#Lag5z#_ zrpJ}*%X5hUzuhAdxf^?THaT+$9qx3-rB@Z)aHlaYal*KWeKI4Gi!1gt#v&gbMY_M; z!RT%j>9%&q-4sHHOYhb@mXo6!ZY&(IxqxIA7g>HZV5zL{R7W+Xt=(K)=d7qGXO=v3bJ~@=E(G;mHbR>_kc(H9Jjock0UbCYF87J z_T`^Y#YY3}YO)F2ja>A#N3RI=96BH*4;>gq>u!6; zYyQxa#YQKKWD{-d@=(Mon9;SR1}7`z-Ep`7ZbH#m>0q>THxWG!DMIO(l$aJo%5=m3 z_1qZIW`Lvi<#ba64*WvbjvS7**J0n))gVf0hO6A@Ha2o@g!5oH$2!*jh}XP+&vK3RJS7p#Snd@g_Z0gI6F9)$Vzg@tjgVe$(@5zAPu`0V+R4cV+S%e zF(jG~`|=))NiLd-*!jg#M>YA7o@q4w7?WJ-0&p#UgVC!zB6`3FU%*LV`haIYz8~To|GP=n##P-!UP==ma5>SjU72qZ5Qk#2phN zj7|_Dd3Q{RFgihqvZ!N1gwY8?l&c*RB8*NDB1Pz!5Mgvk$Th}avW3Q9Cpw0`77oq1a9D?4ijMX}L_0@^SV18(bq+=3kgs#N zi5yCF4vFNTkL+4FxP(db_S%om6RFQ42{gbBFq`Z{_zH0x%M=|SDS=Z%FQUqMzTHSl$Fp*f?*NWM*dc>4Q$*=Ai1Jw1i zC>YKwIu_C8aCYGB z;31D`-NqZfs^Py(_(1}n@&+3?yx})#__q*#3sqjoLrSi9{5=xi{|4X#WslY#K(3%q zOpB#Gs*pVOJBsxO>+h&P5eMz_rT4b?K=^wq7x|%AmyWGQPIVn4#IOhIN_`WmbubtD zh_9lq5PUX5UX7SfL@FUKsN|tz7)_Yz_QOWZayHSk0bk(_i&kAmMCtVT1o^4-#!mt9 za|qQ7&G`w9sU8eO)dsi9h|6^8iP6|h6l^wQVixl0N~>X8_(aBY2Se5}V>2{)3sO>3@W8Ywud7g_(4R=>vA7I2u}eSHYdDJ2}d5 zm|kbPbVnqfC9rQsJy(Yss;;&7jT~?9G3;-8hYc)sIYzEzg7gFf9gxPGE^n+=T6+%z zy79f}_0$}i?YNNoBQx)#N4cOYMX9KmrgF&o*4{oqt}?%loI;i2F(00c99f44KA?-n zj}of=&%Kh;{~FD=COCS&Fjkb=yPMc@naA;S))@Rmrz|T^1F9EYUo7AxmdZ-@;lD{nn*hv2~<*Fqs&3>Llww|)NMxL zmU%BHF~!t}dM}^K>S?8lAB$16q!W42$sq9p23H_-z*((>W&o>oP&UIHhPe!9G0bO3 z`$Jm?5xv$y#SCo>=Q1o~xPak8hKm?hFkH%T8AEEiS_f4zT)}W9!`m3vFuarDDu(wk zypJL6wrm}=n&HC?YZ*Sq@Ck-bF?@#Ma}3uoe39W=hSc1)4tka0>kQX1T+i@rhV&M5 z>!3P@n;C9lxRqf8!)*+=Gu*+jk>N)SKVi6w;U0$nVE8%1e==-hxR>ERhTk$&8Gg@j zKf`}BY+?8#!$S-YGd#-h7ly|e{?1T=g0>Fo!qAUlSBBjfc4ydw;n@rW8J^3q7sEab z`!eju@FIqnFbrZifZ;%fmops9@JfbPGaSayz%ZC$C_^e=t%D*Mj$n8#!%+;Q7>;Hb z%Ww?CIELdGCNNB5n9MMRVH(4U3@0<3%5WOPn;1@KID=s}!yJaW3}-RSXIRM4%CMNB zjp1B|WegWEr2cE`phXNT7%pYFjNvT|s~E0exRT**3~LzP$#50Jdl=rw@BxOa89vOg zmf>RzpJ4bD!)F*i$8Zh97a6W)_%g#+8NSYN9mDku-)6XxVI9NG47V`c%CLdqHip|7 z?qJx+@FRwwFxj{G8!G88$K8%WxmVZyBl#zh}6g;lCNSF#M6>A%=$;9%c9o z!($A8XQ-etg8nn~W7w5pH-_CA_F#B6!$5}TGVH~$55v9;`!T$T;Ux@%7!F`Kkm2PF z2Q$2q;nfU>F*Gm?W*Evaj9~=B5e%f&Q#CIo zTVJx3k?jhy6_PECY}sTplWi*5(#V!fwk)!ZA=@ityOwO*$QDetZ^=f}x4A!&?Gmyn zX#ARKx-$1XvUMlhK(f(1Uv3E54x^FH9Zk0VWV?-Iu$OGFk&T+*+|S9jgKU9lQ=6${ zlv_u(^<<-W`gqf9?s@2vH9tjeQDj?9whXe}Nwx~IRgrBq*%p!QJ+j%zc9?9l$kvBs zHJxlBWSdB~QnDqGErWO&O}74Iiy&J#*@lq~7QAOjwqlY2y_%eRC)omFYkhEtFZv^j zLNxeCmJ9HoizFyz_zxos{aPQ~x}-w!eV4yq*Ida$-Jkc!;T?bgaLvCRV32&if~o8V z_(BWwDnv^@^)QtU0J}AxRp`rGcQK*#3diQrB(r7p+7(0j`SqSw4bR!kgE*f`6(#PWv)hlpF zq>qV^PBe*@eytC#R($*IfQ`h`otzKCV%GA)nTGCgBTwKG*cb$8LNiyLfrM0*S`COWajV zfPQ4b&L-t4`nU`KZuq}S9}nU`nk@8deNcp@90o4N?~DJx=;ICi zOUOb$&I8I9Qi&-1oq6*Z@zW13N*n?Dk%jVUE&fhCm%4Wc z-1tWpQnwFDtn~mUvd~XUFWDCmpdVRCsyT#JgZ}_nZ1nLmz!aGLbLRQAnhRM5KsPw6 zZ-Ql|=EJfXhA-0H`S?52EP1_7!z2sk4US9*4JXO-&l#W7g)D{mKTiJl;6I8i^mF2p zy!c0!%}|lm^wkZ#En{Z@y$r%MN3xuc|9O;b;$;@T`qRhTuuxq5bH)>+xsZi2F`pb# z@qdvl^kW$eg@tB(rsMCF0rH)cobvs$&bWWPMDe96L{V-cKtHk&jf<%iEW|$(eT%^M0H;qQK1kOV60_8pQG)2A zSS7Zr4vj{$q$pp&RDJ^>)!;}Mp`24;W=2=wgW3T8wLbW+R##EU;2&8iS;3TAEB@2* zA44DC;ZJnf=Oea?c*X`mzPy9`9bKeAA&-l4B~ z_;1AjWBM2Y2CjnnJ+ZbFfLLRnN8|^Gc^)6P!iRrO9Zc3-$Z`q(l+#>5h$R1zUN$Wsd_ZPUMs1hTFtM#G zoXp2o^(%lG_04L-V=!wj+4A--n4y>dXLgSmrJ^Z({=3mJO6{KIlS1dlC=E$73pPC; zql~;``o76u#YC-qt?c5z^^Q$Guy@zKe&b{B{4}xa&X$VU!{ffH?=tkY*jFF=pZPIm z-^bq3W$@KkI)cn5-{3b6y^v<^vh4SLbN!A5N ze?B*N?1g!gV%DAi@Yt6g?Q`YFJ3bnF@wnB8Ze4mt+>_JZJvbz5WZZWb^b7yx#^Sil z+NLdK|9L8Iena2GyI%f0E}?wql&uHOiGO%nOv@Xy$HZ?9N!$Nq*M;%ZYF~Zjie)dw zmoz+DYy9S$_}fQp>$d2o3&%Z>z3A^}UwHkvy5GK-`%&idafb4{dyQSce%z?SFY@zW zZ5g-Yy7>^sx(OHD54w{IesI_ZpLH#-EqCZ|bP*E#oImf9POh`Oo7E*7+4a z`uXsL*q=7<+t-|x(0lDq7vHq+zJv=`Tc0ewcxS>LnK`%S75gUs=jZF1eJ4aD79YL+ z>n$@16UY72=l*k^-hSch z6K-hzwDFzCewc9oJInXJVeX&2c=#2c4Z1fyIpf!s>kk}Tk$mApVR!ZZXI=7)SihqW z^!`us&FTKH``mEl^#$qgp7T}N^y?e044rtvy{oQYVA}Njmv6s!eg3A&@1NC2NvS_L zY~yVghNeWmxW1rxKwe7ylp$vZ%zh;0;yrI#njiZ(Wnj|acOG|iOMM~p#}`+=I4ZSA z`J{iHKeQxu!n7CE8;?Gnn)S+_8KsB6NWH{bf8&|!&rKVY5c!%TcWm0QM{a%W#nI(y zyU*}(5vMqa3llstsfZy()wDP6R{~0o>angYsLrPvv^qV}} zq}24!jGX-U(aNE`H;X2}HKZb9@5hf%zB06S>pvRyOg2Twm7VkJ*;6(R9{R)g(_*F^ zEI#_=pwO}@FWf#iV0iS4Q?_65T;2wC@09Cmdu`eO*!fc@G+gkXryYq?gD*Dx95-+2 z)I|dqhF{qGjj0b0y}^IRKlV>udTeq`dA9*KJbumaRjXG_ykTYcYu=0*y7Gp5zul5L zZuO=cMh3mEPV+r{L*g@E4+vd$)igu=j=O7vGp8;5Ec&gu#dlA;A?4if`+d1>+WeC7 zA6eg5Zk&|-&#sBThu&DQ@9wy!k+W{x^5Ts{*W}dRSlaKkh)ETn+<0#0-mV3;XWsPu z!o-2Geo;5=`fU2pbbs4T+s}Qo?76Pb-n4kqcYV_1zP#yg_aqN9RiBq}!`u7jFSW*H z6#sBz-^W)j%DCc{5eL3G|CNk`8E4M^@{8{>{`JQD=1HGkJpEA0BaVqrrc8h7id%=R zNxBuKWAKPc12#3a7X5@X}4b; zGh%CIkI+|+eBAJB=B-NOf@L=vXFRJcyZ@V4Ei*n*zG=N=z=JcE1s%vp{ZHeJC)Mx6 zp9%KQ+WFWw=9I-FvNkRM+w8k;w`K*;d~i(JD^Fzo9yNOM#HRnrdL(zq5!2Oy*;_aN zWQz%p%`SVzkkZRMKYL=++c{J2`CE2akFcgA8@|qtxjkl2=?i@=y-L!OKHigL*Oi~6&%x8;I$mdvt6Q#W4vZ_CKDZa=!~;{iE6cD(%h_Nqxaw=c=q*E*{@=jXL= z{rk%qn{y%_n)Us?zaGxHCD#9&^7U8G{AAo^f4l8a=1lv=`=`D<=bo8A41D_FC1-D+ zdEUHklRmEU$=$tb+tuBEFy;0f@mu&d%k12^*xzS7eCeaPQ$OAC>++eO=DsxUg#|M= zb!R|e&e*-X?{~JmgCjoZ`DM^^dAnk3a~)|-c|9gJjD9h%*R0!TFZlR^ zW%090x=x7;`eyO0Zcl^{4L$J6tnSszBYb{PXC<^eb<3tfm(Dg!9DL}$d8xDCnjLIh zoL)8ixvq+{3c9j&>n%WwIYl{`3NV*lWRA0~``@A+qQ3cmgN&bRuctuCaM%Nx`C zC0k>vR>%Gjw9K0J+`GLmAM&QPc~$6xMI{HU=X{}T8uZL%b0+qRHV(gY@|@XI?)Yu} z>$lDMdiR2Vh6cYo=kw|d`fUFF$eh%Jk33lX`_SS~4#zxt#yc~L?T1#`-z&Vg_<7?m zKioX-gW|I?7M4^ebt(B^?hTEGyx|9bMSl3Sjd zbk9Wx&a(AtIQ+$&(r8=X1-A4ZAC=l3zVE~DmyCVhmesmB_@y3S*{*%3WbqdhdY7K{ zx8yHBd3;>y%z``5vOHB$TGwq}((gN8Ej_rc*WTZJzc1bOd%_EgMhDGZIjVN@C8=q1 zhbJ}s`4InDynRcjopkU-{To|MSz_sjG)O=I$Ik&szEG&@|tSd6x%oSlw&J zUGvs1+W+qTBO2ySd-%K1sQBOK{k%D_f5X3m%hvsrHe|%JGs~VdJoie~T@RJbylI@( zwD6-cpTpC(kG}AX`Ab7=i_hD8?R;bHGs6>l7SA8qaOX9T)I2pmalyRq^`W27x2{={ zbFB891uG{Ft+?jQF$;=bh?u^@aq|L8{$&fp!e3gjc0*TNc(IDp@zN=g$j|9<0e(lRUiqntS`z&Av0My!*)hYrD?7 zuRLMpkZBF8c9gF@a)0D+7x^w)U8+=FyDxl^?_J7s;GqI;q@a%FCJ2J*|u*Q<}MDgt-1Eno7XI^ZTMmNPussjzg7GU z#^8`pQ&@OJWc28mSo4@t`I})YEX^s_zFa28(pu0HHbwvSgoFL50SpF%(GYA1F@zdS zhA>08A;J)8G#HJ>U}K0e)Mzq>8N-bc#>ikpurW9|I3zeU*c2QV93C7I92sH=F@^+( zgoK2Km_our!b2iLB0~+K#?au0@q93B!L8g2>?3l9&E2#<^~L>ME2BSIoVBTNxt z5#bRL5s{H#F%r>7f^;N;MZzgMCM|wqeA<+ZaTDT`6z5lJvNulvP>)%ENM% zlA!)0gAB@;yu$26OTi4VA73(I#w<&gZSW9MU8s7Mmu`iJAGO7R5H-Y6-e_WYFxSQc6r3 zJ}IW6;`zx%MfuVBBxK5hKU?CNTFfPo`Ha$>980kfd`aE{OVFqwGKz8r$K;k4&W?jL zEX6}eR`G>4R;-L+Im2@DGiR0rT^=+Wj$>d~vI?@5*!a}s=(LzPCB+;aJ4H#(L-Moo zi%KB8WGF*kW_}PUW>8*XP);#&QyC3O=UKDl7jQ}}$RJB*fl^}2%$l7sjB*If3?33R za-_x<%a&xxO#O9I%qz56iVIOnm{&;BDb@^1Zi(ej&sWl1OEEa$_KVQi!8J29Z%oY;8qVNhO#ln1_3T8`+vxcM2K|bd#$h74Z6%s2&#d#>9nfb}K z;-Jef4|0A}zADM3CAsN^C7C%Ek>hDa){LO5w46>G5_Ba>Vrij`N)d}0MN~>Rtr#WD zJvFu~L_)`8=0p1KemT-lQ~-*b6s8ThLdoYUf#NZgjgdb=O@v4*lA4)ZYC9FOI-x4E zgbM|vnO$Pb5Ji=9G|o~Ms+bG8Ci=505er3&CWGn_V!&F20wLsQG>`y=^hEXTkr_85 zGm5NS|BBK*YNX8PD_wc7KpEUoWW9vTk~sCz#l@NPJt*HGvsu)*h-IG9@TX^&vu3bT z^pHDFqvv_8Sg631n%(CUp z&9lv?LSnNh*%lj`q!PuJhvvtYSzs+8k7Ao*K?9aqQev@{DESC%$;d0nMB^mvHcOdJ zDJei{m(Ie@&Q@xx6_T%P$VwEn?pe9YEaa+EVnqu~5$B;%%%m1@u9B6Xhc-I{%%!G} zPK`;4A8l6BlU(*xb5g7`CER(*h)+UC#;n97Oh`3*cxn9>>aq~cku3uyE?cT~zGbc@KLbK>Z>*5pQdbiQVTjV-4bf&P zu;xRaLD2AP8DrGoAwx&y6$*_8d0{z`K!Zx0JutMWLkDFmlVitbq@*XM#V49GV&hYk zw8Ug-C~4-zWM#OmzzV%VYdd22@Z!?KnP`#ovWE{UQ4;cI6lWICSE8-f{5*6~P?HCx zmRhYvP%+uvQwY06p^lw$^MI_Pf`ZJ#>;WT!1`H}0P_7{j1+Ao_pc$ow+4+{ByzHPH z)aBXTb#A4_`I;j)Rn#>|NKLiaVl6qDrTMlvP|dd#k0~lnPf1A4%C!_&Mg$E42_1F{ zdVojl)21i zDJ((yN1)I#M~Rt*C{o3e$msd8mVAp1HBK@yWo%C_4xaIIN9H4 za;=Zjf^|z;sf~r>IVFTCzLQ5OO0S!Jlp3tIM3IRl%^nMVl)6ksiGXRyQIu?$H82;F zi32vP$h`uq@-Wvf!x}uyid(=#xsTF_RiY}GYyXCoc$m{)LPU$;4zn*zT3U}H^K~q9 z!>oG~%XctquzXbob9w_%U-v=uE|@7Ry0F7r?|C?%GQf zpT;YZuB#Lu+D}!Bf1m+&gW{VE6M504W(05{`zWkzRU|4tb%|I-nV=|5H!5AMa}=K@ ztp3$u1+-VS@Eesx`TXud}@7#%$vI6`%HYFiSO<{J~aW5eV~s|;JJ|dxjsJDUeJYJK0XnO z;@68LhM&)Z6vd}3&?m6R8Qp3iM$%#W`7B6IV4pJ{90cb;z5liFSL6NTg$WLJ!ZWCsZG!3^)|7F5- zh4gMayg=aXmF9kF?vZ9FozcLrX*wH9P=PS(ZW5+7Lzsq*(wr{Lif80E?H<6dMVfVE z1-&4-i)3x6_^#8w<<6!$UYb`FLx{wuvtsxqj}T_yWNFIp3c5BEzd)2t`ZdaM$uq@w zvUIPQB)(goXEY^fq%f@`gjtKahJF>V3bXbMi4Ps7U$R-6DC_jA&16HFPJ06ItC%Cq z7Sa;@0;7f5v__a~M@#d1VJ1H-%-UpOwmc_H>jXi6da{fMWrTjUsN3jg_)wUEZwNC8 zbsGKZGR3!&EzMkES}zv<$>$5xfHFLb3RW{Pj?MdCZ?5{WlMxCf%n zq#xD2^lL<2NM5T@ZHVNxATzm_kBNp&;*)?O;YRY79-` zgnmtdGJfe!Z2|q(%J5OXlAm*gx%N}x-?Uqp)JD+HD$}u6rn7FVaIdKsrh>MHe$?jB zuTjdmN#;jje?h+mbsGKfegT_Q_t7s|`dfpS>fLuQjrqDl&YN{0@}myjIe$ljSu^;?+v}b-a}Za=c#9k3!o@zrZ}n z$0T9aY5Flhe6RHrW{WJJYh}LHY~$cci`3IPDOZDxCt2!$la?NtZwC3@BK4a34)mio zpMF+Z9~fjkku2k{(dq}x8S*bh;0I0-X0rUY%I~#OKPsdgYqCVJK$*``=!?*=C5jED zPUc6ltWN@Ey-_3eJ5Z+6I$PjZ$nu{&OMKTz_eQBVR;hQj(zMF>8)f-#lHmfSyep)B zRY?CJsh^FSp33?mS<*?CaOohy~(%v@{c>IZ>L^rP(6u*IDx0CQU2) zmh=mv&0hF5l?Zc@^skcUozh$_&8MWfR+{UjxkYoAbOp7xaMXOkcbqhL$Z#q0dzv(J zq-mAr0%<}hj2ZV+j%koi^7)sG!&rFrxW@vU@|ra)I3&JdRT2Lxa8Q~D}Sf1C6_&*>v9 zTKKBtgs+kQ{_TXnNBX;S=ZgP9>3@zcd=%_gJt+7dFU?G8E|F%9G+&nHVQF?-Ey4|# z<_Kwym!>WnH|x{SKNsxgaDpEv8(wgYos9UMVATJI{(lnqKMDMw1pZF~r$7Sd^bfQK zPK=$t&nIU3fYBBHeXW5v5ZQC0GBV@@bXM-{jG3jG#o5aBbEek_cdQ2%TQMP(JwHDi zXr(hUW?*q0lYkX9RHM_+r{+B1PEAU+g=AzHO$C^LEQ>Xo=PDI}L}Y5JExfP@%i=}z zKnLI1`N{BWIlK0#2u~Eqy>MQE;>9gxe5x%{63DQ5Vr0xLE6c!A2CKad}g6su8+ybA_ulASc)<2X~9n6z&iiFHGQHoCX5~zlM#~; zotm04Fe52dPJmWa5rZCnG=Zwk=S6Z-q;qqJ5k9<)gcs-IlTtH6X>L6}%WQ_-80lr#10flMV~TCj z+HM3h{UD$`p=U(XhIN+H9GfmO5l~q`(wc({#dZc z;{=Of@s795kB>GQyyA+C)Z=;2o;G;ibE6GfXy;<}F6}ndyi2zYT6pIo^)B=_)VvE> zpd}eYt}nHeTCmfLw@`&rZD~epA$2*)7#d%c#=EiNit^E9g{InytZ0_FDr)0vN~IO> zcD=)rim>`M-{o&g$SbsD7CS4S&@sgpiy1AOB=6}TmWXw>qAYVkdkEojBMoR2IFTa6 z@}DTcqj{%Q2sV(IvotDR5KLq8u`9;OY4~U?E*ItGn2Ie}*l*(;R*WT512xxzaSc7P z5X=2ooXm8kIU=!SCW}1YL-Yv+sO*gfERh!E*{DTxQaetNaMaLAh$lK*%f-%yjF2HI zHmLxe3>qoeM3i0vgr;KyL1&VqL+n%{boiZP-4(zK!@7pk0Ch+~&KA$L#2dY6gBkUG zT85@j`haQ3d2GEz$#83LQ-d?iMw8Q1?5^U*HqvdYCv*}^|M7%w_8##JM4XbQwJrMA z-rywPHttBLA4M8$l99$^8QoSY3W7fB)G)-~eoRK*=>q{_Ge8LT1#ovFlpT2sKn&9F zER#Cv=);*}@=?;A+M>g9>wb9D0PUf9Rs?#yQ`8B<{we1USn3eTqJ5fUicd8mD=5#5 zG998b6pzgcv{NZQVTQpBbz!uW@k!`)koKe@&}n4QD45`FzFxENRLR^3?c!}WDVg)k z$xzE#DM;z*Oj&9!Hq?j`5td$(IV0aV$R0~vO=4S6%_N+7bT5)vF+ci>rb7ADm)Sj9bHnAH?z>3a$1v!w(CEKIBjcJi!LnykP)bFI`8Qu4++1@Jnlcnz3Djc6M%gF89@%kjBpc+oB zJe@*K9l3XUDkC)%4I}s74CqA}z3AB~Ng3~T|6iFhF_rYcE6+r?R80N+FUvHMG|}4s zuS}ZgDEzfao6)wlI>}ljSSTYBN25X1aK|07(J+Ai<`A6WI1M%SNpKXJmO0z<-^P+9 zKmWgrr7+p^*QShgosz#!nIb6b=s4JEkQGfFxTXv`JB4tPvWVmuMWvw~9^=Y`hCJMt zIBrQxjX)Oy(?7xJK!lv~4n%NBYF1_;&AO%+T1v7qt(I(A#dW3@(0FTShUnyk7i>zM zooAhti#3oEYi5=ux-gq&{iy5S>H1f8y-sz7Y2s|{G#96`D@nBU^IB$_oI4#|%Wzt5 z#hGk02PUl1{qYt8{a>2e!%A#Ma7?b3(e=rxiH^_XH(MGjk*9?fQQGM|W~bUvvw4>H zS>2Nph~R?G`TiveimK}LD5OXio%sE4OIN6SMRmN)M-g@|jLXrXmwLU;*i#>jYJpA< zLQi(^{bzE*3wS&O>#Ym$Cvqa{Sg~MX#y(}Su%_!J{YAV$_tERdBuqrce+5@^%+T2p zy5QXVg3_NZQ62A{?2Kvbdz;DmGuh{2B8J(2aXF#=InMR-zm}H}9H}+SeM9<%%0Dk- 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ࣨ?2 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%0DjlU!+G+_!7O|Z1O*` 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

N-syH!iO@ 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 z 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/x`t9^)gcLznEvG{z_ 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 Date: Tue, 9 Jun 2020 20:26:00 +0300 Subject: [PATCH 116/166] use snprintf() instead of itoa() --- src/pc/discord/discordrpc.c | 34 ++-------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/src/pc/discord/discordrpc.c b/src/pc/discord/discordrpc.c index 870657bb..2a740bda 100644 --- a/src/pc/discord/discordrpc.c +++ b/src/pc/discord/discordrpc.c @@ -13,7 +13,6 @@ #if defined(_WIN32) #include #define DISCORDLIBEXT ".dll" -#define itoa(int, str) itoa(int, str, "10") #define dlopen(lib, flag) LoadLibrary(TEXT(lib)) #define dlerror() "" #define dlsym(handle, func) GetProcAddress(handle, func) @@ -136,35 +135,6 @@ void convertstring(const u8 *str, char* output) output[strPos] = '\0'; } -#ifndef _WIN32 -void reverse(char s[]) -{ - int i, j; - char c; - - for (i = 0, j = strlen(s)-1; i 0); - - s[i] = '\0'; - reverse(s); -} -#endif - void OnReady( const DiscordUser* user ) { discordReset(); @@ -260,7 +230,7 @@ void SetLogo() { if (lastCourseNum) { - itoa(lastCourseNum, largeImageKey); + snprintf(largeImageKey, sizeof(largeImageKey), "%d", lastCourseNum); } else strcpy(largeImageKey, "0"); @@ -268,7 +238,7 @@ void SetLogo() /* if (lastActNum) { - itoa(lastActNum, smallImageKey); + snprintf(smallImageKey, sizeof(largeImageKey), "%d", lastActNum); } else smallImageKey[0] = '\0'; */ From 01e6061276db285b6dc208c01a687a19a73b5d2c Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 9 Jun 2020 20:46:26 +0300 Subject: [PATCH 117/166] clean up discord rpc a bit --- src/game/area.c | 2 +- src/game/memory.h | 3 + src/pc/discord/discordrpc.c | 190 ++++++++++++++++-------------------- src/pc/discord/discordrpc.h | 8 +- src/pc/gfx/gfx_sdl2.c | 4 +- src/pc/pc_main.c | 2 +- 6 files changed, 95 insertions(+), 114 deletions(-) diff --git a/src/game/area.c b/src/game/area.c index d8a36024..6e7a3ff2 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -427,6 +427,6 @@ void render_game(void) { D_8032CE78 = 0; #ifdef DISCORDRPC - discordUpdateRichPresence(); + discord_update_rich_presence(); #endif } diff --git a/src/game/memory.h b/src/game/memory.h index 0639ccef..993c505a 100644 --- a/src/game/memory.h +++ b/src/game/memory.h @@ -15,6 +15,8 @@ struct AllocOnlyPool }; struct MemoryPool; +struct MarioAnimation; +struct Animation; #ifndef INCLUDED_FROM_MEMORY_C // Declaring this variable extern puts it in the wrong place in the bss order @@ -52,6 +54,7 @@ void *mem_pool_alloc(struct MemoryPool *pool, u32 size); void mem_pool_free(struct MemoryPool *pool, void *addr); void *alloc_display_list(u32 size); + void func_80278A78(struct MarioAnimation *a, void *b, struct Animation *target); s32 load_patchable_table(struct MarioAnimation *a, u32 b); diff --git a/src/pc/discord/discordrpc.c b/src/pc/discord/discordrpc.c index 2a740bda..f814f4d5 100644 --- a/src/pc/discord/discordrpc.c +++ b/src/pc/discord/discordrpc.c @@ -2,8 +2,10 @@ #include #include #include + +#include "macros.h" #include "PR/ultratypes.h" -#include "memory.h" +#include "game/memory.h" #include "pc/configfile.h" #include "discordrpc.h" @@ -11,57 +13,57 @@ // Thanks Microsoft for being non posix compliant #if defined(_WIN32) -#include -#define DISCORDLIBEXT ".dll" -#define dlopen(lib, flag) LoadLibrary(TEXT(lib)) -#define dlerror() "" -#define dlsym(handle, func) GetProcAddress(handle, func) -#define dlclose(handle) FreeLibrary(handle) +# include +# define DISCORDLIBEXT ".dll" +# define dlopen(lib, flag) LoadLibrary(TEXT(lib)) +# define dlerror() "" +# define dlsym(handle, func) (void *)GetProcAddress(handle, func) +# define dlclose(handle) FreeLibrary(handle) #elif defined(__APPLE__) -#include -#define DISCORDLIBEXT ".dylib" +# include +# define DISCORDLIBEXT ".dylib" #elif defined(__linux__) || defined(__FreeBSD__) // lets make the bold assumption for FreeBSD -#include -#define DISCORDLIBEXT ".so" +# include +# define DISCORDLIBEXT ".so" #else -#error Unknown System +# error Unknown System #endif -#define DISCORDLIB DISCORDLIBFILE DISCORDLIBEXT +#define DISCORDLIB DISCORDLIBFILE DISCORDLIBEXT #define DISCORD_APP_ID "709083908708237342" #define DISCORD_UPDATE_RATE 5 -time_t lastUpdatedTime; - -DiscordRichPresence discordRichPresence; -bool initd = false; - -void* handle; - -void (*Discord_Initialize)(const char*, DiscordEventHandlers*, int, const char*); -void (*Discord_Shutdown)(void); -void (*Discord_ClearPresence)(void); -void (*Discord_UpdatePresence)(DiscordEventHandlers*); - extern s16 gCurrCourseNum; extern s16 gCurrActNum; -s16 lastCourseNum = -1; -s16 lastActNum = -1; - extern u8 seg2_course_name_table[]; extern u8 seg2_act_name_table[]; +static time_t lastUpdatedTime; + +static DiscordRichPresence discordRichPresence; +static bool initd = false; + +static void* handle; + +void (*Discord_Initialize)(const char *, DiscordEventHandlers *, int, const char *); +void (*Discord_Shutdown)(void); +void (*Discord_ClearPresence)(void); +void (*Discord_UpdatePresence)(DiscordRichPresence *); + +static s16 lastCourseNum = -1; +static s16 lastActNum = -1; + #ifdef VERSION_EU extern s32 gInGameLanguage; #endif -char stage[188]; -char act[188]; +static char stage[188]; +static char act[188]; -char smallImageKey[5]; -char largeImageKey[5]; +static char smallImageKey[5]; +static char largeImageKey[5]; -char charset[0xFF+1] = { +static const char charset[0xFF+1] = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7 ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', // 15 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 23 @@ -96,31 +98,29 @@ char charset[0xFF+1] = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // 255 }; -void convertstring(const u8 *str, char* output) -{ +static void convertstring(const u8 *str, char* output) { s32 strPos = 0; bool capitalizeChar = true; - while (str[strPos] != 0xFF) - { - if (str[strPos] < 0xFF) - { + while (str[strPos] != 0xFF) { + if (str[strPos] < 0xFF) { output[strPos] = charset[str[strPos]]; // if the char is a letter we can capatalize it - if (capitalizeChar && 0x0A <= str[strPos] && str[strPos] <= 0x23) - { + if (capitalizeChar && 0x0A <= str[strPos] && str[strPos] <= 0x23) { output[strPos] -= ('a' - 'A'); capitalizeChar = false; } + } else { + output[strPos] = ' '; } - else output[strPos] = ' '; - switch (output[strPos]) // decide if the next character should be capitalized - { + // decide if the next character should be capitalized + switch (output[strPos]) { case ' ': - if (str[strPos] != 158) fprintf(stdout, "Unknown Character (%i)\n", str[strPos]); // inform that an unknown char was found + if (str[strPos] != 158) + fprintf(stdout, "Unknown Character (%i)\n", str[strPos]); // inform that an unknown char was found case '-': capitalizeChar = true; break; @@ -135,29 +135,24 @@ void convertstring(const u8 *str, char* output) output[strPos] = '\0'; } -void OnReady( const DiscordUser* user ) -{ - discordReset(); +static void on_ready(UNUSED const DiscordUser* user) { + discord_reset(); } -void InitializeDiscord() -{ +static void init_discord(void) { DiscordEventHandlers handlers; memset(&handlers, 0, sizeof(handlers)); - handlers.ready = OnReady; + handlers.ready = on_ready; Discord_Initialize(DISCORD_APP_ID, &handlers, false, ""); initd = true; } -void SetDetails() -{ - if (lastCourseNum != gCurrCourseNum) - { +static void set_details(void) { + if (lastCourseNum != gCurrCourseNum) { // If we are in in Course 0 we are in the castle which doesn't have a string - if (gCurrCourseNum) - { + if (gCurrCourseNum) { void **courseNameTbl; #ifndef VERSION_EU @@ -178,22 +173,20 @@ void SetDetails() u8 *courseName = segmented_to_virtual(courseNameTbl[gCurrCourseNum - 1]); convertstring(&courseName[3], stage); + } else { + strcpy(stage, "Peach's Castle"); } - else strcpy(stage, "Peach's Castle"); lastCourseNum = gCurrCourseNum; } } -void SetState() -{ - if (lastActNum != gCurrActNum || lastCourseNum != gCurrCourseNum) - { +static void set_state(void) { + if (lastActNum != gCurrActNum || lastCourseNum != gCurrCourseNum) { // when exiting a stage the act doesn't get reset - if (gCurrActNum && gCurrCourseNum) - { - if (gCurrCourseNum < 19) // any stage over 19 is a special stage without acts - { + if (gCurrActNum && gCurrCourseNum) { + // any stage over 19 is a special stage without acts + if (gCurrCourseNum < 19) { void **actNameTbl; #ifndef VERSION_EU actNameTbl = segmented_to_virtual(seg2_act_name_table); @@ -213,34 +206,29 @@ void SetState() u8 *actName = actName = segmented_to_virtual(actNameTbl[(gCurrCourseNum - 1) * 6 + gCurrActNum - 1]); convertstring(actName, act); - } - else - { + } else { act[0] = '\0'; gCurrActNum = 0; } + } else { + act[0] = '\0'; } - else act[0] = '\0'; lastActNum = gCurrActNum; } } -void SetLogo() -{ +void set_logo(void) { if (lastCourseNum) - { snprintf(largeImageKey, sizeof(largeImageKey), "%d", lastCourseNum); - } - else strcpy(largeImageKey, "0"); - + else + strcpy(largeImageKey, "0"); /* if (lastActNum) - { snprintf(smallImageKey, sizeof(largeImageKey), "%d", lastActNum); - } - else smallImageKey[0] = '\0'; + else + smallImageKey[0] = '\0'; */ discordRichPresence.largeImageKey = largeImageKey; @@ -249,35 +237,28 @@ void SetLogo() //discordRichPresence.smallImageText = ""; } -void discordUpdateRichPresence() -{ +void discord_update_rich_presence(void) { if (!configDiscordRPC || !initd) return; if (time(NULL) < lastUpdatedTime + DISCORD_UPDATE_RATE) return; lastUpdatedTime = time(NULL); - SetState(); - SetDetails(); - SetLogo(); + set_state(); + set_details(); + set_logo(); Discord_UpdatePresence(&discordRichPresence); } -void discordShutdown() -{ - if (handle) - { +void discord_shutdown(void) { + if (handle) { Discord_ClearPresence(); Discord_Shutdown(); - dlclose(handle); } +} -}; - -void discordInit() -{ - if (configDiscordRPC) - { +void discord_init(void) { + if (configDiscordRPC) { handle = dlopen(DISCORDLIB, RTLD_LAZY); if (!handle) { fprintf(stderr, "Unable to load Discord\n%s\n", dlerror()); @@ -289,23 +270,20 @@ void discordInit() Discord_ClearPresence = dlsym(handle, "Discord_ClearPresence"); Discord_UpdatePresence = dlsym(handle, "Discord_UpdatePresence"); - InitializeDiscord(); + init_discord(); discordRichPresence.details = stage; discordRichPresence.state = act; - lastUpdatedTime = 0; } -}; +} -void discordReset() -{ +void discord_reset(void) { memset( &discordRichPresence, 0, sizeof( discordRichPresence ) ); - SetState(); - SetDetails(); - SetLogo(); - (*Discord_UpdatePresence)(&discordRichPresence); -} - + set_state(); + set_details(); + set_logo(); + Discord_UpdatePresence(&discordRichPresence); +} diff --git a/src/pc/discord/discordrpc.h b/src/pc/discord/discordrpc.h index a4985715..6d8bc6db 100644 --- a/src/pc/discord/discordrpc.h +++ b/src/pc/discord/discordrpc.h @@ -41,9 +41,9 @@ typedef struct DiscordEventHandlers { #define DISCORD_REPLY_YES 1 #define DISCORD_REPLY_IGNORE 2 -void discordUpdateRichPresence(); -void discordShutdown(); -void discordInit(); -void discordReset(); +void discord_update_rich_presence(void); +void discord_shutdown(void); +void discord_init(void); +void discord_reset(void); #endif // DISCORDRPC_H diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index ddeec429..78833092 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -199,7 +199,7 @@ static void gfx_sdl_init(void) { static void gfx_sdl_main_loop(void (*run_one_game_iter)(void)) { Uint32 t; #ifdef DISCORDRPC - discordInit(); + discord_init(); #endif while (1) { t = SDL_GetTicks(); @@ -266,7 +266,7 @@ static void gfx_sdl_handle_events(void) { break; case SDL_QUIT: #ifdef DISCORDRPC - discordShutdown(); + discord_shutdown(); #endif game_exit(); break; diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index ea322305..dc85b17e 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -183,7 +183,7 @@ void main_func(void) { #ifdef EXTERNAL_DATA // precache data if needed if (configPrecacheRes) { - printf("precaching data\n"); + fprintf(stdout, "precaching data\n"); fflush(stdout); gfx_precache_textures(); } From 180db16da88aa3fc280c60e654125d59e69b7709 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 9 Jun 2020 20:49:35 +0300 Subject: [PATCH 118/166] forgot the actual libs --- lib/discord/libdiscord-rpc.dll | Bin 0 -> 399880 bytes lib/discord/libdiscord-rpc.dylib | Bin 0 -> 273216 bytes lib/discord/libdiscord-rpc.so | Bin 0 -> 661560 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/discord/libdiscord-rpc.dll create mode 100644 lib/discord/libdiscord-rpc.dylib create mode 100644 lib/discord/libdiscord-rpc.so diff --git a/lib/discord/libdiscord-rpc.dll b/lib/discord/libdiscord-rpc.dll new file mode 100644 index 0000000000000000000000000000000000000000..8493c5490041059c525b28f351bb0a0658ed8e74 GIT binary patch literal 399880 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�`RwI2GVHGCv2*k#L802p?M@T6%w!P6`xH_$BOR~w-^_z zPGV%_;E7&=D6qI*!y=b;?p=7hdhFaX!XlT{;B-C___SHYKM6pb8W2oF&FX^$BWaG( z>9dkR;lY4~esUVOp z0@;=1I!$aEO=4-#X;TRxX5k4?j14OE8w{l}5?j^!a%zqB5YvywV!4ZkBz?=uZ?t@~ z1qxNRd%*$$^647#SdC$9L*SzxsOqUE^kqUnoe`BLLqE9VAHeV< za@U~ex4e=9YeB4fMxeGZy^KerXyJ9r2YE2{?N_s@fi%vNmop|Hv%s^N;FkctSlJ7; zl3C~YX<6rO$_d*a{fJZO0)s;0Fo=mZe|#@}-uNHT=jR;MIISzcha!aeb_<`f2C~%s z>KqI$pR&Zt`Mkn;AERwdTe*7MkxoYx(F-y^#S+_j$!%I9nR`B^UCB^Bun55u)-nsYId(Q%=3~kk zx|EVXz~Fq)8}rrNL*Q_8D@M|PJB$SXQeyWTW#vs8>waHisTQ8sq;x=~6#z@>!6VMs@#-n6I#&3;mku(5fSWw_{imMf|D0(0nVKqGTmZs#aCub(fX3 zHPoFe&E zLmftcMyO)bz-lPL*Vo62rT=?r0>BkARZ6`1&o)?fZE3zG5pLB@w|dPj z#Y$=xP$%^HPr9ho8cylFa9a%Z%Q;vF-PJafs=eTv=nHTXUOdKq^ zvZb6(T6#HZESO_U@ia!JB@X^D1;EJ5_Koa>W56LRlC?O!(>wANA6~QNP>O;jF`uhx zAqQ1mkRnz_QIVF>%XW}CC5N7HRv<-uZmDyOFZ75L11FS@jKYz+&^cOG&Mw6QNtDEw zc1txd%LI2$BxZIi4dQdtGfPJv0PZgpW$d7woW@v+lI{lIkEJ@839(e7DR)1Ng;F?o zv6MW72~q*oN4_o>?(yfU`M)Ji?LSuzPj|?nGb9DYr@Os zk(HHtvYMCq6pk-VKe@ERmhUG<-|gZ9GH-4jO2*#nYEK`gxp|@w?f}ecx#|qqu&^R_ z8dfFNyYk3AY>orP7-USG{kS#KM-EFiZXv_uB#($OmSg} z=)~OVA5Lwt&X-onnE`l{uv;;57xg@!nuh;NX-IlYUOeFWwCkO3{&wnm=UqxmUhmuk ze}lH(Ikd!B?=<2uvEJD;h4_c9cOFB12vO??$?Ki7ml+O-j+H-bz2h=GXrLfBflTD1 zF5xB!SZbD97mLTC{ac8^vej2q_C~&J5S)9{)EfAogU@dRR|@`K>Mm?k?GL0_rfj7`acAT<=|vjf^yP`xN1+E_E> zSkA@n5b(@ZCzLW6efXBmNR*NrSSeHz8W;$AN}$Hqe{stbR}sxK{)`_rKT1L{^yhen z13F{uV)~tvF`WHgQwuLIIcb~Wl(l5=w2VjJhC^GtrV$wz)XF)na>39k1X1)2ok+i- zp+y8a^G3A2dm{mO~>f& z2)gA7ouv_>CwXK3=2Z^4L2>|9NQl>_=HG?+P zre2U#emhUyum1K^;(Ay^naq7mw)yT&tcKx`#^%}*Yto3w%5Ldu?pbu{4%x&8Q)ngB z)=`hr&bFGOnDyH}vVZ zQ)j8_Qatp;-pqLw8oK>m(i2!VPJ!*{fn7PAY}Eebj)Hsc4H+J$@O(jt^?~%@`Mr4n z{@E-+2w9Gi2O*qsVIz30zm(S=N}5=x2~&=|TXj+gH`KL(wDbDe;isf;*-jo*di*3adu?2bBxo>Rl z80rq2D^>#puzrH345)1GtUd0{&c*|zgdy(pG<@IRDMiG`u-A2nyG=t6Ra+LWcm6?@*Z9*AV*wtOTW(4d)M>{@7$l01OCWB!@+C3K$$<&Yd8c}<1tFSo7dQB)X3&FeovX#={2%>jW8w7LJiSo#$+=Wl|huBi}Z`T|B+lZteI$0e%kQn0Q?3oYoNj#&q zx(HhP0|!m5ybWUcdJg{AD-a59b|UeTvE+N+`|Qf-a7kb?bEO6gnC)P|J7 zwbA|+P3_fIWtTVZvU(NSTC4VTUe>pw+C&LRW=XvgNfqy3M&K*8O9cljuNZ3%GX}Vt=raZlxV=WWol3m`{aSW0pfj z*4S`b6!K?Ej`f4l>A*HO7Lz9VfGV3CeM(W5T>EjVoKtS|n%m{VeX>||)R$8P#gI;R z7;Fmo`BKl2LngUUvM#sCp?)#!C!L%UPEC_TtI;|jgi|l2NDmiYfV{CL)y0w98zl*O z#2_!G?jkgY8<~gmA|VNun3PWw;(ST831UAOXoxGZp@%z#a|FS}v;n5e(#_aK9Pd~m z%Hm5AS$ud`xdroJmwOg>VQJ<%_nWT(KV<7$6i80CYyT7ZVXk zBb9X1NW|3$c3A3k%ry4&<0)Q61slM^drJ;RK=2dZLYHfKCi8ZB!?HvD2#x|-DbC-S zO3jkDA>_#?p3Wd~#$s5qmWHm#gqHBWtWyYULDCd%Ck6se7c7a~ScE3%1;qjZpUI9ak?F1)*R?u2|KHO62uT_|t)LyuKTzKMu!7024Th&sr-^ zTo9N*=!MKoU6LJ-p1V#D&qaN9>3xn3tT=I<|3aB~J~TPMVR9}cULZ;Y;2F}oquzu? zCZkTJ3ln-QTaLr?RS(}&M=RVzsj>+JgOTzn#Wpz@#bD0JSFavSIC3KD<~Ur1H^WuP z+=K}xVe9F5imaqm@yYONt{DmN>#u<=Nar%gJmoHh*Bn)HXA;q6gg)i%1ZeSQZDVKvSh?3 zfq$)BH4&C?Q9SoG7+YC5Vw7pBoUhYMyb&qpw16#*Y;@kuPF=f%vokpVtH&3tzY>*x`O9CPiAp2J|8)J?-&v{IqwIRxgr39(BmBvm)1Z$q2HRaA zK}^liGU!Dmmg0{CBMnm@VfriT$n%;y?_0W=I=2yNzQQ^*elsw>QEMD3xe)@8t29jw zr&jpFsS-yTD9?&D;@>Of=Ycc*orx~EIfV0o{;2PVa7Jt|+*;TcIOe7B!&LaT_Dav1 zJe9}&Gk`9jPs7OAKYkq}Q?Pzwsd(X@GCKr1gHR3Kh-c#g|gF=7MT&sd#JT zEAit9Tw~-es}-{w8ML)KCFMxPC1b=YmHN*IlDCsOzF-}Nkr5py=R!ANR+ya6z+=k> zJ1xfpw@S*c{Oe?|=!y80i1=)uiW9kOJl>bMb9tChaiU=TMa6~nE5;@|-qe+JaqwIp z36nLtEQ#(~M1=y#+E>W8M-)J^K?IH$`b_#Bz0cR6O2HHT);hsNJ$E$T3@W{{+^mn% z+T8?bk>5JrBUYV569Mlw^~m9-{wR@v8C}!-ixl=_;NTh8M74ALY2!x+`bbY9;G2mQ z!%f`u9LPkR^JEe=8D4Is6-7LiP5vv0+aA-({Wei7^7u&V%c03JcnNr6=DSV|#odAJ|StaG5T8@Zd zXygQiv4;)X)eb!_KZBso#(i%D!goRCAs7~G@2@TmJR~F|7iD=S0ZL?&*%$qi7N!{JG;N@xZ}9|ThbI;#Xy4{0xV>ERf2=5?8^ATP9ksjaul5{s}ys`^e(9Nh3)q}3kDFMtxVbNh3TPex^o+Ti_Lqa_epC6Ih0|NKrFeHFc`2q~HcWN;lvHQwW^_t`Lnj^1iQ00DHy(+7?hBzhfd5u5XqAc7drlTkarB)Pj?JqQEi-2($P=YOWL8Q@Glovz<}7noOt0K zoAKgP>bNb$!+DOXR?_ATMOFcsa`V=zz; zPC_7{Ow5%-6G6Ty_?<$(F0Bwb5fySQOw3{_N&bZ3sx07&BaMdx{n-IJwfPp_C3MRn zhcC|}kHrP5^k53yxe@;egY4ADbk?tsc{?U9!<)e4=rz{@>lKfm@SzuIhr-IvfTK6w z$d2v=uxWM0Ld82@injouYP$q67$7tL$T`6r+q^#Nsw0pKH*|U}IhS#60ml)*Wkc}l zcXG!|&Y@Cl4B_lTu+zm(F39mZc6fnKF0jL*VawhKs_VdsehL4Iaweu=a?5fwixOxm zQ|BW#YN3Yal7a-92zdMzUO5T0vzg4Vq7NyY}a;-@zb^i zPT*j2z={rYuNkP8D~GRz8@ity{GgLgE%%j`DOTCsEEo1!K1wc_2N@@KtSnBRX;rKK z5s$-OChu`VTIf6_)d^3`qOd?zWqBba89b!(e}aFyb+nMSw~}3r-JH~{V+n?LF*kTk zTQxQ`a!IN3GbGvEVtvSI4Uv>R;k2>eXPjB|t5^a>79KWP>1;t&7^x8BV5eEEdbrElYz8T$5^Nu@t0fP?tLh)_ zW3lfzdyugLNlEeSIGRxiBkdA*K^zN|V7yo0^M*-Q*q*322}kV^k;G`gwx5X>t6#yw z>&m=%=%s~>R?|SEdzRvHXD4>U+~LV4HNQ8OMH?3*4F{sU!3ZGyf(pw@rs}(x2<`8U zMvwyE15y7*jD@Uh;zOCYSG^y4pB6gA6|mqCta3BfZ4_AB&09|Ak*3d-aS~}e48occ zOu*`=*wiB~QY=JK;?$!=!j*CR;*d!gfrIQ{~4O9}${%4%k1n1yS zVOixJC$1QPQrh|%1MCJzk8)$n2$f`-C$^y^6;n_QY~prT`%`Jm+<0*XRg+jb6a-}t zbtr-d|J-0FlD86>p~xGG=0l^R%l3>24cIO@r_LLm@({M=_!)%aoLxR;5AB>J&WDJ> zS5XIRE|}jEZ7|ll^T!6>jgoIo!_Ecli2gW~D~b887v?){u3I~fV>J$*R6b6K#ir4vIN$j<<9EYu;(~dzudC}y*#}?x4$3C> zqmt=+3nq&0IKCU5Nz(_r>VWNvk;#YcNum+{!4|m>9s%f-{gj-qJ_LhXeu<_Wez-R7 zzZ7y`_P>P8eyZe9qX!`M(A<|Jj(1;DgfUYjIPfTGhm|aJSP2f-dZI3(+NJ~0Pm=*{ z{VqVGk~GqpzOdI;Lkg=@s**ATwqjU$zLEQ4X})mA@1G*vo^e)yjKyH}ONox2{IULV zva*K{vz&vIfwd2L%}vEQwF!!mjYHhXj&%|N6%&t z2Iaa^(;(z@tgg13q81d^=R$5TEOo+~)c4CJrM-qYoz3>jr!b&AP+=3us(=P*Qr^Kq z7|7-!^%<;&65E(CvE|{Qzw)}=n~dQ`b<6EAGHLq5$&JKrCo8kmnIF11v;tsgpWB!j zIaai_+YKL5rr(7RMZl}h@4+YaU&g1aJ*C+vFtfXwdzJ5k9^Izx%XM=PN{e*>tL>`z z%HBQNQ=I_|*-kF9r5e!Via`JFwp33RO?P{b<97;rAH8!bdc!pI$clsARQu&wr5$gU z20w9>rgxTxR`qN^G5ebMMK>~!Hf*4|3I9QN)Y3$TKz;ST+i3VRePM6|pS(gZ(S)XM z$|e05aQT!;nq59A$u6HZAL}u0muIR6Mhn8Y2qrp!=Db84qZy8jw}>D{ipD>5Uj)wE zT%t`~Zi<1~1zT@WX@e;jV93CLuJe}yW)OEqfWKGut~ZUQS)ij8t9@elOMKyhPPYG3 zb0a4EVz~OH4i(<9+LI~Du3B}Nxh0%>uQ}q*iNH)p1F5-E^~5-u*^f=8xV)gHDzb6_ z>1)^r1NnjL;HRclN9leX9fhNdG!(kXBZ8UvdU48pzFvfl?{c)u3d9PV&xjl;PpcQ! zBC>|98aNtb}~DPrHYlE6d6UwRZ38?#9CfZpK<{l1PA4~i=t)P zqw7WxW&6>>!dE!OTAsDdBt3rt$X$cQnShP5I?Rl6d?G7NHKRV%poe;CyeWDaUXqc= zGs8#W=qyY^$H&oeB%_m0=%B2Q&E_A4jdCzLkC0I~F4H+KF526s%N}6UxJV~#_$&ej zN^)*IjBG0F|FmNugghatsE(*A6 zk68#GlQz|a?XST5!P|XzIJFD6o?Hk|ihnAi9awW0SFBEI4pBmdvbB7KySgBDCYsxa z=Jt0*rB`(y-Wuu?JgrHbFx!fbR>fEKudkw~(Mb6nemmZbH^5>4TN+?qMh=ImfKO@h zlq%A1~+aIL!BB!RrW^&;+5cyBZ!+yijrMMk11`kGF7F z08tf2C&%lZ9L+i@8kL8-tMg+6(Z7214?#y)pxaki%h?qT02wbz5EAw{@U~arP&_B( zFC3)i_DK|4kF6wj0YfKU#RSU2s6|AsGLcdCqKZ2V${K?;+=G@$)I@j3DZ_|<&@fIk zTF==BYm_c>V5~C)Ez7~BPDnIo4sEp3>P^rIsHt36A?F~P)7biOslpr@cDT>N#OS2` zmS0aPnj~!4O%g(fySnW~l4$e&kgMhJwtOy4+q+5=-KMn+ty)I@RF@_iR|z3l*dzJ3 zOB2ZlH+V>{E*ruE79m*AbHOVAp@KDz3DzNu2%^@$SFqUf4)=3Bt@Fc1-251fn*u%< z@OM9F25(@oQ30-@%^JF$BZ)c0$`GY%3~~o!kQrSYUF50Gjp2$G`&dp7Hb*h6eck3LWYZR+dEiLVOpa_<_4%9# zn3zV%$^aj{*S^Au*78iK-UiYAibOgb9&MVrQpv24YOqU91Lc1N9D<qE{8!Z(Om)vmD|q(77GkzB4p zTe@n{hnxcD7ts2>3v~_J$Tg^h(_zYA9aKE*sUSV);wA;wdb(9oqFW^_Mt_-Rm8{gP zk~J_o$POW+gv^;@7$BZ)czysj$u{DNkY_9P(q(8-mwEz`ESur$1dqDZ&sg9r1rjq` z#iQ9Ovq%APTcsdjtAItcVRw?P0tF-`j1`#tr!!X8V9Yh0n)(;66N8nHb&W8&qzut2 zj>G<+_gmA3zU_LyFJUbc?U&iL>FkF!4Qu*eBKhGb^`>7QgigbBLVLIs((ltvr~HI{ zh#}T2j*<1I3uxAq5(Z*o{JR;5^O=FT1_E^-nIPOiq$e^EpTe(ZAg*J5XJud@QUPut zVvCW#!anqglVSXVKDvEK#lGJ@bal56;RC`gUxyLhWsEbfx1oMd(EB~cmA|?Z5$n3W zd3L>ULCj8F{%)I*_!&|Q!1hXmpKpLzahZBx02|k{*;&o6Q4afAV&!L4;Ro~Cj~;AI zrwRr>2f0soET&tgx)_JL36y*~&pU{LT?X+amQqfab9jPd!pw42(&_V=oR z^;OAwNA95LEA=8Ko2TlX(`cRXSe0s8=d|n5F8U@0A0;#v?ZaQY^~b0i zZTj@$<^(>dU(ui{)3W}{lzp4{oNN6q8vQhsrS<;5tj~inc#esWbbZ}VbCe|!Uzy|} z@0f)SF~K1}Dcg8+;w{&BI|FZsn#HcvhafFVizPXi~=>Gjvm~mkC=r01U_~v zGVr9#1*SMb@SmC>(m6f@41AtKkoJFTg7_(GdoD%?6!-@)V^ic;gyO$%iqur(@W=EK zc@oDFGz#>zKKxJ2lov1*=7KRnh+{e-qW@k(XsnR^2b~aqU<`R$TVaxJD_q=@tuTVw z3h;Nq4rl(Zgpm$cL|1>;8dFz8VKkQnNa7LyL^4$-kcU1jA=1eH%SUze1_5ELb2U>Y zLbBbNQ-_k+Kc}b-wvsu9;iU!id`vcE*DI%Z&L+7G@wWxn$+&zbxXuT`KS|W)YXLTS za1<;+VT6Ig7J|;&*@@NMW=Jo9b;UUa6^8yo$9Vx&_&%I3MIpij``y6AKa01V3P9Uw zZOqy`%V>ESY)<8BnJ1ScU`Dwb_dL={qLiX%dgy!Kdee1mb2IRQ(* zU+gsSf>g2xk{gcNu-!pm5v-u2vkG0`!j zLi2_vW;-?qQdXkik0_&WFTta)KFOgUy->& zulrx{^)}N$QlGi6_utaj$2RMIy^giEpDxta<)^!U-0#+Blb`nF+ICQP2W^AD?gzMA z_p?POF6}07?|T^OAL~JVWg<~0*@IdrbB1S(yJ7cs3|_L^?+5bx*Mt9C{7z>!b$%Cd z-_?JL-*bMY^T0J&1%ltN{LO!b-;coI_V4ER=fZklZ(*(dcliA%tyeGuK~G_Nhr&8# zVn21O@b$~O^ZQh$@-;<$D!+G$KXK5RC)yO4Nf!xffe0QZ#n==;9D;_yIJgdtoe`X8 z?~QnJYziQ>fp$fABnKcMG!NSYv>%HdQMNsRb6yS>(_AERixCv2PU0$wC?sYXtu_D~KounuQ!%fCKriFZNLaJlEnd#0eSS zb21zIBz@@2dNtw;Xs?z&1J;j%8~#R2OYsh{zWySSh$mmWiG4dOXzD{)4aNtOuURP| z$Or-iy9xnLV&&gyO%odLWOz>4xFH_r@fA4T*axSE0KyyJxG>0LU6g^}^U{GZtmDZw$P?^030;`i547l)BU)M3#(h|`~XLvF5)~cz1n*Tro zYI4BRNGbRM?$JfFNd;mV97Q*eQo+Rt;+=G!OIF5nMrVXcj5Z?-s2bdDt;2YShkkM& zoz^_)Rt|4CVLKO}&6ry=tSWYe)bT;>rPHR^%-H9-e4q;&FBzpa}1MZ4rZeK;D{b20eFx4u9Lw9xls3 zbeUAEW=KmSgo-<-QNyLpzy(ogTH1Rab3{uX-ycOi<|e?d_{9TVG2HNtYoaK0M{>hA zTQ{17vUHHsKs@ZyF-77q#JHIdpibYwK&UDenwUbR(esIBx?Mp_O!bB*T4vYPgbF{N z!H9Myz6&(0&q=qrHF&a5*_ogpuSN7Ss-?twRqR3>U4KRa)WbcBQf(AHujM^&)q9!L zbDbI=psPID9Zp5pamtpVW%8Jh7%iLzTdl(rEjTi(ccB+04o1Jyq;Qd*Xhpwzce|f! z#?|b~=~{Wi2|kABLi%x+-oyW6##JPpjD2RGGGvm{!r7;ju}^O_c3yQad>BRwb}lUI z%Q4Q@Q~H!qf%Dlb=N-xlPcmV@nGp-xUFvA-POp~lpx66J^cn(swRp@2y&F0it0b^N z3geV62qBR%N*^MThP8n(rR7vlGHF!HuAam=$h^+;@FtzZHA`M7M9}dOOgVmjsf**{m8R9?_eHKqmrP3ExPlD`BMrn)@PiIgt>JT4&)Zs~))ElEt zcQ=o&#F7vfpvWCZeRN}cB-q)fyth;l$#qxvimf6kDDM~UOX0H|M=)4yPLdcwv`BKw zhlD5QR`-HVh7yGGBW%E6(B<_hv23oYk;B0tU*}UWC@-0UlHg1x_e3Cr-@F|k(_u

z;f*=va9emfp6T-eOKT9>j=L)0T80~sR9P<0(p&xkK8KBk*X*6h$IVD6F`p{jB=&>X z1tG)^@UalLk6Q_#p(6UaS3IyZZl8$vU}s9eEQkr2&)3nhq%3dMWQYL7Th+?ZOUb2Q(k*9Ai|^f02;t) zpbGrVs~Z=Iy~Akcn$BXwa2Nz3jmO9gM$mg7oD&Y>(~)!W{Ykh_kJ8xU6Gd_VC*;GM zMQ1un@^B3p$g-3$ia-T`0uH>*ircRTGQhh8i_}?iVMEy*8dI{37vqZvC<3Ct!EXGE z+s{DJV5f<`HV2SKn~2MLgvBW#F$opM8ec6>u!gHThfXvnRn_kEM{f`^7O*lSkUoJ~ z)fBL5kg%-Ldh-Px3yl&7x(L0Jyd!ulp?62z9z;8Ynzdk!vm}s0_b{;qk&9tzNC2Pm zFvmG?%?QG3pK!M0HUUJb+t@~rjR<8C$N9oj#0>Kl4?>hC&ulQ(H5d> zLF(S6_<)&DX%67zQJ4zhOw%v#G2_Bd_@%JND!|vGW`n_e%6?>Rq%0ayVvl92Xk=8e zI?Qq@ZdW@nbKvM6b#fVMZAE6O8#vF}DIkZyqM~{L&oo=RXpraAfaU{J%3?>jFx=p} z>|Ursi;RX^K(8PuAl4ZHHsnL4@U#^5@O5-n1W|VOd1y%e6;O^Av382v(yR3Y-1C;`UdNjHshCcL1)S-e|OF zp%$~zq8z5ij_T1!^U7Gy+9KDnGqLTVo zwxU|Y8!FMLXlH&Sq9bUh(U2rJ`!Yd9r}i`Av9{6Aa%-At7mT`}3&43Dc?(W=2$@yW7ej31h<)Aisc zV0<08k3i3l+Yh1~HY%7HL9GRG@{!KOlAIy()i@7pM85JVf!&Yj!%+^$bXfNEjhO?V z;>(cAQMb~(W2TT+;Z;-|@Q%xL9B;i_oQ(5AO)J-s&IR}15of*jh5gQzYAr^DUNJGg z>Z6M+peNX^sL+i~CiU*h6i6k`ItH8KSdq)MI5IRuegGP9g*`B&G&E!#`JD+Y7WnkR zMM`@94xrF2T|#6k6qC6$gagRDs4=~f{{nLxDFek)VbOF;rE?ied5ea}0Y;%w!(ozI zO)u|={u3+@yyEuHZpRFGkW|g+`~m*+sNgcHC4e=k1QRTcl7)l=MFxr}M1Gq|F-^crwi*#0s~L>q}tU@Z(Yc~gmT zk+qvDhbx^CYr$qk+`m6aZd`hfzk9-cm@ zbaQDi|H1%<5*Iy0V4FrwfzPQu7gOlI@Fvy}Cwkbjo;8kh-)K~wNHbt~3wx1KumTvV zVSIHfrfI#~XR*$lPnF=Mf;`|Cm5J0Cn;R}ndK_i~d#k|EE zqpzX)dy!L}uJ0A&_IqwM3mvV4BONWlw$zw~9igR3OTXnp^CRZMH*GCeaA_(ob3}j8 zJqLPmIPYLylRD;3Pzdl0I7BWs5>P{QXAJze{GOk_&Qh_w)mkcv>mqRGt#U#RYl1Je z^_OxQJKoFLb0BKoQyU!`uf@t3OFg$a;>&50cG9z_aMzjzx0cygvgRW;)BDzncFU(&8vT5(RgC#T4YbImK$0_kXceJ?%* zNa5!M*Uy#867aJd2!+$AHBZiR=v)su3Ec%24q@q8YgKzY za5n?ur!BkJ^HL+IR3S>`B}#$Ic5X$Wle!wDh@DLb2xTgU3ok576UEfjLW(E}vJadS z^yo||U#NI`#(L(DOR=6|>32;`PG4oDPsITWDi2y_k=z+~XG8WZH^o!+6;CcXj!%j^ z+i?@$Q8H$K61NWq6scg6>>q}U#~?@uC~Q`*g&y~Yr&;3=z>_zlKxmRI#V7fqy&eEnZ${~j6OdC!e zXUDe2?Njt>XK|cxf(<>YMp51)+^#W%`XVWld^F@2N*%rEcyk~(-iUts&^`Y^FTR!- zNRxsXU4L2)DWli`c7!3;H*QyN;uL|^%UBx9)p9S6E+F3Ql7dEFenF8Jcz#54F}1Ay={PY-4AgI*a| z#QB)c<1$5-&543*e103&pD121Sq@m(H$S?G%UbTk| zA*c8ZDkzG*saYu6tX?>VisJlelKjc>HqwN&C}Q=DxxgU@hvRtB&JqUyM0moU0E>eH>`M&8xKx9x30<3ni*f>LgGe_7ToJrnjt6h_2_dbLrV94v z9gMz*Y`)h6qz}jKqn5z3FT(9+GARsb;RMX!5}zqBglL)QDH96MXx7vCAsY82RfD>x z>XynCOt(yjZi#-Anygz~kja;zc?{iB40Z5PFri!QkmguEN-fq(;oF!^ethlE@-vi* zwRX`XZzomU1ohBGkK`0FzDQV$d-v`_iVLQ%eg`K1%HkxTsCh+TCLS%O#s3~z`4o54 z=Rrz+N*f71NcXCGKgx}@}X_4HjQx+GchOF6AL6`I)`fY8dOpES z5@z^un$^ES_JB-Rsf;#|L~8m$yR%Dc8=IQVYU_ELuyyN8^fE9M>S1n;{)8;zF1BU~ zUDoEp4xim`71S2cjoTtO;p5MuEjRCY!P5@dE&f~NFuunT{C42l1u}gXw^+1IZfDHK z%HtXUOrl@WUADREUr-l=em>$7Y|v8vUJd**3|uAGz?MIVO}L4svf#NwTp{q}xDPgD z2cM@GA#lH}JV-7Y7?onxDp)ntrTH{bET*gBTo|U3dC?1jEc(UnYr@5}hQsnt9hzvu z3ldxufwV=)8gIbW(~Rzi>pj~+^AJ`!IfFIGT61C4eY;=2l*ME4Q8R8(FioGIU8~HP}gyP3&3|* za0M8?f-Y^Nt921hI~C|nw5nNzL)bE$LC3_?fNzQbGI$(q;A%Tv&nNkw=|aof8A#mD zG~JriC)uht;^QR5)Lipxwz~uK0tIV^GYU>uZ!^^kTf8hE1k@oU<_@}tFKp>tfBL@o zIE)z#20~~pH{;3Z58XMbG$i+m&gWwdW_-mVaaFNm+5EN68l7-(a&K(|Zh8e@fD3#f zkLs@Ww0iPQ_%s{T7vfMo`KhKr2drwZf^Y>~iEF`r)aFnC(z&)#%=Xaz&7KJO2Emy# zFbvJ=Qpnh5FaVg34ZA+%7}!?z6BtJ5!Zy}lMi8aAlZN}a0~zo!R}+f{@!2W1U!afA z6&Sq33?A;f#J$2g7d=4W8j7+QV+R-5P<1tD)xpNjfd(UNIkFB!2AGiP_%0K^U`n>W zdK`+h$8iZ;7O?W*E0bn1TzO%NaJ&3jvl9O_9 zzvykKWod;c@TDW=WNa+m8R}IUM}{&O>D|nw*VNv(;mZ}D4KFyM$WOt(zm1NbMsF8d+rK^rQj8D zQtyofm$t)~yI1{`{re&N_Z{|cEB#Az0N;a|PxsL9iyjrrBS#GjZI%}^EJ-_<89ILQWz)N}hJcW?{#3U7b~B!#4AuL|SPk3N7qu*PZVrt^SK9*S zYbV$rH@9CP<0@WT*(g~VOBWGfHS~sB>EtZPCq#T8oe17Q28zLaU@h<&?>xKLsvZmf zWM#u_$#BLW?|`G5&V~~&Xlaj9T7{mb?8asFm>U-Z;4(1oN(U2E2Lh{YUM0$Iucy5` zZ(&5dvkpY@=0tc1W+SdQ#iz8eFW({;z9MdXk}|{NaSrQq|9V_+`K@@@?~x=Itja3y zBP(yJDoh-F2M5;wV0ri|2nh8Y`l1gTW-r?=#%Ih2+29^%&m_V2Fz*r571on7a$Gp z>jRAq0@5z3PQVqMfcG#0uFfil_4_8(eFW@f(2(rTE-jG^frghD$qCAdgdM0x3^sDa zcMwje86zM!DX}R|ZEph$A_%it{VhEh^n!1ewluPm`G$Y>z~Gxh)HCo+A@K~9+Md7# z2vN+J3nZI(=gZW`5W;pDKM*17v2}@=5iNP3b7C4Z{hHAN%#=y|M+|j8d91&Wp``C% zsJOo`XQl>K9R3|NA&-HK)R%47FYwR+fA_)+Oel=*CFsS z3493zK9_xaIoYm;>VdIWc(QCIrX4wF7gXDdGvyF2_3An{^{F-?Hi^_Sc&Ll6^5%5P z;l2Pv)fo@L85&WW&;EXzu?2>DJH(jjW5sfOu~pb+3XBOhBDTfyHr{CJ30dC36IKxA zQ!)F(E~bs+kYxuF)ogZ7+VW>A07D?*Ps`0aA}NiS$Q`hv)LKloa>Hb90%K7ZnrEvX zmY;{}N+HSfKuK?eExpklEO}N@7cEZOycIpn$*0@o8G}$FZueeI zwnrl-)N_ddY+sC$@+|MFG{M>(EEzlcmX~g{qJo3xA`+N#`xv>~SZ)f>eVFI|gKZj9 z-FsQ?hcg)DDxUj=k-LWF*7MvOd2YLrTgq~`@mw#@{nW@UVYzqn+#H_!wvl@Y%U#NI zGkESBMy`|PPUE>>e!_axV&rDB++3b}famTpayv_j8vS|h(>!;#k^4T&{rgp{zxVOn zdLwr)%YB3AuHd;5BllUBTf=j&;ki4F+^sD4S3I|n=RRZP-pz8?@Z6z1_b*1SpXJWw zx$%!#f43XCb6Kv7=f1~t|JTTsS?&m)TgP(~?T%x)sXX^lo||ZQ2+RF=I-|y2Ja?M` zxfjcAyVgDls{b6?@P8;#r-SZ*(#`xwuyFmnIEa@8vsH9|bM%*fr$a`*7u zn|ba+BlixL`vlJ|rreO_R-|!%DO>B24%K{;L(`E(ORc=2!>KHk<^*=R%_%z`nr)@m zD_Wq}i++%b(~wlt%xh{6S~6_8ZcT1)q*3oFqh2#j9=d|gP1HO6I$*+<8>~2xb5zco za1+4LX-!@#kWO3Cc2)PaDY|xYJ~7-$bZsST{wNk+sP;2dWA-Jerj4j!0b*V^ z+N-1Lc|*rjdjqKA)vO}-abiO+As)&8e`VhX9aVr zzLu$o&#L)!d&VU4M!QkknC~EJA*nF1VlFzBUpS)j=J}! ztBjv&OHvc7&;*wukzva83S*g(fX|mAOoqAx*T=sH8m}C3z_C4U5m5_YLkSO^20$-cX)TL>kH#7ZpKpXGC6m1VD zP)Y_&4|_j*@ogq7Uv5E=2<>HI1_WFvRH!#{XJDUz4OSic)xS27@{ zrEAkbMwYh_0%DLw|27v^z5E=n`X;YGR=`? zDO+(z9X`A?FfY^639w-^Ag7vik*s@}qz(|~b#b+&b zs9e>=VykdezS{CM-ql}WBVLUTFsLw4-F^#u=?$8VM)laIck3ER>ocwj{|pVel*0%h z7Vr84Mo%5gam+zzF?JU-vI+E5;HVAA9Z0)?(k^Cc2z!m)h`6KM-%J&}(6q{~9WFo# zwq2IfxZUJE)ac9Gh0WnM+90Nn597C;J`36|_OrY?3)AE&dHph8LAqY1mOb~&Xu>a% zmmGGk>*{tOwm?uTIU5omW+9rprubTX8>PTvDT>DftK+r;J;JmMs5-wI#2?;bfc(CIBa;LlQ~^u-C%vOe%t znrTb1%!=@u?AW^)e4JJyb{iPH!zrw#r#@irUic+HBa2YgZQi>Nt92Njyn~=(dgYNo zntYeNekS7pC?-Cx6%%4e5$-22ra>5eEAsZ78Wbq zif?ie`%!u#d{x~C*X?Gu4&srcT;_`D%Y`^Ns~k`vA)3+3YE!>G6yEt3&eV6}Q_RwF zAr&7e_79MtjEWbOq;|CW%m?HJjlPiwybJ24CuJ`5*fqNb2pwa4Qc(&!Q1(HNec_^1bt$^2c<@!z;s)X(kI1vM|_AV%kt&4 z6pIrNE%GTtM!{qiiVF`ND<4!UZFpa3FAhH_wBzHkh&Z6+z?VJ+wb3$oY`5(g`9e?q zOKPt$!C) z#pR|`G-_qh>U_WV+?h!N*zftC4<9pkIrlx=d*1Wzr*{uDijOmUUefcXjveUtVGyTB z`yA~#m!%3BI+*1d*)qVLxtDtL9M56{qRE3_TrG;%EkSk}?S18IeGyQsGtbxMQFprN zZ}Ki#RIl&BHG-l3;5<4Z`v~X!A7mlyi{2tesT*X6xz>u0E1^aJZL)*f(`TfI`!o|% zR6u7nc~NULfw5lNY*l`0z0_k>zGfvR@BJDJDskfb@{=4nL;818MrSP!YW=*S<7JKm zU2EJw&>nWKox>G(=Bj@YS)=Mza zD;M%4OS=i8spgcPXqo&u7FYA=QI1e21?(m%e-N)7D;}(oJ!Pjncu_wn8eSt)J93+W ziFhmR$6J@iXU-@PhYK<$dy-L#XVfi@k)%z%-wehL-IG;exGc-}33KNBcej z3KGSuIHwiV(f9}?2*+5VVHfcs`|LCFy%r(Uo)X$VP&(F@w|>iQb}!GKK^AQLPc zP`Qiv0(WJ5sv+H-@Vv?sd-8tT(sqE6s)|oOOPZM-rgF9ydn&z3oLDR+Z{;%Bw%I<5 z)>m!|wr#S*TnP`dHfQzASwge)$uIsb8TXcqcS}%Micgs~b`D>4Q3J5=lzDrU{t*X; zhxmds>?gQUJ7Co-z=GB!cMO5rPXF!SfX>-h(U#ofx7TDJ%ef)t%*j_YcOsv3^DcLD z4d3T(rURK}=ZU9Xu`_b8f&;7IfQ3xWr{o%y8mdE8E1Zrm1WAM9w<5IaNPHBs_RTlB zM26QoLHrUO*K7Ew9(%6tTvtX7b|}eZgUZ>MvNTEHz>|F_u^S%yo2*N80Ae*KtOx&; z{zcxqAY-#nkNY$0Qud5U!qRghK1Vr!qpsdbOyV@#ZPguI$*i*c3J2Zfh~>o zM?CEzO~-{fGM)9;D5U9kvSXqpeKjRQmOr0i$hq(6alqsa4r*_0=L{*%z@RR+CZZzH z+2Ab?;IeSwjpzyCa$Hsxi$DJ+JCX&=`NXN$Q-m49^f>2kHdhQdbF+8Be>5N8TVA61 z%R^+Fx5xl~xTJ?aViiGU2nM}}$~F*4M<#t!ztJ-33;NQLN!i;hM>e^TgUng!zMo}< zm7fDr_=U`SiKXHFUw)o_e}{fgZyh&)4Abe4UuVOQ5KiuiY;p=S9mVHx3=b*=LjI%g+g(hY$Xjh3a20)`I_*{~%$$ z->hvO!RPsWc_&|n!1Cjly_M(d^Wm}OYm`Jd0O#%3dHa-XFNsTc(~!3V2NsuBuGdYI z7S$i1QHiT;-!prLYluVm=1jgZe9yc!rumjGPYEp*a@gfLmMh4)el@oF5-CyA906GV z7OUf*erp64-Am!BLWQM6Ck>6A10C!^1=8*9@@(fqjL7>!wm;$7%3buBc(=dH^LH+V zwN7~c#+59oD%m+R9u4A4OR$^gZPdkhh_8*0`+hx}i(?1A)Ji^B8f2@GQ__H;c0Mh+ zMC^YQ=$JaU>e)CxKJHri0B_K~%5BC|TiD<2VQxW437GzQ6*#MYE}Iy!-#cXUS3NKx z=^`a>Sb~!*?8-RrB$Fsnd8-Ra1~P&oh$Y~Z(Ihrf5I-XElz0Pk;jdhuF1lEQUfwM) z5wIJq#B!+y9zLlb8c&ID4FWVS2g_GUv*){n2XwxG7B}J^*MLPu;zGYBb5499FrnBI zQ3*V@TL~WbeUH)LNENB{lk;gcwFQY^;u5la)V^I~+fVT{MqoAYSlz-f;ixR5B}1F# z)rjHa>nG)Fv4{Ph3;3<`C& zp2%E1#cbwTH?{+CK>E^1VbT_>;v_f_3e*T5(?ItPD!!la`0~uxdiH=aF)pNQY zbYG2fzSH?E-4#y{ zS^S8uQM;t-JGXi82Hs_P-F( zV5Qt)SUFp+w^ZuuWWC?HFP3*9Kc5xqaLr1tD?^1=Wry`ND8WDApT>Jn06nfn@ z>5%1uAZac8COrq|NEs#o%*pZ|D305vQAhIJI6o<@908GAkhVA5--nk(6BJ+TwE}N6 zy>kdN0#Y9iYq|rg?l4&4|2J5W3jJ>|%=uQAA&Z6v-c~GO%j(lEqfl@ftn4!UT;z2b zrSh}ilh0uBZ)vnpjVxk3>^Twx1Bvq3Q}5*};fklz(OLF)FGHDgz_s`!WF|KC%QQp2 zmJZ)7^PU(gpPZdC?RrF8NMnT`pk(=Yf^v}RGOFG}MiG%(gt__PG_C(STbLTS9b}#> z@o#L#m3t4Io{&m=w`3Pbj<`<-S{_`)cE=2|R_qs?ci+#vn{A&a@3M4L6_ulDwtFArye0GW!i60q=F3K?60~Z zt@in+>?9-;r*i?w$vj`OV@ zv1#~QZ?#)HqBW|ikn4D-H~#LY+@Hk_Q%aFj^#EWj%MK8I=&?VQoIo-_2-dFnCin0d zOre&Q26bO(RC?TZzbbeoZ4um&F;KPc~r@1S)*#}`Al}oZ2>`7YrOv(u7 zkkkq=Pdk|m`o1r1xZ|4%%A;U)vo3#o1uc~yYU^`iQmpDB zzSeG#ONWhGD{rX4_d6EBMYBw7DnS1;i--t-FRbe3;%H;?mVC8tWvyRQU|nJ_7t$rq zEwv6bsV#M_lNT2xFXQVT`=s~K&75h8n_`cBoow=ntB?hI)T~1L_c-t>4M&nhXou@s zN`zYXp(vhKn3%!PN+6jWUp~T0`0%MLQ`7te7C0D>A$hjMR-%h))FCGf8R9dvujpjd zYR)40M;Yx)7QMRKA%T8-(r5WX=CrPsm{GUNXGTP#KpA1*DD)vN+g6TNLDTSGh0_?R z^TtR&Mzio_dc>VW!?B-l0GDNf2D-<#kCW5^3D2(QsnUT3E+i*_3w`O~YaRO8mkzu8 zZD?D`A0?}Ms+VY`ai>i6D$mdPn(bhynW*um-c1bYs*wy+d0jPL`ANM@0+Q&p@~1}r z5Mx13083rLkoDM?q6U>E9LJqUc`g|Usqj!pDA+6GHE!%wfEF<(3#8BiGUnse@geEh zNL7QDdF=XlhYN3GZSA4^mD{isn8}OXW^yWLuUXRkQ;b9d?f=K$o%V;gOTBF*$VAZK z4iTJ`+HRDuk4}|8UzI<@jKKQnd8w0~&wfAfvk?P6JEwiE5f9Q%uhA9M4K>=fe!RME z&DxJw8}Yn!%t!t1{X55Qi?4ABETgT%;W-?-&DoObQxVFUOso%jlX8Nt6x$Ue&9Q20 z#K3lWMU)&!lt_-0*e++|6$+iokli}LVzM0wPV6PLG$C%_+)9QxqU+hO5?7Wv7@FlV z*^Kn+932}bE13MnbVqO}#}kRlBIDD~(nOnjT04Fel7R6;BYF8zfi=;u($92<85kLV z&YjnE-11#ZhNgQe*QY#AP)*XW)7uzo=xJSn&KOi7r@_feoZ7w0!RrQwL3T*Jj|_oD z%J8~=L7z^MJ0*TwZl0Fj66dOMUF$^#ecQ>YpBf7NWALU`#3qQCz^D3f7eAv?X5Wl{ zk8!N{A_w&vpk`dibFeczJ0J5BIw3w{u!|0n`a8=w52okdf66Nn5*dA;=&HKy8fk;t zA-P1P8}e|oolhsA(dT4tKN8(F;Tw6;5bhuHtAphie)!G z*=&TOWs5~9HpuhcVIy9QsMo`ZE4|^wjfG)CroxFue&cKUz;k_I>uqI`mmpaDP}`C~pPqSsAc5RzypA48&k0ac!wZ8fGTG%Dw}TQXGiy>u;)W zDUOacR2QQ&rPOeB>3%00P8W9bYj06MB~MJ{rbG{Vkt++VNB|RTpE*xLJ(FTt#_MJRKb}3Qv+VjVuwvJz4EPwoYVaXko z^qhPJ+R((%%J$Y>M%NUxazD>1#$ zzG@gf!4oPm1-Wes>j1S!>#pb-Z5ajV$!1$ms7)M~1cl#|RhIOu(%pxK+**~I;FL^9 zPa9Bjv;CY?@&}ocU3FE01>{(=TpTG!(AEh8lDq-nf>aA}b4|wr_OJX{@4j8uSmK{{ zSm||^YaPw1(CL>rSyOx^MI^=rQ?$?h`p*ovFNr#i)4X9$5Xh9#69+=)3KrV$YsM{G z5Y7knk*D67S)H-zH^gP9;p6#;)3&l<;f(zL)4;%Vw53UgVx+I!fjF{5KZ~a3SGmAlX5XKj2k~z%M zLt~;t5538T3+;=fsKev*PJ?&q-_vrkM`m38+K$XhJ{UY_Zx&WfnZU}Am07CE8*H;z z)y$OW;Nz|MH&BU4c#D%CqZKYvv@n{o?*ZY1t$U**!s=B?OmZAKbfm3884*iHq(NG( zM+AbC*<*9wfNIsMC;_j@QnV;$FHwX3gN2pJ-ea+OH^~3A61y29` zW^#UL-1|D8W!pb!^2G1a*|+V{Q?&l!j@vEed2SK}7q;i-lnSi$v~mfnc&+FmlAdE_(4lD+sWHlP1Fuk59qX_YUm@)VpU!bUjqc{U zA#;r{y~mVmz3Drf(4-v{PZo`gI}Cc2{nHOLgRbd@GAeYGIh$k0Op6$2QXyD@Es%_L zuko3Kc@7UAQQ;~=6@&GGj;KGJY+z^8EXmAZln}P|Fv4rEypzziVfHUzF)}_>S)A1} zS{RQClfy_1ID;rS8ziZPDS}zZ_lQ-O>*qkoB>;hUY-aewMIg&vA|Eq4uaIWt253hT*aEDT>Ow}Q) zynntlf>^5BNp%F51jja7;zJJTEAoTJJ|@tSh-9ewX@jV_9^$_X?QLWO<{v zID#*Zu660{4Oo3`Atst+?R1#G=op7tGsz0uP_du{CZ3zzD&P?Y_${iFm zg|0L)Pl6|U6nt6mVCB(m#!Pl|R*$?cOud=KQfDX7IHKXT8Iu4<(F`Q^>K=RD?##pw z#P5N7h?D1%I-GA|1E@yhOdFqyP=h$es(1RzNDGnCpucrEXiQOh&t|P=^Jfn1WAg~z z7ahV2;mB5W%AplGR4W54OCxjo`yhE6gC&;tj6{Ov{xj;#v}M#1TRHAzErRJW&i$_{^Ta~23;X1 zaZ2Ln56iQ}<4@_I=i22*c`kbpHlY&PCA2W2-m2V3GIY3+zKAd_7`jf074yHJxyLQI z-m-h(>Q43n@fKe*dS8U@-@-h zNSz>;r>(Ij=ZVTMX%sHF0AFlt?0V}o)cA&vj4=z2vYrxE8UKj&-rZ-{ZU;HacT3t` zzYOQuT|-~QsV`NM`_i7B#=Zgfi4J2_SDpw#9ClHN0%M;{!U;6J!Y}Ny=J^dHIE;x(@^wR9qM@NRS<+Aq=t4G%a z#@Ewt)NfN01^W#0oMY&3fd|(P4ZAa+2L^2c)O<3$4nH_D^1w!p^)ZXI_;vugTvnWqO5UH?A_~U~?pQ zmX)0Me|SIqO6I*QBu@Q^He%pe2;pOcAU}+!J*?;bIL71Tysi+ID%N(L#A+r&C-eS+ zsk!&(lO?T=GSj3?S4bQhd2$J38#<2C=j)Ve$@(|#AH4(0JPIipVP6g{;@w%4IZNB2 zHrvO(FY=p|dy#VXN}+EsFZXjkspK&K6;K^J+#<2V>3nI2^(8&HFFWxvj-G?>%xGEj zn1_UuYwz6!D3s+3IA*$`N$=mI2>zVX_(bSU-rt{npA2p1(SH0384y`RC)+FG3|D8M z$2|D>rHY*4xd1Xx;SU&|4`g_x@DmiqB{6oA3cW{bqE5PQm_xaKs^aX4S}J<&S~!zbvS0#Sb@C>?(O0H-jC^%c4)P4-Xw_D zXC+!oACSRdnN6jW_twcE47K9Kn0HOl>LvRG8iOK4bV-Z!7|3gXUgwmG{H`ezWth6A zRLM{0lt~n9@#{sJyt+7?yo`^;rut3zNf0KiM%iWP2N;QP;v^jfW_L3}%s`1l4KMED zZL;XJ7Dv)4vmf~7{?vO{$i1p9KLF! zUCHzY+q$&*7o5vz-1g-B2h|JasvycI%j+Z!b!csJ-YQmAkilbBtaVMz6c+AuEb zbtOuC+W8w9u4Mg>>`zG?&V5fzQzGu)qS>Ol5O2#9*if}1G7?C~3^}sq4+1m>&o&(T zq9I-GKzi7I*nzanfyBK)GSn;fb~w)7&0uzAyU;Y8Iwo~U^sK8Z%(){U5>}HeI>v$0 zZGX#w5^$h!uc0IjJjp)y{h-~5f1Wn*_{9|!0j|qv!!HRhCHrL7DB2k|;&bGHieRYn zZR+y1p37KFRg?CRNpF>voFzzKXx|I-2hziH;KTSI%N1o0=TC!`Hrc~TJ1z#7t8!bU zrnzrG-}ILIHBm!sUi#c>L7eDZZ7e)iGz(X)5{s6dFA_3{m}vIup@S$crKA;yJI;$9 zA6$jDGIjK$`SuP`xkjyxrXnN z>H6U|9)_?Z`jL|i)X8P8E|E{fA6IK}ja5r#_WoI*FkQaZU&xi3QU=Sj9G8ha`?_-- zmQqgK(9BrTZ}#Hc&tjR2pEJ5#_SW{;bu?_ZeXvU-=!PbZpu6qM-vq7fVIS~RZ9!os z=5y^#p|uw#dTn!^wHX#Nd`mVg{lL3jWSG(p1SmY|*N`FRA6XBXp}0xmxa# zTF`H$$DNz0r(XXaQ4e##$%^o->}-f%j&nx3sGKiA*<;d0iIJ|n$?rh039#r{zU$7{ zG75-8G#(k9X+}OqHXiw-GUg;LEHJZ70_gv2m8ErffcpU45Se*;o8Wc)}erAmHeBV5W<1p%nL5WK@@;!PWEkYQd4`@7v%n^Edal?EGD~OXfqS z+5XpBT9+((_Ll6su)IqbwS5V!uR5@f$-z2a!#aG7gQ{1CI62ZjL;7?AeR9y=Ci;f_ zKl)x+XigmfCpT@;`$6S4iEB(3ji7oNf*6d#tdFxp;A<6fCp_dYo#GfQrMxVT@98&M z&9Alb4MNHrvqSSN-l<1I?YY=F=)O5W+x@Ap>F%p9DSwtzeoU_X2~yq}%3rS0Lph(* zvYiKC?9{L>`Vv@sgis`lx^K;v-z4Srx{&W1(nY^x6d0i4Y$P(tvKl_Z|MW;5`GEs$ zQ4ZKL0j6;*r-$%sS>Qwayt8Dxa4$XuZ2fc`*g8`vo`bDZM3Tyc<)^;F`9svls|a># zON9Jjy68AsRoQ+$CsJhGbrEf$uv!}{gPu`?unwQ2=P&kt?AVRa%=FHF4(RcJ&*thv2k`N&U8>G$Qb+c^E64jU}Gqioj;w7M5x*0X8Nk^4v7fipfd zHcPB7>2K#C63XEVGS{!?aO0obbvx7JZfAgnW__J6<@YvyuVFvIBXM@h0^jG&4Z`k8fFuh1KRtWF9BKSfSiy6c}}*yXG{BJq|)Pl&&Q5E!HQ4b zeHs`T_1Md=p{HVNu$1RI1{r_atc?`zgb#(c+i9N!QeZa$h)L`O+vj{VC-c#8IaB9;r`NgfDj-HLQJ~B7 z2mUhkkf9p|G~~7N#PL5R5ThtHEQ9Wd7vh@{6vPjT@y0LM&x9M<0jw1NU+wFu!|ENo zQH3DwJSktsMWcLY-zbu?L&E(}OSSM6Bma0R+cYi}`N(7lFa%?IQa^zZ^aDilAk2*? zp6|$uO04azr42lhjp8MSp6+~aD4>aVuXN7T%Pi3Mhw3>#Z?cGe(X(W-peMn~ZSVo| z9ee||Tk38NPSVm&=mgHP7oNHpdgt=B0!?#3*^I`NgmXbfHh?dn60oz{zK zOBjK??V$ZNCN?t!6YbMr!|CpSe+-x#HuWK<1^2xvP4|m)ryoRs9ROF%(>m?_xMF9v zxuDP%QHW>r|LHxK>LhWs?4VR8_+{7jS9YTP1OgV7-9u%%MeLwG_V8zNP_ve%!TUIy zJpc&-aS+y?uba_h=RFRB{-#l8rKry@2)a#t2R7T6=sHDz51wXX$1*%Y4i=bi-;)9K z!D9fr!U1&uKtM+g1_VE&ah}faw9k7q6Y9Lu#S%U}YhGLc`e^f_v+KOffNEMSrSNcs zIq3IC(s15?!_WV3LFX~1{3=eshhnjt`hXHYMvtv&V=-7;08E%n%M;2JgX>x?foYA&7A zxpm$JqP3i!Ni!?e&Xv6T52m2nA2mI3ava6 zKabzXe$S~{XoNSMC(!N?Xn^wAHwq}n3h(S=qL)=`D%XqK9k`dke-}>J(jIzQk07B- z5yvMwD4Ei8{(gwhqSf8tAW~&Ial1EhdjalMg(A}6E0?$(!+S@CJsXa0H6ClT`M;6> z*_{^6=l_LP;@PDXdZZ6)Zoy}%c$QljyZ}Yv$jk324%m;%0#omQLy_(6F zSQC}s1q8U3tPgrfLaMit{Ufl&7hlR7oKtk}oMlok8%yGHckfTR^vzoDo7Mi2Js^>E5fdhR0^Qs|8GD~I1K1W>$F0Gi&9>Jh~@2g znN4zSJ9`h59(pBwu^jzfCe|BxQor7K?IKy_@XOp{m&u+N>BxktyZ5Wak!03SWB+Lp zhlqEZC~U9hE*ST*z9(@dhIf4NSe=PAQR}^4sD45p_VI@7R&T%<=E{%K z;==U_O3e1A*yuaq-5=oF)RoyP9+L6{s;C0SPX@w(nHqVOR7dDk1J%t3m;);VoQhgCF)RB)_jlXbwHbKGB}_!F=mnZA(*CG9d)ZsBg6DL$ldYY(3jaRs|DR!B5bvCB``p(!g78r9UcBE@I*YDwc$78mMsJ+8h&_eGqzdUB1gFmh3$Z*=73LKQvP zYwdqmR!>6~_RgKMyNaR-u;A*6Vvaw72c0wum*SiuRBDa0Xeh=d&+9)~2DC3v3O*mB1E@(k# z_0xq6g8jM*ie-=QkQ+S=LD@cKEObJ9Jq82# z#-!(&qnStn>xhV+KXMQFGZ>l*X4rFv#O(2&^%ub@WhLgrOv$CXWb8fGzDIya^wrZW z7IMgCnmSt=ii;mStPGA5Ws^nhv;RQVvQ5kmzT60hhayvev#@byMU2N zuMJ#X(u6V{6M~2^ISp&?`wz*!n1Pk^GtGGlNqRlccM64|A0))s>OyeADCt?iBQ>)) zVU#G(HC!hQ|5LJIL1E3j_1{c3xDo|;>doMKq}_voUM z-@sR+Klw4AK(7S_kPM2gB++Y}f3*=XS$dV2(P-ZbjQHfwd~BVX$Xe>${oMHOJ{6=F zUP--UR(p2yD5O5|tsn+JPmLw&9FyFTHR;evgA#1J(_Bq!;dYq#aX{iq zoy<(?7Qpn3WEyJ3qk~z%ePBRS^`z=ycfNID40UG1UVr?6IVhAl$Uqp21zs2j2|9Ak zVEErj7zJkH257`+Bi`l5tBgHn@^#eeyX$lr_@noy)3l?OC($dJIkWoKl9r1xt8-D@ zQWH_L8Y4(ardlK0ah;k|SV(q5S9>Thr^6dNDy-Zc)0Vpn(Y|jC%-|55)LZ&BdtOID zZNe-pcD)jqRnqj3c%=mKNUcm(vk-RP-Z4u879~5mFJg!WrZx zg^=$C+1@OPfDbx8ubOPOJPwhAl=EzJ&WO|CxIrYG&jXJOOgUGtr6TKA_q*Jdst+|3 zggBI+tAu!dXjMNgANyLx1Hw{2)~%CcnKG`W;_dU$tzy`I(SJP1) z7eT72p!(Sz{Q6d02!y}}U(Hsb_RX94M#(oORJ;67Qq)xJBDH>{frQlb64%ytV%MwHHKi>>O<^3?q&vd#HEs$wy$-BU;Ik;fv?SSf z-)$t^j~R&xeA=ZxFx13WtK(hB0syO*cw469V4W;zx73uX_@wUq*r~KDdJbGpw_jFZ z#=pNOooCP500)}hm?{cZE$%j=qjK-;;cp;$uM6DbZF*GtZ=}20=u{|h(0A9dLfYdp zyw&l?_!~P4+Kp53cPeEdWpGRt*W>BZrHnwg$t0N0ENJIp$4&b%Mpf@GrfBAc{vCn^ z6{dQyR3=^h3-689T(G}}&Pjs;mkEM=Y^fEicp6a!oHLGlW=n;kj0pyzYAvTnlC7ok zQr57)-}!cv@npXJFT9%Z3?Gu-$RV?c*RY+B;np7e4YS$$Iv<5dX}T+VdnkDY!PK9I z)LJvJt2xYmE)ZuVCnCWgTaUN0>I$oZ4rREjYupA$d?5>)fwfI22WCKi z{{j0vW4c2)o8Hhld+~JT1m4zP>mf=L&eHlFE-kfO#wAPxb^C5M)r<*d^^CHXYlwg; zG#*EVTjRIXRK1)QS}N2yMY$6pwL9GL_RyO6Vt-j)%h^t_in&UrOKr3_xCC&d6nV@n z@EX--L21mDuA6{$F2Bz0>Prn17q>*+1YBmrbkGcZ?7Qn*AZn;}uWxw+7t*|qx}`^+ z%;f*C$<$qr=*iTV|7$Y$kiuyB+tG_;__SBI{-Rz@8tP2wSX1@jAg6P9*k>QbRnU4Z>l${7a#-Qucxw(0q=<@cQ*l8g-YwAjDS_za)+f>E~NxJl#yOX$GZ(Rn_y;f z2%TS|zAr>nttnp%lOaEWzGk<2H8rICB~k#Cna+F0$W%$8$mI~Vj`9uVogDP(G0Qil zhMVOtndRF;Y6GbWCaC2Cu6(Ug-ci2BNCYd4G)r(U0`ZkhtTgn7T(sBid zf0_MUSoLk*mJ5NN(^|S_R;Zd{g!EBeL$E=T5w8H^mKq(XDUB6$4Z#@Aqq1~esgCLo zdz;qiWn5R%^!vKx#IGb4l(80L!>bpR`d0YZN8)#u4e`Z2&Q-ny>TI?n2!QH+^@e&? z59MxP!rd%X8x9}I=93voK|P#H^f<~ulQJQr{B!M0uL;a5XlfT)B*ae$!PTblx+wl$ zmCA0#r43e3ZB~8u4@-nvLE<~jz!xE3O;@P=fEnm)K02gcRGWPi?vL5sskMFJIZj?Wvm zbTJGFnS`o`#sbdu#I#Y&!RgM;&~zkFmU8pAAgpHjWh~gb8Y~y5=54mGTPu3n&UDnB z?o9ngnwk-F5SoJGg(_xWg!{D-*@4golzJ~2tX;B9wjbI3v>;W3kM16t9F`53PpTq{ z!$Z~Dde;{b)?7tM&6pTcTSMyBvQS`WNYzy^EiZ-2dyVonX5xE#Lo)*Fm=rry-VrK) zCsh8=P+&KOUO*#NzT3<=OB*;ghE*N1a)Fi+X2K?OU$Va8XsBZ>6B&(nUsI zu&p^59Ty~H%h62u2kx@Od+J{kZWzWwp0NW%GWAhp&{2E zOWp14w@LTSJjs(Fb<`_Fb~e_#HicbAg#bBT;wFh0BHCid*%&KOC zsJJKcrQ}dEe{NaoDE>}Jx%tZspsN%HiQ_C^-zFpbSn02%?lv->5@Ds;l1-NDGUTZa z2d0_tOhOdRnd44wDrYoh5-ZZ{dN&C+;>na_Z?C>e>$%Y>+M;|xBUAha>^v+*tDR1W{}YYxy-+&M6>1~tv@iuu(%XozWSIr=wbH^v7Q{kS7KNe8UGcw_ z?xxXr+>-%zHxcC#)!>h)`DGCVCNf;$BNsc$T=g?uDmB7rGyJPs^-V~HC&bs|MZC*o z6srvNS>o=}c3{cv#86;Hi7$>5AH0_PJJO7Xkjm3?Q1zU`Qr~i6=WEqXh2D@#Ro~)< zck$A=M}Oav0=2da1bY}-Sn0k<)(K6O{<80gZjJ^iFibP z>{l0;1vb>H7C*uUF^Bv!YBsg+u2}u%eo4Uk!g;-L4H$ zgabF=*Xr`7Yp0Q3lkN&+ntRtwJ!g-V$~J1T0=oHylufKny33gpv&tE6Uu&y0d0lKc z%&2eW3Mu6bafAg1;bTzQ@WSzSw==*p=68J`JeTFv7(a+}uwt0e9t74hioTj1Qw1Ni79%po1DQGv3ICioL@k|z})H!RF|)2NMLRAS=AT#YA#5f5%@9U#cTSL34Z z!@1!ykQ$;sLrue$@nTqQgIwxP-Aku(9T*=de>1&~ek~W(zPfBet#UtPsDd9L^8KJT zQSeZD%7o4-{(K1Ms;m7>TNUec;h{8+nL*cZM7}Q!k5(xs&ztI>dX3)98jY1{+oi{B z>q@ypZ9%`9K0zqAskR$>^$Cx!Izp;oMVQ&GtzJC7G)*=~6CzD<0%;J*hWZ z_xYA5xDKo3@&dE%Fa)Fwatfij6p8^WWBMjaoYjeDwdpHkAFZA`VL>5JO9Q5FLbQVW ziWbtG*MeajCb3Z*09dqn(wGS}Mwa<}lLbG|NPFpQPFQ-ZRI2se)eO$b4o%b=vKD~7 zR3wsC?S%9+cS?SPk{m~*j(ApP%;ZI9UyV;remYG1Yp|vE-nCj5YhpK$HO;LW9rKBP zsLD*%a3sNRc4Gz7Tkng?C_%YSZtbkcg7TaTAbNT|c7i4@WfHP>gm36q{dRw#cCd(b8`?v+aA54O49jzw{Pf6WcxIIj-`T%@SjT4~%r*Z}+^$kSB|FkZROg44Ns34{KQwF5hbH|CiPA zsY|kwcGwqjcn!kPOfSd4CkrkXnIP<1FN%MRh}cv}GE#<%rc>WculPF20uDBY%gGh~ z=}^9HC}|$yOi$R=E-J$gu_3rEWmSnQpV*rR;^5Q!b2#`umjiL|4gIPg2d~~f2nV0V zn3Az&J>~!b2fyW92@Wnm%v7GsdC=v#hra`HP>)aX+TQYU+P2rb=f7fld9imcYm;9M z7Pnr{Sp4tP?XqrIcSQhkFD4USQ6X3Mc3jL;1-K{;k-N|FZNZ-P=|1|P7o5;Q#~v(t z0skR-ff~^gY7UOLPW;_)E;fW{g|Yhf(NYuE25BdpEP((`EAy?uKA6W5iQGWr)^LOF zv7MHPS_LeAO|c;k*2wV?Z)CNN z_VV?ROQhMV`e5{G_{02Z6OH^xX-R4(0zG1W`P5Q*hek2b-7?uo2Gfa}VqN;=dQ|uk zg+P5R+1gy2w91|h1;F-=r%4yGb=(ZIKpk*Yi!i6xGRDG%HKsca9GZN073v2%Q@~B= zS6BxN8Nz;L88{<*t=>-ti-{HLC&F1E$C~P1(IRrHgQLxhxU5?UDcAJR$ZRt{e0}H&(SbDT@ zxi6ALmlLmY$L1RGg;jYAW*bWv8hNpqVf1uaS$wK1QcvGk-nIY6K_qG-6o@YH0+daxRcki4wjF&kqc zHq3+7mlw3KYU>tSYT}NiOHRp;oo1=&Y?;~y@Ld^a*LNS5-ifB(PBJ!$DWzCA=N2?| z3u%Ko>hVkQ<9So`18UW<->RC_Pp{uDc_V;p5qbc~~$F^P*0 z#k2}0I0%dDwwr!~3x(QmR)hH~x&SB5Xb84`;%ohbbQJa#Vqb{OQr%eC@s8JUy>BHa z;rsUxE9*`*<3B9q+UDaT(6SrH)YeER;W+vgp}Yv znq06yYtjCc#Nbw3JG?R+wF{%?QPe4wv3c*H1kbEQTp$m6^_+a1h)XSGt}YOHf7(K( z%Vn?qKOCT(w#a@r&Uvk0J;1AMX(gZPr}yd)4n=gq^I}-lLDA>p4dmI@Hw;opnxD5| zyhhj`94mX&b3DY0><98gE`+1)-8<;I=l9OzJNbbt^4%?@?rBM5Z{LJ8gQY#m8l*zF{0}gHjjF$FC%i>zBCku*=JnX~`@2)@`hecNa#(K;u<~L)DJ;23BGu(IdOylZKi$JV zd~S#en*JPk-%LzCol8#hKKBfMb!&a0jiJ`J6C;awu*x$+9y|=EcM?T9P%|iwGWd4_!_V2vj)s;2v;~h3~p#VG0i*0?K zpyJ5uO&2LmoQe7vSnUZ`LuzHl|3u4KhwQbXw%wXf?-g-#v|X^1scO4hTl`poepB5i2wIs|N_JvV zg)Zec)Qa6!LY_^>{!7|pb)W2pIfyhN}Yuh6gi4$``<9@u}&nJBZOB zmxHcX-LKh-RZ08gM?#?6Z6*7(vmi| z02K2Z?JiQ#$?rvOp29`R_N!m4Vc69Hqz+AeXkE-BR)rQy7?M^PJAiOUe2cBlE-rv7 z9teEVe3^2j){thSlI~Gv((Qx%`=yd!z|gu57!*4z1Q?jL91#1}5!rXgnC1I{ObPks zRkX0K19ByKHL_z7YI{N4&U#qt(*6S&@FWenZh0Ze5Hj%ne@oOsb;@3>fi!Un8Yq=CJ`DRS& z!qUS2ad%4 zlr*Wq5>{h2S-Qhsl9e}@(X?Ksts@n10>KjN2!-^ti~jPQuo zRrZg6nonmp!T%cSWns8>GpkFV^NK3KIc!ZWe?Y!gcNE4Q7El~I7UrqPWtr$LT?e5c z#P!&}ypP2RBLMfS-8vR#ZOhuTW4?OT6kUO6;g@Qd_49OZC;gVa8jdTVjdv}ha9U=j zhoXX$r=o~R=tiWDa?E@3)O0RUaYVmj#Fvm2dVFQOv1-aGhzkp+CnoO36E+;sJ(nDG zH&>)4#-BStt$8imLxCx!3%07|n*IB}%`?~cWyxsv&kU?-eq2jVsfWdJ44d$J#w5qe zi`84=D1?_Epf^Ldg15%ap!xC+vc?|~D9UE)9 zHcwUV4O0{D*D}EkQxhfKAx^CY#dWZQfyR+Eq^e+xNla4aVdi$ifZI;PpD*A2SUgQ& zMYn7Jog}pxfvwGVm?~ER-7~8fmc?$Map*7L31|C5)!!~@K?Nyc4?|U?xRecWOdwM1 zZ61|vmnztS30W&uYD$`3u6LR@O_cy`QCaL*x-t!u`m}_Mo^HByh02>&q}TA{yK5ms zNS(T2XRvI;_z)%M;YzdvW+TwsJf&VeD#H^_PDHjK!E1{bn(*hVE;?12+0nnY`h<_ zH=~UHlj;_7W{HL=?0PX2Xew!*J1sf!ulV0FA~kBUzZA{?S84)_{oZE3GD<}f2^e0~ z{s&qL1^ZF*7Q{2(lR7ruiI3C8B~5=11-c}2=4SM}sy5;NleUMT_g0x;7rk$cIo=F3 zmHFBmeyLPgqAuK^bJJ9zgOd6TgWvD3o_Xn)H^Zjx@Vh#^k=MBE` z^Sdke`Nl7NijW-BH$M0Py;ep6`vqdIZ$%6CClc1-rb51)74x`5;j}P0JB`i68z#tw zbzrJzWQAvhd%eE3=x?e=g|LRop;B87R<&9FsH_;nwb=}O*m4Z4M0T~ieWq(i$n~y3 zwItH#w>mrCfgyYzc-^=111?Ai!=gziYrWx&@P{95>mLyuFrQ>1-9rnBCqf%d7!s8E zS5!u%S|*TawBfgui_@p)`#;^6PmEpA9?;4pM)G1^ee9CDQq zT9u(P$$}v~mtGm=%cL)Xjuy^6UK37+=VPI=5(UIK&A!dgDlh|~f~MaZ>V=R*K}CpV zGJItRh=BS6JfS7TGO^+3`^w-U!(QT?f;4M1QBaZ`{awsI4nME}Ho|P{WH?%4k`l*E z&O)I*T#S!uwKSxBwI0*zneG-t{Qkp!>cjtU);1EgN!PdF59ZE{!PQ&nzb8#@tB-th z);Pgcmv7*@k55O3VZl3a1)~8!gQfH>p9;1~f*dj1a@JG5+Fq~D4r8EFZL;BH6g#Ht zC$i-j0sL9kVhS>BcW<({z70+orf~lf;|D zW6+j}!o7@Rk5*~!Ry{08Xq0a<)ha!40UTjF*cp(wjXN2b6xm&J^V5k>5B$INUm2CE=QLzn0 z>52hDI}4fRmOE6wN+w1p1{WUSTY|#zPUiQ6{1{w;__T{3yg0Q4DZS42i+Z$An2(mF z=-JEIh{SQVK^#{(DL~yA#C6pQ`O0dy_{tWSV!avQ#5zDnYIsqQif%{ry6i4T8_Nzz zFb0QVpz!Zqhn5tL=^1HOj#g_waEE?yJI6dZ5AOe-gk&X)j>{EU?i9H!SEN;n@K5rF zQcsYaq55!wY|c%wsI-SMHH@UU~2P`@DJTY=BcZm}N6t$}7 z&Lb^#az=&i{$V=ZRX2gLr+V)50J_?7RmkrglBdt*nlaB#k}N}Z@uvw0(!@+|`j$Xg zwb^I3a0QKwo`l05#xG^}bJ3aPimXI}k_Aqcj8Y$k7ndVXTUOSM>d0xrY~Y6#TL zuo2LySIFvJXxGy|$*=dsKIHLFLZa7MP|&nRj8eydCwi+AXD9o=P+)>mpz^bwaFm8@ z(*|mLXk*sb=n%Oe{vzI#xEWFNhZsMp?_L<3@N3F zjl*n(%GJ+kv8IO3*X7-2`FhjUE%60g&GIdJ4{xOmXzQ=sRgXVJ_0rW3Sy(hVR-a5tc|`W_CjFI4`j99^aJ3@83H)8PsfL5-dfqy4tGeQodfr7 z3B&1zETN4gcWz>y-r$Wk2la3fep>`<$(-5W@_h(3t3w=_MN-V@u|kzvkxU|reDY67 z41LIFey)~FH>&lDjp3(s%NYKLA6W4t9#aPQoy5(I#m!Z6k`~skM5rSBHW8}IUMh<> zH{@;;^SFITK$!Utt>!1xwmH;>Rt2oyWS{T>`C*sui}=jGLDeGx>-T3s8RJU|B;7sZ zHR=2GB6XXYxCMf?WL{ouN+fa1Jhb2g6_dA$ViNe>_Sb(cy2TYssZ=!OT5p+oHN|-) zv^>=Ij=teEgZ5_k~Ar6ZgkA zQptx)pOGPEMhSr1iR!U2I+C0yV@dU{Y}nUEF`JN0wO-9FtK3$7NlA-^uPMeyhpRQK z4R6a?5jB%o!h-hN_@oW_F_>s`gFjFa8&%uo-XL_8qvy5vC>)OAZQ6=~@sg6Jrz-b> zQ@++(I0Xn+bu(78^SP$!^J~=@Wx~x6@g**Uu9wa7SEJuBt1m8SLA`%*K?omaGf-R7 zJRL?G4tX~m_6ufpgMQsmpyrjj=J{2yz-6ncrLL)dRa1a!YF+ap0LMd&EP#Q^ur+GF ztG1-+38^>!?E;()?xx9f(X6iVw%i#?Hsni)DVFGVf&_-dt_|#Op3~*-hODyY2o*5% z3(fqCAt=x5k&KRpSR2(7;+*u=xl%teTpy**jD0s(Vx?4ED@B$KZcy(nEKV~qraL53 zX^ppOdHfp%@Uxqu$JD{=BUnHU@58%Ag%a-jwBzkGjBguR(^*WDNzXC!lD`+{CSoha z8DB!#OoTuDzMKJ=*=Q!NAl~K*#F#6*Ehod43QHjMk=6hY9TY2H;gVgLU&ox{-1ATX?hEE9eF~V6adqEno zHuLGVaXUYHynGMfv-n1^F10~RYspq(NgNgQ^vD1Az{$nT`c5!bVzl9t?I zYuS)+e1)ea6yg}+@-5$l8gHToC!P^uBsAf>VaUB1=6g;z3_hpch z*ejz~g~_OpTtuYB$Aq>74mJntlM_EB!a{XYlJp0v0Crtq`DXWA?>h^|_LKBF$1A?K zX}if;^P|EFmRcQSNy^_bA2}l8n<5SW-bl_wu$GE^t?L*}DnkR2LR(O<4XB0}h-+Jp zlUvtzq=A{3cJ;%T7Nk-`T-$m5(t>Sf;I#!49TCcsFM3)|;A77tY*&#)ke1Cs3F}G+ z>GW)L64>b1dhz~kl1QN_mQ*^p5MF2p0YY?eVy1%pm(;kuG zMrRVHNzm#T8LlG-lSW8r| z%XgV-p5IgpOH$t&6t#3IDqTP1Zy(gIOc<{2__rtKwOq*A#<5ZCfM(#^6I#j;l2WIe zfp0kDb!u04=`j61ql% zaWjzaX-|VwgnwZoMX`MdsXOxell?TuA75F?lOKO^% zt7&|;rY;?lu*se;RcZE5s`{bk34bWeRA3Dunbd*f+2PfcbXx&kj||?Of*^9RUFKxDha&mKmFn_>1PQb`WB(m~im+8E+{gyq5q6M$2y!igY!*=79CeWHeE zdSkN!eX$}d5Uhx~aj^oyDV5M~A_VG6_Sl|u^{kSXiyV9qUw-&v5)VZ(J3c$ya^ zT1up~i&d60c0{)6V&c~ay9AkU`?E!YJewp&ox$SKP4Gz|SOdsZF;|Y7I?^~5W_e{N zLG3{P_|;X^Cs=dyuVroN3{_){M>qnr-N|2T&wpF0JRr3{&cIR_6{*fsh~7==o~`Sq zK{ztAS%<1-2cwM0hIDAv?4X(7Pz-lb!BZpZ<*tM~NUB*{7Oxr_8(}7jL-{ky%>0?9 zyewTS=9c_)usB`gd@?j0EJ@cmAEbk&B8v|8-STYHg7UQp)8}w0D$A_@;Hmmmzwg$s zAE76_hX#nWolfMW?E_mKX!J-+>Z$Mi3VxIN}TS%DtS)>*T&Pd@J{E8{TP^5^IY;}*e#Ti&ks1?2}5GvrN3M0wE0oORoeEzPG{iN9Dp9rV#6=Oam9$w%_K|D!wQBg1LgY~Ij_InK{K z=jSGVk~bbq{AIp#A9a2fIzNk@pQZfBkUKxCork}2ejads9&~;l=7*AxIX~^r!`=Ka zo_+kJi(cU!H^L33i@Kc~yok7Y*17TPn}_6vVP}>dYW~U{80zW@lb8HgR%sV^WXUZ~ zULs_`eoDU_C0d%?PA)2m&M{)X4^(FqLHr+m>T!&!UuKzJEVSi?d3nD>*=Dak66Jxdx%rP zd&fEz%(M40(`fGQk?*D96|B25L27X^mS3k2?@o~cwF7jP9-Nmh`uvf@d*C<{*uVIT z?nGSIk$JX4W1-@-2PYf}4JEwfjc6pBt1?>2!}G?CN5gx>ym3qK)Oq8+`>woq2{nfo zz%HqCtN10W73!+w$lgs~@_o?x{)R98-oALM%-J+pZvgielThf0yuI)i?40Dc`YTmo zRrq_5;TLIU4664&t*sqv@B9{@!`}RxEvk@w(aa5H4=wfATq!lzpYjd({>S}q7Lbr- zU(~GJRXw+1Nr~88N9jrm#@o%5f`v}r>u&T(H_nJ8TYkmKOlV}H$0LGp-iKc{yt|{BjKb(E zI5v)W&{v%y_yFvY6Hflew+%=5RxR+S#tp6u7RWhG&40x5dbqBv+*^HX!xHko!NZat zX3|hOq=SYI%YMA4IoD9~nmS@q;MRu4Te72g>m%kh z(kTqDPwC=z(@}bJ`lTggf|+T8e!z-wV8SHevTgmcD)VM`?#-#r8)rlNK2o>rZnEpy zeYjf7jcnBR_Rr-;-6Nc@{XW8o+{iX-zm>UJDmO1XH#6qj8!}h(?DovnZ2O7KRfGMY zzDmyU+V3vVZT1|kyUAP$$0mH5_;Od}Vjv{{;Aam=wQI*Q=TE(YVYSeR-KorG`N^JKju=Imfz&DE3(sL|rm>eqX)skxA>LqYT$8V&Vt{UAS-g3p7sqWubuMyryY|t_AS*i^v_b{4QQ`h*QM($c^6E|3lrI zz(-k~4d2-Y21uMBM57{(5;PjB(a@SWE;D2TcOZc%sIhg4#VT#BMVMhxmc#+V&Fvu8 z)}^(Tr<-#F$rsdx~T z!peB=`L$`X+-Q^@$95zIB0c13@ydV}No20r^MYc_`v!DU?0K#QPX`mp+NRD(gywy+ z+An=Q+wCiUP;Jsz;;rWtN=B?UUx6e1tmVYyr`FDr8PV4yrDl6cj2s|-)I4d(O01@w zCGAxu^90f*mk_>^_9d3R&?^VIf}Gf?d~%#u%U#HrbM=*Qycgqo>Q!qrD$%`^gErF zQ4E)k7J#kg$u9NiJ2DNE5V+b5{oJK)ZwDQI=SP#^^=TrfvGl#?AHss| zew%%YB;;2QG%*$NqVEh!DFg2ZZp0kg^SUWgsb-lXYH;Y`WH`yRuIdx9=Q6OZ-CGROR^M$p?4lx>@Zo&dGe5d~ju z`!#(bGhN!C#oCd0KreZ$X-`(H>8&jE6d(B(29@d5`s>r3(%JgHD*kWy_<>7al5VYh zS9j~o|6#XSY9kJd(NyD3@W?Ke1MRZV?42*iwsolqjAfbU`t|*@{+NfSS0l4?!P*%d z<2;^6kAUe{_osxKa*@n{Bw9C%wC5Lkk-k@uTBMJnEE4jt;c?uU3He}f*#QD zDL<3(9gz9Ui{@Qm$7_-l&$|Cvz&A zDuZi|w(l8D$ik_}Ss~+=Nmw~zTVPwHipV_dV@Kr!iy4>p?aAOd?fL%J`E%R>9!)>i z2M*k??>hYJBi*ly6MfH`AiaX^RR^wROw8dsllEzz)kM(vDYWMNXj=-A4pqX-yz}(KCFvla~TxRvOjJ#2b$;`$i_X72MeblP<1V)fSjcMi+^9=NiMAWXRT4+^5`M*k65!wvUprq1)b9Ls zR@Q#c8|RBThJO0h*4Y?N_Wl^z*YoakboO`Hd3st3+T0Qyo`JL?|IuFpMZa9yca1FBXb3izh;}X!_AMcVFuv&HXzu9=j{;LCshk%o>A+Gx2RPv zn2%aF^sNQNuB1Ix&tpOSDr_z)Rlr=7iiiFvbbFG}d)&uRUh;AKrOFn~14=q>PJJ=y zxE*1Qok@Om7IP81$}U0kcF5@QHP80=VuPU|Q-7U-N&73iA%)mq0ZlLa;j6~jab z3y@b2q2cVeVmUxvt0zfmEa(6!Ul({v#Lp=-Ej|F_iUmpdsVLCtw|q4e)TJ%w6dC7a z&0g<@{E#PdM=Wywk&F&&O-v@j&W# zJkCSQ8P+*xc!>O|!n9eEEqq@Bxm&-im14s>ojX=il5)EOJ z$1W9s4S^Lx&K+iw!@lbF8vJ+$)C4+fd}G^jYkmqVSf{hBjfQkir(M1~>)8}ZPS2Ap zSGR?Icb>$pOcCCQ7}bt!<6=cpv4PHcny~MxIv2kur`D@Re?6IuUvY|E(f*Dn6+4&5 z_e=^>n(S1yEwD5AVmYW5V{NCjD-S~;3s)N}>J?$q$;+|x23qmUNSv;+qv~)xco@8^ zowzD$EhV}DHS>TBfXO?6@K7pHP%n&Z#xd-$6={_ELib%K=(t~j0nlQsX(tffurt>5 zj}()#N8L;jgNZU^Yjw-bZ0aXIF}rK-F%m6?7m`499>F<v^rDkqqbUL0pR zEz<;x!AZ;364qL{Zj?vrSn$mXNjm<8&Cshm&@O8BHr2C%6d2j zv$$7(T}P{!c;?GW~SX5f>&85ddcx!yYG`1qJ) zZ9MOey1>h`JyxJ&=16C4Y|m#QvbqoqFk^q*B3hojTHQIdFwEi$!R1H4ljw+H;`iJB zdJd5Wc+{f7ABN$nmO~zJfqh?)l~?$(BjF_m;J2LB_cP_Pnwk^SlX|1(qBW&h-o)Ev z(ftof;@*9AtxpN-CR()%YvJB%owMbvb~w3l;NHekS&=iTY+RW|x41)7Eb$Kd))hj* z{tZQquD9aLjoy3?%PNd3M>N-;w6AW&hmrG0zEjA)kw+p#okT1x%V^r(jL_1{O4T|0 z1rKkbHKTYx%e1zqw>3O{$NFha9%ZyvEFEn=Qe#_}dG23j82KfQ4BasDEj-eUJWsNe zb1oAWe>TWWBt{AGJ8PuOAdqFDO#L2H1?u5y>Q8dATt#P>y76*ABz8#_-A#*zhptOa zmBUlbhlBc#zz!Napul&X@V&cgSC1TV+M>4}+>7=4MRHN(9c!(AlI~>judbrAHo3OW z_t?f-0kGGtspvLpLBac3V$x(!-DH95*~bwO^PnorD@ml-0&UTc1n00>gbws`to#rJ zlU=Rhr|;gP3l;mEg4><~_S*@kc14o2L?nrp1S=mGnIsBWbgB!2GB>RUc)(Oy&h$Cz z4E;!(hCv%?1gded=Iz4{l3}Q24|@cy#lcWaT zC#nhQ{a|96f{9#bJbf1)4%>8UW*Cg&QFHWZvnavh8HkG#%98jY8JvoE#rd7sV~#a09i*n*vCX*Eq?p zq`u1zn2xekyh!5mwPW65-PO<$`wH!r+;RTP)BeK_gzw$yA*Yx;MOp;&;Y=JFfxE6a z6URQyj$9wFJ|r5G)_?F-#B!BqR?bbxMylw#cui-;aGZ=SyM9~Cn*s&SL>!X-UNPLR z2bE3aqxI~zPWzfpbuF9{Zm2qeDQA}Nq|vZ5%UiLVpg>Pu?yaT5(MPbxf(g8w1lkpQ z;}npm$H`yn`^EN|lbrg;CB(FAsT}CXhQo=+&oZiOB*-of@aod73Zh5mx?+ckUW0E&znrS8-X`WBzfz6sRN#sMSRNc~8BQm3Z}!*~`{ym^%VpNX1^_Wl5q~a5fo4 zgl%0wTSPH3k0}0z~6C6I;QgS73(oE&mZ$&V-2b@{Uge_uR?N{29c|2{t$k zKGFC!^Yn=D>ArK})2W{BZlVsoiGZ2Wps#%qkoXq$Q9{o?dcO4aVACP|rw`2cY6nJq zF|ngp$gGdRjcf!1b>*W#bk=J(TZ$$Jg>Y-|eDVRBxOWzNXL(nqNUUibSV@pPQg?zWp58qEq)D+-()(_J2t5HtF=+9s8*MF z5lX8cKY9%dq^}OpWfJ_HD({)VU-grfyXaVbD~d6{jOOJlWi+s3Sh%Fs>!iBldG}Fq zW$8y*`A=Y@i4_-3Dn8Sa@g}BsF8(_`p zezcj8f<-SzZnA_T-fzTK^nWmjdYCZm@N9P(|B12m5DrloIP0V~Yec(mvG^0Z!E#&G z*=Mk7JL%*J>gm>GvaGcYxFU03e@+q>_rlUPkc$ciQaVwpAYnKyPLq3btRQbkKsdOl@yGoNX>&MzHq>%ABE zoQ!)<;`gFFGv^=n%GPLBvUK+jN)JEPn)~|>&_nU#%&XX)_!XZ47*^wirq|mO6lb(L+tf9B?;80xT8tm0<}iphklEg>E;g?lLw%}}xyb-c>`C3N^s+M`n!5n_(<`vXW8Xe7Ol&KP* z5IF@{_*~aU*3vG5ORb0wpCpUEad!q73aCei#jSGHW0|d3E?e<y z!qq=dd?&xhdAJXA&*%QcPqOIQ6?~MA!iSDq?FUb(M(Gz%G(M+mXR}R_+&nk`o)7cT zkJ>WGwN4g-V{3!@`S)|OHpB|4tZhHRrO(K92BOx;%S`)5W_r9cv<)2;1L3Q~NE6n( zkos+Yn_0-j9-_K4U|t}mSfBIb7Zt#+z~IP?_>5CrQr7;yA#Q+F?fyMF1rwODqKKLI~^*#-nTWD(?0&Jlm+1ip95_SVMp@1+TCp3PCO!3k;ag$3gfbM2X4 zJ0MF^ZsZ%Nbdc4T=$AB~@AA&6equ%V(0PUP2EOa;Q0EGPHiTExVRMuYz}~5@pr2?H zF$N=e567S?wylYXazh8yBld^vLg}O>+OD_DUZa!GYG*(p(&_@;$%%z(*I4P~EYQ)B zyZD0BA~ufIEY!*o?c_@RA<>vlsC=E%B0{mia2JZ`Q}>l_W8bchvAPP7r*)mOSY)Cu6=R8=~eh*&t_Gcs(LSUyub)5#$v^m+WiKeTrcMMmJWnntXGysY6tFVVdsEd z^H9k7EL?SCa6!2>^)-^HLmMWRa%PZoMOY30TpHjO?HrFtexL^N2##?Q3y&9v@sjtaNEcW*nqB=xp3VdPzPQ9{gT0!Arv#>80m@TcdzxQ&Dvst)J@|zB1 zmu-gU)0BP38`T4bE)CmJCu2xkC%QwbbM`PKtj%Hw^(|Tn%+)#H;tUTNy~en|q$v4Q zk~{30?;~g}wBnb4--<8Snu2^#F3)DW&x8+E2V`QLEqvbO;|%Q}0(OINw?x)IH+DdN zGYn{HturOBn43HBf~Rk@^#>6{y42{@_uM`$o-RAsng1~TA{p-Y7Os{>S0k%=YS+9i zfI6fGm@`)C1?-wSM~O$od#h1AW~tA{=z zMA<~3f%-&L-SLTJEO<%1udkPj2r0Mcn^%@x@8CMr{;xa^&(izz&BJ7o3EvhFT_Vdb zX^@EhK{=pr>+F*3+FVYBAx!CAo|(PDSo$$L(`3P7!rvNA{!WDbLN$X2a=e!8T5LSa zrAqQjAeh~=#Bgvx)(KK~97Sd0177m8MU6*xv6l$fAik=(S*L*QU;)JF^CG!=wIy2p z{d`%{B~6r)Nj{tNk6XX!v0A@h^(>OvDf)YYoP2Ta|8cn(-=*vK-_KB`2hUG%dmnZ* z_FU$9^B4WIF3g(&75_U|=qmI7n70~`%TlinqfX0uLCn2zc;7%@(38}51Wh+#%sFO6 zb6SROLN)819<1rkC%wu>6pdBZnhZswm25}RxXFqg%$xDX7Zi=K`T2NMlE2;QPgtht z83%BSo^hl6SUS6)8XS~)374dtgN9f!KPSU;S_lZCA3yopQ%Hy_Nn()!KdiM`mI=gn z<$ai}&clm@r#f%QVS%QiQ~RP12}7O6NJ%83V@$00Z;Sx4Ia%}y3nFVH95I%c#+8zr zKN=F})bryLrmGt-k!jy)n16OAhkx4?zY zv~_5w^id0Bjlvu^2?sI_=ELw-ef7BeLJb7Td>FliP&%web4w+$!`YTI7;%8z(xtAh zbpZ{0?InsN?2H`+Z)s-iCG~1P!dFLX11nms4aggR_e zNzFjAi?IC2Nx<91Gpp9wsE%P;3~SP-tv>QhvFs!9t44GFi3%@FCN;Q+opv1X+GC}> z4wKsrp7A%ri$wkv#_8UQU+LO|sTC`fCd3Qu9(~oz3&~fzt7y{bWVPg?^9>N`ft6VO z_I)API9iE~3IC!{to@V_R1EG>;slFX+o5BeVJ&E&8^(+n)~w@H+h-_s{Y6;Bse>Aa zUT08buam5iKH9Sr`T$WnT!NYqP`aJYLL)gBir;1Sp+JC2lo}&OZAeq z$WM>udt$X*MBlHAuNK);reQEj@(O6Do2SBDXZz8IG+Qa67 zL0ODZSEBSQAi_&d3E8Aw%_3xrU`2SefgPC2gaTd4fu6L7ZLCEt!tKbtIqb6RE(T2%!ze}Y`>?22B#ib0}E zZuKnY3H0DhD8Mnd!wX0bK_O|Puk)*$XhIil^<1qBN){N;SEQA|I?ER(v9RY9?(B;$ z;;)l3a4!ft_Xyh5hkiDr8(A9~)QQ`jBM&1(oKCW)^*#u!jlQ=ZvwHFrImxO^O@s~{ z$zZ-0rK}886iY@|sK=)1zaTn4=));k`C}}5Z%6fnMNUfj7#=H>E_6C88|a97(5xl$ zbsTC>_S4hplje!kssE4AIZq)#h9C;c(xY?vokMU3!p# zw&=e`O7|D=mAiyXV)-OS>7r&xs%~$k+g^t-$I_nUmMJ!a)ap03s5!=~z#SwsOn3rA zMKnFKT)%KhY9Xg4$7hgGvPYvRj>~*8nnUn@ln0OawWj&d#qI^x~Oj<@-xNrFJv8I(b-Sd2eU`GoyFhQ?5?W~RP#gtCL z=ysf4nh-h%De%lR<}vqR;9xZ9#3Ec{dMbAc*51$f2FUmT+KSZbo+Yb0wM15TT@-^# zm%7&rf#}!jNKH{Q$f*JvYD|aEpGynzqPjPPQI!##H$fa&d+9!)1e1x#%mQYo1k(W_ zy?TALg}wIeG#oZrxJ2l6!Mppw=f2io$m+vH%|RJ;Js<-kmMm)I0-n2^PcUg@v(&5> z1L4|&w zC5wKE)a)Ma9cy(Ft!-iLwfUB{lJ zZ5HvMSw~$xM0LJ&)OEaBY{PPPp+PF|z-Njp&hWIyiFBk`z-<4;(h_dtbfYJ^e2&0N z{Bl3*(xX8~cP#A{A)DDsj{F*H>cX0Q##N}spAdy=#@w7jF?Vj-_jqJ_h-16buczfB z7M2JBriE_M8{L`j(3zBR;fu3!R6m-!_!DBUK&35SzC|l&+I2gzPQs$FHxjm-zZx+z zJ?% z4aLVCB2Uv3jfFaab2E=v|76i^x5*A`v*K422C5?qzG=m82XMD0i!SAbzGyThb9C`jDPHGHAW8XzQb7WCHPBS_JF-@(8?m@02I$XzG&cw5_~#Qj zhLyEMTxyUl;2K@npDu0u|KXgT&fv_PHuas;&)HvklJZQ6|LL4=rrsCl^huDWI+oKKkAu6AsNb;%! z$f+ybLn=9^|9NFbD~v16_zd%bJ~(E7R#4T^Dn3280%MH zr_LkX=yo=Mi1aR| z2i}h0k0GoIV`A$HhvHjAc5OH2Xd74L;_@v*MniknQ|FwYC@~Z;?s*;+WCj!Z29t`L z%3k$XLWg^!lWwmv*arMx51;XpXjt;w)pR5&VGjP-yednW+z4#SQt^s_W~%f5%e-W6 zI@L?fGKLPXrE?_S25V&a1ol#+EJRaEKnzOiuXxedBraKV3m=zJHeU4nODXo@qcMhl zPWVHr$aYiY=jkHbq=>sOwRJh@=qQxu=wq{F1l%>EgIu&{rY52J`+X+iRhHW@)y}37 zTLW98%GqSpbD9aSj4!mRiSekn(HO2+Bepi7 zk|V#uPylK;f)`%c@A+pxanQ(WMpIC*cR4<(RfL&nUQqbv7U3mWze19QF{-=eHrh=F zoX|3pSJUi^!)WwDoVJ{TU(%YKlcEq?jm0l=qO7!aA{~M8$Dz1Oy(W&#D4`){&xvZg zmw=v0uTybgz1#udP$}RL6i`p+H4!J2bjlZ-<5zXAIoL){qI3#Qq9e5qX5qc+>fXM< z-gK(J$mi(`Dn)$rxsi^vN=J~vNt~lY=sJ&1F1xSf=p*JaHg{-tozosY%lUy=i;b0c z4(1>d$B3h3euk+yWUsiIXCQzm~5%Y)w&_E>DMTy8b3DC zt$@X9dem1C7U9iK=vDo2jJ5g+;m*<^&i?APlZC-X00=FU&`(A*6LZMzc!KHhPf`Bp zy`XK&e$lug3;*CwAc^rdq-9T!T!{~HG4otQo_yPa#7eg*IcEGMc+B|(NWZ$8GoI9i|oHbXr412sh)<4cv4a`PAQoxo+y7bS zaK*d^N5`EoK3VZHChNT2q9rPGJ*B?ZolFkg>9jtgySQLPO3qT>)<6=4DsCmG%X7OJ zA4Ay4>6hv89FMZcw;1BckW78wT`{@4YmW@Geg95G=vKMLUExP-ayTAFsha!?V7AYXa5DfJZ^!}pED=L2%%73@O0Q|fk|iAZE{-vA{T+Snc^c9<^+q_fg5HPuiDJlLi_iK4}7~4KTnTV zPm_aNd~s$Dbf5YXxAUlxCT14(t&>BY3lrDy_8%VJ7EmE4)Y2yD(h}oVuOA>EZJ&9( zK0MO>&~`c=<7>B z@*(Gd#7%ccE=NX%;XDl&q>I)0U(3!S;p4PFix5=w1O@e?%4l~3YiElS+3-H~+oK-VON@nK^A)!Zciu92QJkDbU$h8m=MH*i z%!ki#6`6dx_GNLRjn9lPK5s44*lqSB*~mU9#xpn*`(qu2{P3 zx{smtOqk8^nTyRO?%z4MU;-y7ox9*1oup_ShFKHAKsfXXn(n2m8yN!bS~%E+R7eY+M<`sUahHUOS_N))dJgS zKP$YK{WC#M_RoYhv!4}i&3?8`|6R{t%YL?#pZKKymc4wNT#fU}*@3Oa@QBtI8hhCmRA15_H~pFufr> ztPuI|GEcudbVM4lXmBW=k6SqQZC_gsZrS1()Mnf~ZecxFSmKXxgj9|h`}Cl6*XBmrE`D1Ccu&bBN{|2crSD>?ztWhLI6N;J@II1Td(5YKyBRf`Y&Yfh>x?~UvD4K zy~Ka^&H2>-I#ELDoKJ_p(+O%Oi9B!KyLdD1Y1J+F=7jRn4RwM3bRYe{#tY&yeNY`Z zl**UXqx-y74bDipogxrNm zPw=BTTZjZx*ho1bYT=2H*VTeVqwhN{ZTunw)V!olgcWmQf>uqrc>^i;jND6fa+)Z( zJRh=-9hB~0FG5NZ#n%jY6a_@dLF(aMlZ$X%rx_In$GoeEHx&<^xsBX|B*9pILJP+3SRuF9)uK zi`c5l>4Oy*u9H!F#o3Gg`4)p;C`XW#%44nddKpuN9JQQ+xlBIFFRg$`>x-rJxKJ^*N?+F(s>jSlvHCR^YkGJmHmV2YDWTV^ zEc;r2>$P*-h3uo_Ti1V--(m z&EIYXx}y2$x+A%keWIlCu6J^U3kvz#gC*kGKBV69))E_m`uOY9>F(V~j2Ll*WPO1~ z07%LPty*ZSFzRNI*oCLbfFZHV3VwN;P}mDL&EQxI&pq6%hTF;tFKUkr3UfB2)25Co zaDmRyflPSS`y+#Y!WJkKT7fz?RMl_6DYaz1Br0<%d#}r?s*2v8Y_sI_G|s6CY@7F< zUff8nHFdw(9Mm-<quG|0CNV*h6-aPfQ^y22~X#PdmwPh`i1(hy`q8rnJU zUENT04aUQajn&I-bw9%paA&>Wa)zx-IM6|EIHfPK@dff4JUWMyj9%>ibh249V?9Lv zF}gg+uEj(GOXX_i<8;uj4oZ^mw&+wkT@FfH$%x4la4m##ahtPMGFMpJIJG(`uAU=T z3*@NNk7L3?);!ZW89G%X6Qx~jZx14>E)#o5Z*xQ(1=V>6Ws$0bmhJkJNKZ6+GVw(^ zwy4&gK(1!@Y(i*n1ATQ`=qFn^A{LP#x+l+*S7Ph1tG9_XSgG!2kC{MdM)7X!nZHpw zYXOL|OP$U>DEksfT z&~yW0UdC$;bS$TkeMCc|$XN6?7gj)*h;Z!IO&mLpvs+#KIl(@12r0&xNsUU0+SP=c zl`^4Tl?%Q?(8Fubd@^}94BUD9^cM{y`1ecc=2Dukjo-IYzT%)G!hwx|AxDDZF`GdF zOpL4**cKg1zI0>N%GJs8bTlsqg$Pwb{hp#HXe8}pQ}jd*bAWyj%;nM(P6gt=0VVfw zwPKH(Mz;vB=FD? ziWet1`J2Rpd8mboU3{2FiJPi%WBx$9F-Oi7Dfq!hQik}du5QnpH#iiV3&H6Zs=8|W!n~d&0c*)N zvO-7}gGU58NKS`}wyIF+tbU@h&01F#D&cf$=G2cw)6yxA7*aWcK4_TH-SG&(?&4O> zi(1ZH80};PN1^BBT?Sq~L$jmc)r4SegNsu5Qi6ztuOPHe|MunQQAqJ+5Q}iSABqz3 zGw$6}3&toVu1UPyUkEh{6l;d0UnAEWf z(T)75ty@@HD{xg~#E-St6ek)na;#8sqCQSy!JO9w3%|mj$ZRWcZDYg|>fEJ)U>9?=CG&eetoe7ceQX5awaljYzUTY68VjK8OtAC``#2=)|65Zr*(_|M@ zE}e`VgK21STld$g0SLLS3FVnY2mDqF6vAlag_2kV+FHltIXU#*cb8}#t*PU^wNnWn z>}1>fQ?`NaA;~#AqfTDN-Z(^oIxLp)4pf4!OG%s&MD4MOlV#+#`^h|$D@oSh zg{P}5q#LJTQ!LHuOomSzfv9ibw+~ny3UA_jHnTH?Y8I#kc?vi_FB0%!8`t)J6cQsBfIO#-r z_ohT&Wt5#tSz_eVPbQXYul`oO8w?efW{P#wnS6wdq1!&dWDAdu+0e+AVzA}I|JloE zFD?F`dl~H$9t)}tEA4t2jXuoFs6l%f-N{!%@v*&LMiF>ZJdBF3NO{AQi@(d)(;h}2 zTrQG5u15Q~z+Xn*)>ya>se>Cdr9I5EsDol(^nw}uZ@gggw=%WHv*-azWq83fimI}xcX*u-#~NFRgQJxF%Qr}V++M&_lJWWcpv6qqa+;|n{w z!_1B4B*ZBg-nd0*Rc)~QW$-g|qvh}n8#h~l#TCAo9U-|HW)d5=0vlo-cO1EZ*Km!~ z?o7@L#ph<1y=+g;b8-V~7nWI5(ZK1fK=8I8X%aF?Qm@uU3cI=R`^9FN8!D-$?&Zo;te(h0@kMIDjLYh!y3k-vzY$Y&vV;PL!zb%CuWB_i`- zwdQZD4Qz~HilYP=3qd+mf(OOPgkF}EiZF#tg*-KIDkwbk0-&6$<8@?EXUm{m@2U*H zagn#D!4{H|*PdhIm;v&OrhX3*7jFd|l2GG^oev|8(73p@MjK$B8m0{}{U4NlS5!{f zlmTWG*GDtJgyE<$z}$=hCQ>p5_P9~KeyQ_Do@026-wUic*<9TzNW+?1>xD(cF~eUs^_AKYU3INk+l6M{TtC&) zG_!t0mk`YQTR;&yi7zhn zti4zjcOQc9pVYKQm`yeIzqyM&EYw-#vMyZ(^hO}WLv8X*lY9GV_8ix!T{ma~NK>K> zOWT~xnHoPLP{^_e5ufCRA-4xwHd2m=O7F^0;+~Ur>o9XEeX5`hG}Ch2Pu!DS;dZy3 z`950C5@U-9EmJyVa92w$lSyW>*!6{3vFrU=9ib9B+RS|^*Nt4upqo@#sopkAgiu>{ zO#j4wp-0^jld;Kvv0rGx(~A9Kr`+!McwU!T!?CN-DLCQVI0-a?k%ZgysEL0ND5x$* zsn=xL3~4Mo4;P-_d`^EN@cH5y*`-b@R$+)1ibR`9B zebjEtR5MYAfwP1PHpqG!rIqmihppvC9npJ)we+8;*Ya+i?=xd9H7^|Z{N^rq6#+q{ zwZS;g6t+~o`YPhPM?LZt>dJ-^+IG0k-uLFAT|T`GdG=5lde#ij7QgQOviNnvq5Es?51OqNzHL|hDaEDqkKMM!fj@Kud1@S2VKMi3&nm@QdEJ?I>shfWz^Q0{2 zNsU3Oexh*_hG9L&Sc$VEm*aIv2PYKSzYQ0>^rU&cHtf3fi^sLyFY7TvE>eG zpcxZT;}IsGHPJMUvmL;@;)EoDbhI-7?lV>Am~*HkDdFckBBuO zGBj&eiTcyS$)xM(XE{q{HiQe0c(R$Fe%UQ%Vjx6Eu=_O#sDp?PR_xpF*}2nY7KS(l z?>50KR9q-apwl#Y)$m`Lo2r>XA=3DeD|t}u5@{=NU2(J^ppSSbzJfshSyJe;1cg|_ z0an#24Ngt&R16X`6^uy3YDI@t;~|iv7QiSxSf8%S0&u<`p=~-vns|G|szdj?)WaY0 zFs``*nUtU)2up>eMdP#3moad0U~I0$R_uz7-0yk+&SDG#A zQjh&v3yNb<<1)}<-|t-z;| z0{2XgcIio(b9-ZaT=F->{GpT5p5r>2X+k67*_+I(TX+h4v)@mgq5|RRd)7gF>rhJ>*FF zt1<6#cv5vE_O?hK8*?)mNK-QtEoDd~#jHcpV^qldGODWy^wp!%4*#5Y0zieAJs&d3 z2~VS8;eT^mXR=}XI_rwu&#~m#7+7DNB#a{KFm^ArY$vL@y7;Z6zL}225&g;nbo(n7 z?T#K3ThNfTU}&v#G1w?NM#u3@ELOAWka?Ei=!S>Hnqw@zu{Jv6T6(+GFZUQrZ=eOw43nE&X*67Emd>Kw+grXSCQeY z*n(+Uk?E)%r&YX|$j7WHc_lE7XjU)!L88!)VpwZDIelg^r;ql`|_;L18sa%SLzlQ*#oUrJwPM>Azbh2QR6>{!j$c?aJBJ^baZY< z?h7w~GdPdjt*Ne~H-_Ftj_Jq}iI4NuQ@m#MMDm>YRoTCVi!b`@A(3ggck(69%)SPA z{Fd+@MnI3XF(o)VAIe_fXVZ9V;uEPgj)#&@A8Mjkx>l@hDue+9#9V7QjyG}DLqwX; z1yR3_#T3 z%t3KeZDv=41F}!2@tuI>7FOLX=(A zDEStAAdr~S+zE5S&@-IZXeHEOho;yq%q|nyUM^*$C{!IhveuHTE1Py_GD`r$R&HssK5C(Kk&3G0<>&WzkG_h zbe`EsVZI5AzK1K+uGM~##RV}pDN7JDWD%ZttNI`*u(2fx7nM$D$eU+6U`iue> z;l4oPP&I)5!lg-vE$J|dyh=;XG=wN_o-mUWFB_ef6UJ@x5(8G`3;KcZ`_ z1ShwNJ|ctHVbN(?ra-;^6ZzD4LE}A6bz|(nfaq7WRKVuE;HzxJ35|Mx#tsgMzGn94 zqypKWQZ({@q6-~);NQ_&`Z2jN+7>&I7agLRxGiuy!s@)fQ&@(U2}Y$BHwwL~6C&eN zG7eJ>Bt>w~?*2X~RI^pOHR;Qi?(gu-X*HnxNOm+|?9N+N8BgU(BRAn>{^6``t)8;D zZEhJI*Z$F1SM;JJboS~>b$>nsjon`Ajeu6V)T_T0;E^o@1Wl89p3Ynmz~bPLBe95= zB#OWTp_V<&Zd-VeJ|HtRCE^V&Zjbzn+*V|`5*ex#Wxd!@lHy#lP5m5B4oCTv-tLR@ zPI~&JVZTiTm8*{|k!l*^cvx zFT8`By!h=o@oJAR{Bk(ZIeS=O+w9`nsqOf11;qdqA8IkruM>*zTUzc;X zcBCxU_L+9+fif0^oE*uVkQ?!Y>>Tv?bjG_FZxFtUGXr@|&Fkpvx<=x)!}taGi&s{c zGGg`f9$;BKL5UBL0Tt%>1``o8zR)+=D%|TU9OK{X8ysYUILXQQo@zg<$%XYuSY&DT z%jv=89MA=z?;?g(=@?c?pd!cvtf^%tSAG-An4Ek4;bh?zj-c1I^0Z!eyVl`n=yeaP z|HRSidrkfJ|4{$dqt)-s)!+a2;q}q;tdZ&Je(Zxo+9nFW?F{yzEg78SE3}xb@iJL5 zPwmXt7(dEo<^=@W9{Xg#Y*=9|N}HU#rOb%64q_mrTvQ{PFrR%MJ1Aas&x1zE>Q@Kp zhSoV}_^?ffIbYh#oKGhWD3PcV7GoB27usq;;r61EmGsoI`w`c)von`2vYrM1)K_{* zJ#TQWSCvqX`oO?jLrV4mew5$pN!Qs3E<5Eme2ma7JI> z{)y>psj8>1A?I((Ln-#wNRY@I@_jS7p!&0^aGX21pc+PnuwC*@ZE{1R1r4-g<-rvN zHbq8OHFzWbfaRTelFUn^`lhKGaI0eD%VBx2?BWHNwL(0uryto(%%w9k;^rfPgoZEX1@s|PvA zSJN3<)~+$BI)DZm)ZoHuc5IF}D>6uMAlbVGQnlNwI+m}ef%U)7(Eu>^$0=Z~%chOh zUb?QZ>h%`yV{j|uX=uEri8mILJC`E3|yD}7H*>Gblxuzim=7Z0Nhy(n4q`*Z1~>=vATFN8CYGNN>vLy^?={X-#6gO#lp!o0p4E-eEZ#TOFH5+VYL zerb6DPQ=r?o@J`QkSRJg+^K5o;-PGNTpg_I;ylRJ`Yp&`>n0K$I z-<=`vdhMGbh6*jT`2OTd#}?j0t-y9h_7~23(5z+eSSTyyq1g?^&X1)mY}VJMH1eiB zuF{bIa;bJ*_jsPa@PhBkjW_zvZojQxG|yMsz7BcgM&CK@aVy6+uKh;eEgX^jFFa|9 z>Rl6*35|zvcGz7<_6`0WsI!a1q5z5q{k3vx+}rpRl1jABwzJsfb@l^8`LXXF#^1e` z?<`(C;OCmH!c{3(Vf%q{em1m>=5Kb`ZYks!g45#VHzl*k&S~(SIbAug_|BZOGxp{s zVc(g-PT9F+I_HyRYw77)>8X{wi_4u{?%wOWc4yV(p^;;8cPXs12i4gVy!Paw+!a$L zw&xOyv|d(jXSgafG%|#ZOrZhnaL&OCQL46>nF&`-D2#f1rP~vOX|`Gj_YnCEZEtht z7Q*!M@?b)qS5ctDeRp85@9Iy&zS0i)e~RZ1F@A?dGQ)xJ_#O<(D}lJdPF-&JjND2znsZUD_E1$}2mWP9%Noyl2TY7YXl>QCdySH98% zq9XTQxla$Tf{t|3kBxlvL#{PksNL6O^XY3D@3n{IYvp>(G$oq^nMZtSS_B3-?6}@; zDdq|adR88>?jT|4g!(LV(54Z|@y*AI}2`D)8v3{gPN5=>7bBSL%G_*?K z5?F9@0{T;t(*ycLk>O5D312B2LwL=3vuJz#XZ(AYeZ=3$S@Li}n!DShKOqlXC@H?+Kt7VXI zU5+hKEdX4Ta?EZKj2d$8{)haOaTc_1+}colXjV=&_!09M!=Vsi_kQSN)uSEw1UYV7b>_Wqt`_I4*-?&%8fpsA%{hCp1l0IOoZ_y%} zV{b3s81mI@z~?kNE4h`m#iB4&3Pf(|^YSXELl$SM_?CI9=AAnfPUMDj(Rjs5&gIVy z=X$gFQ=DbMLA{Zd)`Q7*Rto6+Fgvt&jeh|M7g(cq0#!w#= z8KgnL#?N%(;F#L)U(`{+eaiHqryw?8IN4pOhvl4}e28aKFSEJ}f!(=BkP4VQKlhnY zT;)C~*aafc6!?5*e&FCtuk(Cahx2)Ej}sF_ggRwLQ!JT1^BXAdW?lgWz6|+Ja95b@ zAz|B*=4{=RZJJst3+JqmbqhPqN*0Ob+wL2;DHPB1iUjA2&4#~qVlo}wH_PRda!Gq+ zRI0O|lzurKAQ$@{=>q67Y(FXA5e(UhP#}m>_Vbd9WM5y~8T%xA_8|L7**x7ivt&6N z^xBvM5ps7_&Cob*1^|9uojt>A&tT`wD8`U0HC$9@R+7^nQrPZRil19&-|Aw!TZ^5T zY!>hbNG2ya29$QyMmQ~SaSl($d$}0z4OiV-82P3Z*dDn?1o-tV^P)BbTzt=fdzW*M zd{|uqCu*JnXS5a*lrDqo@s)0&$xg0EZ47iqk5O}o)ZxhndD7`@m)yx+>L%TIq-wM6=N|b0-}_NJe}34OyM3vCC52~D80`uEp?z&NqKL|bFyVa)eOJDSzx=#1u=W7{ zUFsElmK5wJ^DY=p(5}XCAoA_pZ}XL|1qr-$vq1uX;dgc}&G6Xp66i&bsN3YsA`_7S zkGX;TD8k3SXW8Ed%Y};3Zv|EHK2bN?w@kAieFSK->_@dG)qZrRx!c2!{ixD^(Md=F z$*V^ATw(ljw$oPi?1yrOfP_E9FGtqgs{WuKh=dTo9LadAdQd-T(+{xLZdHzcuwFla z_1da#(+@iJ1GuQI>f1bEcQDOMmw5SJ%d_%Qq=M-2$)XWw2qW65W)A~7KHF(8mzTr` z!qTB1fK};IS0{wy67B4g-}6!x;veMfw3i58bC$R9H|*RiohG$oGIw3Yi~Bzcbk01+ zULvpTp9$}hD8ySJl)IL9AKFXg35OQQ4=0zxzVGh|JDuQxQ%s$(z2tAabC$@!iEhYk zr`Y}v6W@>zgmT;DPHLFaTG>(78S*_w$xZfhsTwY8562rgyn2&7HVsw0$VuUYVr_?L zFSLJeqM)o@w@u5mX)h6UfGMk3&ASd=PvxUBSCMm9S9%%pt(;{e>~y0jC66P$80YCY z_sVR@-2Dz?w?v9yJQ+Jp4aSk0zAa~hS=(FuM>$*N2mJ(w#+Ft+Dg|c^aW>;wQEHD` zN^T+jXvTZ4RlG@Xsy@BWaNWz$KPA1k0lL%dmSK@+X{tUl_?-W1^EI1$b@W8Rsb zp!i@|?g0|A|C=x|k=Wf8f+qQ$v0+quZS_u_m#DVz_F~a0qS2m(5_nca;tV`Exf& z4LWx{S7RF80$etvF7<~l#wGw`egf);piqIRC13&PVlQIhBHz`iYb!hK{=U*g_=X_BVJ_ z&!kPML(JzO-hq`9obV)_;Y`)2-*M4k3NaS&u(=^QXyYWCs@2Kxrb0Q2 zwKn!{b`-S};S%!wIiR(zYVp4WTu5XmK#_booc(8wt^uT9u#kF+rwKev7e;4}%yT*= zyqvSzPVOYmb#a36N7`$?1O#!gLj{#RxrB-!)G?;}#NAquxWEU7H>RPHb?8zH^b5>QY#9No1{rQ6!wr%-HC|Mf z7K>{MrRTwkv6Sd*eW1nLFT)l7)Y-ACHIiEpaz2pb9NPc8Uv2I!{&3Z|ytA(5aHYyg z@lkJ$cOr__-X~rVvlSWX=P6*LSaOqFHr0tU#>Syk8!Q2m4`WTM2$CqcVM{JQo}cm~7Mm_r_Nff#fUN3QB%rCTYPLT@ zWN^_P;&_Taqf)KFBY_9kx0r>iR1!h?LT&t7HtT~W&5S`B5}UvZ=lj9b;yAO(fGL|r zPj(|t9~^YYs3a{l&~jiy@Ky}2oD3Py+gFESn|+9luMhHZG29s0tYZHgBm0vJ7xB1H z8yY9rQ`%*-a;O;{8M#;Qz7CnF>9PT3?=`rN6Gz3voZxK$U+4BwZ8(Q8|7KlqKj8eK zu+xQ~AU-(s;I*SNgYkIQi=Hbl#QS4SapC^W582S+DEyB*;(6Vk$s%EmG z<`=e!=7-HtUMUnZKb$@9(1qb_o#aNYE2Ec4?|34TOKt8;;q2Q+HP1UV1~+syIA5aC zxfYKnc6l`o)s+%}` zBX&y4A1>`Jm9asL^la2{&Sk(7NImybKZ->wJ{qJx1Ep(t--V&v@V?Q}fOt@Zv&WZ& zI`a1Mk*sjGEvS(3BlDz`iB^-YJyaUYtIeI_EvE{n`%MU{58gY(86I`}0GmmT#2qxC zylvo`f8!u}A)&1MiX}{L2w`%K>8#BSwYEH$CRU+Mge~&?ut`{`{%e}__qV!Jr0F}7 zEyG5r?S2?90?{{q5jTJrQgH!$4Ew!DvgZ@Ga@j(?Bu@ySH8q3oRVVA9TkH~) z-Fi%1L#BmW2pPgxM@;i!W11iouX(|(Sjdy{6eSb;komYll6MOq>uhnwcJOAOU<{mv z(z;aE|DZYz!7l^FPS&-V9F4?`?vXkvJ6))_Vz;wYh?ja|Fcm?D{T|7+d|`H`SOo=g z(s~wyN{Jau<@*)4FftB<>c~bQN?H?$s@4n@hGZ=Iel53zoTo(Cspoiijh?_JU1|+% zF8rPIk{~Cjn4n(KR3E2Fgf`W>U52&=MOh(y6ES~B@@cT#FjEZrA6ix8{m1|U73zC9 zmIyux8azMPAQM6IvA5GmK7wZXch&9c`e z+{J_5Bwhp`yL#3w0%>6s*K0>k8*y;dBD8%pT-C+Qyadu|%TCh=xw0 z>>Xr34v6zTrgFRS5UnKNOo_AkC=CAX2T^(Qg$52qruhaw&d-Hm=k2ib8it9r;ia6c zB1h|mYXbkAF`$P0fQ#P-dxQhO7Ao(Hy}}KrY6?QF%bn#9RW0z(9?0Jk-;&3qoU^Fp z5eh=4X?S!^V5i&2a;X=X==H@GaYa}vxJsLxVi#`8^)3FGI(#g8GC}OgaA0Sof4J&~ zlG11aK43C^-r%y1goi`2AJ6W{+a#h+C^@zysWZXJnHR^_JMY(t#2^8oB|2q@C|s6M z(9z;<*m<^%8&{ChkI)1rw}SLHjSjmq6Cb*aO*^{IxuK*X%+-a4l`EHR@Z@gU1}5*d z-Upo_2TthuT04JzDAtjT?g!PL;ESg~!3n21F-?12PGEU-TJZ;;T~Sw8+_2^EOq^E_HyJdKRA3 zH}*tN)bl`bJr(lA8~S6mURX&!%>0b*z5%W)WH0cCoj>X2f}!i~$1}Ps0E9vpmof$m zHd9yPR4?|S2Ibjy2+{p7C89WpH0Vx8N1Kj(g&~u3`|n8ZQl|oSW3BL)@%-JcXc|h^ zxa*b3lfslV!hw4K-|~S2I)doIl9e>hj&4e`j5zLT{rDGo2krKo$vq@->iM7W52KFD z;2%=D>BDiRFc8bSHNx1X`G-vA!I^SM4y?Arhbqym047-Fa$ic08I{yX1dbsD#~{o? zwt59mVc{4?9>y{BOU4BI$g6?L*jrpC!-r@Jz!1_=Dafr4I{ktyU^odBWKOqB8t&C$ z*ut>-7X648V|#K*4X9_uioJaZ?%vN)0)>!pQj0)An&(WR6YwT)e{RKR zdkx$}rn=NKBAFP>zmV?02gEwGzuQ2mtb<=DzE!=9`@5-DD%BRHtFfzazJsgXtP&_N zb@c6FgM?g&u`#Hz_7$NosspBrwqy?DgkQ`aQx^z!~W4()y?zvvpOCX0!phlg!czw<*$KV*RI4}Y9F%B3fSlU z!f;DwAy@-0CQk_PNKy$kHR@DCaN11b#>jcibD6|Z8$#2GD@TRiD+x1yTh;9_%OMS_ z##dU{lUiqe{o=Qxe~^i~2T2(&B7+?_qVUz%NtpEuNn4Z#9Nb>#h@N2#>=kSa*WAlB z&$Mzv(y|owWyCDoyy2YYD|6V7#O~&39;`d?g66ft%hno?^5X92Ct>7-e-Oec3()dz zGoS5Mg=tT9kMk>}oC|^7?=+WLfpJdk%S-Bd{Z*h*0m8gCQNoRBp4SFo9cMUidnXOR zO_z?@5a#i^WQ#mVjxqOmJn=?X8&y;Qist#Eg`LawgxhjfLX=nB6|Rj6_+ zG^Hz?r7O%!SGYr0h@>i1x)shzS2$Hyn2@e;tFBO;s_<2}!l8btG2CA!V>mHgp;1>j zHdWy~x5DOhg}ZcxZeME9m*@(w%e@Tx9Jj)Q=?cf`3aio;&ejzkPgNM@R`_nZ!bQ45 zYq~;_uCOpw;Y_!}1?dXw&yq1*k*@F=IaiWJ6H^sVcPk7?SNNT-Ffv`?O4u>VXM^!4cq59tb5r7EOmX=u8_7G0q{U15o?P@1ZcT8B4v;ERBF zR98qAqz3&hU17i6XRh=gb%h5@8e}8cp8Ke!(R!=rK`y}`NZFP^c^JgAs zH+LY@951@|*3?eDVK+N9S@f&k@_mlKt2O1%cFPCVXj4AgTfQl?{S!?2L(@(B6MwK|6)r2mnpqcJz`3C4|2y^-=xV_FKRP&Uh$1#Bh;0o`+4HJ53#Vt5%pg+XtlPz<*esnWj#osUvUI z)lx_3VavNq`7XNGctI8p#hlCPg=7{*n0|I#{poBoII;P>e*H2*eG}-Jp<&(nzFO{O z&$iNx(6B=iauP3ilD9PQ*+@Yp$E7Q+*OiV*Rl38iwDEs2_b%{JRoCKw0trL}Co0jP zR7VqST4+rTw!x^KArm+w6Npt5MQbcR@YVx5 zNi^~ji=elPkJcSWYqTw|TIcs&YoB=}1lxN*_x|tSk7UkspS{;!d+qgJ@=~IB3r~9s z{51|);LXn{j2+^j-k3v$r0L7BzpJ{>PT4rAO^wYHDOHq}SI;!ter>yRGUlEhU zA$d}EBVUGFL%`-Qa>#(&U(Vf@q*XuRbFg&cDcMio-1{oM$&QcwH>U}nd2mk_*9>?TY%ehP^m}#?eW*2DU>lUMn2%O1l$XAwFKt!j4xSUNk}9>y zZjn_`CAH>~#YuK90`Q1%OVl@AocK1{&u=@TPy2(18v&6!os5ZUKz?dlW;A~COGgiv zwY3|6l=)vwr#rU~NfbZBwN=g1k6%6mXwWd#id}|Y)bri%+wVHbYf9ZIrO&9LTFU=X z#q(pa)5q7AI`Iz+N$8g>?zGQ#)oaaxK-=|aAO+xUuA*?BW)#2NlEL+hECI>fOKh+N z*eY7|n4=NGmO1gS7f5vW2J?9}I$_=FF{3dsfodE}!ZOcZr1>9LhbB%MAKgEQE*Ti^ z5*Wt495*z}BzQJKzlcG};vY^I9Q&x|C3kvNT}gCwdNrn`@5;q^M-gcq=f9V#c4ogS z>4ZsY=nQ>bx$rjufF#8$o`2Nv0c;6{J z`G!7eVq5ke@G1ImzX4}8BX;2_g_cxnO;l>m(8Bz=`3Nfz_vbYUij5V49f+cFJ*P?_ z`iHJh)5){&?#Mt?j98xq(~NzIz9zr)^G2Zf8V(wsUb!w-aNW_)>>elGX|v6N;_nva zK_u-|?2a8L8Ks{qivPW6{yGT=JJQZDOQy#((x0Hqs@4ANk|l&TPP{N!mp$go+*YrS z97sS6y6ml65fbz4P1H9Udkc7L@pZ5K0TI?p@~YC{)3PLWJ)TNuBgud_ec=id{h~y% zxVh=Of2~d*LC8p^{ijbBa+o5Ou}3^|JXoi+FP6@_yVnNKD6~0j)YJ?a?=e&L1AA>( zy_euWlbPSl`^qV7VG=T&!l^?6wo;y0Rk|!vI0V{G?k%U$4* z_pY(`mfL$W)O6YH-o3Nzy}Ru_zuvpfyH_Xo5>vodra8Ca*gYiPTNM2g0V|ZdI*Xz7 z>UiSEocK9t^xER%%3(*`&gGeb}Wx^hiA~& z$^5I!BcB}xPevdg3pBw-$oXm00$|0DS z8nx<1K9Mdfl&*H<0VW^6&h~rl?VsP?dpol2y|HFsdk@jwe>Nm22-TZBOPk*V$@8 z5WHmK@6QyjvsxWRlEsV1fQ&F0%^qtWGIju_U&5FUVF43!@s$&NYd%G+S;1**YSvYgm7 zFLJ7Rm!0uPy#Ae_5O|9{JBm z$rB!Ia*pue-lg=Upny%bYXJVmv*XgEdE4uFU1ZCyHk1Kz`k_*efq#u9tckeB@SMJ%m1vB z1_F;#zs~TnIsST;NZ#reCQ}QU=`od0XQnnQ*k<`QMAm=SMy<55{i%P_#=dNWf&w9z zS?z^ZTHX(L?jWIE(ec6fo}r@1_xdayh5+=KYxHA3=+KdXkA%>i_b^MS$D9Y=OPsIN zia9{Dd|}z>F^4Qjr-=fx+@NWKM!_eMrp%=UIc*g_zLPU(VIpz>h4T=F7 z*%-Uh@g2eq6DSfb2lpU?!4~Srlr$0nYW@z=#VdsRsAG~Rx5m{AjQQ9WJD}!yGvZPq znQ^5AUeOEhd0DIF8H*CJY4|G=CfX87tg6-Z{SikifCoTqNM1)A$wSRt=f~08q%%q^ zTBz`%Pl-i>1jL)J57iLTwMpLU!D$ zFyZ6wOuqo~)h7fCn32TI*0V>Z3^??dj?5jDXwdqCg!&sql8Y;)D};qFl*W?Z(_i!S zEDY%OmXo}vk6YH$-pn|h8yls;C+5hUkxyPKEvYX(ZX^UOmW13+As+EJkKDYSB;$ce z`xV^;;lhJ9H1USf(V~Xrlp*G}cIo zE-6IR9s!I=Hn^NKgj$LG9Jw`2?lCAzQZ9zwwS5uaLnm#Me!DhgqhIgOd)xy)MfesS zlqte@Sja8DlC#j_)zJfN4Za}ex}p;K+TE2hrQl>!#yn^1)DZDZn(72;suR~+zo!7m zOiy~t-knvyfr21 zf_M2KYiJvS@EvqV-m_#w^v^q4VvQwzN1b%1@>Md4!cNRbSoa!uX|Cid$SRhZTFDV2)Woe94pwU7TpruI)Wquq9GRaI zx9*ji_%cuJyVQi>l7*oXT#;l0tY#;9o8831pw@n7%XehWG_<(i7s3gP1gGwpkO&)G zg-NPi_>^pGs-JA&6?mxdSh)vQTKYt6Ew0=#vocdU7xwyO3OFT~i> zvUT9qTWaq5A=?=XQd6%++-?xG=7oy&HJkJRL4;!o!w>jHPOA#K!Lj_}9Tuz-@k#wq zkmt-dPvN7(`E2f^&!{Ms`DkpJ1wbu3j9q}$cInTNrC;%gxAbwIWZ`Z#2kC{ReR6a9 zOfCYx_%G!`f$PPe&{lTmeDil+3+=4Lr1#Qq zi|?#6jGCNby?N$Hi5i4b+AxPuy$qs{$74r8+>&Ra&e>pIhxp>}4F>LKhTt9q_xW`T zJ-@*J=MM|?JlV=^wP1%_i4v#BEYZ6^)ULQo<)(1Fx>?Fr>4m@uECA2%>J^MzE$QO9=M_1X0_c79~!Dv#xyz!=httz zcUrc}ikk$0G`5&0HRE$~IlU9Jfjb(z+n&N00)}2A`;%p`Qllj$o6r5B5*T^&PnsoI z4In6D18t89H4xx8h1wpwQ;q?rvQUHQf!r}Q>G+x>*%o0!SpT!pR$ome)6+^K?ucZ4 zI-D$86sddRx?;)~Tyw0uCcgcXco#)VuihO>28L4RgL?F=blJ?p+%rdk33Y$JW-Lmp z&NqjQdqY^o$tCeh2zD||jscQlz_kpJztx}JQSG3_#u=m$@Lm$B&SiTf9p6^^C#fh{ zbEO$;q!~69MZ~JYQb^@AfBfRgf_*qcU-2RzCq^_fd$K=QO}gbV!dJQ`R|B7duE`VZ zPp$nqNq!PU_9Uk@Y2vjTgDZtgVV=;C_$L}TgL&^`6<#p_Xd&~VKVNI7M{*|}QZ})!Nz3#L0437@_ z27Zw{qUY3nF!9Q!1;=X<^I?tdNy8fP_+);dv*ps)@8sS^$iiVdP8stno91uIl&pT> z=X9qW&|-ox%Q>NNrW7;!71XC$pcfd#zR`Of4+{Mdx|y*D2<m@a9(bgn zz~;~Q{S2V8Va%1RNFdfhj--8zB&x#*Mj_I2q=xY($Ik32m(@*~gCSBB?vk2yba$xm z%FCSA(@Ug8bL^KJ%29z?%#M#jL_(7rvQ25!?E7J7RvyQ&d2 zSK0S_Ss{!9QEjEF#lSasCHibbmG`^Te$Jm)#GLA^bs+^ghz@Vh=(dXUMTHNZwAO&eUEpR(Vdg7mbCjeoxVA z_=-X`0=jV-e+_BHeYZ*=fa|K9@XF>rb+_xZUK4U%JFS~!S~mr4#R)HMr_@XHrj?3E z-n4r6bXtqL-S~3a)me3Bcj@R^TO%3$^SD4iRA>WQ%^khcFW(XbFw&fK$SYlSyL`96 z^GZQ!yX9wflyD>xZ*O_we0ad>PE;8kP_UA%e$IcN>=kS(BnBYxrrTB;5WSbItHZ94 z#jcA2ohU5OXYRoQ^N>p=fcFsI0XN}azGM&Gb!OLTEje;MITagr6m^qxkeCge?QK1| za&tMR*Nk_CJgN&*pN_N^QR0jeA=gH@4kPqwq+)}u2|AS>GF$#LU%<~^>?h!#ASKSS z1-glH$t%#k>aPf_edndq$ti`2q3-@}eNkO^?pufeCiNh?&GsK*@rjQsjJ+w`&aC`eV&M{V zg)~j4SgEDy{q>y;Prvt^`<>)Dw24Wi$KdhEOzetNz=8Pd=_v1{nBO|{V@By2{0~7j zcGz(+_p`^Ylvi$DEsWGw5oLC66-3Em8Md&b3@=X=<@v(JCxSZLZWsfn&ixmh#1M^t zNe{(kssxR_RExD8Rvfi_NAjFqBB8nao27h53YCt5)QPB-aRb?){Y1x4qdn%SyQDXH zABU|b9s65-4*4Ygq$`nnr+5jyR}|mlzp;q4ENe91{?66g8SR1*=}vd`W^#huxFgH}xK>H8&hHd(Z4gOX z>Jd1D04cw{;^V4Cj*?nYg6}Zk=C*k<7c#D7aZv6i$T(8msz*~utZvP0pJ01bra94S zci2|hVYyh&PomY&-?mod0{$MWSDN|jh&9vgTH8986U>}myiiVVlpMGpe8LC@%Yhqu zfEI}Brz(LAD}&Zq|Ho}MhwcOWdcVlN-|$b~zkFZsKZ{m|??3QQ-v83R-d}9rpE2nB zdA3>dbADNdh~#*7DIXjut06Je^c8!x&}2pS9)>Oo+!&aj<}a+RWk6Q)(@@;4S1bqp z_-kvU#mej1Xcx-7u(EYu!xIgppqYa3)UbiF!bORO z9!~jI0}6TB7g_|BOJH{+$p*S))e}OTi8?CK?_fdoE&c^(!G%u?=TYEW@&nF6{auyttO4d$ti*EA$ zyxSMA$$PeGtQ#mFw-Gka@jd30lMO97n%fcgiU3~^yFZpsn0J{6(rQLWblohN&;P_@ z-zpyq&pvHzcy<`pAXq+>oFz9<8zorfR6wRCbQ6sjOa#YL5QidRP-_!dWQ<4&5}Nxv9HO=rcL8rZJk zHJwP>0S_N`dia3xL-6769zF~=pMC+@Catw-ucXH3Qw~CGGeW_u!(H{NTL>p+sR0S5 zm|eh02K&^Fafeg!5q2dA=z6nmp{x?myWxEec?9#i&B>}PW3yRr{@p$TYd4tOul7)c z9LIg1PlH$=nR&bbn%9QhYyElL&7_~mx`MlDA9cyjVFke_nYn_6yNj;=oIC0pa$)g{ z(SsUX!qX#_a9bS@7nz=fw4|8%gdonsm0}1faMwhuPzp~zW9S<4wT^VxND-im&u}+K zNs#k0+KfIE#N^UT>S9qI+vj{sgggWN+O-YUkgpllYa7U6?5qM6h2&{cWMjR^xdDx1|a|r-^eJFXO+rQ|NR;E+6j6Mm+(&jraJ@Cv4adk zPPtk6}oJDrtK4kAZ)3#&(?p zzAKi;h4cp+iES@PeCBz*Pb19b?X%S=WOY-s3fn-=thIKLY-xq?#W>B#Bi6`e=Dn_L z`(#n5t2m}ctPZp24VD2L>Di^`y%Tkz#P(aO+hQS09I6{-b;<8&>5)6#F<+l3b1&>J zRQ~)tzDu^|Q=$26)2i;3-E&s&vXKP^o;@E_muEh{K^kD(Y5AS%*yl{GoMq!e6>FQR za)ZA)H$)jn`kafZ3mT43r_1WL7Gm^PBA>h#KeF{^w~$mwxP>dUsK@-<-3r%$!gZON zKod7qC(mMib(=9iOCz(ye5RZ-F7aK%V#R^>H(rw|uAaAVowzTQ%_p zk~OLjFk`D}8HK8yK=>KmMvz$^-Nts@zBP5M*~kG*AwvCnvzQgpezPD6P2k|M-h2}X zGx)`?`4%?-Yl(6#HsSU5(+|LFrH+DKd}+>YPd&Z_g) zL7rYyWGW}VO4cp!eH6XKNnT2`>r5*REPPtZ9C7^~xgR~;ajyqGHkhf(9rut1DgG;c zlVU`C^AqjdG!SWX=7wpWCH-1wYPCP>OcA~Cm~>@EavZ;97rNJ5m?etxXYwQtxhCqlo4BmZNUMNBW~}m3o&B-AUqqrkvYH3m z8ttvmT>!y+N?LTEkxqu)^8*CP(53ZeOs-4VKj;!ruB~xXv zt)U?GYv~cj9`oSYVA6@fwMCVMsq+VE{fRrW1LnJXwN9J`JwLix?)0UOh`6!76r!z; zmXvoQ?QsJivS3?LrC3eKwL@CCS=AI2uce@PAWT7V!mNYm1<#c|IUhG)MZPezz;wr5 zDh!ah{xvz4h-fokRbGfI8LqSUcpiLF^VH+ZG&bTc61gHwSUf1FMv{bFi1LaJP_ppscFhhr496!HHPNqHJmH3 zqi9f9GF@0SsrxQ=kLDMcao(2#o_HsjE^zVPfFVqaXcV?hHB zXyMr}5%*srjHz@1ozT=oWF2z3y{3}8DB}ymi2{ZdOayR~SRGDxHYNk5k-GKspT>=9 zAtMcrTN|0(p&ISvNO3zLBiB0et{v3h{ z4zhT~daE$tvxx)Q@=K^s9*%D)bY`>dR3Ifx!JF))jW`?>CZ?eN=`nZPNV8ki)ys@< z@d$DejGnE{AS;w~R`18{VuWx{I|J_&Ru=ec_tb@}bRU6>j1hjLJb}lHMMLpbx>a2Z z+4q=*Fneuhv%5@W33D7c9{;&MVy&~k(p^H_lY7jmyRsBcc5!dLcsymsg5j5-4%J9d z*W+5WsjrElbB?B;Xv1s?8RKV;`CyNrqN(MQD08L<+U^kX+DSN&mPPk*=<#l8cq8b{ zrkF@CKHU&zz%} z)XW2@FZCJ8hfxDP3gQF=@!Md|2M%G`E2`yp7)y~c^_cOzBhO%6Bt$0lIeSZibD-Q> zDN7{mzO1*U*N4+oK{U4bXWiN*D^t+$ASFNthI||u9&RT0%-YS@H#ne`*@tO zs@8}{E;yFEEamH~)-IB5w-C1|JzyOzl3jKUI-JC9GMTNxX3#1}hpV%=ygPcj$Gobi zmNK_6v>qq>;AY{JVqZwX#0%k604?}#7C_dX0%L!~%gR!1TdVq=0vWc)v*y!&%aeZd z8gk@`CPJY7W2RO-P?UTs@$5Z?`ab&(O0H7FA*oZM4=I%R?e(D@#7 z9SwWyMCs3EP$LZDbH%{pC7{gU97H|mj|N`M3l!ilp(c>sHm=)UBx3=z$1ni(hxtT8 z#?&81fqyoFv)gJPioFkQ4>;}$C1;ZnMZY9!bc9^ZH3_VRveZf^Us@`i)VMn_<8LuP zonZ%rd-Re4)G%=+ZEC(CNnxu3A?bPqfAjpE0})q!l_{g3sHFZ5+<_np zvg#0wOWkGF9Fe}R#aujB$&KF8)udpo)*cGE>C%?~asgJvgXLvY!z(L!zo2z;b84E% zT<8;+TA2jJrH^m*CP8%t?ZpSZJFMWu)mIH?8Zo)(b>!apq8P{@~)4WE*2>blc-CJR?4j%|=FN&uE$p>VZ=eENAkViXaj>%gJ*X;~bGZgs0eqavkTGMk>C0+rTjl#tVD^ z9%P5>C!Kp~dvrdeLe7AEfQ*X*322fGfe$KxN^#_?r2fNNhEJJ?gX%W;mORe!GqRoZ zuHeuA=!m{`C<}+$0DDbRW73zzzXT*-O91xX)j1|#1*n-KPq?>ao-jVU>@p3+^3cDWf)3aF4&r7Jt)4czD2fg z)&twO?%u7_*t`!2yAoE1{};C%_j~#^eN1-n6LLHFdh=s;1joIlav{(&9aXZ83o@3< z+ZXY+n6jC?)M0r%LnGG-T-Obpdtf(ZJQ>Ig{8wdcqFd1Q=7|hhc^0~1_086SKqb1l zk>or`$46m!ZHY&I&8gUCe)I)es@v*YypyJa;us$CbzTdXwxBkc#^di|MweYPPs8^q z;c72?`|V)`t5AFuoVe-ga<^ly+t>nz)ioK#6vJM(Tl#%w zwYL@;SGbePMZeln)1AmWnN*%=Sb_DL1<l*G2bueUD{P-mgX_6-wwMmP=umV{@6W9FC+!&A>Nn+xFaDs&mSRK>I`TB}xD|?xiej zt9O_{H$&~~MeksR{O3gHfLJeThbWTt1{22NFBpGD`d1KTQE3N76wmA6CiF+a_`Ui} zPF2z*#?hIwB{#FUH2<6ghh}*en|U~rX!ctf!|F@OCfjiQJLd6AWo5H^`m3+wZJDJr z>b~tc*5wY4_hMZRhK&nby>*6lIhX?N9_#W;gr45Xj4Esya8b*sPA2Sr6S!T+)UG$9 z`JAVh*^luLP=fdtQzFsR%Me9FOY6-L?f0}=km5m=F{s|V%e+sB4i0R-#kcX8u9I8U zydQ<|y`tyeoeu4eczwz5!fmbDE(puouM51)G#w|ZnAj>(rPqq;Wr8Er`G!7mn7dfU zn~`2#F+u1?YDVV4{do|_(G)3oRRqcZ>fyPs%Eb5kDxW++`+UkVG_T<&(aR0;}@L4 zCIlyb!AucOoUY&;BAE-if>Pp#pSk=cIx8IQ3bx20p@h-nNTRoCS7`qZemi#!$s81A z4oWfyrE-w&AdaF*bsu3w`>y9y_d$|DUjRRkZu5hmi7#Az&KC|-h52ccDld&=O!4)M zPM8W&(d_St8=RAb2(38rpEOL)SMu3E3FaWhaSe0fI=n?0Amc zsZE=9M@PE#XQVqe?T+n9)U%mf#)`MvqFPpz#4!v1Z+%$<__E?C0G0H7S+nWYQBHUn zbuK6c#XE^L4hW3Y%hW&tustO$70tUL6zg)i=PAMCzY?B|;xJYGblp5&PWVr`W&Vtp zT1x8aObsryms&t@sj!~rcctKbVsfeHwVI^}go>+dmZ#gzxaqMKq{|K#faH8u{dC50 zGqI{j4NyyJ4i)!(bE z@%`-;TM=g0g9Q6n0Zm@;O2nS?I}%+I38T!T?~9&3jUqKR9Dck3U0z|G6`X8c#G z0f=OZamZG`l#VRJ=Hlrq25Ma#VzM$37IclSur1-Z5CpTtyNeB}vm}0$jF9o-etPd1 zx99Y*MO!7ukWL%Vo$!=K0ENK zDcPs6W27XME%W}Da(AxN?IBe2+Qjpl7K|m4n#jAXnUP;G!+8p?yyWF2b>}zD|5GM- zq3`Ovjo@ugyp7;VWQS%?2FN-dA_#yX=%ByZyHXytdgp<%fM562XV@!c$j|h7L!L|m zwT+H@xCC9CfH1X@>*gx`qQ-5Ti}V;_`CNNYZcgVw*jCWMk!t|yaSNmiZ0iD~LE9ap zP1trv+2%@3kv%9kf4?f*ZXbuXT>)!wus*JnM_k)hrykSCmG+?AJjj99$6v@b?W1ca z;yODK(`{@?*d0Giyyh8vQU@Q^Hj-Nf5OegnvDBPz56aD%9B9Mq%v283Yc%kLxkI!* zz;VA>VkU4o8+h`0eNO{V5}COR2rYw**w`H#EYjxqgoBA_&cJ(ux6sJ z_ft$HT1<_&)Nps|gy1;GkK#Y*>kL#5?Tn3XbW4!UcXuQGB%NwA9v_NjQu%@$56?in zN(FxcLblHDZR4vR-;gZ6o$Q)Q`U}ylsgJmLhfnaVHk8z+nu{cHz!87BV2?X;qf^%t zJ2>pN+4D8nI7A39qHwq?1jWo3U1ZXg+vdW5$nn%>bEqt2cdD|mvwDkV;EJ=#@>_pE z1PRX{uur!G;s&pj>DIMvEv0#~!oM14b6UjRp8`NB~8dDt_no`Rd;UNJV|MVT0z-(114ku2u^&&AkWxWYDx23`yj zix6=K#Mo?LFe0Y~)TYip`0YT}o^JEU%Y0?|wTy)jyxw<=)Bhh~zxsQFzJ}3+@Ey&Ang3z8;0kv}x7)ZKFKdF?r?DfPSt228M`)KriN<$ox+C~Jx~n;U zF;ugSldTOE{~1ZlFrk_w=wNrS1{dG+wlhL5Zmij8oqB^co9TA2;$;pJ;{NuE`Q<5g zGUj@qV=!=wv!F=VWGRv;r!)G`Ty7_vt&miT`OAF6YrAHei3c?8Jv)xwEXqzyt3CJFec9up`=`-j(oz#TH$ zV}1l**eL9^wPwJwQ5EhKzmsrRfH$Wm&OOENE)@};q#q?rkU6%G{bwh+oF$*a(&aks zo2fG*A*(O^T{c|R8LKeGDA659xMKN6&##j*hN!S)BNHw_>}Hsv14*Z_&tX^d$4;>F zTlpNjhMHwaVi0;(29hyW3Xul5PN?4Yx}yB8X+4{ zttmirkdYfdfGuefyY}EbEUG2+0K45QtKBIR>WpvkuNh~uvCw^veRq0ww8%B7Kf;7a z@Y)8mKR|`&s=`yusq2iMgR4S)S)RJqeChfXh#{?(o8pE%8bEf8NLW4w;eZjF8k zUOV*%cX~NIm9Mj2SSrc~6WB79&xbV6&8l+hUXN`Kj=RFIyD8I&p}9(m zCHc)0(?rzwEp7y&|3oW}oFb@|ACC^=c|wbf8JS#tXSD8o#`$?J{k^M0r@F^HL@EQq z@w+*7TOZ+XqE%eP1euP#kLan^$Ck;dq}WX+g*mfqU_L7fLwGOR{*0f7`ZP+n0uoud zM>#_E(b&0FGDsZW;l#Hi&YoN154#RATQHod3jFBn%YQ9sC?0b7W=#ZhhB*_jDUFVF z+#d<{3NyY{@NuRm+`}#9<&Cs_g?!v^tH#77hHlj|-jtlpz3$(s-Q~M=p^oMu8HqdX z3|C?h&%Er0iy=vKsI@x3B0u_YanephXCt=8joE)9*3f86Px8mNSvL--mvI7z^Ozgyzp}N-JdXIwKeM)Hkjwv}e zfhid`fkVj{Tq{%b8)a{yvkEgv-*-+B{92p3XRo!ug!nydunr6l7Y4-KO$C<%UX(844h|ua(XXDsupRZ1eLRYPU}OnpR=_iimjT_Fu|k^+`A; z+L|CMe7I1FA}4VpWC*ne&pgI6%RFUoK)@nY#>@L1pXU_dwyAy@gI zp}9~*4~JUC%+lLgml$Agb!L{vh@HSFkykr`t$`VA-=*Qe>K(y+7Mu4l6$NYwq^W)> zfrLIUd6nNCHnhIH&Rjhmq zb@mE*D>=jHn=GxTdCQ%#9PJtrASHJ1m-vt6HKmK*5^Sw0<;1D`3n_}|ZNq)4HEj5W z)f!@kPd2O!`x@5DX5?=oqPn&z@*xeN`;@K@Fg8gCGHo4Zqj!6nMUb^j`Vw@5JfNY;ignc$p&@DfghB=-*p zm*umsfN;5&AjKyx&{6p$OEoUrDQ*huWn{h`e~te z@rPiB@F&U)Dyzf>{epS%6~QxCD31Di!q|oRde)QtZdAtotZ`o>}vJRVM&ru1guEMv_sZTlLHND3eWCQ zCkbNvLb4)tS#sT}>-H_Vg|GC_jn)F}(q-TKm1pNTv$VgF&4afiJXxm#^TxA z$WhN@dmA}|e}$WBJ2GqJDC4Pp8#!`zE?Cs$Z5@IrZo*ReaEW>LOEL$d;v$|y3|{a4 zDaX%v^ChAItnKp>7j~!cBj(>h2Zkzq366bubLZbo=HHB8;x9liUCu`{^J?`_+IGmj z=@$S|P{JBsu*H}qaDk5dgmiIG7C@G2tsv=rm&n$d#{yiZgE==-iXk88UKK5R4kwjI z8Dj21!-jGG*pM5S<$&sNYhPDqRL53Z_;}|O6Ov-yC#@V28XJJ2mM9 z%y-YR=PcwF+4082oBajx=1Trm@o#)VSD+e{D`2A~%I(%Bj#(6@{(b4dW@)io?1A1Q zfdiy7NzON(a{v$$UnMr=nRBJ()fbAALLY`eiXR|~#%6Y%Qq+vz&hvIQhkU;ngv^Ft zd`=BhRD%^0y=ch&snB(tokQ*T!IEzJ9pA0B^tR@MnjL{QxIw*gELZS#*?W%~&ddKh zd(=sUzTolmD<(m+AhItV;V#vEs#R7c=Lfj0vi-165$2JauYRk+b`@T~cnA~50L7f@ zTk=i1Ukk~OjSI)qz8glSpPQ73K3N@3ccsGK3#&%wzd#BG#6Yj{m_O5jLkDzVxLWqW zk&e)azVzB)-CupTh~09@2fkbXLeHGpKoRSR@76!cFwS_S+Cnh5$9Ho5e-wV9N2)Ws zyh1SgE!Rh2P+jMZrTsgE*E)57^WB1>8WJ$IS>0F6 zb!_yI(?gVP7k@57^JE*X>fIo~h%e(y!u&kL87}I+#gFP`K}VY+N2lI$MVcbVazzVy z>VFhs*)%zpE2_vbKjj1XB3;{$z}b7ukmk%ehe3-V>lG~h$1GX;cUNwtn|TFGC6Z3v zVl%v8*1jlQ4C2#k36umMp(lVfVjY`M(m68R*;@=e)5-dxu)0#g z;~hsj#8yd?YHnc39b%>t4eAc#2G<~KN8<%c#!Wgtt;8KYv|{uah)PLf^iU@`iyVMP zGQzOm1eABnv#Lp~vQYoLJQnmTAgqw1f%u53cZv&{(4?n-AT+6U4iguS`?+-UE)MbF ziX`k2&%DJm%e+tJBwF2*RW^~21#~r`8)+3G6{e6_j_Bvnj#UZ2em^ZJb+mSu{gC+e z`PTYci28f(=@WD}?J=hlgcx$`CxpfY{F12m)Wn3&zI6Qr)i89`*D^8mQNnrV(6|3xtm4hdKIulkt$Y7d@bIE>wqx`FVWzYO zcFA2TG?IL?v_@kza4g%Sq}>n&fV=b#>3q@9zWs{OR(=C@s)u#kl_(hJbXhEdSXRUF zujAaQgq8g>oV$W&2EjS_G{TJH&0AH3ZT?S5AX0=38`zHTVX|qfIfYGLME0NrkvJ+t zyU$8io2Gbkw|(hFFlbxmy^Z=_xA`tQ<*EVf@7Xl$Z>ZdZLNu!Wlzg|D+Of06cG z^i#ZA+i^r&#e*60h%)M#VV2sMGRH8;$R62}yxl=`qhjF_;n6p=GpMYCq4TGa{H2Uzw6_ z7MgK%ju(0aKW6p*4O6_OpSoVGty^qBwmykps17UU<0iqXuDm6X$NR_CwVmgLzQhhd z!gxb!Unb%L59Ck%0gp$B0p*iNm{DDYlON?F<;?r7sXX6H@Wb!8;?DJvdnrd*X3(cQ z0xUk+^lN@6PS+tKd9QBU&r9BPb4S{fJHznfkvqAO7n{#v_sIlJ z$A2zUD(tZQFb@*o`kC-tiWOxa@H|)GN$kk?=F;S&a!6W|2iLM1XM8V!}yN zBW-}_2x1n3<8{&7P3FSeXewFO`42oh)Z#p4wv~;fpE;eH`m8m#zuIV?>a#Ph`6 zoGxqR8J6A|=6gtEVOO+JxR=a7jP4O=mo~-3UO9=I1p-1m%2MZWXS>|FR~NS4$rBc+ z$l!`k-P^=Jq{|+|lUnfyqrK&S-iC9m5*O4JZEJ5XU~$U-QZCW>&TKG)BBbiUxT@UsPBx>bU1Bq;%3j&FXC!zMVL5gPx--IDd*JQfv8W{kX+$_r1 zIl^VgzR`648eP2CzGE?GiOf&3?9n|LRQjY@#A7w#oo4Ut@$S`{?Q&0K@GPEr48pux z_p1C6{O(Kzh@>Oh`rBMQM>ofN#dFk4;s;%EbkRD%_uh;5O6EKE6UpMC@5*>2haBqg zQe$3|Psl<|7MB`s!8Ij|C+pFaQlYb!B5LjiA8?lTB##3T8G4*u)4cZXpK#6hYPfP* zC7;5!V7ea85b=eAz!32-O_k5)6Y+uljA#2vi}aNCR%m;LCi>Q=-kuPEs7iCMpE|HP zd8OC)ZjOfZ+k;lgi{>(Yt6SJk2Ob}Ci6`-9vyNr8jA5(e>YzM}yL*)k#EjDhwrT^i zbCQ^2ip^j3l2f5u;>jzRm1ObyKMEvZ%Zo>D$rS^BG?e9pjxw4bpbfRvgIaUkQ3-)F01K!-vV?ML{)>&srV|y(&yI(79QmDJH znt!C_Nzav6=N?_I;+4SoNO)ky36A4OddKfO)R|ohjVwOt{$WV)q|srJ4y0&2R|hN9 zzEQ|}vg|+pl374coaf=%`&HBj_{}g#>q_2@AJfaR>{L~`d`sr5R{~Y-qU>Lu&mQz> znqKcQXZE`f4~NC#D+9@$@$l?1D#9#gkiAmVR+65juXzOe71Fh=avF=P3} zU}??s_Z3Pt({3L5RPbfdN)|$@SaTpqaQjdvF+%nqzJbT9H1$HEFzu&RMTg%vG)f6C zs(0o3h;mH!Hfin?3^VcFBPEw{cl=G5xaUjMx1cKa#wy_k&686k*a<|{Y(?EhEZFMM zEPe#?N_hWn`-bhIyD|To45JsgX$lLAYfagNCqjxKZo6?(t8(IRe-b_0iT{11Bp)Ea zFoIp~<;x3|RWnPkC@gqfx+5Il#q>x$kq9Y5~_IfewC@`GRL`jJ5gU1l(YN@{?csdx%@2VIl(~td>2bYdb6!7SfodZ)BIh* zlCN{TN@Q5Go35`a;GV2Ilj6(@nt<`J#{>E<;LlINVl(4UEky`lsbX-VzTCVtQ@)bv zll^x5g0b@D_yr?r^R!ai6|Wy_gXP3t<@MvLyngu2?0>Z%>Lrr-EPDp9koBBL&zL($ z<}P{Xb{)-T1A(M2qH4If!fLtqKK)HDUEw`(5&&G*1rd7p8J5w2Z+NW$)>*4P!c~oZVd^~5NM8Qz|0avPZ2~>A%Wgu6dr{z zE{BO{7Q*Kow`gTW(W>Ck-9ZW%{D~(%A9imN4l0x0acIBnj-_69$7}e^^SWOJ+fkQf zb~@?bZFkUX@>ECM_WNiD>J@;X$WR(FHTBlRw+`52JaB>ZJ!TosZpPi68+{KE62nPM zlTdYJBF|~0tySDe60MTcIiWCi60HJXyN}9#*}IA6_SvVgnLa&OZ2Kg+z_eIl??dl! z#mSvNB^H`N{9mxQ&n*wMBjt#yX1jbmVU^QegkUXGfo#3`iEfVwiTF^_Aw(_RaY2@B zWdzlUGz|#W2e-0Tf$~PTx6$3MREqRO#M7Azr)aLm}$s~ zS9TYqH>B6ehi21aEwihUv@UK@n=#n^}+$Obc@76C%{s4ksgV+mRlRnuTPxsE4;s@_AMN ze>2B*;uH0d(hB1L7dftfe<$L_NNh6y-5l40!NQ$Lx^Iw)eT-&Xai*t&i7#n$P2&&( z>NvA^l00hftlw4UI$ZU{Z}XQ-)xzt`3!?jj6!l~07p<+w=$K6d?&oz$11>=US7Wbq|~n^MmVFDj@IO0Ae#0T@uhvJg;t)P3e zP$ryZ&$5{%{IdS%z^a17;`bW+dZ6}cAz|Wjd8;&s3JGjC5#4o-&~(u_r!F>c!9dF? zs=b!Jg-bsVT^*7-(_0w_q9NpFEbO(y@THYuxmLy_MJZu~wZ>3DgxEx9ds2aT>ODFIx$%8TPzX(y_5MP^3MC1Feky;zuI{C^AWr(;`8Pd zP&`zs%q4@R;ho!@!x@fK9Z>*B+l`35i6<5Gy*^|9iaHusm zohEern~)OXpW#mx>zAdNE&I)gdtoKplkK|0uM8)`&1L-d8-dkg{{Uo__%Dzd&+!+{ zcM-HbRY8fU@30Ju{Z_v>MEGG@WnHb$(i&q+cPY1EkAz{D|GHW?+5@5HWuT_RmmTI3E&#^Pu0 z8OHNWf4ULh170<8P57zs%O~P8SY80QdRv6@9>5kQuxPN>h&6peOWLP;K zROG$~`5^1e4bEKS2BZ9Ivho<~cblNKpVd+AOl&HRO*E&|2s%43P!x87S-tHS>7;#K zBI1}uzj>;bFC@!ueLExmJ&Arn^(THaW0BrF=TDh?%jKS|an_}siC~M+*bvuwiE zX2@*X*M*n4)H_ZpzVVLtNbeip((|0mfdPsx6wlfw!)H0Jak}C%dijsTHhToLRVMM? zOBQe5D)ZsN?uh5|VJ8S>>XBvgVJCArK({zo{YIpswr}xk@-^`&wmEwq3V8_Zc{dP; zumCWM6kjU{ew*I6J|;Y(lP{{}7ST=(i4BXiUR#p7#;P2X#Z#`QFRZ}o6x8@;8IjO$ zia5v={6MWWH!t+AzRnZgvG^w2Q&!cfOffx?Kp7I_XWO`9{5W(L45DllhI@8FbE)yqtvsTb!;q)~)!ce0-(mBW0Gol#hdOIYE>B(B0g9UA4U z;?Kpt8v)kEbu*fPWL<+pW)F7;#5qEOtg~+VH0^s#-8Z}(g3T8v8k)oeUX9}+JD8+* zQOl#p2f=@yMLvG*oFtkNCmY}52NYKYJ@Pg=VUE zZ;n}H@7?U(n`2&-dztwa`IcFQeuze*2}8YZcjJlF7JUaDtqitrT=>?|g_PwRBQ;*c z%~!`y>}PCvINt0pNS%-wa#KrY$e?}3F*t+vKT&g%g&m6lw3o%j*TLi9Ud%$1&S)kN zZPvCuR|}=fgho$AB_vRjUS5#5lHUyonDZu*l$2y6V>71!oXii3L9a_Quzu%S57tayNs3H3LR#w78btXQ zi(;hp@2Xc6vs-7W0K4n!8Ti!gk{p^c3%aNNmK!1A4Kq|ums?)$q<|=rvTLl=DmxRW zF()7o3yGy>QzBldpAf0e6W@S+MuVVs2KDhnQnYSx+EBb1)sEZS6)2Go<8&_$N8gwE zb?4E&kDT~=Saj*EUq(@=pMb^)aoJ*Sy6V$(>fgvQNoV94r9*!>MMf%qOtPvoxAgVZ zatm899n+iVadjPem*%qVT;wk>sChxG*P=d;hXqF=zhc8&XAVHadvGWLYiw&^`teM$pDB%vkm{I~GP#G4lQ)K{_X0mH zqEvg<>AhW~1Ua}ulo83YsV`+P`gx+MxNz5N8I10pl1BsbY_Fb76u?`T{DHQXiPFxW z=saX;<>HfNvsA#TE8x*e-`y6VDZtkavss@32fWAd^&`6o#4d5IzwX0WvD?);8DEmk z=5`!`2z)<+i(uoKBvSw$Q%OeAoi<;`J0;Y5?F0dQk7*dfz<_wOKzvTdLKLu(E(~y$ zq&v}d@XB#I;`?6BjCczI#z5R{ieE6E=Zn9!iPy-~AxI`Ol_(?!Q`OpFHCn|9(&esT zEq}eKE0vzaPZG>xWEno7IJy7Of^!IrbRk_9 zvH2v6mx%>ccv4AMBC8oEsw6ss z#3bStLV``jC;Ubp8IA{y^0*|u;Nl8hxuB`qp2;(Ye`RCJCC;6<(^g{bAx{{)F&5 z>0=H8Ou|Q>1W@%tpSQb&S!r&&&Z?t+!OY>DZGr?P_EgQhW^h8NX6(8hykY7>z%2yICmNN%zskh>&9$N4^v zOJp{p+u>EmR2;qdox4Bo3Hlx_I>=e|JAoblA~oIN^y-N3K}th==v`=6cLjzQVT54jvZb)=QysjuV4rPG~-i~`Zuj7{Vt8QtMdU{~f zsD*8!_bKd>bbcT$R~2JCx@C9Ci4b9w(c5TnVo|Id*M4b`bUQLIpRu*fY8jq8xIp2N*(YE6hYuJr0V8Yd*oh1fcLr3JnNhkxuV zbxJ?>9XP#|@yv?P8-3B$rTo3|ns691)E7~^Qzn6C-P34w+{Ps@(Pqbuxi;A^Hp*J6 zHCXKTYBOCwI(2V+_Gm9OpcyDAA;i-fM#T$96=+nuclrSpg*VXrE>f+6WHlnJWR5`q zhDc1uivOB+?qHwG=^X;r3e7T?si`sVu4O8jgp*{yU<-i+BlQ4&1S3!%Qc~qB<(AF~ z(~&AO{w{SF9wBcCCzaY{BP=XKjr~S>FAt6_}zPK_MjU`}L_qRTG=AHETvUpcn`^^`lST-^U=!MeN_ zJ<)3n_HuKm?Lu+F+hA_7O_ga=#HtFnU_JyTX#YRFFx^yVrvEDE5i%|aVT}-!eI3A$ z0zgKvD~}i53gbqzk_=8l-!0<#O&O|9Mdo3O%qt2(=V`j6SsU3j^&%(b!)tDNCKk9K zxEQc%764O=fQjO!f_)F*JkLl7+qN+&8w{$P446(u(=`A_CxqPfp*Av+@q%b@0LH)B zCJw^=z((Vlk=jJ;sSJ45_6JYDET_8OwI=QiuOydLqEZ~g18h(9D?vPR4&PvL>}y>O z+u>|Mv4%bYM`~J(Nyg#;O>8C#~ba-2ItPo+gD=HFt6@D%~UeJvS zKdGZ+t1?HG15w!}mEvomJ+7CSMSroxz~fZ*!ecE7i$EpYK8^R7Qf+uIJZ^-0{_o&% zHV0WX6seiTo>?`$!c>tAWVN`v{6sBdv4$OMMnuPkB=g$Z;3kp)yb@gaCeqkCGf53a zvC185Mn@|;Q$twE3*Ro}F`l6g2f$xvu0=5MXoHj(9Y6tD(1JDu2a9d_GEZlxhge)FN!Azk{uVja1e-ln;0AVn2&sZob4Kmr>82SRV5`$z>>rNMtP;AKTY8LaHDTuUkYvC3Q$>@u$%P zon+fe9x~@kOb`46gnD{O>QUW28ecJ6|E7yB=sU2e((*zaMk-4~?K>QIc%W^?T?!Lc z(XSVB6iHnEphV^@`J#*~5&N*KVW$AP_Rc%_8#~0zC6j%q{k)~%=%|Lpuf^dkMj%;Y}Q2=?+>0p_J+Gi{i zlkjA|(}2V8(E_N?MJTFS^Sno!e+*dUkt3xmJl^2G8>;wI^sDU+C`vX&+{Sw&F1>YU z{E($f8PU)KAIev%;c2QuZ8+weE^%ppk|qT_V2fOf4E?i) zZH?uY9^6jPBktu7hM{Gwi?hnz)#Db4a2dg18Q*o`wZrkjk#pqra!r=$3oRKDo#r+^ zCQdoS!;3n$%HV4Xf)$;TivO`-O-ZogdH!-toc?1rrD(%5HaWl(UUGmgvyzY>VE5>2 zz6R8@zQ($Lv~Lcw`pxj~kk+Ris@a%!YF;$W$1=1<&&tZrRUDdi9(JkxI$w+47xZ@A z;;)E9u8@Ysm9jud?HXz$At=r+VgZ<`%-S{ziI`oxbf=Iy?=Q1JOy#*k9Axu^IEdz9 zU&LX}+d>?sBF8*ZDI%-VhWf#11GyfAbjDW+Z77IdW=el=iNm)f4_}Ttz&M23*Xd5t zV=iQqWtvY)9U9!RwlGH?0{H2AJg8*Y&I)D>bEH?YZ-V9qC9l%LLm(t?N9xb zg&am$01g>0d`o^ohfwa$7Z>&x>0H<1N_j#kMWA+-l8Q3Z@Ne3ck&?+a7dE*zR2ih+ zmvNLv%;0S|a(_#si=zUupQ6MfDPVm2Xu#bBAw032Qa4;-&DA!#FR}_6-RDB=In|Yg zb}gZm?9t_PV6k0JAJ7YF699~ep3wjOO=h33AJ3;{HU5^@8{AKWI2%W&wTEQ#Ulbz1 zi*D%t7F4+UdA=&dfCqy5^~V@IfWJbb-9)oL?EFBmmiXM8q44 zM64R@9&-S*U>7GK=0h^^$QS}Ef^gq42fZxVWn^b4gSBXq;q|_*3smOhG1!<3!Orw^ zGChlb$_>dxQYUF`K}wRfbd0-6mZ2`mNJ5Vz6Tbtub|x6RzbqUt8M5zttIe}i(9lvY zw(6QJqcIh_jAUkW%ji6b3(4@$HuaMD3}mw#hT88}+k7K@$o-yI0QtV&!ik^}?~h|b z?YF3by^)Z-wmBV%IV;V6x~!ukq_YLR!}#kYZEX|aO?jK)W`97HDmHfzd4>6(8gsHv znTcxb@xH|`aiY5027C$|34z>ef7vi#e|cr#{&JG;FE}g6_Hq;-SWcUE`{gr!abcL{ z?H-G{BjEyVi0TZ2$&|YnVCrNt;o$A?See$%%{)V=xicfA20?FN5u5E(#}_S%ka^tv zW|Po}KG`gn)F4G1-yy~z1V$;>`0d*KWNs2A4W`le@prkwQ+_^h(yXXSQ z&gF{Iq5mDxNTmA9rGro3n{c)W*WSEUgxp(nHraA@=q9e{o0+xaXm;U~Im82~wjWp(ajZhHpI?dE}VJ9eLQ z+m)Hy8%f0`WMGlbZFZot>}8r|f)~Q+F^x#NOsove9Bn7|jDf?_iH>Bl%WaV9CA-{< z8*|9}BTSP3)uCO)jYf|rI+GKW@iYBMu9R5&ecdHG`?0-jR_vz1GpHF)0 z^UeJA`QF~^lX-5@^|?+5nwe<{&mOowzx{#E;Vw;^u-E#O-Tr@PeQtnkX6En-#Yf+g zcAZ1kCk(Xmhq^vHb)Sg&+iiWyhISaFwL-(GkS>#X66g&x`Gorbk4B5qGD!OHB;9{|IjS z5YW<$2;lZT^JlM5`d;j8?;8_x-&jX8qoa=3OrZ0FA+R?6+n`QTuCK8&uZ_MJv;AC` zV(;8yMx?Nk2qV~EYw8K{eqCheqGs=>s~sG!ADI0VC!zw^-3(UY`V^mJ$y&Is9UYzQ z!S$37+(YMwC>REeJ_?Iqp=<=o8*)%SKG*x_1H!gYzf}Qwva~e_Ab;s~BG9f)$wuS> z;@zGsAf&0nXxOn$jko&{`;7Tob{cp)Hk}(N8O#H`X?L9%`lkG;z66l-C6WyN6KDc= z@mkzslD!zYH)MP_a=uO3Tx9CZ@iEdeDZ{o~osOyQl`#Grwp+iZ=yjNjkustU#$90} zqCwhVSA!8Y6LDpiM-Lmeiw1BP+a1D8A4)*8bN7nEgpx+zfhbMUmZrv=hiQb-;#aYB zISn+hU)!qk=A;+sYjOHq;8Dt?$&v221ab2BtKTNhdF(3x@&s8e+q_^^}6za(EZw_wo=3ojMnIEsp&O!sgLU=96&Oo{&1N%GCr0miO8Dti!%{zqsc|aIsCLZo) zCKl7U>T7?R1;gGm;pvMr`PI}&^pRAVmL)2ygCsuj)#W5O@GW*Z4U)k!dT|hql#R{Z zIRuLBi(cutQu9N$C3Dd`iXi7kBy)ylM{tAv0#>FoHDpQ%f)&%Le373iVWVbB_%bzo zn^I%Ewy}|C+uqN%J?eLbsr~G2-}l+wWjUc!%Q&0}FE$80lC)>g__IrDUQ-PQ?hdG1 zKWcDK4>e%0sw9=}oxz=Z;(O9jP>>oMHkTQ$?y=@zy0f9~h57%9s$X2+XGZFtiyow{ zAUCZy7cp=a#mNzzW4W4Xa#Qm9!b!;@pEL^>Oo97;t&YgFn!3+@HFYnR6i-{qSO!aY zk)s2iZ;@X#mGHA$nYRXaVF$esJ1wS&-U!Av)?Sa<@)YZVE?+~sr|2=LV#?hY#b6__bjS#*KJ%-r4_o-jk3CW%}v09winYc(>+F$*| z*PFj3q`Mi-D*Y3Op`2X-+E#*|R7P{8wku%sFj}4!?i#h1o5~1Z7#-`n7oX)g#^e#b+ zkgx|K5EL|G)M&&;gPJ%|XOkJ&0~3uR8mtxC)QHt8k{K?F5S*kk*^Z^x)ARLmYRQ^qIv8CPTUF+YE<^`vM!EZ2Q&6{E z5k_#&*_6Aejg}@Ci)oVKyu21>cBNH31|!H+l@+ezdBEX~l#>?dsTC3mez(jUW4hCN zvMe`mqq;C+8wqFBNR&ixlflEG$$XD!vyL(1b78z=o3-m?#v$Q$GfEjPX6A>pJ5qCz z3?$r#|69J`z9r!vR6+O>JC^Ri|P_RaZ?EuHZct50Of?xs2w$FapH0fhoIw#Ar3mCNcpHKxYmSF#7ad*U2+Ik;Y9_xNn42;OW)O|KEl>P0fnrC&aM&yY z2=!Pwce}|12J7;o*XS~d>X4#umRXFRfKS_Uy=se0CtLcg%21tNX^zzbyW?XeN2SUU zJz2+1qF%Klb|`;EDdr&6j_5e6y&CSsO24^1?o(-}@2!;SANSs@3~r-*y}I2mt|REt&J zLP??Cd_!waLU;>r^?mDBVhN8V`w9`MF_NK@kU4~Ln|9AMc6wi%OG`{7u*8{)<0kT0xAKakqjIZN1um=Y z3vP#fwG)1eAyRPUosV6#lR2?hEsPa2}Qs9Yp`L$Zdy;7YfujbNP ztAKzlh~~n~T5G3U?Q}N=&5wh1r)l@P$s02NYW);>YpCT?m*MOS)O|V66*+#c+KeGUjV;ifkvE{U|a}b}&AIF2w!cw}oN4`AC z7q$U}y4^0L>~xdoc~HS6cuc;d`rZ@h7L=fIi^tPLu<@ihcs&=*ClOYB}0vpe_~ z>oO#UY^_s8*b@uB=EA8;aCc|-+5t28Y#Pg`trJrnUBO!$MHCUdnqxMnZFbh(UBT^y znh;iiPI0(E=Xv-;iP=N)4wel5MFQ2~_?H<5w$$>zV1J&n`J?xYL7Gcx`X6UODAQXj{i%*24@yh-%B>$$vek5!S}nB^Jt>x50vXHSrboAGonPl& zhKgZSqr-uZ0b?{}glGelh&@JD8!1zdh_1fi4;u@%!8W|Z$YMg+hF|Elo;??gZapQx zB8S~=O-FhFW;kfQt^%cRz|~goI*L-ete>j%KUBZ}rhdPneogtc@hS#j0sHdx5k~OR zb#;tRJIG4$5s|L$*E&uB?yWCX3CRDlVo-JMm$nPN*h;S>a#hVhy7U#61cyP(M>3&R?W>|N{^va6gAkZ1NUA0(<4TSzIGz!e94 zD{ulSk_$q^+Skt{WQApoYUu%^Wxz;Gj2nsK4MxixS8TP%<%pba%{caF(2d7sdHE>l zCZpDNg_WiU|DZ6@ZaKzhyRcq9W(sR(VC~b7_20+Na=_*BM_bihb;#6Yxpq`^Gf3$H zL=nvnewvWo*ga~w3=2@#1{rB*e|8>Zs0<@9=dUsgeg&omlA>z%YXBXJ&YqG-4{}Jh zX@PW)5!*g7ZojC3z3V~Nu~>1deLl8zX^tOy9WZ-Rbq?0h49nRn9i(Ycj20q)=riqYd2&DtHUiTi$k&PuCVhX>yeRYqs1sT&l=PD?wWwnvOS!r zXt%zrzU~XP6dKNbRz%)pyD*G$j;ku9RTaC~y;E>|yKDPXPW{om^mev` z_3AXCWRjyS6l?~RV&7ZyK4Al~)lTT4C&D|Wlfv3gRt zWiDv@3OHTGMd23Lm_`t?6DL=SEFIyu*!PBq%tP>W@c>v?cBh;3M5-{T`Cs zTaKL#Gfj2iw=+zW3HAX)t+g|7TixS{aJp%%l#{|3`R+F2<5Kn3m-t9|d679Ga{*tUiPXv0nT;*8 zq4%G*&ShEZu{9GtTIYi@%5@iO9Y0aSJuZ~sddZK_Nuj3Xy~J6iQkZ#N8BH2zw7g=y zin5sF9+6VaJ#14_=MzA5%5QCF;|bN>S(#}Og^str zFD2q;v}HDsU=N)1XtLf_P~keT?}UMaFQt3TLoDrbb9-u>6{Cy|)}8Xp*#c6Rt^G5) zX(D@9M~CdRE>)DRt>zLq`F9HOhEHByQ5oi?UwZ00RmiC&kcc1^YX)x^j+Yw<>ATh7 ztY{MBVTCTtIfh^zHikuh4A-g^LJFHJ$Sa3OX70ULKS^833d)EtEw=_$pt;g|Q37UD zxnW*WDXg`{*55duWz3Un!*y$$BU2G`KSYJH0IZ*@^u|&H)Fq9?D-7|9;0#w7mIY}j zi%2#UF(~dPNou8Nx~kkak~_B8PZGP`2zjJrN91H%A?n|eUn>Jj z)iYyjAge1dcg&LRD<)&YQE6==A#gp$Ziz-qtj(v$a6z;`OduRzLYHKWTMX{`C@{9W z@>mSCSFC|YVQY?nJj|vf8o6W6dX+Hf-a7 z%3doVUlv#6Q|n9{KO%388|s{7#GAb0cjQP&Vhcx9ImBU!>!z#$aIzYI#rS3;-))`A zuyYG}YC84!t7EW!Iu0+_%$ z%B`D6#l=?Vv8hkBnn%Ui2Zz}bGqRIkhr!TDWA@WMt7251Y&qUhadtVMdUECH8%40A z6p;I^yXcQ?kuLVNDRc_|Q^~^xtlFjZ!if$G4_hFFhF2sDnJMe#N?E9XIypD;FA-$q z=|8uw`95A#U_C~XT}QN6r@g|Z8rhCT{tprRclKf6aKFOX98+Ogeq=>nVddRQO#+}B zXkN`Lzo#`PZJrK&u5Ua88d2ZGx@p&cM;9G+&Hm_28(1S}1?mc-ULaPBjxpA)SuE%B z$mBrXxX5v)cFI$}9m~c9I&P@I43C`L_jZ4)?E$cEkxT1XM_k22?&+B z?y_7BhB}wXdV;2yBuRZ+w7WKw_rM&EBOQV&GOPGj#>Bbo#=5J@mw(wXXIIxXdm_hK zZxpEdS)n(wlUcGOq~yw0%w>L{M7{<`{2TGgAvoqfO2Y>w6Dc|_3VQ-xeE1$8*dY`O z6QEB&pW^bMTn0(0v|{X(E_mdti)ginfhJUCGrd2 z_>)Vo&(xKH2r*gsZVI~gxAt>~N;oBdX2V9Z(hGQg_xG*V0v2JhJ z*=;0dd&5;Is(EH23^;-en_ICN~e|cLZVI9w_u+!7Q`^!Mw;6f-VWV zBIERqf{3f5FydC)4`wf(<$y1mDa^pX!*Cb-CChmtsbbybtXk!7MB?6`rs6pFkHqZ+ zjmVhG_uYIKbez3lYJ?uk(b^)85U#YiqV}YWk;iwFYt5g1H+j|$hLFi2 zaBG5Do-X~}C32f)1OEHMPEIylz*HRI{uiNeLW!ng$nB7COJuB^P_|6eeFMwh<)`fj zA=6bs$Ks)u@OrOd7GvCk4*+!)6KqTovIt{3^#&4i)AOV~3D>=|eb?5y z))dOavj%V8d+AN|Rp`udatBVr)gDSry*uQ5wdNV1eGL*HP!6-x=m|Lolo2srit6&# zOh=QkPIs+6KHxifb!ou&Mb}zQkJYB5PCf2T%*xZ_`ROg8SkFY?3(I~lA0p>+6Fh^` z&ccDC>{@R)gB}?azl?}sOE}nrM1MXjdRJ`M*mNuoQ_ouls25NhwV!0k@`T*ir9KryI)#F=zdi=~|+bv>d@awx%JgOXjzy(^g7iK_VbkEiN*GZT1{^>qoG z^J^7P8#ib85kon4DU_dxt4P+ggbEe!2aF4Xgm^|$Z2b=krPdWH^F0;ql9GXgNhS&g z6pa?TG_EOQ=BETw;K=aN^pG@;3J!_iatNe7FqQXNho?w!wk)B|0oG>;P$w>F;I>hf zBjo_F{LIagMeON0|0mcGSWik`UvqQYSnCm0jL{5Z0{H@(B|nvjcr&dW@dG3DfU-l7 zfw@a%UfGPlmlY~=b2HAMeTT*D^7EKlz7qW)Rc2kQKB4NW)_>ekK(eUUnprLz!rAg` z3ZIF70Qd?Je!dsDJ1{E!3uUS^ zYW048lpoP2?0BhwO#TH%;+GXoXqgLlUg3ZD$4_OHhCA>QNp2`@HUIz>z`VPK+jC=*_(J=*DzrpJTpL*^{M zeCNy)1X#iq%^(Hg;VqTBRX9E^Xb)i_OGLS`J-9*WF8Fdj;makYx1t>S@$e_2V=bd0 zDiUf9gS$tT3Z8JlxoQpX=bkunA;DxNEVjO=Ubw1=Wno>ZUgoiM&@kF=V!!gV;cQxr z(?#J0^P|-7rL1y=#I3dHVG7V>mWf&vf<)B6)>iGL4u*-^s`iFr!=7c+5A+m9Cbn+q z%Dd1tCVG|u^Elm4T=cz0Hk6*EGkTK9$TjQggrjiI4%Fcg+h}GotdwecT z#pE^jXBLk)w0=Vy;3ihP_H4&K(?0+VJ`r8?YF}GQe+iW@pG&XXv=Hnhh!DKP+;hH@ zFYAWeNuYi0#(aJ^pSrNIz>%lLu#JZV?hTu-v1r*`)fwf354nnOC}bY))x7yScAVZJ zpjWI%JVPQL95ue^@+V3rUGPb|!MtbP!Tx*)yGiE-<~ zuEzAV2I78KZ}wgC7i1#IU%>d}n|86q6l<4SoT=~8xgO%y8=jH+GgbFWd&p;J>D5jG zA=u?SHaAla^%@kEh1XHvX~Pxc?3^l5V13g#=EF56?1U=m@#+V9wa5gmvL9c;LlUnd zwee%aRR~T6s0(dVBkc@*DC{e_jWJz5Ik^QO7@0r54QgkERDR}pj2Dd<1tw?c?Zj`u zZg!|w2>#A;PyDW$I$*Dz3pl3W3mk-z({OQ1AFT>||XjQbgiuRUujByAc({HIa*X}CX zU3GN3t7v!C5$z_sU$R%x{;DI||3mFp!^v9CrV9Q-&VK3JkodWlJ{;)L#F;V^AY;xq zsvqyc&1_>;Z)VUVOSCicQYB0&@XKI$wKIxT8Pd){V_h;czDpUn#qyy^KKSkNZ6eYy zk<}7ePWEbI$|c6Dd5gzHe!=InOYW^Jj zdHE~nZ;0;(PlWH_yVK4UeAlt=9%94Jet?9Y>gm^8H(+GBKYsb4*7)V0tiPOHgZID2 zFaH>S4VNF32%aCtFF!0n1s}YB5WoB*(tpY~ul%*fn>_2A#$>;%cZp}81P|Igm+bwn zHjlr3l?TKkdSMYZqdehE2aMS6w2|K4UXQ)dLEJ#*SyL2IB%W|0Q^TUZ}+kzuu;~qyb|82^m*p zO(Sm~{+tYTldsY?8BG@~z&731KwPX*#yxzf zQ^DXMujnG9k#->88=0mokLL_S+WNU}uv!}Z?Y}{baN7vH`NRTPg;7hWhINZ4&Cv_!Bnvs92D6>pod#x5ykIAnmcGN*lIR%T6`4) zA>m*wMxI)U2}ZTZQmD(7>2%f8#Nkvpr8 zl8gBp%`Y-Jcy6v!2k3>hja45j1|7y7Z(A>H|0I1N=xWtE2U$b9x!jQBceQYEYJD|Y zOynu%r-qZel@GhZIOx6W7o_9GBQLQZ@)BEp7zty?H|=0CPVxC%tcc%`b1RbS^q$V{ zm3OX*th>{p_`j7#?4mEkDL8T>3QSiLvOYIn-Fh-^GqFI$Q|Z!+h&IEAy}IIhgq*u5 z$ntoFWSQ;9|A2YrVJ|ZEfY}J$@th)N`NGKxnl)YexpOFV45`z7$@9SIc*y-NCChE& zy1B*(RsA(7_Lm&JodafIr`@x=Bqp#^de*ioU@ma!u{X*i0Z3zDuNHA!qq7^M&|Vi; zjVvpd5Om;B+a&UMXVnFIz0t7*izQeb@t`dkfJ52OPxJyw!s;s~ee^`sH>0PfCgUHN zKI!q<1_mQLiyzKwbZ*ttd(zv@3BHfCyB5=I)%SnQKpS;-wu$dib6?I?jsanryk65C zf>V+xxnag9a1h=ex=efccl+C?6|wHzH9a6WaE8t%Ef)n`V$|$0p50;iUer1eGXSg4 z$nxHjyoi^O?;Wk<2^pv;NBE&eDQ7X|AoYMJ=i9DzB>0$&@zZGjZvTeQyOfUSZUiN8 zv(u%gVJ9RK5(Wd^#WZL5(o<$|nZxka(Fw3;l#AGOsl!f{`Xfnn^EDd&tFu_)oE%F~ z=?mT6q3RS*uD#h8DbWiqNS8i%wk+9_)tMY$Fk;(W((KLgBsnH` zvB68K`i*DdM3sD0C5eaU-fa(cPB@l3;R`Mmj**fFEBu~4L(~3>^;}lKS&P27y@XLe z>Oop*6)QQp8bQ?3`mu>)WJJq6#T8F?pC!YaW2lXk$zdT;^3vTD$$3qR+(wup*GQ3@ z6oUoa*v%YLWRN12iwKX5=e&PdW@v@lGOs_X%>D0=F7q!{pKYg-{bmN> zWm@Z_H1W+<`ay^)V3bQ0ClYBDsj`(h3&+KN>pPTyKxraZ1I(0K*|xHJ ztb*X!QnL;W#F1R0w>Rc`qc09G3x9#w&5Q^K9|#_zm$%v z4H)#4aQ{t`;H`C^&Bvh1-^J|F~1W!?e#bkdDg#p&p5JxSuykJSBT3n%Mei)Gd zy>nY`E-RjGez^=*YD#X@~7zU`6ILJ7Qc zAu2Gc_8}wSxK~`JR}F9pdm0B<1JP8?EBsD?R?#|TQwo^NU|Bw+qd=P}W1E!mg@0bg z`EXV0t|?w!hUN$yXW^){%w^wnq0m$83B&$vnMKnvkc5d8^)$-P1W~4A*#XuJ`nI-R zjm`zC)w3o#qu~RyC+0X|(ludL+pPAd@ zqBbV84}-eIRjQtF)gJ1ZO+DVD>nYCF^LXmJfPLy)yLJiN4N?`oIpGF-j_^!C)k{GZ z0&;q67hW@AhO-e41E*$bVpOv4hWXXTruAP^D6-0 z%Z3)*7BJtGi@ojQnlr^!{Y%AZofg0xyS1TZ6uB+TA}QJATKs4k0`B0}Vi484YFKMT-Ucg4&}4K`q$-o4nM_Pz(MT zS^~AGxNa8^gaDCD+M_+@m30$)-p)VpO#2&o2Lg2y^VsaQK!2cXKzy3XU4a4UpkQ4? z@#+bomifh@mU-T}CJqN#F@|$51@qV<2Z=(XPL@qW$ox>~&Zg8@THy|Bfe&a^x>uCK ze39nrH?j!C!hY9?o_<@qU`tMHJscT5FtCld z(%-K-GG6xj%(ga)1YE3?#RtPJV&4lAV^Zb12*_hL4$53QjNCi~g&a-)RLEt{{nt~$tz*Syl> z!f||b0yk@64`8ciS|_oSrcM`tuSEEalE3I+veb5S2_F`OoS1II6%v;I;_pVNE;gPs z>YAAeqoo;GF<783pFI;V39N{&n)5a3dv)p@^+4wT5KW438$#*QwKNkhyx)?$6NxyO zfWT7`*Q4RGL6+hf8CAtZ>G8SL?RM(ATX_eT8iIoRca&n22V&v7t5Rgv_q+@%#t~zurB61 zadS4WByVDF+$uSr^Fc|K-C#+M9A=L-StW~VX32QI(2oKlkkcT#H}U3z8Q4y1p5%mj z`#JSz41lTy8)pbO=@W#~!%UC0i+d#E?mmVc#F%8Lzu8pRz-e#qQm$#y(? zzC=z5EbOy%@mytk&?1~F;O#d99#@t;+7)VPno41TcyYeX$5CXiF6=V64FaF}M`ib+ zGQ7qW=XVr2zl%mBX@J9q714?Wpqj%imzRZwM{O>gI4|KEFC%`D!i%p&s*w?IncFh4 zDCFF0_+DPkv9vqr>s@BaU0f6Ngpr2fI>1@hn`tdpWU0Sdzvkev%X&b5kNh{nFI00u zPvI3@Sy3AR|M|tMs@Y?Gi58~!Sf&gWI09S`F?^h^F2=Kh5~~1S6+EiEb?@w>zD7(I zMbP+VdvmO`%Ku7+bz9||fHnVYexcemrS3AR+Z)>6BVwwQCzEEwNa7Bvv@_e|1{zG1 z{;a-0=y9ai-{)_~=KF-x@(0{NFfQZM?qBga-HV^JWzS;hXu}bPsT?C@aoOdV)7FzJ zHH~F>wItt}DXc$T`r3(kj&#Y5#Ik~4Q?Ml&k-Wl_5H3T7H@V1OjEv(FW0S;kO~+d7 zmPHCjf~8ueg)XpmhG;OJ0)^J2b+(hnz#v!tX^wDbPXsfleyviHAjVDp=~}+4jgExv zVIc-y$;VL-a|6PcE3H-ewYEAhVOTw(O#0z8$tq7K8P9S#_iRQk4Yn+KST~lJa`z_1&?nnx#KXSswwmng9;d#kp8kc$a@w;St$wd{-=Ip! zfrN6U3s8)}fb=s1JcE}QV|xGx)o&8f^(#>?=}De#^jI_CWW)yZLOs^Z*nnSOH<;!? z?d%U$_2}!YG(y5w?UsRr-uXJ^DI8|G&-K$m7p@r_L zcIOzH>-Mzj+AZ*IcM!jW5(p*<&KTgFMc-%aRnLXQHP85CCahIHO_KBOwO>nKu%B;} zL(sOPExr@qyfp{=93|QBkkS_P)H5IvvtpxATzX<*X3A0?MOb*OoOv% z=n|sas$>wqB(m|zSwMBPOY1y<1;44;JlzY}sYO9>%O=p7gE5$SX1}ed_UxdM?l%tZ zF;0O9%H^Uwn0U|;l+x^;OzsS#&fsm3yN$1rWGl(N_9%k;@zKi=%;TgpD3bekLXWp+ z{)INDKehkez|MCnSkZCOFh48UcSPPkKKf*1qBvigA!7GadP1GOk>}uY7$<CJRcxu5{8)hAgcV(w9>ZURlYVRnYM8!i2t1y{!1e?7mzVNIAJta@m^ z_vGzP-i*3wZxD`t&Q5mGQ@lX$T1jA1rQ9kh=i4baN=mnE!O<{hio|)^e+#`jW9XOi zXsl+g?TyO!B}z8k>!q+n>3H@Ts3&3Fa)(VQeil{vh<&Kuyq_2Sk-(r5_T;!%oI?!(RI$+D_yPY|8gf%N=RPcjv-_ZR zTYyzm$y#A&HA_A`Pg+wv*4jY~jeOI7chZLHbm=xM7mXOKso3GND5``dTls9wXEco1 zsgDunsWw?jj#KR!fH8MWbFQIi&1&np|{4(RBrM2tNRX%L9p7+^vM?fks@jzQ+XN}UIyZcMIfx$OW%AfK1goPL@kr7V_MBOJeey{xGv==U^BUGZQ$aT@~h z>%WJE@O@|vT>lgP9^&PZaQtT*$<3o%J;Y@&W4JO9|JfcQtoNajjTT7B1Ce?7w9JcO zIFgQfARaouCQDl3Ki~G~8J(}JJk#*Kw*1u8ZE||OK@8TXbat;Qpt{piFrx)g!rr=p z_X^lV38~Lod1kKeKrR022$|55x&W(l~g);BFuTTkbZ^`rsOw z!D9M`u7$h?_qga{-J2R_Rp5FV3@i^1euWJ)(_BL zH{w5(u((f*|5lPCs_P(L`O-UbIRV&)BQEi=FVf&V9)K=R+s#|j$xA7j>cl<#6>x1n* zUu;ian70nC_T%_+7kS0ZDXAYgWql&ULk4Rr*P){ zN4L&@MC)2(s(G!kkLs3}ex`jpv?o*(wI_C2D9RCY#`&Y(MTBje`IvGfs_kS>u zzd80m$}J919iMf=rJUY?bK!CZx;}s@z|u4eOk-kCviLv`*AVh%#8!G7uu;rOy7t7= z*3GAYgt=FKeA;O`B`_BI%TMlfr}|=J$$aDr9JQfI8 z`slaA@!x)r#60d(4`DH|>#_Zzu^Q&+zc>*8?L&OBCd@0G_vu;4=SYppV9UhJ%7qQ&qvx5Mb?JJ0(;kEZ-P?K zqhqbr*C`5dzxKpfE26%wjKWvxg|}JQ1<}5KSZ2=5>+-B0OO`I@`Uzcox|{^j7TJF! zosyX!#1UDYcq6t-^om&)FGY*2v#z8lxtYbh1Ks;8EBwmwxcRx*>5f2RHp4!zOgNi< z6k(sXPNy+C#;P$KLX&rBel~A|Hc7L$yvuc2&N0cDn@oVXQ?UE+uqz@W~Le@KL?E~ni{ z#!nF#G?Kl(q0DwbWw-JGtwcjN=eB6nI+r%uv_VF;3>3$g2#iC{9cTTSHI^agrUN#q zB5N#c52nK-l-;l7&>oWure8?MmXayg4dtdWj0KgkJ3g;Abxy3M){zwIPvt^mZ2rs? zRKiHo_`I2&1FMQ+^Qv73U*d(yxQd?Emq#k=Pl=pZUlo~HKO-`xzB<}K8c*sXNtwEU z-#kj6S6!Z};x|8aYOG}@BUjB|J-TClNBoZ3zJ@CuDX7GqmN?nw&^M3vm9b{#=}<z%`v?0VSx{5{r;w0 zUN?CKA~eA?b+?s8-bk-g0I?|p5Fax707N)(-gGX?O5A#KysatTc2*MSRx-$C`E_lT z+C8G+q&?O!3y^57+SVEy7O3F8Y8ya-v6$-|1r=r=P$93?qrgH+60q<{O#&7vCP)Q- zVh18O2{2qIKcm0`-4O)|r*lqCPRqP}1g1=Sd1;N^F>4fDoXH-LR9I@%WM|$XyZD{`GBsKqTH)Pw2|j0`0N+vw#;iH&d-?(ao>Zy-}~f zmN{~#8!A&(@jEJ0rx7yDm`bDeZ9ACRyX_bD?}zdLw`&C4w8z-i=gn%R@0}M3#K{yM z1#&n*I|}5K&c`U^V}0$?90c`>$=vqT-rTuajwUZzi|H_xHe_1YHD4bgchJVkG)+jJ zDUhg!`7P;#wHzcRau0VAJ#^AJ7T|GK*+^{*s4d5^&how(9MSTxo~ zoyAQNEJ;;m|4Q`-ryNziy+YAnV37)PMweuw6>rRSzVAeJ+OqFMQ#^Fx*LCT7{cNs1 z$@6HPivh;%`dNx`hI}CTF$=B!(&*{xV}t!sI4xGqNU2Lzsmas%8e3KGh`w1LvW-0J z!&=7!B(A?w>-e5LmqeD;e?idlfk8WS$plxXl10kNzWXx`|4#$sfBlzlOri&X~LpmmHY-jViVF{yCmwh^Uz9_ z2af=HJ-u_JZY5A6fmQ<2xzrc9B(1C~zrH3qx&8LMbE6>aS^0dFJyYsS)z_b|KF!R1 z8k_xe@>$LG|B-p5wHc@Tr^=)z=ke7Ze(f=RR&1C#*iB`zVJ6}CD!?o}NMQ34eqjBr zjtze$a?|FU?YFwva76IIipb>Hu$q&P_&|%*oV;g;)tn64VKpbu5ti|7<=&ZzXfntk zp`9BN{g5>OL!gG`L}7>DiQnrK;T?Dl+n za$F?HP0lR7o^OA(=SRNg=BJ`HW;K(de8utFWB+W5vi4M>jv~yW+`V4f6S~eS)|Ib1 zT>G#6g4WSb(__QB?Fm0N+z_dW4F|M)pHk6tw0j>{f%%a|vEk;(t!z4x6Jx_))H(z! z$A(+9P6;59t)?f*ZxOco7|WzW%ELFTSsNR^F>*s}_?F1$W5c&bYGcDoBPYa$+ag+Q zI2ySkHoP)=eWK}msYYuBtk={6uC){~SEld5uI-!UHFXXbvYS0UmRs-G9x2o|Ckx~A zsuf$5y*}l&t{X?9vRJ6vyIDpQW~X(S0NMbx%%12|18hO&tNjkYL+cdFN^?G(^H$CT zO*QHDfr=~S@+FrPf3}1QR7K*yXh!OIz2n75p@geaNEkTczWs5w&9en?k$Lpt@Y?Jz#N zD+XO(bWL7Q5>l9LGppK~stz95QXDPC$$w?Q>@yN-r}|B~bpW^BMxwzR;9!=xsZx$M z<>AEt2!0QnPvPItws+e-o_@|#Bj=Pxmtl^kckGUGoI?G%?>DHVKW+VjvSdHmY3*YQ zVs|wi$%b`M8pZgbVEzhKI?Ec9D%(Nw_bjZ zhI!w~91USp%94Mgndt&16SpJ-i8T)hP<~$P=pz!XoesgI0+a0fz~nCV225^Nf%%c^ z(4qPVAbB~f&j!i=VP*bbfMkSq{C^FSJ6XI(fu#8F1SETyr3^^koCC>4S&(EZt83B% zm@^ef1`@ZH%S4=;1IsaqIWy#Yb?O8KnH#GZkJP(a$SmR@EW%lntL5j-(l@=97W%2D zwW_aG@9a4inDSNsT{VRWT}hfz5c@gdl&%(#ZS_4JDQfjSbqtVY*PuNr)o8GtbR^j7 zUC&!v z44<46`>H48#Eupr$90r)ZsOTy9HE$#fo0BrSzQ++rptMUL!e%cN6KMgV%Hev3e1EL zM9$=%(fY2-!LLQum2ZnH*Q;>JA3_J$_erZ9{) z$XV=Ra-08UIQH)EWJ1cKjy6tn^%6UA}4( zwAWdB#cMcpLTCL@th*$x*QSn(dL@1im=KylFs$5kj-TUZ_ZN79`GauSO5p7reLB`7 zE8t`!_M}I4-l!XOS1}#BJHtA5{}lQ--oSbDZb<;=93Ck*(>7pRYabXgIR*1AmNO^< zML%xDk#{eSx*PGVH70C+T}lhdrG8(xOBsk3g%kfKwc{4a{5Sja+hO!uVuu_Na;W-4 zdo4<2ruRzeeqqp>PVEV(Q!VhKMAe!NwX*(17fnf4luW4+9iIyq(`&(@IVjVf~GpE;#6_A^K`IRkX#fYrY{WK;}AifHFOSuDp~-zmUr)jr5kTd>=)ET11X>{tWG>J#DVO2E9#0#}v>Gi4r{+pVuUyd96bB+*q5# z^Q$Y$6zgUbgy>HQ#zD9}TmRn$nOXlF zWC~&YWr5){AhRWfwhm`sM$sOp|5w4yl%wFLXk!~7)EaM?bp-IJI}x~GVO~=Xf=2o6 z6Z}#x$P4_E!JiYkn!rfh(G0N9J94$N(4!t3f5-wKS+4)47I3>MZNTRLp5!jHdnB~vcz_;X?IO%d`8h6J~gQ4iGTIW!lKQF-AO zZr&@MrmhZb^UQUfe7Xf)d#!!1LiZq zM8n6iL+-WLN6JtD42vjnzWmIQpNnE#zRYEgDTVucCK=nD*w;AN>NIj{n@lqRO$%4p3Qu2c$g#546|EhT=^;4idocH;1 z$nEYP{Ei7}`?tnaEj>HSu|L^B0@2EK{e{*DxcA+Voo1;@?jy4L_Yfn^b9d`qR z6pT-0rds29qh~53!x^CkGwbS*k+%@|)%jzw-+zrP+~{O$=Y_ek_rQK&?AKF|d0G8t zp>|~XofWy5<#&NBjpOBKocvU>{355}7Hj(BY89QJ{CA}$$|}+%!5CRZ?i9=OWh0i# zi=3%`aSM{l7Zb{tqn)@@;xt&0DmCX+@))N*Hm9mq)5W-|W zLihe=^oP=rpeBTDP{r9+DaLz7?s6=;*IZSL&%qH|cWJgkx6z#!soJFlG3=&6pHQz5;$cyk;ravjRB06?5mz4?VzQfFGed8$bwo}V(hR!~NMA^^ zJjL}?{7xsvb^KR$y1Q3D8^~;J)zS<4BgOMFMy!n{8UDbjNL(ts>|-iZAcX9mW0atK z=Mv2|aI9`KYDAxT4g2Xh*{x>UUYQZwB8F4vmc;UW>*6^I;?Gg{)*%*W$T;1}xlgeq z44Yx0@>{b&KgiebXo^0VIz2Y8GMzdZ)ZBzEA>%vW2q!|7cyL%EoeH^+~(;Zi3P;^AmdqrrcHz z%6^PTvODkh8%WZE&H0+EGg1M%FGql^Y+yX4W@H1WsV|04#EHksJt_h!d(@@Y_TC?P>)rH`2-3BVe^8ZiGt8+XivYNT&EHh=v|XX zIQyK^GI|sfl~7@lbt=e81PZPqXR0WpN`bAPU2gYzs$8VlvD!1E5P8Q`$(V#n#->ZC z&DuxrvxViSS!mnCzE8By<)9rsb}=o*WGmtf#!r(WVq*TDvp9fJ>-fI3KPSW$>|K^+ zhL)q17it*-W8mz1WPaOMDW#3Pb5e7a(ni3j(qVxi+rtf6Us#(pG%qm~)5u=yu}8&+ zR-uuH0zE@14a zVaz6_={)l)oQb+0h~+!-BWG-yEK~LP7DZhbDg*1M&d@h9b&k!Y4u>D(kbLVSz+#i| z(XCx;tSsBwyLTqX2((t=1T1+8+`M#KvOlOZa z;@=Zp3+rrlSTymXUaU{7ygI2LX4QJ3At9SJre2`CGF$G3G5H! zKJkhZZ}TJ!SGx2UlqHI}>LfCHi#e+NYPIe~QF^j98{PB_0T^TKFx_jXR(#R0fmqkG zo-!(l7m3~tSVplnDzRh#s>mkcqhJ7x_M+h8bm_@VN#?S-M*JkC)F4L~LbR-CGpli) zkk(>F{xv@GT9$deTIJknJxJvlJtDuLG{Z(|wrQ#4q{^mv9@NjT6#QLAD}WgrHo}}o zIAxJ+92~#ItU(msIEpN52x-6Gr{IoOKmqJam0Dk6n+0wwg+hOWjuXa$s$}g1Oytd8 zB{WEveoFkceWGPm`G-+Ur`O}5&l z`o`}uY}WU|H4@Y4)i>^8gS5JckZD^gTcsf%SkK@AhA>@P!UTlP--@hXc3xPUPa_aX zmwrM+rO)S!a!;*Nq~csk0HN{C^Ac! zW3*_00o!PSl`D6iFBsxBX0}?+M{X)=*A1Jcb64kMO21P#caR}mQ+f^6LxF|x?7^+w zXyc*6%)nv6u7(T{mIXwyHYtNTk|03Z2W|M}igE;01563Gi49m6$V!ZDtrh%qtnZW6 z_oFh&@j#`ov{7+2+c|wJR4zJlsCcr=(G4ojvu;IYCtVt}7y-PKNHjG!-spTp+y0%W?NUR-XNvrF=u)B3) z0AlthSzBxvN0AoHUpac?_%VIsOc6o~Vy89AI5r@wQH~J|(KouKnK;uZsS^dm7~ULw zTcRI^_(t2G37dZ0DRf5$La||Yv;?;j9*F;slX(wO^NK>$+OuM3`c1NbKt9>M&=lFHCn7eZS>-GjOw>U-Tyc4B_za zXp-7e?soSI$eDSj2f8E#(r#EOXrNoiOnZ}`WcWP*ErSGbdt{dUP*O9ilZ=`kRP{09 z&aClt>DvG-=f1~*`Bbqm*-CiZ#+!BXSRqhQKSoqA0fU_Tq^pUN+jv;6aS|^5p&fOv zMC~sjic_g1pVa3*hblQGGr0f$20KPJEyRMr=)WTu4lYCdF1P2LcNY4fPlr=AV)}DCqIjB}kXQz+d z37Lg{KK@c@f72Iw*%APEM+P@Ruiexnq#sO@>kZR&>SDf`8)T|_-u8&Ifbr?l>)({I z=@%kwE*+u-#+FCAH1_9FILO}p#9M7GBt@dM;IcfnDDXdt7=x1plOwlM@#)h0rBI?h zQqC!FNe%MZCUx$RaZ|$$E-3jSZq|AQr(>>@m%Q7iUjP9;(UhNDDMXcfnI!qgXE^Zy zgX@LYF-@`+c0;JUhB9uP*=Y*H@q979@}K)|yKj0_^LM=Ke{{NE`}Q_;fm0WR(uJ^E zB84aj7vjoKd!mMDgr!>-soouT)OSAmxiWbwr9>a{w|`n5Dd4v#`kzurQQw@j0~SPj zCpx|DK8LL&((WsdxZ8b2QMXjMU&U``pvADKFciO78W&2tDijMC<48%C?r!&88=;Kp z(Q`VsM5jodW83e@n{F3URPzim^r3IBmGWZxN96^5h1b#n+6$Dv)8&Mx6ChF4gQBRf zz9@15V}YF^1XHG?W353%DNL2>BUWmohCzCr?oHk(7~L)#Ra+@LDHpy;%kjU@nU`h@ z4Eq26xiW(Hf=H8R$891YmC{|4ojIJ40Rogn+l0@2;p;X}M5WR3F1Cf5{P$*SNCA}pgxR?BI; zESeNAvwnKbdq8z&lPj~HKh@!Q z9CjzGi55MMg9J6;mnK{==5Vh_@!TDmE!{eRzNjAiG>;1_f>_MmqgP53!r_84`w z(Z9w^exb@#rNv8s#)~y|R1sb<R-K^09SUxH`<92eqAunb$?{Itn=5Gs}kcGG`3y zzps_?R6D#I^F8BhoGh)VJ&iQL{@py;_G{w(w6CfS>Ay2!?YC$0Q0Xd46 zP;)O6k1fQ0Zb?7B{vynGk?G1FnC|x1&cxzaI_T{0Li02VhMk+I4mZ{S-o5R1MQ#q8 z!+P!ckuMstr^vQVubp|eWZR~cA5pO?Noq{&>;86yn+lSoqtO`D1BgKkS;w#obV|>B;2RUQTI6Y$supCEF{IevKbyi6LDN9R~w^M z58MOp>a68c1E2<57*(QWaYzgU`>kbCW@0U*6POKDAXQ(NsV6gdHf_y`4<=2?#c8*k z*nci-9V*wRt25t@x4)T3eM^);+d3>+)a<<_67H8U{!~6Ce61b+BVj2q8Rk9t8Ve%3 zR*yk<3;|P$?hx9a)7@C>TzY%Nl-uxijJ%Iz^NM1)%6lLOq1hh)Gd`fe4ScOK&c#t> zkATfRr$Tr8tvJ~JonN5Ttb$4rUZ@bh=I6bk8mqAevgN5z%|3A}_w3HFZ>QF|UD8(l zQAx#&p2JRD!WrgaLz^?Kvxg2EPQtL>eTSEw6eOZwdGmeB`W9FS&+uHk@Gx3qpx9_7 zf>4*f(WB~qQNZrjT$+TPM(enov89ggRRLhwc5nakbMh{PPlywdL8N)G)=zsmQXF1KU6j~BTx4!UIaEd)x8 z+iT0NHR`G&oTQx;5t7DNLDZ&8r~Xla(s@+IbzY-tVGP7@YnG?6W)JD*c>HXCqwo2s zJLKCMd7#mJJ7j(&SEQNyQr|b^@+emLZfgU|Sv3C7H>(+9dID9$6s&jA=%+(9Lu%~L zk(gyw&vnj_ z45eq#c6B7k!o{-#_+xC0dm1^z@JCB!KY{!f27xC-gZtSOi4YRGk<}rb+u#u7vXvo` z7l73p%V7pXQCr^>{!whJAG2osWddaEDz~$%VCZ z5lTvkiAt-GqB4=$^H1pwH|2Uz^NLy`S+Lz{nM{zNU6WNR&q5$ao~N@7$}#mxCWEAwP>JknV)O3l5mReUUfGhc>AlUD}BW0D`PZ;z4@9}V0ciV9;*)n6N-lO8$ z?6_e&ou%RyNnGsIH{~VMkE8cbIg7Jvv#Q1YCfiBXe%uul8a?lUz_=!1&Osr5&cz7p zM>3Qgzy{JoT8~E#XUuAq97e`k2hhI}s28sTh;e+MM%fs1Rzd)rpOLj?eTmZNF*Ts4 zuOh%n&VXHRkM)bkGe)qfNBL~F#!eY&H|IM$-+xKIXfEG_Cyb;yiZ)PvL&o)yQ3Z-e z`DA;c`8T8IeR{Too_!)D?(uX7FKh5{ zNGar57V`j6npH%Nb|15IBjcyqma&I~QMaG-6|D=QleYm5(5eps!xr~fc!U!(6*X2H z^1W*NB$hhC1?7f`7`r&EUl#^z;IOp+8A&}U3WE4!$EIh(; ziK~>KYVqa;`(4tBc94;{M_tWl{RA32r6w>bTzhkzWvM0cgNk-pPKa)@_YSQeg;`?P za}ejy9lO4q9yJbT4&umx6vi2Xy8aVk>c_KrqOnYE%b=Nf@K4q*YHYvL>o9}mT99+Q zLONMmXG8}AC^17!q?*5Z%wJ@->8rZK6KnCZpxQvyHHgyB6$H_WsK!M72qOCh%l&z@ zyN4rVhGO$3dO@VA@n!=;@_eS(Jrrx1_(>MFSYJ6=dKOP984`ZBGaS|p{4goX z^~p)9ps^G*L24bUm0GRfl?rxWrC7<}PI2nO}EE za^KxT?&KPN)O7|q|1{(W1KHKIOTw@HFVf(vsN_uETD7*K@85sNLR8kKwZpN}fHGwIDX+!x-y6Uiv`J?xb)#vp$A~)=C^;=Dy-${Eq#N^I3AK zD)nr4KQYTE$=G~KD0S`V`z2bn_i<<8o+6pL$&|YIv-8D>l>C7NGJ;!qsxD^kk08H* zRxP(Lv{Rk^jUuxCh_)TxQhEV-@(D~kpMZPY;FZs8I|Q&y zt=Y9@%>D7-Yv+ebx=UbBQp_nbn<#frO?~(bFuQGq%tY<3D z15c#pbN|h@!_6g&rGp!C6hxkop|K@Z9DXS_vran`C0lI=U1_J znse@}Y%h9CL`KAqa)X8U?B!X{bsGEE9`OmVgEE?vzZP!nM*1QD+T~LiJ#>+vB}%r_ z8ePQD;yW(@()WilDTi^6hMsyYzX;v3uJiQ7<*uyzJnL-OD5 zMEhoUM}PEtA83~&#-a!uwJE1sOQl6wokC-iDSx{qXVSEL}j34`s|u6Rwn+vLtkXmuzb0t<5IB*ioH8?g%=!LHYX;?U{k z=xNq@syZ0~YniC!ipqfSan<&ohkX3U;CE4CDni`yX>54<3j6fXIB4DeJ2|0LiH-LH zD;)o7t=@Gf*M|r50*PDL=bW+IJ$ZiZ(d}y{3iYm=&$I3PY9T!(c?xyWeiRErYGLD~dU19U?D!Mz)%yJH=^1j<;M4gjc(CcJC}5UJMh#(;N^$6{AKcF6 zsA;XUoqigv6XDN8SgxVcy)TD^ZIyLhg1B z1QVpn zrTcb8X6U}%ZI!{X`*rTkD2}>(JC@4`xl-KF^Xr4o{i8=Hb(fJ=BioUVl=^FHBVMav zq`B?r=jsRgJke?GcMjthq)O{JtRz9f!PtGupHwo%yZM3+vvUO@_|0Fj@>Kx>`sB?M zGnK!lt|gcsIbDj8nat%s3Z7)Kx2G=ur^y7MQ)j9&^AEn7P2M<|b2)+~3eyFYa$ldv z?8{m$Vc;dMgztb4`)2mUo8?&^+y0JAOyAYJ_N(>qQMm3*mc(@CCZi*=NV$=PVzrk< zp@A+&ce176m`egm)oR6GVAwo8X#Pz+jg|ji_&U1w*wl&;G;DqfJ+VUVu`;o*mFp`B z@3g9}Qk2-A;p6M(yIkUm8-v3$;FUfF%oD5<)#_|6@;vbtN{n2hzMi7LLQCWt&P|IY zu(?`ld)$kq$>t#{s2;KLJ z7L(hbTYWEScm0TR^o)w1GAjOoQSo_FQWJtlRTA>y zTuFa{WVY*Gc1O0}XI0#6(k{Cp8}}q}oBRNl#9p3_eL!Ld(HoOkUpDqzD*tH`ce)+d zc2aT;ksFU^W@S`7YR-C7P7Vs97kEaZ;Ykdkrz{_rX!s8mU{Us@j?27}dW91|DY5Q> zCj=m~h;9|urTM8gpiAFq8$=4e!>5o2zQY2kJ943oqVV+A^C{7-Y@LDDy75>$e8RY9 z7RiOLip*jlJsSQ})3nE?9EId4xG?2bEfDP319sGZuK@RV0Q}Y^8)bDVuo5o__V;Cj2_5hv&xDb44upz)!^ieys%87C8v9<5-D|Acy+C!YRAG?KDthYAdRBrLA>k zY-KA!2N@vz?JMcDzvI2=N#XeEfm$?}wT=epB4H;~X7{pliO|g#;ITh=K<#C>TIZ`0 zWH0j{*p{a#jdbdZg!3b3sA7b!9VtR_FGltPdpo=OUr5MEuT7n;%5~}oU(MxU&&cg* zcqLVNNI$*v;&}NTp?gl911_ahU>OKJ| zV*emNhQ&|wKCUy~V?6=`Kvd7ltu+m50}_R^%ZOBjGj!tCCQ%Qy*JGpjU3&s&3JjlFp=b@e8WvJQX8A)F&YnisW=v9_sChg0=_afdlcqQ|sp z_FX^^sBfR9%K4TLgN|=w+a~bhMafo(BdDdXZ!EP%l&o=Jo6n>ZuguZC<>`$=q| z%8k7B?fDF8<09cg!J~qouEqtfI=X?3B1|jmbruD&(G?sf{INUN=10ey!6##bZ}L6* z>sY@t9(hMqpA~W z0M9SnYA(1z@x)Z^mHZ+zw797+otlcg;M+)pMGeERdSX4#tDPI+@cW`Y`2F@z(pu#s z6@v_dcm?GlJTg3j?#dq5Jg^b^6)#?8_2lM%G!Ik!!@?x2cu6q{;W2s)bDa<)Lum)x z;l;#{W;7}u>M`>FX`jlki6p(q`Y#9*QAC=4RPJN&P&4)ar=4F3tYpb3=Xln2nQ~s{ z>*!Ye{c^6g%dz_rmwpJbcOpA0obNnT3Zlm$TDbRWzy(dW0&Dm=+D%JW9#unDXB{?X z<36T%pUqrsELZYmCBJ}Q=HTi?L>HOwFdT!zgdE-|YbG8PCe z!pu}(qfb5M;FEbeOBW94Ci*2@Pg<=UYW|Ew+4rmn-~|+hTY<4qG=lb_zP0Aztttx) z!|ZrvIh%}`KdGwd%QNk^Wyg(FzGO!ztW*(YN6;81m~Jh^t@D=5B0pv zHlsZ+x0>^NUUc(^JufrNSv@Zc%`3WJVzn~lOM2dw+Wfh^0|Ivj1b`Y4yv=qJ&M=AG z%Y++DVud<{M97rIhZ&JPf(9g*v4;dWfa`4YmueIKmrC#yeEuOq_fwhB_N%SclP4Yr zBQ7&Mg95Q9t#Ui9U?XpW1A4Dmi??eOTtit=fj-OpE7VR#g<+IYFo|?r%zUU4*P5cA zE)#V9mh1!_*VlAW{%hc~fS403~JvIiLa~ zE818z7MfqYnfqYD8SwHD^S%wjmd?V%PleL|5$11MWf^#&)k*(< zl)B3(D9(0%EuZQ9t-U(Ga+7pEM|FOCw)0PukKVYY^Vk<`G9Ok2rSsdbRGnX}8d@uz zUuzDwI{!IUiIRUmu|S}|H#D0&)=NKoWJc+t$6pbcKTIta%r7)Q6+W*59B!fMvsPcv z;*p^`87i_lkp^^IRvQJ^QdUjHQ3^7ew|b4HbEAyr0?E-c6>pJ`(OgCMQqRh0R;q$B zn*P>k{-(N+nTkshdXjyd8ckZOn+KsHy_rwXlRx4mBd;v@gp8)(j+m=y1~VY0O<2+u znIdlxP>SBO=sBg5S;;D}K(5O8B|kHkZwksHJ`C?!Nvp(V!szdf33jCBoBik~dHRP- zFeG$riXJ?B-WPG-C((lg7xY;MQ_qK2L31g*hBg+*%FUbPLwuBjG`@$Odc4Zbid;ao*eUct-s-z~Zm)W_UXiVb`Nnoo zWX4*r?|;sIcU#|2kWY5=;gn_nA^aMiwft**m!s2&W!nDf#)HS^j*|eQMPGzu&Lx0o zQ_$F=mu*JyyaW{#D}?9`g3h56Idz-Vji!=FCUtVVC4^|u_*LhovHi%fQ*2*%X?4%@ zA^BVWsWe{dwBcJ(LV|9{h7aAhBD;kmSEP%Q(6bUbbV|JHMKTd7417LvA`IlIASb|e zrj;~|B=I#f(Mrt*8r_gCdd#X1H=H{eU~t*jvPXn}Awfn}&r+v}qDtmPrhpB^db?B# zl67WxbkTE|5`gjHbhaRj+g`y%&sr{d@%e#zL<^r+cp09!0q-4L6z!Gi4?LnkDp5s? zo*-jt84r)}0A!a-p^QX-W3cS-^aoy5nJqCJWZuc6ie~W;Vm_8_?b(F197#nO2+idg zaQ!Dgrp;Owkh-Y&wI+l=t8fIG|6eiCWf%uGT1eyg`esReqpbQuR(+LHA6A~SoKIHY z@BUeR4JFhk=RN%k^GyHNa|tzPXX=A$TAS_IESUj8WOVYOm!aU**{_Bflxn~lQq6@{ zHUBNu45JzZsv*9V)FbD?3H5A{InMN^zpAGP zuX5-D`;}CHGFQB4993i^rv5L9=6zHL;8A;|XGATzkGdq7>zbw1*?Wuk@a?H@Aw`!9 zmZ5XETAkbdHl4db)pqFOZbFy9BA zvNo(f=HYfMU9^+kC*5>(ceA&sH+v839cy)lW!J;~C0?)|vJ2}TntMf_;ziGIqpiWx z);!u0P+S!<>WZHtMeKaI89vUV@wO7ehd6eS#*}9-jPg=S79oduoFM77JWIM;7sH^5 z(%bWecwcW$=8Fij*HXWfpf(ZUqn1WOEeUdM5qmi%QYK)w?5+^j7A9+^E>gAE**#4QwX;Q>**RdVvGqQ#voQq4}OtVW;vHak&D6Ub9QkloUN8k zb98UU{lVTox?^NQ7x&Fb8lW@n^ZV6KFRxYZ{#vG%FE%y`-EDc#IAmXrrdm3czZ_j$ zVnr^8H-=%{A~n6-=n#OR|1}?}4qA?PkSb2L**T-MrES<+;h!TX(udl;sdJ)-9Fa45 z%uS7x1if|Y1m;dw#W@>U6%@)NR&JkG?@&p`)&Q%BXxgFGU#M~^9WqgGVQaNN50 zvRj{{Vj7G_OsZPJd0&&U(Xx}Mri~Pexq|#wc;ITi>|97ZGS&C2UR{q380wVpiZc3@ za~TNN+IDlruhVIU4Lw;?&Ry4}>-RDb$oQZOxYHXAg?!VNjvOWeIIZqo*)lz%z2rLH z#an2gupxkgYrs^!oFGOMGtI=YTx7o+%*o&o=6#U2AyT*;=8Uc3#(^z?K{!7#SFr5V zrLxs_mikcG5*SDe2$QkhEo;n%!lMN@1S@@M2#hrdacewW&I@M>-43|PRw`IdG1%1k z6t6VR?^Q~>TAhy(X-jW(vj?=g3)D;Hn8e=Pym!7KRTLrOT!>TS2HAhI_vFGaXF+uG zD6lS)O>VN!v)J&Ymxmiui?N+>qy8#40=fGQ48?rPPSFvJ6=Ly{!S7h$65s?BfZnYv zA6O48pG|}thN5OYPiyBL#K`=sHFskEr%%XVf}A;%|KxZO#xU4{s|DQJOl*u(#C&pq zzx@2j>9PTwII%p>qIPHZI*-|U3#oYqXom}#^tROe*{`g{ULLA=Q6L{FQuadH(mvI( zzRDd>@);&TTdJI*l$${v)d=#*#G~{FUEv3x`#o##IoIb&E;`Ey=Etwjg~LrXA)^H? zP$3tTx5pFE14EtLnPBl8$=Ddsi<@4>~3ykaWd~cP5+OUeQKwcwj0o*GK0{n>U z{e1i-P!ClMFt5feg0s+CWD>tZ7uFNw>JFKd>|##QV@|%vZ#S+T3V@g^VfD<0<*5LP zqTQB=1xSHm&X|FSga1nwA8!rdy=>7>%SEJAO(eO?L>+gK02|MYtwL;VFrVSBYThfA%chA91-De$ ztP%ADfy#!~}p^x0CX0|${;Z!A5!$OFb5L3^P%R_OiA7T_( zn$gz*re#|IF4F`mNf*8FM>V~}qO2F2R{tNeK&dh(<|x~lyp^|f(J%fWkEt$J*zAe616g4vVjbce0zrEP4M?Y*Q4%%e=1sSU` z2i6|^ITfIVzRb-phNz>1C5^$Z?Uf_8gvMj>9Q=QOKxslnCSj}p~d*j}w|YgEh*Oq-=o`&6IQSVv{Yn!=8jj(!6G z;3&4c`^Im=H;Pa7kg)}@DiCjF7(yYIP!F40toyV&38BEofyC;MTRdL$Xj2Z65hI@@ zAK@*!d$gJoYuJ?|c811n4{lE3E{+-5K|%aGG5D$w4)ips1a3g4g3p5`oAk|x$*R?3 zi;7;+;28uA4wi6rNiabK#}36uUdH!cGZg86+zd4_Lt7&s(87#V|8G{G{4zU5Yfd&c z8F2U5T6oEJ?GxdXoG_*Tk7J80kTJ>7O4c&HYG_(!XxaIV^YpRfF@Uts&;K-^dNA<3~Q**=*((Okv_|q za6DOX%U1u@>h+t$McG$`RA?XeQ6dwfGVU+y+7jJkkFLovniL-p%iVnQ#)AV=EUp|T)d}^LV zZ}se7FvQIJ80j%2!dNiXwAa8?;*Sp3P1dNohZI@BrMHbb3CJ!wK;DqCN|7q~lHtpX zs%RXW$JQ3>*|B_c#iPt11Exw*D9gWWI!Bng-3^@B`wozbnxr zZ?y=A85vTjhXRIZxD5)prj%P~x!gi=W$&9M`%Br1VN4ghtuPp?87kWfZfRX{EfXCy zI*jKP3rMWS#PZZQj4@eTe5T#}dYT9(RCIP|2Jb{ailP`ksNjnApJ-1u>L7e@6P^_@ zoqU_l>W+=(`BM~`;cDrNLk(%>DVp&ctNiQ)b<>B*WbLkvdK{TK0SJhGMal&7K2Bb> zy@v8|QpS_W$WDSU)Sxico3ovj7g&Or4^ziO+7->w#(w(aoNo)xF~8o|L%5VL=S~1e z;&|3pHz^JE1)h=KSoE~-XPA<_s`^j2UQz%H!%K@^JW+e337Xuot$rsE0UwMEB8bMT z;*?rW;|SONHePhc8nY6!eez>h8tE%rJ${{?#XVxl6nlfX#I}gxUi-13zX0DgZ;0Ji zZh;QS>y90|11m6CLhym{H54CwF2H}wT#FPDoKr7ky&j*Q6F_~`(c%c`#-+Kn<)z{4 z{KlnDLT}mc?Ca~=-ZIrb(MObmMI)Atu1{U*>oOCEUE-O4v}2R)>KqoV-+_OSgZ;@M zOI2k6U1u^lZfoi!gWopQ8GW_5mL_u|gK-fH`5(X1?h_wH@av!{A$4^{>N3fhYc%9{ zy%6muIuPo7S;^u~GPe>E(JNXU3&o%-u5SnB<7vu#{=Y;y=yGRzHOng zvld)i*fjQm5|Njs?&nLR8qlQAAk6>&+iiLMD(aO%FnC$dlgTsCSC$UnJK^bZz&v z-t9CFb?xGYFam~B?WA+?ORmq^7>ZwN*B$G1<1Mq8%0hEmm2Rk1e#>nNknkh81#$Ld z04a-ihFk}`0?XE{-MMEberGP zq5TS~^y@_dk5$#(lj_jy&qn_1YM6?@S_@Yk*CI_R+`v5wMB%oZJ7FKCreyQ-xd*Qx z{>t2f6n=?kkPDjHCm@$sguQ;k*0(Ou#736;%3t70Hqv<*KBt}sb69B|T~cXm)|SHb zX>{V4Kjhg|bD9q#b6LL1Sc%i6b!KuF&{(`u%HG(Fy7>SM5y&(#m|o*+vD-RtyjPDG z&B7%p8~b{G^w`W@aEPZ^kNb4gkN6`PimOZ|iSO9}-d|m%)+?ZPU1&YB)m#@@kE40K z#CklJ8qs;4c}D!o^oZ3VbfxgYn$xuz69itmxH>qRcsP~6Zxh#j)f*W{48B?j#z-fl z(jIHXtwCL*j}7GKLWNm{gDcjS%O$sY3zB^yZStT*zOjYNUXm@G<$ZR`J$lJeXIC0Y zi^U;k{oKrln$>8uXK&rV{hMIr$cEgH_@&b906qj2`iY3*u8> z!HMF0SK$0kYyy_DbzfCv9C~NDk+aOnFh{9mOwi!8Uk}-N37eN7!TtuW!zi*01Pdi= zXbO{4XLO%Ex-lo3@@aL5GHg+NZrAN&7R5brmHcyRG&NkSE69FZE8mXT!*~L%Q}k#h zO|Z^{b|gg>07oUaZ;s-P(qgGBLZxAD&W4ak9wrBak&MEMLHr|rW z#K#S$fn+2#H=FI>7{%{#)gtz-|Mu_;U?OI@9S|$G0U@yf=+^$X^Z?=E!J&y1nU}(7 z%ld!(3nwUsmJXs`f#($e&M1gLN`nTYtL=J4L17azfUK`5Aqw1_8Rnl@t<3mVbbVy; z{szEUx-ncsL|r@G~hfOR94jD$*J z4zfrke3PHl9=y@@u(j8LEHB8YcI_~xAb#m*30>Bh=d7}1F86{MqjQ+l=p61_O8S(! z`*rijaP5#`j{)~XXao)dpbsI$I^4)bGJav|9B>_195?vnGfDDn$L^`348;VI46Zfr zKS##Et+F{c^)@ETr&C^f=@rQ!Y%xntr0#+bxSpT}Ifs~p3F_*HgMvbioLrVTP7AIc zD%%DB1i9u73Yld1u~{2uHF;JyZ+lTG9*#0fP|L~qxBIU2Z|hn*@f*H&I~9#)^hmSq z3MKLn+l77riDlX?IQj-P#tM#EKWXd7CWEkO&a1JymMBotF%}j2&HgdB4)rdzdmCOV zuB9EsDq7u7)q^uUHhQR!R%a#Wh6hIv<>CAMkQV-N+?NvR&JR<5GrCh0CQR;%5#`%t z1gk)sx>u;@}R6RHNM zTAkTWr7jU?>t)fTlc*fYeqpzGVIPEe2p2%<)L7Pc5hG0vy@%mW@V z0S!ppa+}rP2R3tC80%gj*sC-c{eCVP zawFH8n^EU9yoG#~YXu+O=IbQ2dJ7-qUGkjI`MnEwgLjEwo!#e z`Qv#b^)yRW=T;{!L2eSJj&%=$UozLN$7U2Z=(!n$x5j);3EhP;Jg3dLa&Tu8SnpXX zS8V#Sod|pkU#?Ms>0Zg50GOkbJ!$Cf^lDmy);&|mZDatg;&jEh3cuPTIj%ZXHcyvs z=($Un46f+66E#jbem@OD0otYkG|5sBACMWh?jlH)#Z*vvR*tRHSMClk7h4kXE|+62 zznVUYX4>ym&pM*P!G)m3VLpXJlmh{>n!iA#FPvFO`rg>4$KO;|j{~AY^gGv>uO1Tj z`cnrR9lp-SK9Ct{)RbFoB6-N#>s#chnC$1P!=Nq^E-<&NY-7om+D38GhKnBnWsvXS zjcb|`YKwvYF{vp>p1Lx5tkdCabIV;I7LccAohHrJYb1~J_KJ|4L6KZRr)!n&=~nNO zjbR-VQphrC2RZzsObfxPVy;3`dwhP3 zxADrkMLy4(8s$BP-2p@XF)?J#oHOE^F@q|*9ly;MJxL{s8Dd7*8J4%VzdgqSZ%#f1 zQH61_9=k}ds37utpdAlq9pURlts*{iMs;go##xtm8}7c!eEnKk!U#oBVilcV%m3Cx zluzZO|JyFwlfyyzesQwKp)O+L3Qy{#knw$Z80G*l}6u6 zijVWAtb`-R>?fTw1Hc1oXBSAgtVIN2QljUN~!24+KM8QPQ` zs8WWE-RM_%%O{-~=~B{iq(Qo4KXSzR?)Vh+7>;MtKxcIKp}8`?&>nIe6*qp5JtLIB zcJYHa3|?-fu_`Dm+&1&Cpc!F~Y-R+NCC4s{=a=z?TS29<(tI@YaWx-9#{5Emd|_^= zVt#Jq9KGV=$P}Nk4d3Oahq`5~eaz=nD~RJ7!`JJvOLI9mz`vIk>c-^&e^|(VPcDFn zlFMjKiZDA=@~s{d_+a9gBjo8=fKugv>G89_1ub4_w3=t5t}n}a2t{?(z*^JG?;CQv zO#PW2chI&TqltLF$!{SUN0TAdaN-oa@O!4<#KgxXF>^O_XMHj*{0f*3 zqR45wa56lb!bMDhS{9P;W2n>QVydf6o?AxT(1{BQs0dd8PdCS>+2`fJjxBjxAt_j4 zzGYr|(TOxL9U6BS3I5IBQPN%!X3Ax$R4q9rTum4KiPK+n%H9HEhj?L`O;N zd447o2)Jk{M9yu0cPS_Q7LgeKPf_ww%LeFpC{c%RMt?4YBKq`4$@pzSU3v?5EF-#iyhI;AZ7R1W2*_6x4-&vSy*% zs!B8at6eM#QrSC+rJH2DlhsK2_$Qpivf(1iY;B#5og;MMUNbf z3~qJ(Z+G%@B;$1M)aa3~BZCyfvDFpJd^M`_S*aG6kZWGIt_1CimQwfm+>Mht>$&M& z&x-l{HJLtEEPQ&l+ktC^sLf*l-7j}mqBd6__#-!iQo$G{$CfxpH{i|_ zrs^m5$QOG2r!uE2WDHB36%BR~Ws3`rFEZrJ?V>5x?QKlx1tfl`$H8=azPJ{W4Zd4# zU+IbK$x#`UR6kc4q8ySX0O;?JM!hBfDDn~#!UQ;rHvxx<*|6!bDzDN&%V z!kuD*I*#;s{ai*b_+PFW%>icYmSQiQ8=9q*;;B3)0K#Xi=(NNGbA{MaR}8sOn{^XT zC}Ktb(~aXw)eB-ezTk8ULfXs?m9&Q9arqu9L2&Y@^aoMeu+ALfY1Q^C^eyq{?n@PP z=H!G6Yx}u*?YFOCu|O%+w?+LbMF)}9!_JDdr7n?Wc*QWt@F(#Tg0|JL1-aA{pW;sC z!}%Y!U;xz+qT+-~R5(u0)_EYjxSAQz=z(cglmnSMOBd@du#}~X#b_*_Wumn_l#|Eu z1nl)LAy7on7#QSu{w2MH9DY~nZC93x$7r>Yd>*e;d7WRzo>)GC5u5%MvIm8l(&`{m zSt)^1rNt*Slu;|&kr6G@3T+C%=^6ay&EPjZgWtRv{HAB{o3{tQ>2rgQMnQ3E_ItIxHv{!=FU%L z5P?#J1=3*)_1FdVpm5lo3=?L}X>0=2OkCy#)Me@ZsDTDbA?ahPw3O(q6+4}rNUYPf z2aIKp)UpCued2|&Qv9Q#WfeHcGU|v=b&0N@*z`d^#{#DLYqlNTLRu{cl0jAwTdd#` znofR;Bnxk_PbKP*LK#Xw&2ZgGOZ7_Y05@gP<#GvEG3fqB#+3S=G8-^o{Ixoxo|H7% z@1?ru{V?jBJ7JJ0driC?;5wPHzAqbIl)S6~PyHpmiM?!y0ezJX%E)GtKznycd+~zDMoXfrR1#wa=ka6u zR||u(U=+_Gqw%lyoS2<%VK~ zx<}i&u9U6fb9@HPSsFd+n)h-1fuT8^v7T1#e&J1PFK;B?&;u4~{90fR5@fZei~cv0 zxKkxgAIcrvI}9j(EVjgha6 z>CVN;XIQ7ak!_>U{kKD1aWhNyzn_@ z|1~(eKzpP&nAq#Abikk4>?=Pn?DdwAPx&Glp1CDK(JoDS-IPs#g*%*u_aw{EO!IIA+&jVmT-Cq2e8vj|*&z#|r(a#FP z1ALxzgrQ$pPUmIl7oH&x4E@3(^1#q9bny@>VY{mdf}5Pbf)mj;JwA!Bp?>WkF&=Rc zoFfzPnXI7S9aN_`TSE(?##piK)dK8Dr_HvfK7CX{WF4{q^3 z|AYIea*oO6FC?KW`egkVe4HbJRm4#YQ`7q6H(n>tmMVq;} z-F46=D^2C+N}VpcjS^5Vu&5!wJ*|;H^ zCx^yqrfZeV2ob#Ay$9maVHWXjaXQhVhO1LV6PBt=<|={^2&Toy<@%h>(Zk0g1?JwB z*%GPS>sK$V@)RY0@3PgfW!KP^zhkv6+ z=wzX#-GWAlRSG&zonro^yCL&sboFFIMpeitYdxR9Hsmg#_OI*b12bnP?h58`%W#dQ zOCjT<0K(+N*L|WNVMOy$A7LdChlMp(=`b%dob4c~(g`{~8o&$G1Zf^v7sH(8nBO?a zl_56OS?T#oi{1k^52joEOJGvF+J57*U1kh!uZ~qV`Wpf(mxRurEWZ3sTjD?e;@aIu z8hD3*YUkT-pK@>A5NIcof(d6?TdJ+F(NJ~$U_E@cs{057u(CmJHKO`sPU8X!y{Ogo zrCCv$OSi}kl@}%!Nq=RdS)9%Cfh2O#kRWGRcc^O#M4XseOyES!=y|iz^ zQS;rx0)?coM4iGUgbsu_xuw`mRWnT-H?jW~2~60F3%Sjf1hzX`fr!82?zVY9s=a$< z|HuV#UxBh7^yBRgiw>j~nR?$TZ5(7q6`4r<>K+ z9m_)bg%cmh%VuCMX*#7$3DfQR4=uA$>WaO53C-Dp5*X3Udr|+p?f#Gn5d&5-L{NUE?|itLt>p`FAPQKS&Nz`!pvvRE?_V{Zc@1 zI^SZP^IQ}jRJ|53{N^I-MkV9pMg?lW4UsLDWxdYq+lzr$QbrT6CiVk?3!D zj@3-mUe-j#v^sjIesmSti6h$V6FVZLIvre4j3>jzV!(AN@UB^^Q5Sxr;C0`j?8X+uvma2OK}L06L_Kd0o zPt@E_0G5z(04_PF;KYl5#nEG7_vwcJD==)Rv^=`o9u7d~4#O;)o3{GU=`Ss}qbxG4 zyJGXx*Hl|6Er2Tn<4p>9nGYNxtu-B#G+I+5%r#aXa}U2(f6UP+1<1JseN$!8UeT4k zLNUm_PVvu06QD=DB`zsBe&#?sA4UOHF)jX@0{~HRa+`Cg-XEJ_-lduuLO0B1KUK{n z<7BEtNE3Hm{!3YPA6-&u?2|(+$cYw;eg7bsvwg~vS?5*6r=};_7vMRwYZIy;f1J|k zKMz?daYRAcrfF8vdYC^V>N?IxaIp=OHS5fQ2Y+JWGzc zom!pXjALtSkJz;b*7K-3#OX8X+w|y7E>W`Wlp7MUrk2+KCGi8(-~ zcQA>4H>V$rc}^=4U~e;@L{$m*ST>_7H)-8$UG4v)4kdxbdF8d?tF+hG*6p+c*`J1T zL}c*sHN?1;r(QK~G*i{be|Yc+AD%uwt%@ss>c13xICkH(K!C#lfdFTGNVo#&qSNR# zE2Uq$sMzX1z@d`?yoe7BaG3FzFx}+1l}EPtM2Vs}!u<9t-AgrJJqjU^B(2Xo!xB`@CGk^FOj4md$XcNL<=jh5?ExymyO9jXh;K15E zf}weCGjCca8;XNoqC`YRxkzwEp}LbSOLLdkUfxj+WF!LDWlA!^TTLO<%Sd#@w3kei}^h`VX&X?-%sU!cPeBX17m5!{+e`h7EE`DymaFj{O2=uTjhb-%weDO*}l)XYs; z6XD@VD-~m$bt!hjjeeqbA)!yS1e$EAJf0f;#+sHug1KZNl)`5ex)mZ4nQ~wgmWe{p zGCpzP#j;=q%sbF6W3>-1540EBER@zJ$kSY_U5;a!C!Kjxd<7t9*&yjLJsaT0&Ar-Z zd|tNY4KPw;>`Eu2D2&bE$|gSqrf)0^!@Ua>zJXp96Hz7e%J7O=Z5^XnWy#5)vl+p& z_MFTI=W!qM9F3Xu9MY*>>OvJJlV~T=+?4}p3^{I8Q_*04;j_-}=iFy=wGLi}lGiH~hcT`StRPzoSH?R8^7dNS&b`+~|Q*Wo}OD zRO|hy^==nl7$4kU%g^GEu!FKCK5{K~kH&S6B=u7jq2*B?)!p{!-Ci415$P*-L)wg) z!4w8cMP$c}>3~zZJsY`Qpm5BL+45ryi0L!L7n($;-b)$7=k|?jjJD;#?^s99pO^=<>Art&j7)L6ZFM-0^ZbU$%9ONMacjRM|mC~ z&jmnj@woJp5E}xJzJ_l`tdBs_H$&736wXirIe1IDV2^J5c@zYT;y&ER+ZPNqn^5d- zwF$CJ<(Yq1FJpMI&|5~w$b8{K(8P8;T9~iN6KJxR{wch07-$*B3>sR8%zGqL2b;0n zSlhLE@#=eP)9G<-xhRj-7arf4@P^&y_sE<&wZ&zVL=h51cfVnVqz3qQ zDI&kUVO}h6iZA6Ax=oGdyS-v658ykU%OmWu>RGaY1jTbS4_v^f_DeFuS=W&!AeOPX zT}B9kbKoVD*N)>~&EsDMYj$Uj`^tUG6kfp}juU)aF{4B97NO<0NOg$d7MjYMV+Q_Q zvPq5ZpvXcHW5wLmmb{aHdhRozr5*vy;)BwxQ4Jfy-F8EEcbEa#IUHJD>hmud`aEZsTUdgaJJL*nJuE1e&Qds|Ht(Cu!q&I3w&`UO&w_9mLB^$3dTCY-#d8PF%V>f>%+2eo1gOBYs z3y^mqRCWE;A;6s0Az`63;b9JvF%_6YRM7$E0QrsH3v7|jT>)(2a!L-D`6a81+bg%Q zR<{yX|3%5szRAQ)t|2FP8j6mj#oXO=1PNTB;?UqVH;>kbeMoj_%sqvb9@0aq?<){|!XM zWp{_)9_+n3og{#lx|e76J-a@$@7bBM-g~dm8*?%%G(WRKB@3a6WQlU9SxYpNmRY0d zgsL@aDlafXR7B!_fp#0C2mNVYTSsD;Zzeq8=GvhKJeH9yc!8LqUNk7N^5>&kmyT8cnGRiJWMx zF(-bl>cM*>S3luOMeo9;=U{+;B#lrBHBI2R)_hp9aVyM$`~)v%+L5RuLt*D?FWalx zY^PLvav}pn%q3zTwO>EvllF4|k_4plH|?0OaPGF5rz=ACAA&1Lwj)esR#U#nJj%Mv^yi{Xe@awm z@*!~gnuDk>wcmUI`QSrRzl>ejKFIM!WT;xo5ZM1fmu7_*5V7D2S*}?b6jGx2vtrPp zdscW*r6`=zXnzn?>twGCS2P?-C!YIOD`o+9mrZz_}Ax!))ss|!`K_;>R|0E(2p8NxP z6>arOIKWS3oSW|Iu3DsFs>+_K)P+JBKa@fV?=%RkWpi_zdAN}+Qe-~)JZ4;?UX88& zPUgvIPTjH`<`waU?@+XrnjgI*$jq+e+^*m9Xl4j(Ss%3oL+v9QdqXxuBsN3SOQg+USR4 z6vO!h(u<7fLb>%yk3X|o&Q_J@?SGV~K;;pwFq;E-jJid6B(of3&H#Z|CQi1oqHUswjxjlV z{-E-jhxxUNr!Hp%=X(maKgbBqLK4KTUe_SdYEoh+nB}lOh3RRDo*)_hg%eUE&BroT z{kgj;^J7^z(hmz2SoENm)dmmJZT7iFRuy+HB*@l{^2+fdB{`X#II1+&ygd<+aO5NQ zm=LQsdi7XDSE|~E>%J}!ciAc!D!KZc8)sLttYb560g-yi z*%##)+x>v7e(BCYRkRK;%ddNe ziEeeA2-QPB7pN-5{BEc=3sjZw+M0g?E73!i0SQ7ghcFl>=6nmJ2;;`U@bDWOfsy#F zFgAeCs!5w5AK?3)&U`3!A6EACj>Q!+oe-#3qXU5$9_5OGdi?U9bPwrr_*CZVW$VqD z49#FK80-ZDvxWHg3$yaE8=Ec8Mh42MM|#!&zvh7m*z&3DeIjEoGZ*=MP>ux@J`T!u zonc-lhh1H9BOsH6D(duxl%LRLYP*P^Q1Hy#Ay?eqMUmF_mnAgS2q zw<`LN%6t2)K$K8uv1)L2mGvztpkIxg;3~A$vo^s$T_A@^@)2nOI%hBJ^@d>pR=Wao z7YGxyk@C$kQeZ4uQtQQL`1PQ1CF(&wdyBm^HO#+cPykzO7nA%mU6V%u=#JREw2cFb<9> zLX$mTT+U-C_Dpf9`hBTbG@U}RSBp^>vvDod>c3!ge&Z)j)LVSfG&g_adZn%EhZ;q> z=v!#~i>``y#X7c=Ir~&rS##2U73t1gM&`0Dz_hEYeoO3Hr-X5% z#$*emyYE#&cL>c1P#z$Z*|{wIOnk^GhX1Ed7JTAEcfheu&%<}-K3u4L4syf$hT|aF zBRjL*65*DgN>%q*;ZE~41R=VyK6Zx_LmM}wcl~P28>DR?(s-JmCe7nhtuHPkJUj=C zL~zb#KYqS|muQ3H?ZY3x)gBPnR$CWcA*0gc&L;pAsBKpWnIpC?@%*1<`fJ#I70$fK zKwo-|&i^Q(QS9zyY6#AyeI@vf*c6=8WQ6W_R)ijN);N6W#;hpk?=hzw=aNmVGGnX1WJm0gVo}re3!Y%ND1E-EUxn zAYY6vTicDzTlf0&Hf1V7^pP`v2(=$2qv3zRxz)_up7|zI4@uA4YzhaAW7gz=;u_v& z(tSqrl=!5Q04|Jau~fEWxzBTGK_BDx*PYU*PYIkZ&0f(fJD%Pe2-RHk~_P z8Q=v_@{qGSxYb0jWovsVuhF-44-P-)oeI~*9iMj8@ZV3D=x@p;JaQDAILv}w2T&E^ z*Ryi|sk*uwgx<;Uk{5VkmNw_KmC~xHhCqC2fGv4coSL!qD zRL*s$&1mwoMp$L2`Q0xg@OheQ&|6OsMlIc>3L*$qiqUH_4Iw)9Bx)`XSj|igku1&l zrJZKg&O=ORW&8%Gf@D1ZexEV*Yai;-j!lR}_%~#%fm4iAB)6(~GvmqB?Z*XDNG>kv zwZK6ZLV9D6z2h?)Lym))>19@97ef>K=%umR?-@{20Ouc3N%(%JXTZDz{@4I8OL%zC zc#Q$+)p*YRsWam8+fR>l1jV4u+9@G?)+mgEF9pFcI_ZLOMB3x!H-zg1!8AQcO5{B% z5>HmpiH80J1Y2OY?IM#lTt`0x>19vx+CedW4rmAap3g9mxvhi>^6TaQWsy$hOdpbAM4saqA{5G)IE-s z5ou6c9ue{O5nBRfTe^1m9NS_uYXw0_P*5DS)=vPD+PDtJ>Wg`b&&`Sb-OYpNZLR)N zsssVxm*4Qm>niHvl0&OMSCSpAeoVYR@W*e+@ry(!XzU7bU_|$h_9aZ0(d8>SU~JI0 z?)8=I0wcEgjU&FUZMdOs6ui?^au5@P9KUCmS9`2Ada%Z)J(l1n()TZRZ(Ta#@GV&* zK|up`tF?NJJ8be>$FJ}8dGfEP#jj222pDe%u$H_c;Mp|qG7DwL^)wq9az0dFmvV5_ zV3pd(xF%i)6}QDVZkr(74gPT;+<@av@TqU>ZeQN!*fsTa0neLZmoc+8^%pcynfUzZ zE%7>=vIvQMNuPWevH7(?ht%2`{hflEwR-)r*Jc0_pk3QqFQDVa)>?lJKODBU3MShOd@YU~Xx|2Rlhrhct&+?&3w?R0PJ zet%w*KSpM#AHQRhACo=>vFBM?K4Xm_A1rAEBLPps#6`a71vdc?0pg4={H(t$;2sq) zX5iNYyV&0acFBubpo@=4tZuCi_xt~9v5NZKNfv7dkjO4pwGd^o_JXUi!E?-~J=`SA z4ZXHBFz9C_dKQph*3%S&5ve6)Bog~iLxfhgiQtEhb=FANS#W6db?(sPYLf&;bOIBC z#5p?I2ghXaiO*cdEq2*{p02J~xYY!;CfBaD?X&xPktY1{oSz&6iW!6%!(V|^0gN+`pkqvja zCemLK!gv)-<(%IrFu;rbEp?5N+1b_eHaqPLE-kXtF8g+p!jRZTFe}5z^%+WWs&;5Yis_Exj-lKIX2d1zqquDHE<0|?HVO~ZTCSH5=K?w$A`t__hfiY?|MT(gN&Ew@@iI-xef==A zEr6-Z%?=wzy*2Eu|IVzaQvpa9Rwm9CW8=wLMk>Oaux#J+K=5q=b6y9s8}n1E-S<&AjCn3o>?QgUGzlPQpF z2UcY}1A;3VRWols<8aq5U-VE-xLPJ=IFuqP9noj%rKpGn20GeeacK?DlNDTejKTLY zi3n4*KjUC=(-fmlWfdZm45%eci9MoH0G|}Ytl#bPG>74G(euHrrpV+Qw6xY66Ovvs9~>u)00S z?4K?NX~4W>XwPzpg2~LAu!G3#>0jaiFS8u{#x2E@{KzQ0FWSXFhAh88$%pLfUtjSx ziwj3GCqZ2Pe;;w>frvm{*U-%W72-060B3bjDOB(PpzKCl`Ory%-jf^HvkJhg)aHe$ z`Kmnh;4FNVpMbDP>Bd$YBJT;d8Xvv8wx)*QoVAJsfq7dCS0MF7rWMeWbsM9>8>t>* z2i)`v>ClaJX#J@()#!@dT`NfGq6|{1tix?}4@P>msAmbD0Fl{wve!C_sfHf$U;Z|azx29slw+uhPG2(!1$;)7MfXSp&*FOeLgKfmR=~R zGlPPv{IS3P6BGpPE`&i33YrHBQU!WYkQ^Q>$;9Q`*R?Z?f;OOK31t%x_QpZOvp5KR zl-G@e1OxR#KcFPXCdqId4pNN@4)U~GD5$D83JNI{wBetlpk~8DJiSp+rrP6Ckmwkw z3)b-{sKuhEBL86K74m61rDx{*fQZc9KkJ_P)8<$+-;H_v7Un^-D}#B8r*~tXuwWk9 zuCPJXPS0ST@ciCbCwv1NB0Pts6TYbzrumo4MmEBkY9kCkVIwH=dXQ={`u$oiw(q6x zkmbsQv~n}8sDqMw91O5pVJyU*`lT`6LG!ZN0-g<#UDCj}R09Rs2GW7r)VS#HggD{u ztcVh6L9N`f)fRKnA!lU#Q9<&g*P4zLP{8#7mH}G*LljK6`dR|E^Mdgk?Fz-B+$Q@) zb*WCB#mDu^O6u;|#>hL;u~}K{I^=llnpWgXYVrx4{GD`%{#ZwSwyRYjhtwd*Drb6Q zs=u>Ty5wsJuyBMkfoW1~p|d`{u>WFM8|ix&;XdnUSH+5GJ2W7uzSIm>@pC~TL_maOCP z)QUC6N)xk7^O^68+K3Y9^-BHeNmCb|H1+0_riLU{WbLqfEZMNqH$af0%!v*ofl%7L z*IIfI_3<8IM&c%RN^@$GoJxb>KF=dc2zn!Lo242UiTEf@P{(1glL&&~Kpv^dHv>|B zED%k-uHtC+689<*eYc#qz#LB2jC^+r^4)Vh1qbgyzI(bQ>HhdXz99`aoK4zNe{OlS z-J2R@?tCy?+#E_rky%8Q{<7#F37f;xa}s$`aH#Gncx12LhHHZVxq1U-ZB;_hArRzJ=L!(w!rKccZCGN2j8?3}~D{;M*C^(FqC061xNz90OM8BfC z2M+zn71^V}@USX69mCXu+pLsYD+L*G!S}3`JFJu{QXaEXW?3n-Nr_u2mr06h?S%D( zbTID3M6^Rx%t}5-1dJ1}PjM#HhKI5)Sun`G^UVHI9#x6>4Rqz0IPnr$016V_$}5aP zt5c_^wSaL5qtqH+V@I*k-Z9=X(W9fa>E%2ke@w?CF5_+9=b92HMvoht$jPduDS0bp zZNz6DF{jI`VR(5pqt~lvU7iJ;a+d)h@4w@f5G-P^xn*7GuX{<2E)D@fdKLE|yOE8$hHuO28Myt%{(v%#uQb{@^lauiWo+fY%kr_53Ie%GsX&%az}Q%6 ztUS3+!4IZ#uFetnbbZUx$C2%pSk&>5R@7qce;(r1fBsYdACw55WRw5PZ7O> zFgN;mEu+As6s-%4b?~zlV8$$~a@t3n-Al}U`*nzf?;fhu_ye|#ia)22QRx=>_H)vC zgE=sm1A{q;f4|$+TX!sPOBI$|(m%B|`}6^*cDK#!(~w1KNi^|opv48AQM-Q#TKv&* zwq_f?kN(cdY|R7`FYE+jCmNeQPYW4koW)jSslsk!Gp3onB-Un+N?8;ON18Wex>VCs z@I_gdqC3OdL|h=Y{_OqkbIsDL?4`;z=N%;V;_BuLbJV+16xTBY&9U7TN?oa|Q9lrQ zD=GqSD{Jw?^hQ`q>7r#`=BCYDd_Ttx>Nt{zD#C5d9g>nYw*Z4ZmoQ>IaY$(Z1&#c+ z+FJ&eqlJGW8d;b85u1>6Fv*pygFwEO?6GT)AF zc_w0vTb8L;sRW7Cg;32f31%RQzdT-y`~J^+$g^+3SZ%alrVEH{Kx&5H z2?a2yqW5*jSGuQb{@xG*LDnhW2~N|II}XDsg0?hQTRPa$kncdDAnvsXMSXj}UUC$R z$_2j-!MUJWrI<#CL`|9uzz0xRzgdBBw7!<_2}Uo?LLW2BgzHkQfus`;!^edYVibqMRM*| zzsURKH~y1!Nc;2AkmC^Mb0W*dSIbH)M)j_*2(*cxn`5~P&cMwb!^dNy8DqwS`1;Zs zhS3W4uphfGH(vd?ke5_K-~6fg#?=1&RnYMzOD|ot!YAwQo^urN-VS*_3XiKa)`dzo zD0t&p#iuRJALwgv4s3wdyUK!~NkjC2s?tSwS``ouTAIh=FFckCDoap7@WP$_hvn5g zQoiE2@?Vl z^+2*(e&s^aRpVx@NefoztQMxJ7Q(d9HE)Dki(entgEKPUl|mNO|61l7N%x}D*#|X+ zm&cgV%VO4y;(C;!Y0*3;J!I@nzK4w<2{nb6#bz<@J-H~VML*?CB0T84<5Wmzh5vr5OpS$-kw|8xW{)Z&%07bI{E*j~{;inN9e5;ArOU46D}2L9O+ z9&DbCf_PR-=+>*{M#TAp{(>MX@P$OsTa7~z^1dlWT|^s7z0Yp3o*F|X7|mfFjVbz} zAd!1vODu5~s#q+zc|21I?LSG4>7AIb^sO<2Cj#s~Li0r&{sw~m?TkF2Dj0BS!!^SY zD_uP!S;H*Rp4k8;rHJ<@a_|Dz$lV!lKYz59DEillx9k!cjltnrl;4Y#_RE`p-R{2 zp2G|Jv&=jFxx<`F>sT+rb+}zGd53H#Qwf#pk?8S7aiE5t81S25j>7_}Y&GoQM-pgS zs5?s1L8s}ze3!lsGY9nabvk|RR!{}XLfsU6>t;?V%HpDBFXqKkR>Ueg{goIsV zZoG}tvWk&L`kH^doaf8HwCxKjm^W&}j{J4h&%nYHzyRjAu2RncF;c-fi&5|@N<9RcIu^+{E8#kj@&_v=9qGGF zEJ*>Yy4{MAsP0p0H_A$sxZSixQ}1Zlhk6-hIiSn@*K_{SOs@8)k;R6ym@K)?(zN!c zYl?H5wLbxg<&CW2G2Lm^+BvTMG+ILt!*g6FPxJeKp=%S{_~$I5re@%G5+65nw*J=Mxt^KC$K?PsbWfJPvK-ljsK;6knf*gNl@2Nd6qEG+rFhpycg0%Z}EhG*o~%lvwYjeaKHFYhOXP#o33l|4=g9PTR5Lp zJ9m-lGD2@KL^lGJIb{J5OhH6p_-ceG!|YXlaX2qOQGF=Nf$}=i`fv33&3;R{(e7TpNNXg2i`2NdR3`I(A=G!R6&()!Ly zCr%i*(|$Z%U{iTx=MCc>YMP`9 zmz!vr$`bi0UQB7ClRePD z=*}b|jHY8+Zx71Kfk1R(526*a5c}Hd6vID{Ou=g ze1}zjVy-IF{SDs(>X|%+MGs=-McxnTJ{>H)@OIv*i^<^h5PqxSuME)*q&NmJ?&DdFz5|?eN4DUs*L@B|nD- zt9~eQ8oemElx(kJ-bDK%C<)T@uy{i&>R)$W>27p&ZU=pLSqjLIYLs>2^0SaoRU#Epk|K6LKHR(^@` z&1zn?`Lj<*VQs@^Lx&yBh@^Dr?@tAMjzrA|@VuIFX*^0t+Gb}wH?1qHXO z?iWschToNYR{ybQ4WIAGtl?Fus<-&G+%;F_t!i3zsC%9tqT!;2Dt(r#R(?}en^qmU zX$|S)Ycm~t+-mvrRR^k8)8^)tdy>zMzgl%N`P{_+kguuhH?P`x{T_a|sOPQM?_agE z>cdq#XMF^aM^&pDW;K)6PQHQ`M2Gy2-ypwxuXm~Uz1NTWle{0PTFD=vscP=kQ-SI( z`J9?nv`v0D*KE09RdQ$1Me=fJLer|vhbP`7BRI@r^m2Vr>mzawBPm$grPkwTd^VRr z?DwiS6B9GLJ|*|FR_;}jd)D!}xu3c2)w%{oX%#q{Mw~*r?$d8MOE6Y zt@z@UjIJF+N|s7pOSQSzpPWuCWZY`&wG|)ioQfa7pRA?^PQJBv8LnHRsb-wD+%( zG5D6-awVN8#SF!_Ld+fm^-c0-_q{G6j6i*hH7vATeQ(%iQ|-8o;bO~{F+7Z4FAFIj zx3m$hz{b?2a(#I#QDV(&S>dG@{&A=dn%?k8-(s`zUX?X^&>I;Dq=u&Q3h1VT#kRs6 zCQc1-XK)~IgGAkq()8TLFgzYTrZegI=xI#q}m`5 zz0tjIki44YvUGewp*15Gj4imP`de9kPnOQ+T2vc+_3tth8yV$ZnXZj=Zf~AE4!%C?s$%`KG zMg~#K&{RITGgI=}Fu9G*5~iqF+aa&+X2)4!a%F#tlYxFqSrp4hP|mVegOHOAT(0c9 zd;Agkhz6-#65$wGxg`3bxFpKDBMKOh8J0()F_drhE@NSy+#?YynUm#2k3?WCC{!!@ zljWHx1WCHk+=&F{IB!Jh@gvVh;y(W3iLyDl&0bi-gD&j)8SF4USDXYgv{Jp*yB$=F zsc{t!az0lm< zR5YC#ZaOI72q<`kVHjX!V8)pN!RvS{6iq5CDpE2lD=R83G&8)UlxC!sRF-6FLt0|q z@RGjIv(~d_HY5Dsi;m_S$RjU8KeLG%iW^fzdb4m)$@8 z#x)OSHn={^)(W74Gngg#Ee~8rg0ad|3NmvN;f8G#d!4z=4E=AgFv87%#|JAMgLoOi zHBK0o(Sz`wZCsItkJ(|w8Mw&Qju(du9`2Qj*b{_}nD_%;sBjapkLf z*+-Dvl7)UPJ1lz(eie>atXfoa&3t+Zd}6a5j*BnCLujkfq$T(S{*s08r*O8i!_qD2 zhr6OSVFU}>!IW)1dKqHc!3uuxl9A1%4o~52F<6wn)#cWs_+wl!EbuF}hSBY`2D1-* zjjdK|i0&K#pH*w)%EDXWtz504!_Y&oBcebEFCvO69D_?N?6vBy?$B?v%kAJ{#-~Qu zGEp-2Z7cTeJSbruJO$0K4BH-uDqYp(r{#FY#!E#LwCDq_{q5L&3#inqZCS(LeL#cj zKdj9vM4Q!Mn}t#1s&gyW2xV{4a9(Q9gU^zDEH!*^p)gWbYCgQwa&qBaB+6S|p6kat zN+q-@cyIl9NE^D%Z0Jsx9b+M9@H$>iyRn9NspXRVmJ;j^Fu=n@Evlf)Z7|1hBYAnV%e&we65Ci0TwjAtU%a`8ty^GW^Ak0#jOF{l!+r3sOc(`1V37k} zS~A85Wt;DQ&=mdfeaiR-Zg}iW8+@h(wlwJ5Q!ck|=?DM`SYI94A`wmz@F5=<_>4c@gaz-4 z5L%akC(aMLLcs6LBaJ8rb7l5m`a#z{z>3Zcj7AIKUdKV#pg(Wky4>0aUO7{!#*&p6 z*4A1oEF9dZLZOA@k|>NJFqeYmnMnAsD14t1Kc50+5xFm{6!RRi;yinEDXw!Uq{vla z8{yl|Mfg%YY`cK?;I<8Z0gtx}6VNV~s zp1aD`phEa_$8ZP13EJ!fiEP}*y&AG}5L@$6NUkHl!6^-1TI7gy{R}_x^+jse=jd7J zvuJqq_^=wsK-c?%$A$ra2p(9|HgmniJmHm=z_2aj_cPE^m?*=0VcEx5fx#PS_{yu2 zKOBrL35v$EzzpO0RndKq{(j>YTfAqT#%ukp@gN%@2rgs8b~QHg@fA_+ts0o0!*j5{ zwS%v-u?^Y=mVgeLL>21>Q~>-t;4tzfML-K!9##WC!}-r@xc-4P!}pfLp08DL)vi}y zF`)>=?KL>yVh!W6nCoU878Z^bI>=&E=P`x0Fdxre17Z9Rj#@qx`?3bC;qShH?|3gdixYm@*71r9T7?!i#WMH|u2Z4Gwi>Yo1`>Ra z#Ig$J!ESTFYnfns$I-7Ld#k!s7lH=zVUXPe9em-1*3pV>PSEb)3zs4tp&G;Q^Ic_I z-NAPZd}9W`r8OSDF%tsc(i#Kbn89ypjfZc{guu77#=tjb@LO8#?!#|s0k^_4f*tER zbZplVinXIJY$}9ZCK18#feC(U*$k<`%o0v5Z^N&`XiXz0U`h4;>q5*%USJ=@Tm75G|c==*TP{2Nyh^i?z*GXNWCwD6=LJWT_Sa7P3ePV5bD zz|+9vVsQTJg{H2mz*J$Y#|}1L^Li=d^-{>|W!39dpfi29tA8tgerDI(T|WB^KbzkE zmq>W`d;hOO%5l_(?~E>~=@11EZ!g0KIp6{0D!A)exGNHT;2q1pY*1>o1VWBm)zXKp zZo_!i0Y93(yo(vUp~3j?cI|=(MX=wndq)nqIPVDpm}o^6hC=)5gkxZj3vob$Zm{1~f|GB!ZiZ9-myU7#+!(^nohqEN_jc`(qr}gmr9z9J7~ph}w0rQO+K76{4CcjkH~hj`^Eue14EEMOS$zYM_f0zP7i=OFm>7Yu6tXO7_q z#i29cw~oA~-;g4AQHGF_IJUId8C7@)UT3B046guAguAH~evvII;29amgN3?wQI8+8 zwS^DNLR*AAtM|aJU{LUncznO@1iXh!#DypyPNBR!>tJYvH+tjS z2h)a6@WU^Rv-aW#_e-M+zl1x3+K?r`cEC?KEICmJ&uinW+BzhB2@jmYDrxhy4h~pH zKUxv;@J^TqE!pKO_XNAncGwO(hIg@TwM#~QTGmWz-T_|P1cS`SyQ1Oc91wLR#0wAj zB^=uMtIyrAj-QQBh5y~bS_wnMm$!I2yV62BI3Tg3Ah-SiYtNS5!lx?a;cr78{xavW z4xfDm{&?(;Z1L5yLs77t5{VW;(6&MwmcWlzK_fj>2oEAZyz^G&!&MN@qYrz%mhAC^ zcW~@z_V})7IH89)hf59@+>{Qvyt6~j?_f4qSOL+EFf`NH+eaC8M#CKlP8}8Sz`gI8 z6I7L+^=5YRl2x#F)e3(ogWApT9ufE*jK9nIZ!P{F8OWNmJA}|#L;k=^QSahMEIj^( zQ=_6bDBaC#%VlwZej@5G^@LAG9uNAM2*@?aFQ&2ZMflr~WF%+yo&-7LgGR(# z{mnwYYK0Qx2=b)I_#Sww0McS{Rl;wK3!O-RgG|1W|7PJz_-|HDMf`V}55&I|ep7g+ zmkJ!tkN6@hoXStszzIa_I`|=^3a8KMaLvTaI(RGi;5$t`y3rZh<#0efmo;NE7S}$e z6p;rLgn&;)4A3=Y!Jvr-ZGN^NL>4Ke_vcY}dhYD3h}N)7)V2U2?69I-x(0lAG+(MC! ze24{pCu7oC{5OkzKK?FTQHB0LWVnAr_Izre`&G`hwW}J)lWXTU;CZ!KGQMbM5k?u) zz^e?sj;48HU9=OoRo7M-pa0K?LOS(0$;z< zR6!T=ansN$mW8fAi3mi+S3uEwN<_)bUWN7KO1nL=ZP+GY%3F-`(T&KhOb%`K(ME($ zA#CRs(pjYTt1`$oolzF;#8hgpzc2TyL9cMsTD2kre@DR=0z7utffp;w4-Se9x`p8H zk8Rhr47&SmBM}aJxH_@QiBT-t$+9+8rYY+8bD4=tb|%;EKPMkNsGDhAO1A+b;CgN~ z7ESGAl`IGT_t4cxY zD*KwwNC_wS8A%7ekbO;USD5R%3uRld4=b@m*Fp&3Zq>=4T>JE2GGn%(7i&9{-`Z~ta;~V2)-zoeZg`MvoGxU~{qZ5--X*VN=I~M0Qb1SH zF$ly50{6(TsO=Yv>j(TyKqLQs+$$LZvC%UQQukB=tC_;+4A+hQ?ksRqYbS9tDWI~p zJ93)E+|xjoT)S%uOPA?Vx)&1VUN|(=o=sq08evLhN+YHuyJopfxy??UE8Z=nBCUP! zU3n}TxLL;aezXJJ=}NphLlEPzvJ0MF-$7Y>b9?UsthT z_(fAb__aUq4~!+NS}j=x#mXl)-chiT)bYo+4Ul<+k(9n5F9R}6|Uus<7`h0 zgXkXr>992Bu2b0m77+~J5u^fe`@6pRQf8%l$~p?-T9T)f7WlXV;pZ)_QXWu)`B)VJ zDdCD-;j&U@0!6Kb=sz+#x&ewaYRg>Rvc>!ZHx?i~AyfLl8FOCILhBd`eJ_QgrJkLy9$DSX>0 zhB5&2WNaw4yBdUJ&$@EKTMYy-p-vP*RyUA1Kf_$Z6GvO2zrnYsK-fr{5jZht2~KDb zntgAW3xXR6AVGJK58ssMjlI5{2WjOM1g-&C8Uc9!$z2#*;pQdvt|M@V(<6ZCEZNi` z0Vq6vW#nkLDEI-mLUQ28WIWp(@mh(GthI_$w>(2AoGBBb9{pV>Hi%)vZ3D@YU3=ZK z20fHrwguvS3wIE9&j{kvxn}Ma@riUdo@|&dAGppC$f>qeSK(!>qF?2tmJjBWSHMJ()t=+>xw+AYHw-= zU*R^tDz4w#Z-p;m)=mSy3-9r-YX8=Qt)$wbolyF#+DAMBzy0wk3fXOjQQr)PjQxju zbyIP2`Je99jSvd5`x4ln{@tl&!PPrB9bqz|gHTB*Vp>CdJ>h$V+XyQOs|j6%*9d)W zJiSK<0|_S)W)M0F3kXXH%Lw-p{z!O{u$`U9-@w&4lpETUN9u3E^1`#yb=CBUBN_6Q&X760RUzO9&6p zuz0Eo>j-^vxqoj$72za82jLTh&l7GW{Fv|%;c3EpLZ8_@em}xT2!jcu2r~$m5|$9Y zN4Sgd5aDUUdcxLuR8EBb2!|4e66y%k2y+RaAY4PZmavR)J7E=J4dLH}HwoM3b31wv zK1Qe|Od-rAe1fo;@NL3vga-+KByF z(#7NR*7xSUVETvUpyjsoC!QZ5yZ#E15Ir(1W2dj1dGo-W#x0sg}Iz>gx}3i818u>6R+ z0sZ~qWUe3|QO@Y^ZJ*XlkAg_jsg_REU-J%c-^N^rlx@j27{MbfXj!79Tk&GJbN>*zu7uAh8<_HlqXXK@0ylT|`)XNPGl^bNi!yQf$P8 zi4k$}Aj`2E@wKgzDU~ZC&(>$L^z^x40F#0(CcD9A$}(l^9TxP;JH_qy9l-l74_&7w z4C5$O5PCtK8p{>i#{noG;jlhxWaWkBBl>IVLmoYBmsa5Z6j114e4P~@J^bYlT;ZjM z`WZ4k7GEQJXiuG&o^Q|FYU-1$NsvndBB$N&9D5BAC~t=_|wh(2lOjcL=0&W_{qh0<0G0cy?Juh56dGKb$V#v z?|myGdLBJ}t!B{0h(A`A4xg-gbad}BpMrC%l1AT`-D=C0@@Gevd^x(;Z*NqNZZWU= zkC&@%j$RzS&!!I@Jmxn={x?@UWsJGsln_>a-`X)ByxO(j;e&_9JTSK8;**QpXkVYU z`~0JZQQF_Tbsu(Zx=pJut=W@z=?!gurQhZ6KRl+5n*Yt@z2`bcuALTE_etjH$i0K( z&%WMzUgWgW%^&q$`az_<^3~Eor%pw#9`TjWf*JRZeJORp7x&yhVQj@eKj$9OFB_|z z|6J!W+qR8WW&dn8Z>}4A@XO8xPyX6_T*!@XGi$p|8TZyG-HAcEqH*^|pPZsf-7_vB z`IYn0^RJG}DsP$n>al@Q;TLwDJXvdq>QZ*$ff*-@qwX)UzMk{IH&IXP)1EZhT0~#E zs;+G@J~-M|zxua5DcR9ut`EQG(|^`ScbilB?W3O^jb2wgVzgsZ`qC*P?o42>DJ z@8|EgJvKY0-SFpDnyzh%c{A+iD~o!ZhXNS4O*nUBh3@`WhCbWn zmkM1fo3$eOsjtt@BCvsp1MCMcKCbSvTVIfvHK=JdRK?cb+HdrZ#CAgKOEaT#{cuz3Vq_<)&Kq8 z%J)=p?dB)^d0&7%Zv3=&UDNB|j5B;xosx6;=eP&0`=;Nuty6rTsNq`*GseU}w(iOG z?}g5fpTB!epLZiajGuP#YPR38)A9CMLH_U9_TZvQ_PYBqcl?|?e{&j?h&7-C*54LcZ_oE7n4Sf zD4)E&|doO)VN+b*WsTR6IOn(>(ZmDs)TdX2irGCw@l0& zA{F)24^R9eRJv%|YDxU`QD^Xp!>=Xw3o70FV`X*XkPvNN$Lse@-svB3=8tJ%lh51g zU+)u?H~HPwxg7?Eyf^tkx3^87xlT-0mv-KBcKv-*##eT`^k!l7l)wj+SGBVjPg&4= z-mv?-d@^Niz|>YLKc1bk_(o#be4k!ZUweGunvxZhrmk%J_|~w1l~Z3hy(eyL$x z6d${$wYWSrdgE`sf|mB5ri?uJTxpv);w9YEMYsNeCqI-w8)Xez) zr{sW%tsFBBblRHtcI&rhEKK;l>qPDG8Sg)@du+(6dy}SaKbgPSs!g(;neO-6$^}V% zKN@lF)O{Z%olm+e^Z3udC;j=!{)mL{9!S0zyRLB3>#@ln^nLQNO)*bG@9-ay(Cf40 z<}XZMnmgq0PTvr|I+Nt3Ml3`LzD~X{!f>jo7Pi7xdAU!`Q0xum#DRVlB#{us6~u$AGP^`|0Y7mhIO zT=stEv#YI!!1R|#=Y6!na8nbSIH~3b!@7(|uM8RBo4R+`1xMJh@YKAIl(C&7@>3_( zY)_l~{QIdx+YPO`^4V{xVXMQcbKdnccDBdI9IlQrp51rRcj=fVM%UFrU5wqzjrzO= zQ+7P`mvPkHtLwi%+$*i!!4E$^P>_(edQsBJTQgUsT`l|cuj47Z(t=-^`Ns>_FQ+{b z-s;r+Z3EJejD7h1r!MN#mp^cJ%7?R_Pe0T9&GQf5b0GcR***z}3z}sdUGvodpEE-; z+K>2W*jL8P3~l($l(i4Nnla_O&#o^^|1RT$vG2}F-`Upme$1v#HRT%9l$4`K{eE|t z&X4%I{c*+HrtiZ`GYaEtOzkFBhQ4R&JacvCoWtFgM$WXio~%`zS~$~Z!?1v$b05uY zyJ}f*voo%lQFU)Tv9r%ZnaWB27mH`dWqz6&IB4O-g3PyDFZ}11nL9H3rCMg}Z+;r*hw9h=OyuRq+=Kq)(%`P-~^yH@P_pl9ps)wY1a55E0)_KWE^j>nFj zmA!D$^%s6Gc|H5M{@VPWEq}@$Fn{}BYfkuDa!WG%jkrI;vSvx^Ej}r8ETcO0o)s~_ z%yOV>*4NLMoU|;QR_WZnyPNf!;q$8|cGp?M3QEGyD3)5|-`?Hjkw>>$Yu5z5Y_XrS zcKlh|*=OU!vnF*888q;j#95h>pZ;gt$4|}r?dY6ef&zEXI<~4?*IhTS%!)g|?q%D} z0NatvVXwCNJjJ&B;+o}OX1`#2XVA4XbH{#dyE|!~eN{|z``5WstCS~(+84#!T7LGD z*B+kSKtTjeszre+`jPV@m+H6eqVR|$ZKPB(zBkq+xUhvr^07;%*}5$=bZnl^ND|2 z{E_qh&8T-5ger1Zs!9_djEm157*qMzsr2Q!pX%q#Jihbu+%EH1uJ8ZDh1@A60}FG% z@t%zc`|D_O!LX2WcX2&c3?Kw`b*_fqCT@;vXIH zR(js+%C|o%c=naN^ciEVL*^aIYj%0sfzbQgH#+pq$@8wof0Mb~r)XYqzukM^X}f3MzKizqN$s!Bt3O|qwn;Z|{^Kun zugHAHFu(1no@K3P7tfDc`RKIDH3#RHU3qc%KRsG3D9MouMxGqDpvAM&+v9%DT5w{j zX6*R4*Dv_dR@LLT_@fJoR<}HPf4}w%xBaj%oe+m>*@41he>Z%;9Ol{ z%2uS=_~bcMpQJdd)$9kIX)_pxR51qL!3OBIZPR>96m@nXwaa* zL4yYc4H`0N=%8VPf(H!`R0a+T3=A9`7!)`paA@GLz~I2)gO!5^4GtVUcyQ3*A%lkw z9yU05@bDmI(4e5epus^wK|_Lu1`P`e4jMj0Ib_g~z#)T&1PvK7WayA#LxP74AF3QW zXlUTj!9#7N*bh>1F1TsNM;>2=!Wr{3?f3ilmQ{k z@NXJejwP23zc5c(@J|nnpVu0OH(0W=^x3Ik)9v}41fk5(N3ag!zy>4mES5J<{w!8w zHfB4{Vbo`NG7k!#5D`)ygcXjb55<-04i}MU^aSn2%C#5N42&U^<_KvZ{Ijtd6!m9< z{0yWzz_`VDUeK?VNQ$i!SM_N)?rTr;^{wzVe0}T2a}6>4dCmurypr^F#5-!iNZyp)esCjEK{;s#=;z|`ZhDd1=kpTBBI0?3!j59nuOk26 z|Dx|#%i}L0{d&Tsgl57Fx-U`IgX>ok))3Ya`aHnp3PKH`FXW{w9C(h$Sq$c_Hyn5_ zN0(~MH5rTw=uFTL^=4D50!|w_SukRAZ3)&^74{rMhQeyI7+?t% zxI&2smQ77&eTvzraM>VX*#Mf?gif7tRxk0da;_=T(2GhjMdYPy57Q zPT>B4=&&qAd#IM_VOiAxm#?oEQ+*xzxEWh-u6Ucbhl$yl*_PSa3S*wZ$i^Ft7@Y4P zygt13i^yNIj)xcP)^6O${YweA6Z)Lt@tG-{NPmQaB?nJnH!fG4<^CeQafx9;SPGOLgYg1KN8v`B z?IC8UZy6tLGa4oEA7gY((wlSmm<2pe&LguSerSnvjA1yo8}#Nlm|#GP5qT^sl#hq` z1q^D29ETBqGXF3_e%>8%+Sn-P4t^YUl9DB=F`88~uUEf#Y; z%&)M0f^oNdf`5YETD5uV`h6^~mo+MHw0 z(D6>003~G%%}Gl$+W5&D!eL=YnNnQ`E5duQWicg-|jGGVMXX{MuW+246$Pn^ni!rJnh7ioyywe zB)!dq!v_nWpwBdhH6lTOXqb(OShzT|(P+I*8WzWd@W+#GTx>!VjAtYWG0e&_*^J~F zk!OJVG36Sicw2r`A{H{%Xg2EYw})%o4v3!8^KP#R78^4qE++*>UQfdl{@(3~)TJ;> z7EJezaje@z)j&N$uJpX-fJcQz>#c67B$d+m;yuo#z;!z`ehA8j2TAc~ONzj(g#-!0`wiZ^MD-#HR>j0a5<~4Eh-MBH<-M)J6F) zI53{nyLkAg;rF9(z>Brm`PB-)d%&TC1JlKG4<3EtKz}^Lq8qf?l3@{7uK|r)^0wCHR1c+tW84zuF1Q5$b3pfkV9}w*d2DAf?2gLde1;ha} z954qk3=pp~#{kX-907=B8wt1oa44V?a1`KTz{dff1RM@n02l?h0&pld9raV!IL8sb=X=yb$0IF&MpD~RV2pGmxc zcslV?;+e!Nh+`d~t0sWE|8LFX61?Z-BRPRyIJU8D0S zIrar~!Njp&q0(IV6`JmzxZc4& zjLx6rD>;=k#Fr6IB;KBQ2Jt6|JBdF@yoflCm*_SU@6D+suCwkYF0QwF5w9S9cwHKE z)x?(*uOnVaTvGD9b7ce0H&B&#_u9HoRB^C*-gs4_jJ19Ixu!7ig$w#+h=y0v1TJVS-Mp`fMGO zT|X+!CcDFP8G-AY+~1PpP*~Cwsg^8ueaGev+$Kz3LY@Y*JcU@&VY_Cyzu3dW^lX+) zW46Kyw-s18vI8$b^(pS$;2t1mAM+=ZA!~3on~ufMKyEXpL6%u5c=_9LhY)uLn*~ab zuAbj5hK6Sf;?KG^sF$|27$?f4ZvZum=*2?0A3)b zYzJf{$0}NeSYNOkjjYHZB+n?7pUJM!E8K+ya|XU&OCi>vvyG0~FlU8!GdmlD2oAN# zDo1edEW-Ll3cE5=*sXd4tlELa875eOfK0Fj4N4#US#2WXDuukQv-B*m-odtzH57rq zyjf!W5VON#U`4{`!W5nvpnwL-TMthd^x@JPSNFt92(NGS$8{IadJVNIkG(RvXPt(% z6Ik7m6(tM7`mfBFb30^}w{7Cg6mGAhLElEXe4ubwx59wS{btc_JpK*3nb-P|Cnk?R zUl&Tj(gy>enxRSJq7lz9TT!yxu^&T=HHqXTcVSa&a&s?(akPT6har!ZkeyvyLex;| zIc6A<_^4#lXVd)>cF%=%BIvi!Eo{_jsIu_(3xt8WDBMxuQL<$;c3%b(LJ@P=Wnl@J zCu_%El8v`J-RUs@R;t&~u##|3$Z`mi;jm?r=`!3tUTFjX=HkG`y4Vo3{lXC9_o9?SKWvn<~KON zlP>!7yf0W-&B0w{;4N;yvo0+ z{r}2&38ka>ne)Vx91r})QG_d}a83#*>=5@6$|#)h7vVG)czW6z9-olkIL3JouW*&5 zzmeotwiIfYG#7b1({A!`VjbDN-Z;i)$+3o{rI}zs4K7Y_9gi)7-tOP{dLgaLvUQ_$ zT(8yf6RX80Tl*s=sNaev?9pE0c6#^6$|n4^mz&UU!e4u(3H>Jgwe?NtH{q|n+Jt@+ z{@QDe>tp}Kz94tlFI=*Ig8c^dus`*FtYLo&2Ce{qbQlixuzy=+dN_U*G@^(4%3+@P zFkICg>eb(&o?_tb_F+B-gnQC$3EbL*-X`!D4)rP;(ZhUrKTjYj8&7v6_zQ>SqH9F2 zvG_JNqKEltImilYCA zCfw7L`)?q9F-{ur#sb)HjWc8zQ*+GXMg`2wa8d{o?zHc3f9da|b5shTzHneUa*5|J zmRr?ePx*-Qz8m~~gFN+zYX?@~8bEZSygBpyMgKa`Q;?U456fH3tNe$wVr#!TK%pn% zLp%%q!eKqv16PuVTu-g-VTPADh=xqaT_ zM{py0Xiu_ioIy*ijp$)JE|=-yT4@dN0zh=~biM7<1~+bB9{3A~<>zcf5AE9|)58!I zP3Q#;_r!<4w7?aB=>C&^3na{CC&+*7)j$*zk;wzwhb*6my zrt#<2Hl}i%Hj9T#zRB~enZfI+-3?zOluf^>@)OZBxa6yC`!YD$gS9(pg2d7uQQ4h;w1NaMv^;ag-6ZMB!b0dR$v9_p9N^w7SFM)W9{8!((priT`Z{Cc-9AJy&Y zqJ28>7Y^-9ZbT35DUs>nJh~Mg_vSY`VEsvtyHjvoF$~t~ zjd6SvHhIN4VAl zY-(Ka(Rk9wwj%8G2Y=!4SFlVE?G$?RWO~^4ihwsZ|2`no!**NUNPHNtBE*v}>iGj# z0HTwpn<~@8bn}|fJL0A1YC_LH)RQj87Ytkhh)$la!%MHA5k1uR9%m}=P_MoTJ^wI| zeON9^;0i!=!amMCf6+ftriU^3wc+hc@fUALQRg^@ALm#~Jdx1nSMIMo!LjZX$0C8h zagKYxJWol$e1&f`giFj=+AquP;`^^+;g*?$w)ycjF77`u%Z?kX%tpKc6a_c&Xg?kJ z^VKzXD&cVJ!~q-JECwzJallTj6xi9wLcu;4CciyCxBqSN!L7O+<81*VVJjWpCy2oN zav=4L6VdD~3ACTmZ6MDjTMwjlzlI`M?~8#U3OvzJjGc!7fADLVdA1Zu5xR$(|Bz=? zoseU+<-3!VEhSPsuzuO7)a^OhWHiHoJkbhIm^GFb#lv^-r@-EOeD1)ri#68bu@qHf zEfZlUzSx`UIS+4ub}1aT=Q3G473~?Z+Dosd5j_!)Kn&*_?&%+xk{GYN*UL0AJq!om zx^^N4ui*3i@FzK*e1hYFo4mabxXN++GVbqp7Y`@ShyRAf6dsb2H24P-g@MP~md5{o zc>IaiIeN!;>>Br%C?0RQ;K3BWi0liecTvQoEi?YH8gyH2!yaL|~g>)U@fZ$+&Bq0e7) zWo|4AD@l$k+G;v9phIcjgdMtW5sN2XF%{3cxqn~GvITp-o}$_E;oDcf{QXF~Bxm1& zxm^#$Jb!IL*(>47fqUD(kzbh<8@ZuJN5gw(XOvGpS z+fipPMi##|I=cJX(Tg*GtQ=(2hiVF+S+jOfQuNYgM?aaC_R93p+kPG0vGx7&K`TGm zvi06J#oG1V_vS|)`?C$U6RZj=v|+o_o{vg}~Gf-2Vv49rtqX^x?RvBS*jX97TWg zjqsEso>vvX6@ci_4&iXkQ2_^*u?7wu9LaE4;c&uH1VTWH_8~l)_N~M-3bjWK08x6OIZvB*?M`4ksKHa7eJ3Oaq4#jtV#=xKPl*;e?|C z4&1EjgabE(I&rZMHorM>0~{=@I&pCoHiJ2FLl`WqI&pFJ9zZy7ldKaCwqT1J3UQO- zy>N7f12^d5ras&lg`1&pHMct)xX}S|`qC{D}VU|Qc z@t)^6WqKH{srWX^^hA6O5(R?c>l)ER|IVW^6n9t!3g8OjB3-OHolFm_CfQ3bquqZu zZu{QN^~E}qGJv;tf5IMvIoJAg%j$q~UBbZ?2u?rZ{pL>k)lslHE61V~ooxI%V$@DNp z5pX5b^5_wD1BS1X#V6VY`nzQDVSU#%5+CaI)_UwiJtc7ObWzW{-DZHE0{qdT9P^7^ zwL}&lcGapoj86w&B2s`pIuReDce)i#=()gOIF{cg^rFT#)Jp`epn#ZOIkm6&vAi9K zd4V?;k=}p1jw<4DucOkw1F?>3g&8`U)6{rT;AL-9dgV>%o%G6oT_bu_9B#mJ@f+tU zCoI7lF%G=R=RS!O@xN9e8e(kpI4Z;zK=m6u+{J^$UfDB6KQ7lr?y8Yi6{xIK3|PF7QW{695L zRz1P@g=Dnnb`@E9{nis!5EfXt|5@T<+!t6(<#dwl^}b(IL*f3X?$;DheBSqKs>n`Z z*PY(48A)^Pb zUjD4|qcGJ*JG>oEztQ360Qj%}J%91@1dZ8;Z5-Xd*;h8TCCgtWq0cnVwS?Z+yF6BS zZh>6^2f(vxc6j&2Y`7ZE2IOzWFv71i@JW&InP-%nr9tqQA3TPC3vZY5Aw~ndMM8uQ zgkPd3;xls%pQjdfVOd~1Y6`J!vUb*qw{P$IuV}(wb8qANAqLzPugEo7%=}@70N4br zh>eerWUp%KDeMY`c9qKSDI^*6c83rslX-b-2(^TXgc*c+gaw4fgc}IU2+Ij839AV+ z+VFHv60akyC%i!@>A7A@LLb6*guaA+guMy<2?r1=34;iO2}crY2*U}rgi(Y#!g#_& z!fAxbgsFrXgl0l3p@T4wa2}zPa4BH{;Yz|H!Zn1&ge8Qfgk^*kgq4KVgmr{c3NKeb z!eGKg!aTxa!g9hILdn3x`x9yjt%OB{rGy&@%Lpq7PZHJZyFD;B-9dS5GEz1z~kPj{t~&QBtxpvV3v}Sta>}# z`t$hP9jU;DM^cg_170QU_DD)fgI*`+x$OBO;RErSZA6lijQSK4j~UW&*x&*Eq$GIq z0d6(WwhZ9#0uHk&J)54a5K=T0x9|(Q;OPszVIhqI50y%iMvj!Ep747Vc=Uv0>U6Hj zpX=cFGy_1dA9(lgFG&FbaNut^9)Tl3)eqh?BT0SWfT*OA5C^DBD!>7N{&2!t05}7V zd2l=ef#$)Fejx7;M*tiH;phX03IdIU2p)mo^Wc~PM{;hO16LUPLRfUkxhY;83#qS^ zj88~d(uA6n49}s!<4^b)h{>Qx&(YgbnJgI#Ej!(#my7iYr2_srcoUZ-$-Fvvap4;^ zyfl(ijcIy(^2A_)H)ipm?EQE-HfC!w*0tW&ba;wi9vt2R0qtGiV+{obofz3ss0a!&cQELGrnfb4@~~>1%}SEB|jq9TnYaP(HVV)Va1iz$C&@k zz@HJNnMW9ELLI*_|J9w2GyTN(8J5QOsbT&q8^apg4u;MPcm0a~6}#gZmY!bAP?O~1 z{>nioP%h2LXIN8P!BBCu&2KDz{}_f9HP13kZvF$qn$-`SWbqd28EWb`FqEo)XQ&A1 zcZ$icW-`=h-ep+Y{4a(zp^u$r>0;W#{d6IJp7Wuhs><}{#XId8s=Uh8KWEO??JK6Lj=etl`G zH%{v*o=jEj#Mf4=PRLZ<*!upg%Heud>cM7h4u5A-bw5uY0UYeqsoizG`F{iUs4?J;Y z?)`60S0%qt_C&@^l`8dI*&jKQMfGy=^~Igq3|1Z5aejB$nPk<{X&;?!{eF@vBk7}2 zr_aZzUZ2(dde{r2RnI5HXpZ+Vt7fG9*!Jx;8r9j~{&_wsAX^o*`mNgUE~cn8f&&{=r4;yKi`qAQs3aCr zk}Or|p0~R7n`BT$`Dib_dm>&n=gZ1zr&j8y9F(fh`!@enRhFeHE-NXU`iWlE>-g4p zx>_PtDLq17yzr4xH8Jk;WL0LOs?(-l{}`Z+RgKIaa&GvwY?axP9w^!Ztp2yy@oC+C z(;nTgs=GD4GRQeny>7z!HV;Rps6)p5@OUU7*LA9Yneha?X?D5#$lh%XPsdLLw?&jJHQTz-Ub za~9`Sgd*MwiZ?HU%Qq9&kLNr{$5FX}qln)*hjS5+Kp_{rlHwQs(})Lo`9o8an!_Q= z>pt_&uI8PS)B-y)w@59JHRFk2s0H%$czcGsDdhjU8zt%5&Cti5_t5B-#l z7;A~Y3W#=YfCJNc6Ask-1P-+8ARH(^3J1#lpfIp}O0E2QU#vIQ5LeFP{zZf}gkn8X zVdL^-!cxK-LZzL;6V?!l^-Zy!sdR8X4PgNxn8w_{txLiiquG049k9NM@9h<WO=|{-!wli)u((X%gKMXJjTBco2MJ>U|F6eqf%R8A#BByE@y)gJ6qN21{w;p~ zK4Jre$2Sc-U_BP!K8&lv4cB!8DaL<`596@0)#7xwMOb#iqJIyc4=Lkna~kALo+n;v z{}!IFRNKG`5mui1zn6C&D+S&LFa};<|7Jg?C(b?rV7mj(!MK0Y23By3QXx098?mYJ z{9srE#DOL0fR*w9hz-jH>p2Tb2H!1h0LI%^!!rM< zit@)jeCQg+i|_7}my5*C3pi#sgQGFTu^t_s7sS{uN4)$r8)M)NMDdoWu*h)K#q$Cl z9pMPETKV$>u+fhuBk}lBVE&4vXrm*;k_u`}7g4Uyx9qt0-?IAIgFkorFb%8wtw@%Lyw8D+#Lzs|jleU4(Un^@P$~vX{`0P)VpE6!GhbClgu;orJ}N z8wo22j}RUsbP-DPc>4Z?8p61oY$+O^hmX%ON(r!*AD@u}?*cYSae9XYvQ&LOJlg~B z#YIF1dUhnBo6Ucbe@2dt34lU)w?4#^Ve`rl|{3Op-hgZ^s+%$LSO`eSp>9NqCZd1EeBG?s)np zmKOT(^jY;Y1#X8YJhunWcDzAwyZAhT-=F94ayxO(h_e!5FU}@}57*=NH}nqyE79o) z@pm-*8wh2JUq#55_CZaqt%bKgjeyj%;4jWRg~RVi1i;rS;>g2F z{n$xZL|95V6Us9HN=ZlhbJ&i8FsKjiGNE1qq;c#z3Vpad9@?qg)v5K)*{YWY)TtfI zx*RT>T&J#lIma*J$vSn1LA&a237?Jt6`qy6` zy7bE0ztwlQIQho1Lw~Egd@`u*&DIyxx4Nc&=ri(ydjDG^hP^rKg8It3Q$atyc|qMP zs8iG%zg$rFd+bWjwp}l(1D5NPePS-Et48kJvi^yS>c0Jke)r?&7u9bLcqRA4s~6Ra z$Gtqel%YDbDMWAskJ@d?PB@;l6u+15oHT{Usm_&HF0rp%4PM} zk1tGHTY6bNu)A^OhsQ6g9Z6?hIS*Y?f0-US=}giU^^?uc*gL;^MV%7!&Cm-cuBh)l z81>@vKK1H9p9z2Yhm3mlPo@1rPi?AK51rlR#rMwFt51FLb=k0CSJk?hU)C+2e^p&n z_uAs8_gqyQPfeej*6x~mdLPw?Ehb)5fBsMY#LTtV)bAdi^5QzzHTCr_jMQa!BeDfBq&#`p`CDuQ*iYlysKwqqXz+|j{Kqb~c%CY_dOR@gZAL}2m z2J0U=)<2*V>mM)~>mL#8AFvMVAFvebA5g;j2Pnh(2UKGHBVzpnYOwwR6Jw7u>Jw9SpR@Jtbafy)<4Rz{sDcl{sCG213Iz(0h6)*0hL()fHheEfI6&yKr7Zi z%CY_di?IF?vHk%ySpUee{sCG2Bggs&bYlGjTCx67j`a_y!}! z`UkAS`Ug~C{UgWv2h?EwBggs&l(7B*lvw|OHCX?ErC9&SvHk&dSpR@dPyI{M)nAV7 zl+Kw|{ZvO^?Y~K@+VMokqG7P!Z5#B(gPkszRQHYW^TTKh)57QD zRJ}7Y!!vqksHO%kU3bE!R#pA9M>8(PPxVym@$gEt1l5dta!NK<$E#Al+5FOnjwz}R z{pPh%hJ^{i!E&t;n@sanjhPu$h7z3Lm)^4=Za3RUeG z5E^*y#$?qOAt$E?eU+j5b@aC1cU0?DGq?TIYu#OwRf{(67}_pzysE7uq+s}{sj80a zy7Vb|F-7%wWwRgpEKh^-`uWG!6GK!n$^`RY{Zdp#k zUGv=YFBHG{(#s{UtX)_7>iX9Z^usecJ9*kKEH0= z@9*)zgAXZs_IkK?pGW%oKiaSVfPlvadcJEn;_;EARBDYr1vZeSrDvFCW}36IE!J5! zyCWxec3%FRsne#y1q=Uo=l_3q`v14fpMPF(j5c!YxTxru@wy4Iaq$x; zB_vLs!ppyD`Tr5+FL{lAILe9f&%Y7b?W5rTzzEoEk^5h>J9J_MLtNa<^RIccJNqZX z%ky(*`IU#j-#(3u|DBp){7Sc^Gd#-bD{)_6_$_{+)*WV;)V%fYEVmvlU&-^E|7z9@ z_67_R>!2BMy&3>l{j^*HSDSMfp8|iQfH~MI0adaj@y#Q$n z#Kc`5yH54+IV`+~>tU5&uAj-SbH_jm-0{03qhbAly9`)i4}kABitFAiung0WCpq3x z2mqK1n!NJmvg)4aOQdqt{ zc3D|IJUpG{+r#m0fjl4l&Xz}>=@nlVyBpw@YyUs9(gv)zo#8onZ8cePI&Hg z5R1Hh+gUD0gQeWb`#~5h6I>m`Zxf;Yac+BfI}3G}x4hlR!-;Z>V0Xarehu0Y;ckC? z-A3!~PrRH$+;;PF3URkPUQV8R2kZqxa}5piTcL-uh@FTI00W6hVMvudM-~t+}(b7`qA!wEz%eD#LLCg z-gx?9?)5O9zQ`i0g;A>y_(A$?W0h zAF=Mq^+j(J{cW6kU6jYKlZ``|`!E<2xa0AM$nuZ!iSB;E<)L2Tbzbrb?)Jg$5u+xS z2gVmiqpILqSvx>^jC(xd`Z{<1dB4DMl%D~yU7#!el;0;3 zyp;Gc;$_5fpAotW;s-dDs)&D1yoPwCkW+cF8^+*QNAj0R?z5hkM<($i((g%JL2`cg z3*HY&<=c$pN|Li1=-{UzKA+?|; zw<2Claxp%alN|Q}pxa3D^_)uO#GfW!NnDJ_)xJC4b^uhzAqj zNnA_(2=PSX8;EBRf0uY3@#Dk`h(Albn0O8Gjl@4CUQYZV@k-*q60auy6LA;uUx?Qe z|ADyA>pcH^iI-A;e3-Z&$&JLTN#2jRKgrF+%SrwS@nDi?i11WDxaSa^mgG^KO7#@} zG2)3Nw-c|S@OKl>Ao&{NdBk5QUO@ak;>E3+7tID`FP@$ z6rVrwV3N-y?j-p`#I+>X6R)TE?;)N@a&doEqVOF^oMg$uO?ne`pbz|6OSYANBV)p zT_n#ZUPkfvAzn}NbmALH-kZ43o4kJ0i2D(Lig*p__b2X8@+{)P#Fr4al6~-KCv#eo zKS4a17U}J|uUqcaZ!QlIIbhO}v134)J2*6N&qg{hf$!B>D5i%ZbMmuO$8g zaRr6Hmv}YFR}l{;dxsKtk$eGhe+u83csbMJd!UXUO@a!;>E;siEkucLR?4bbt7I* z@~I*`$$Js6BzY?FYT`SHyNK^5UQfJ?xX)X>Jj;pu5#LYTpZGrFiIjeK;=v@JM!fhL z9^Y@owIts~Jel}s#Pf*1LA;3gi$b5$yPx<*lD|Z}ocMI&3aXF6#4AZYhj;k) zzJj=x6!(5E zE>DFuLAl(>_K=|umz&r(zCC;wI1MW5p0P98kDNqu~(4?s7(30w7k=ZgKZt0PI7{qS)Ntc~GnaXR%#?xL$#~)YECzL9FlSVRe{0zP^&;wwH6vm0WIc+t1~m z{BUk^+sFA#cRh2S?G?Y(-7dKtSL@~J;XXn+_q21aKgZn;`FabsE}@U>G5GX=oExAN z8gg%W!|?c&gj}ERr9>Z|9{!cf(`EK!`Wfza!}YUZm%m&;+g*QLj&~#Ea;vO7F+RQ* z6g7mtXt$i>s<=FSj=NoRd9ExzT$eY>INmQpE$-4-`!u=B6W_1I-?Aj+xQ`L<`UsBe zr`Vh1+|z#edaI{BbB=%I`u~fyHxG>IdjH4oM3%`WlYJ2~Atd%e5F+=EJ+>MV1TBLg z){Y25wL-OmB2-c9P&D>bX+u@V9;zBj?Tn?w+DUA&|DNY8$;mYNyuW|^9&TRub+nbLf;D=N#4=L5W0UhyrjP9 ze%Gjy`-AQ)mFA!C`|uF@9_gr({L}rhQ6>G>Xz+|Z6!$-x?3dtQDs3tnv0k_k~K^59Rom>!W{B zAMKa+2Xr5=G(RRtiT4XnPxqAum(&;K_?HUbSK&Pd=lqW6oZpeDkaPUh56?foNliZm zMD5XizS8{AeH^@tcs#b(((=%F{LABUmv4N@^%zgegP%m>@pS)yTfp^ve4=m*e4j>) z$9)?y9&426i0>zq@^KK0pTgq)`2B<5x`um>G=}bP{P%fC!^guFC{Le;i_cHGpU1u9 zehltn^4ucF{a*YQHl824@5x67bf31gzUe-#$nl%q@biRJ=>B(U`@v5MVm$8;=)N&t zRVov}cYR>I|G+o+v3>FTh3+HLzheD};bM6w!j-HKW#sn@-G49558W@o{)F~0rJS}{ z&Ut#uQ%dqfIetQo3gzQV`UlF>N}iu|zrWN!OD3t<3Ey{cV4Sa$^Kma<_jY9Q%l6Q5 ztP|sW-P@UQzOL=UIA6zBGtSqQT^Z-=$Zm}Dbys)BFED=|jPrFnPsaJWSY^ifx|J8> ze4Rk?Fdon1 zt1!;z(R?1p=dFC6Wn}t%UX;Q(UuWaoT6lcs<7R8L!Xy1;!gPZe_d~;{}X2XWYg(p9dE+ z-h##RbyAsezAnYr>G(RJp2hQZxz>#Hd3syM`8>28<9y!B=XHD?sUwTmvw3SL#`(Ox zGvj=o-i7fbrvCxsM#j4{p2E0+aTDXc8Bb@NuRCQh-jBs+GS2(oEXJp?_+^Z%SO;Kc z+=1~N#w#&yVce1HPi6fD54=byK8XI#VLJs8(A?#Z~0 z@ya|s<6ev#7}qdvWZau^{<$C@#`))he0e<6_hUSRaeuDQcmU&O#)BBoVLX^|3*#Y- z=QCb~aVz7YjN2Hm%DD6^t*>f~YZwn>T+6tYaUJ8~jO!V%&bWc`8jKqmk6_%ycumGL z7_Y^67UPkOn;Eaocn;%r7`HH9m+|~Lv^@0~w=!Oz@nXgsGOnIW^&2xD#CSC0QH(cb zJcjXRjK?$Hobe>aV;E0iyanUwjJISwlkr%_moY9gp3S(zcrN35#`73&&G-ez+cI9j zcss_WuV{JOGp=F01LIo8J2I|gyc6Sk#yc}^V7v?CM#j4`Zesic#xof2&UhB%2FA^d zCorDFcyGonjQ3$YpYeW-TNxk9xQ+2qj7#%q`A0LZVSGB{TEnehO|a~Ka{+`@QO#xF2lkMRP=V;Ps` z)AGxVYZ!0KxR&uzjK?sp@}T97XWWtTB*tABPhs4Z@pQ)B7|&$fgYjjIhcKSacr4=< z#z!%p&p5oeOT@~!BjYy4UHAZQ0WGg9;~K`@7}qlH!MKj`5XSY4$1-kUT*U@>M#dc( zH!<$Qcn0IHjAt?K#<-br55{vC4`JNGcr4==7+0|YV*%r?j2AQR#<)6*mfwT%AjU%& zk77KQaXsUzP+GqR#$6dVGVaE>iSZD|GZ>F$d>P{^Ewz`;xGUqijJq+O$I~-@fv1n4 z=?i#z#*2A+#?=dHd1Dz5Vq6tP(?>Dx%6JUpZj8rs{d!bCiR&|-!u1(X=lVLTpUL$Z zU&i$r&*u8kR6m#NGoHuw8Na~wW2k-sk7vA?$G4*K>P58tZj1*puF})^C?3yv4Cn1= zd_3pzlqYfCmGTtM4V0%d?l_h5OvXbPU&c6Jk>xAud_|DXKkmz)nh_49ol^wnUz*h?S zip+SnL&8^F`N{%cLBRC^6ux4J>jx-&g$vhnQ1H8wQ25FmU$MjWR}@?)K*9A$6x_i; z!T0-7_=+9w1EJu$A_`xb#dT1WF|2-Zoe>4s3sG=g1qIhBQ1}WwUx~(bRvJ$2;<^e7 zu1})i`|T)v$A+&E;(9F#UAM$|T(80Fi|?nG3f&LtS@PZ`-G6CQ^8Pa2S1EmOn(nK# zEqO1M?xVD`dk?#v@E$0x19mKV4-?x>>07T@Pq>cLp(LKJBX=r!uavF}$Ctc6P1k)p zu~v)M7uQ)kmAv;#*DXINNl(`~`P;+zeQ1~;LrFYchip^gpROw=l)P6<*A+`Yzd+Zm z<4g3hJ>q+*U09W3yTs3ju-g{u9oNzLThe%aaUCqN)6qSTEsv;W}oUlJ{uoI%QAcJy@)t_9fSYu0wY%d5@N^Q+F+?Kf3SGsU$yiove4s zd$!VT_e8n|r5RFxz_C$IG+X-nkJ38iudKJm1Noq5d$#&hi_aC%tf`_6=(s)}lcrhxYwy z7M~f{yYsrc&j;(qGz%t-eKQx7e!xvi5AIt{scDRIro z-v;%)vSrJM$2{6OJsTdd?{vbBpI_IWx4^i#4*HkEJ?8upxPJbQ-ka8RbZ)k@%SYCM zS2El-zq9Et&d<)z2pLsl2;5&WT^lbs*5~tcZ93l`RDILMI8CcxQ=j~^FwMWO#dBlT zhodjn(foA>tZBZe)_+jXzj}fp%IoJRMZSG}{n}jl^rIGke;eGlI5cLF^ta!SU+$T-ValL)Kl_Xv z`hxRqUin2ZZL)p+E z*gWpD|6y2y6BzJ1(!`cH>WI3yMJNV&MK=EP6ujr#yvQ1a_LpZ6>B+SX^W_wEd7 z*zVfeKhGRF|LGWILuj|3|F~vabt$fOz|S9?$RD@N_xAa$miq2Dl`Stnp46?@ogHr2 z$~297ZE-!5xfv2-3Oe|ffBtv=QTLrk4$Bgj`FKW{JpWeO)YA!whAZq4= zC4Wtd?Nn`h{jiSOm~Bf=pL#Xt@*mee_|lTnYwbrPcFu0)6EUv+ryBUinb642fn)n@ zAN+9h?CSqseZB6d+yCAOEc$g=lZ?z=&E*Djf;CY3Vw7ZN~A~)AfJ2S6qF}faSAeKDiJ)`Bdt}qv>n* z{4@E3N{erku0xX6-aGr@=#M|Wz2ff0*q3WR9z3Z>^xUHbed}IJy4LE?r1u@F`%mqY z-FL#>T0MtP3LNtDod*Nm-rgF~qM%7rvs3o0J&m5X^$H8W+_v9^CC{pCSr@FNI6?&` zzx#B5L&xJ?avnXqap{A#3&vk|y}j~r_u-yv{5So*d-wCoOJc?^JlN^M$)$A%ext;A zJ^yi`)~|W`>FaGyAGlUs_V06j$DD!xJexH4#NF@uCp4@S*ZpoAH?S*du0Bn0ZU51Y zHoLYri2m`rkH7mv89OCv*NaI9y5#4b8E!4k-ab6`__iN==Z$t>wdxz`Kz#qWIr}?5 zZFVuCTfyaVN5Vs2x=wH3dE|x7=cjhPp94EX)xC11wXv<fH6W>M(WL;Isu^;lY=; z|MXphoqmSR^R~3O-zIv=(oNT|tKR+fNg+MPro>+xL(}( z8{?KWynD`dNRQO3!Pz@H^sDptsVfe3-d*i*YF>nI78j^W`1~gkf_DG|jvzi@g z6O}iA^7e>pmGL4aw?42u^W3-f+FlH~o3XAz-1AX!lRM35yXo%a&UfBcUvB!_`tP47 zoX)SG_v>gW`PPqDKG-l;oxOH-`vqxviSys|IhuCz?4jH?V~1SqbF%;LruW|YjvmzG zaLDDo-|SxXLE&1%-IrI!O&j7;cTK}%|=~m2lzsGf7eP(*S)i2hk z9ea6b>D|zgF}DY9T{-uO%d3Z(=e8c`C!adG;|r4#w(74j^$R?LJ`MbM@rVI8>djA% zZ?X0pZ>v{yQmepSi=W3w{@SP3)CQO4PB3R>#QOepxqepspJP6AydCi^n}cCVK^)*x zR)TSmqpPHH^psRiK9b5gNOEwlCONp&lpNIcrAq3iQYBYes^k_gIl3iCj_w~xjvgZ< zCyxn|ljjV{sdAR&fjz))4{ze_9Mw~6u^^91DihPFIAGh zjhB?MWEnh1pE*e_-&Ci9LH(zi70Iu9)chc+k1-quZ?d* zuz+H_cr{m)-s6*05Y|7Jgit?TC7hht?0Bg;sq#Oy{6G1f{BA)>nsk9T{bpQL^G(@& z8wqs`zU}@}xN=Q-@HOS%N@6@l>3KXw@;y&N5dZ#b2(m8#(K43Ur-@4S>Gx=#vy0C! z;mhG$Y z{vBeL_alNCs@(O+tuZq;AZqq>*@&qB+>iXuh-KLog88q$%f@ia=8>Ba^Ec@>BSJn1 zO3U|dL7p}5v#p4lbFH@_n#VbAM>HiLC782)7Wv&0OH>58{?I5&XifQ*pg~vVM+~=SrxVoub&jBUN8?=>o-Z#TsGa_Rpl(vf-572R z|Bj$O;~mAteSgAm+ef&|DH;X(B;g(4PeLcOv&-c-EK< zg68cP2txhr#c=b$OoFET>jZP&H2Vd^^KZ{1sGEJ8p#FZ#eHd<1FC?hBeTSg=(^kJ? zc*ePf1f_>}2$~PX?#J+)-dP0ATW%AySYm!7`b)kdsH<-!Xg(NhA@;ksC20J0G{Fpy zB?P6o-w0~D7Z9|y@jih1=Af1YGx7%$%o;hDpyuw61a%#*P@d^{5cREF>k-V~l}OOG zW-7sqvFi!uXipN%`soQlxQ>S~opyd3iuof5W<1X#XjJ7AwA!u_)E#j;Ov>?DJ%ah6 zJt;R&rs!%WC?y>wsQc<6LH$ObBbZLNF@~Vws{sVFl4cUryKg3FTK^~I5zh$b&j~q- z=?oVXg83dp31&pip;&hZL972+8h^K#plNMY^1C|LHf;#%PYxq!j+;wRw{!FjHF)avY?EH}S&o`zK zG`w6#(DeEU!JNAV1Z}^%pFn>ZpEV$8tlfj4dH;BVCV2@#TXrr%?Ym0^b@E$^Bf@^i z^!jP737Rs75VVc{f?!U&?dh!7Xt28H6aN#d5Y#!=C8(L*lAzwHGeK*5UxKzy%U55!8Z~sN(J#G=S)GZ>YX{$O-u3LhJV&5==x}*jKrS5SA^W(Y_G)MF& zXsR@lpy5(FLH(v#1dXO81kDXM5QP4Lpk>KHf;sYOg0^ed37RH7CTLW@C1_sgeg^Yn z@C_konioY-BQ+rMiPDpJpPc|Kl@)M&Ee^wFxT-nrCk!Xx;NO#hXV6 z<~W`uXb8JW(9+mOP^-KnXlmy{#$P#YLI_%0L=n`~X-2Tj_zdz*WPx^P^?hzTF@s~^-}KK?)T#Sb#4B=kSWRACfD8Q>!_9w|Ml1sxYS8@=yZ15q|V#oD(jlt zl!=w)L(iQ%o*#T8&Tn70u#+lh`L}ANSx%NHzB(?=tBzwg{RuZyp|ZQt6}m)Zu%b?(2|_5HA_ z^1p9h#8`JekIS@~jwarF68GbYmaeX;j`H^(Mc!Rtsw&^zGj7uA>tV9d+3ow^BGod@ zM}XXaz(~#W=FW1L!BY!;NBYPu2WOnxDZ9$o7W>~jt@D!`nHOj@qpHfSi}t#&oE0F~ z-M4XoO8q`=^zfs9#QjuTuD9jzzIqOI<#t1_ewrWnGH!MAN_~uaf7w`N%Hp}FJ><_e zO^qD7El}PxaLti!ncnh@d}rff??Aa&-KbRq*M@S-8+C6T@e7ofcOU=u`(J9wpU<@J zUhwp7+&Avsj;&}|L-zHU9A7a0W!%`Lqw0MptI5kcC%nApA1>!MYSdRB*idd7lU#G| zpH<|HM{}!Y4-AuUU#$JITjvOQu}Ad_+GRen>n+Ex65SO$yNI<^|#%x zEjRn5(b$cfgXLb%sjj_K8_0=Ur@UzrT1!q?H|Wp0!)nXA$iv=wZG+@yzxQ+hC0Q%4 zS4GbBh<20zp1fdpulXVJ@>K&?hS$FrH}dT?&pSgD*>6aXi;JHhE(5 zlxym$RNwp{5 zzRl$2Uh6)b71luBu%|_*)Nks^H&N%eGB6@ z_Pt+uh^D6OeZH|*dV^Z>pT(Mxi}ItmFaGHAS?8fOxho6B!9#tohs7$pztbmQ3I9{1yD`)ed;PF!2JTdU^s^tgN04Fz@N9pM4Cqd9ft zVg0YB&8?=B7bpJm@MA6flIzLtsdIPP;%eU<1s+({mR5@Wn~^J-X~_ z(wL6Xa@b!1t2346@~k?OJvDur$j?=Swog7CE8l#6sJG@j5BarvoEelk`z{Pk-)Cn-k0G16G;;KI7{^}0XRx;~|j ze0=PTyzUc&WLt{YKXKi|m!4oH)$@9`dogZ`MII& zt4ZEFHnW8s^3{&~l%B8S#?_uzWyDuaAs=I^4_*8&ZmFa=f0ool4qD^ma5tzKyN{a5 zosH_58(kDRJaO^u-=bT|?z+~MZ9l}wL#q5evrSt?ZkE~4C*GLY$SAF)m$Iwo%j+(isZ*6&QWP^d- zE_=#{n>yDi+)x-7-Kt)utxX4cK*#6buXtQXzHRLM`Lr&z&XE}b@rO6)}+R5R6bi03cQ&)N4xv7KWKCLbLZr=Cu!ymNr)ro%&(e`g7 z$472{a_95f^5T2%pC)%zWUqb&Q}^!gAm?uU;O&T&vGSJn13%v|vaWpkk=NuyC)>)_ z?)t-BEw$xU7bZ;UGF~tH1XvF{wyPp9jz4v9=n=jAN7IX~{f;$}KZqUGYtj1DxVBeX zS8{!&m7iX`ndf~I?@|it)-M+vGx#-`?pZq&tFW>8PrNzg`y2*W>dVK%2V^`T@2ICv_G^L9=;Q5V{~EWx4z3p`x0x}}H~d(2`O~yZ-Q?wwa^3G+k62Uu zCa#gX(Bb<|;qv7P)2DXX_JQnncgQ>4h!5n3k1y_bzR_A<6k0f=Zc2T5>iWx>g)S}S z=cxzkN59m|6|K)`tzq!*y<&5Dqnc)UulT%DZ4O=gUeOj$4=bMjUfF%wyj3&gy)v#% z=hZ{o0e7p>?s?7kiaKnn?SRXB#bJK?;$!#TDVB$-A6-tqQy!@HPRZE*P8t5QZA+tt z@08nyr5i%h-YIGSsE)Vn^G+Eba%J+umhY5mL;$TS`2S9s^JVd^zyEowoTzHPqB`+b zxjcQ(MC10i%A9G{Y7{Mct3=n!P5f!nTV-eJgp92pzE!H8Z4Lk5Dk1&fd{-~>t&(OL zyI{A+Tjl6)?LHh^^hR-CQE7JX3vZOWzpIvv+5bjacw>OmkL%wkZRWi0S8MJYCG^-h z`2R-vvXkfO#Yt}zTk#>)0tLd&4O;B3^+vH;rdM*Q{6?8O@5{%ZKYOjba9%vS?$y`I zCvxV{w})RV`Fjuez1;d*sqsFjZnbY-D|4G%iW~juYsKmD{#!SPzE-+dDcCjrgV)L_ z=L?LSHIY(i|cD8YRB4rUlzSm24pRsR&e>1QpI#6#B}79^7g^3 zhE;dGQuYrSY5aHDE2ZxZU5`66UMXWj@;9o+yiz*PNpWf2=amw&zBT-RrIu0Ds*MWE< z#fo!~F+=5Ctmvny-a0*fp;YbOuSZSzzVxR~pSB*D|3aCnYOv_X{V$Y553TCz+g>Ph zTl_R?^NJTr-um?EUFW<|JdZB-R!@GR{IDtd_Lbo;lra-j2T$~Vp>zoRDD8Cn7s|YM zt&iBEUnu*ob(j_v@j`K(x^hgq?+e8=-TgzW!wV(QSQKC^dafL6-geZB8_$(NdDClc zJpG*g&fjw-F62A6PCqNGnr%Vq>nf_b}8Ln!!X54e-W%V8- z9}ar1eAhYli|z@}mE>^uzIkn)E7vS@a(g#2Oc)^pWN(-lk z-&_BAs&uV)Wq;cXPnEGdYR<|%@l?67VB=N!*QZMV-xAD!?|7c~? zExviGWW=kgJ7qpqKJnY$@y3*=$}nT!=u=~!D$Dd7Me5$;@ICyAr zho?%n$6IufEuSj0!p_wkR{yEeqwj!PyR}ahKO&HRXywy0TtMG9M^U|gqPXnX&}PBo zCyK+S+xzO>e4-qkuzBIdb5E4JTRvI;&G9Enui7;(8h?GF_{IL<8~X$N4n*FRn1~He zlp)iC>Vk?DRBAu!pzr)k zp>k_)(eSB16e>$T2^qBK`$A>4w>4O`x=>lU?yHQRiwl*@b+bOtnNz6v1Wor2nqH{P z{JTo5jrs^-HxKiibu4;!R5++kC`*QB^j-)K{epYPasd6i8`bXB!bzOgAchfer$ z%U3pKrlyTLd?xVwxwY4PVpER3=;&5!yiIxSGkN9ikv8ScrouDb2HTV`C#0Gm!|!G| zMxTGNw1-VOk{ocdQzx6Eacm9$L9gSCpO41al#l^oyBF$g%Dvi?-Xura6t$znbiLN5 zG@sI=Sws-%6R{~7@I};)Y8$R&fN+$g>P}yiH)QsGXFug70ajg5mah z$qMbir5BFK#KsXnCXF)Tlv>cc|&(|pfaq$+1GHAF&e|I)w zql$#<{it60RT|!o;o^&B^(=OJ9u?^EJRu&Q`nEr!CmbuGaIO5Eq*m`Sw~#OL_y7Mt z)~{)K>@DY3qVMrq7~02^O2@z~S5hx(hBkl7O^!4@O{XhSN3LBB*YY1I7akP|UJJbt zZxGHg3EJSo_to?eK}^)JOm7yQMa?a9*B&w8d?U{?WcDT!)02q5NPkUa&9f;yEe55O1!)zXZ0p zZP7p4FHca{D#Y1@bJRD0JuafXJUcz^6LrmyMql741;J5~V0n^+coUr4`^L0ri`y3c zqkU1h4u;tvjRoSD+3AS-=>LKcZ-evl{G%;yTlA0iMd3Oare6!?zX#=qqaq>Y7vfED zUY>un#chlJ(Y`2LhlH(z@aL#RTebF!46-D%W0rDDi-%--QQITM| z4MKbhod3r+=%6ibTlA0iMd3Oa76s+bh4?Hx9ee$JA>JySa~oV=^ow>y5&h;sUUd%~ zB{dus2|nZFh4>UWuc+*318rhmp@{iFKca~F$b>Yx5T9kIBkE)7d?CIV&i_|lFg@DF zGN6e0L4Tr%`ALH75&sbSNjNGJETd6~Plt2+Yl3Of7Pl?>NBg319SqBYG%kz)6xNXrt+82fEU|24e zAL7k+I-)*aQ>z&N7{(RA%gY0|SzfzDKca~F(0u148NhB792E)XBSnbM{2%#1o8{#L z{fHvwBL>o3fcP9c9Z?_iVH4st|Nh_gfi}y_2l^33%!d)u7{P7~92E)brwj3!!a1fv z8(hTpfObU@{bpeKAwI`WN7N_f7veQGN2#KF0@I<*a?3B+Ks_-ZIaq$M8v{p0f;Q8I z_$)XtuT7#YZo5o92x-v=*THiuq_IMLuAL6XaY6lJAzocrHm_)di|7~aiX!?ATJIz! zfgPQlEm0rKZ4%-$;oROg>Z2`gTlA0iMd3OamIP@oKzxp!j;N3RZ9=@dsC@rui`y3c zqkU1h4u&nm@`F7c92E(+Ka&ujh5qrdv&++?&GOnG`VmFUM?R#nLVT{Bj;N3MC>G*_ zp8VhWK%3>|1O131=0m-~NlF2`@I#NHN||%aM}`n@hVzQr1SUkA<>dqYh$8000BLLx zpJ%6IudjYuY9mNEM?JK`MQjgfR}|524wfJ6=A$}R0m)j43EpA)%kM>33 zIwWkPlT-ll7CRkLAM0OwR%$~F=N09F+bpmC(T^x%KH?!CCa@bX_z`vS9BpO_@n$$L zuO84Aw=LEK+82fEU|0sEu|a&EosOuF{?*S*ZD`@VJpX8m+ZO$!eNng$hFP%uU@u;< zFY4ksDZdbJuE0Oq;33Iv8fd@G?2Ed1PRcLDn=9~-wzzH4KiU_C>tI+Gq_IJK zo}G@UPs;zQ)P@$$%PT+H;G?2Ed1PRcLDn=9~-wzzH4KiU_C z>tL916O}4bIEEo@k5P7W0Yr%M;Yqy(x{;3+JeRp@MP;+39iHXfH#E z%M#8}Cuno|^_XI($IF0e43NeO@ws+77{>+cr&x&ByoGU!z_}jU;$^_RABrn=ix_z`5q#e{~Bgu$wESMf*`(%CG;J za%`eL=G7p?+56^YL0u!*&IDbfppW6A;P}ie#9QFJqB3DRw25_qBGwoB5k<^LHl)$O z{#AjUj;N3Mh+=zO7#@%M71S-pqs{X2fqq00^HBh4mO;G9PDj*7n>j*!9-P|*&UMii zw=LEK+80H;wfyTFB$bAX`e;)p#M%2cRA4VfNMmm=Lx|H0=cvcafajQ3%olw25@{I` z^`fBc*gkXrhaTn?^JV=XdYPc7Q#na$I4TmnF7ZOV5zg()f@#qf&#QP{(7q^K2g59o zCI{j(?Q}$a^q(ihTj5;oP}U~5#chlJ(Y`2}ZKYh))0JZr)1l3HAkxNWgKXkU~h(BmTNr3*fIJR;i665{hP`j@6ZJJY(6@tbkf6`)aK!Q? z3GpU4UnX#_hqkzFu{>yB6a(mS5%nx~dRzx>UJ&B!eRH3vp9!`#YPin@eQt*%8UKI| zmv}fg!I39~@i;`ZSzh}@KceJSQ2u3hdOQu<%n{-$%)<|*e#H8+32C`aM63_BYiSz$ za*6e&1KWDg4HEQ4Tijlf5T7EPV?5g6BIXb6iX!?oL7H5M&$81I_3=983-LBM4|0QX zju0m5qs{WJ6Z#Rw0(v|zW%3KQ%M;T6g}93Hz-^)p^r43|CLtZSE$T(>g!wP%EGtJ( z)W0Ca7YOI5gEqK`IRAgWw=oU+;4^Qre$lTeVmW!fGVF9vUo2-n*v~i$DZEOPtLcCf7?HCUG zaSqoZ47PXE+!0fqq00^N|H1h$k86!1F8%@$U3OoYx0iWF=_aMec^ka2lc9o0}*C2I#>W~Os zBRG|e5SD>ur(vY582XBBEe=vn zecJ!FXh^O00K_A@@ z>N7N*#)+mgK^sH8hkz)KP(tLRNJ%B>bH)!ceu;5kR_eNds6UwTDU82h+>7PwLqL=? z#=X59B%~t1m5Nd==w68K>oU!?dLQMplj-RzICsIR>zD5kEVr zpG?rrV)c?vdN!yxK=gZu@pp^|hdN81sjfB`t5bd@lY{ZY{m@P!|KVZIQrKZ{$tO`G zIl*<%MoQ8?II=^Wq;QBY!<`%?r!;5D2w!?W0gmEGs#At@9r!Zd@o<#r2t3$RB{>d; zdk*RK3~ceFSdpl^VDUw||T$Ekh> zJ_A6$0>tzyIYOI5u|hsEdzo+PODr z=U8?Fq=Bj~IH zzM1Lggi`(bP_HO$Sp9kjsU@$S?lxDei^a+0Xsl$QZ8VRiGq8ND1Vs6Pah02+~jG8oQgq@&1Z-mQ1}RX$c(0 zYBUdJIMb2(NK!30xQ@uZgW#FX>K*SxlbY7C^bftCJQ$if(|qj!MEM&K>oXXB5CX4> zD$r31Oo6^H!9k~T25jt5l1F2A_#=2fLZuG?v0UE4&QfqPw6$nYY<6-erez&ILHWg3pPELwp%d+69bZW1(+`gX@UgySkfH9iFe%pwIDHRB}HX zu#IS3X&bSzGLa0}{mEeEIKav^0rG<7QdM)4s-*==)sh3iwx3k3$j|0u)fiOp17*I6 zzLIaWkL0`4%jRi?Hcsna(zbwp8V-FpEsMy#>v>4^QkD3c_tvH^BzX~&3iCF$8^WW(KXgjQYjBhqw(DUQGXmD%GZFHkKm>* zQbcr!%2ySj63c3Xysl$;&4Rq-GyPE$X!@Cx{_pfb{xrRX>Ge;i>C&dKbj@9*TFF&Z z)xozv_=fS1$&uBwo~6b7=~z9qVwlD1x&AXgFG77`U|OVwzy+hdf{`?6HWp zf7#B^bsRUa2MhDj6qnJ1Y2bM!ytCc;0(TUeO+s z*CKaQuol)=2K!lQ&C$FXtFmV`m`0oE0ox`DN6P5EiD8ynbR7(8joiN&b{4|)fLsnk z+lR+VnXuO^jO(m4Q=jf@X-F6#<^j{9oCZYO7Xi`NBNnc{L;IUxHwVeBG3}$V94ddc z$Gn-KhZBDEqXj!C^%zF1qv3r3QKkc;|HX`7 zW%1bdE5kDyM+dy^2S-BR4bM5xoz5mFqoV~D3&d%QZ_!}$&*KmYENq$$6`9uVXkQRSeLu)kM%;yvjGb2Ddy zI4`p3XgflmSROn~@GQ~;axs7{yk01+An#Z|od8jKFy51KvEI=(@ehrc^hG|@zBjoR za2=9e;959K{*Aq@JpYvr!rT&$QLNs*`M4DHa9qmu>Kuai+TfVM^jt%nrI2VZDI_(( z>Syvba=mS!)90`xtp+_rZ&<-_QzCqW5lV$RmpJJiTrU z08utDuBz%GRZXMoDpg@!r7HA0RTl-@0c0a-34cI&aO=u7o1}$G^^&VdHKRkMfEwOlrF3SG_g)OxS`KNj9p^B6 z`xqMT((tW-D0>0%S`-!#Dn;C*@!s{_rTWp0q;OS~6kvmXGhbt=Y{F*^>pNL~$q$D> zQV;wA5s;jRH2u*>gi22U(f;R;DgPD_`CG=LY*gQVK9>phQC9wsddp#YqglQm0iw9G z`tz=$ma4$GI1t9g?q|rT#fbHNf#v@!)C<q1h`dUBeYyF__@oTIx(K#~s zfc6W|Ruk#d)drJg84zVMvKgwp#a1=6G6V|Le}YaF#V9S|iC5YJAtaGD=C$Pewud4953e&8i`V)q6h z$^*u|BRr%C7%yrQD?>Z+lr#w*HaDv}-`PUjMJ~(FUv~L<%KXO4)Lt~&BDxJd!f#si=p z0~-6-G}g-bFnTu9bt89j|6u!8$IyBWVr?;sVOJQHVtp?pqf=OS1tj@}zZf1&);Y>P z8+BmIPetQ<0it}#_!7nsF;4H92p8%1og5VlM+Mvc{Op#yNf~9pc&}TUIAEnRm3|8hOW-}Sk(UsbX14QWx zh-V{MxT>*_)Hu^Yssrna5irKr!rHDD)^@cpZ__RcwS`!N@&hb>CVD+QaSU1JzEB0a zNr7q3Qed)^6qpEWZm^z!V*!;P-Y2kL)VS;#2x+%){qR1(c7SXCc)hYA?}99Mx@ZL8qN=mTKh1M|d^_NEGRmBMaTu?1TL^ZhNpCLg1>L8F7V zgzHIA?rI4kwjgUjzMqB6kPNC2S1Dvh*(bj{>ifezkp|Wk}?%HnIK_(qr8{VC~`s zAl9zSJvtW(1jNxsBp_ae=73IsodIE`NcsrS1<(Wt(`e~)Kv%#efLvCx{`dqS$~8bd zdjyF6`%6I7cJBiHI$$s$`iKTZAHx9A$9O>W@fHw$G=|Mjn5Ijge?ZG`Kd!Ms*-)pOIlgb6`!gB=onL?9sEa{44N%9N~YDv>#ddw>xt(rO!ztTp`og~Tk z>0IW@7;68{SXw@(k15A^lrDf6V`N;M*PtI&mb5*YayoA1l%!8TsovCMDUIGV4MfGDa|%E|K@ z*23{#OMx_pzoOw@^Qc}eK(s^0AuePN;Z5d9Zc^n0Hhd35G+@Hn=d`R_^0g1k_kE#>&F%LL)%3nbB zYGl!L%>nVO2jk-biJh9zKdFKxZ=09ZGvD2UV^0?yU3W-gcIU#iMBS6DO|>m^UyqV;Xg*8h%F5=?&@`I*ISPnU0ElNzn7ww) zo=W2^X<&^;18oh)GHlEZ_dbkmaGi?IwLRe;^1yuqHjeXz_E~m3T+H$j^nliVQ$UpD zDKsDZ0a0!-?)M4Jj~)=~gRQ$5=yMOA_X%a6dvq?~1^Z>RUn;M?YFjxVFO(O0%`JT&)2~dCKV{HF`&>-WnP|3lL=?_=v)<6C`k1J+*Y5-}`25xVa{u%?WAmdFJt-oOeovdBh1cGYPUTgp7jSL<~A$vw4n zzH4E&S_-yMzXNcTbXG69fGEu^)NU6*)Y}S(_t_~Hev^f(ykLI<%7E8e<>!F?uP&IZ zAqK!a*I&|{DLc=#wfpbbFGeZ5jy(tR#MiMkzf=D`08w-&DMuZYrGOYCj{DF@a4^0{ z0&BO6=-!qdbW~aoNt@yz1(#F*Dqm;GH{Ai=@qn>+D!jYU$W3Yly7qe!WS#-@wg8y7 zX<**w0nazwXA|3psXaVTF0<=F#&VzoV_&`(y$s^9PIt0090bg|K=n@pqU2nn^?wQw zr7E{qa(ydH?u&%$%WSG2mAwztH>lkOfGA!!sofwz%tJ-bw*qGG0n6huE7d;e2Zp%smrftq!i4IREs<_6lq2I0x`dAn(Lk`25(&{PnY| z*PMscZtNrKZ!I96Z3aYt!S&(2q39sVyNIl5m+U8Hg1uDGL!DuQP2FRfE*%iX?O$ro z7Z7#nb^7l*SPsiyBf%D?-*ua&y9*0?F;*o z3C?8RrtM7Aq(YkbVj4dV5M?ss<*i@EL%NwPo{qmu$3Z4$bB*0~voil)uc>`4AfD9* zB-hOo=JD(3`oglVG+$f5#$otXc8m{zcTrHr10omeF{PWM)DGS!z;L=2?g{fhIvyu$ z;Tjmr!~TM15naW={)(>eYhaxO*7#uz?Y|S&_sRSi#`Q1`^+{m!V=~V#JBGA^KlJr8 ztLtNc7I;Qr*lR$P7Vs_vmhW>w3|HYgOSDQ7^S!J)e3w);8t+{V)@=rtnZ+5LVLb=u z$QIDcu21!18dCeM0nx75KNo;rXm#cf-#3DBiEpZhmA@}U)(qes*swGWj9a{5-Jr4* zM#r26F<%-3?3;zNeBu2B?^1a0EWO_`Pcfi_{%^55h>xQB>j6#lTCjp|Q0%HAr!oumbfprUb_W7jJYon^>4)0loKz|f0Ra5y$C94212BYhX zK2mV1-TESF3mQq2DzpV$`+{dZzMDzcRp_`b4C;^75AJ)wTo2cLJYYTn>xHRw%_pY^ ztp}gS^uDXk@GFIu=PV$K4G_!ILQliVeVqv73pSpldq}jehP|DVJ){fFep6<*Jwr=d zYUe2+N~d_p?qIu7jN;x&zeI82idKF;=_@vaHfUL+vK z(f;SZV{`*c`-tT)w-411Ph$B4EKTnX^JNWL&*ksKr?Y%z51@LD2GVq~fFxbG8s5K$ z{bAUT3x+n}xyaRuc{Ve@W0~L20I{CuFph{ac7YESKc42Y5ii0QThqW)ii zsBZ(rl{>c%RG+p(HveaR1ZivVzF#nm3xm&)R*0+W<&G8dSUK~1QG21issCDlSkB;D zu>KAE#(_m;=llF!4zhla>yB(*%h$sy8t>Sczr>!@{&ql=pBWdQ2SGjQ^&bp%G?TTT z<*YqKamU+Js-w(MB?}wzpxF6mTVDE?6?BBoDGanXq9U@r0_5(y& z&3JjwV;iK+PNw-N0z`SuczOCkuzwIboazq)MERKU|KtmFv3zd-()&0ug{J!i5JfeD za$bUvl;iskpA`I`)B630_N z!vImJ{nB@Li<#~iWR$y!31aE(>s^~feSE>vEo5kfy$HM>a{*Dd0pk66oQ0S7 zT#0A4)`Ja9i_ewBiPX-QfGCRr(atIsj_>o6^<`Mc=l2qSC+EZ@cn<-NeJoGpond$; zl{fXFDNL1<&nJa<^g-mu%-dwZ2#Uu*Et{@`rtC* zxNiw#szA8U15H*PS zFpkI0l&+=VyO4PQq1HcpV6L*)K^h4*5RuOST)=FqTwouu4SoU#>I&Xlt)5WL7HSR2 z53&T9{EdDkcK-SWZ0vK8!U`)9Tn2n8@TR~~RFR%iWLlUM345NA(VRpD@f{DlF!^0rvE&E@lY+6#Ve=Tcvf0Sn+j#Op@zzwbDZU4PnsT;X1T zeZj_bOzj$6NeVvbZ}NjWk@>>#a&BMI_@$nHHuaP>-(x9TVIekZm`GjvPzeuQ^= zVT?@PQ6e=A;R2Gr1U`G=4{P53JBeR|E4hE@XG{Wjmfk-+4{NVL9H7OO%Ts@kepgYyF|kb9#F*OUIUn-2MKgn4EgKr+8xLGp!pBS!?jvjE@6aZr-T zd##|y{m=NvL7D>x>Ty)L!nN7yUiSu2I-vK!2A>G;qU#)q&@l;{FuL}#g5;}974;CgD=cW5WxbC5FNILz-u-j_oj z;XMnJt26nW6}gYG-kbQsIt3ip|3CK51uUwv?e}XKP&|~FCsfSIEGbWel9G8C1Pu#q zQdBAn5C$O;reRPlGc;2=Q<+g&jT{t}Q)NYEZ&+0H=37)&yk$jYMP)^0MP;>r_gc>= z;9&K=*WUZv`)jW2&+ndRp7VJv)&c)QQ+NFuYpdR-i@o(wM?E}CJ^Z6xJv7lbdv}O0 zlfJ$V{pwA>KiBRvXZF9nm%U@!H*@{}H>l6Itgj*TdmrVwkl!yxMfj1Ae$Nl_^_kn| zSo0)5W8LXt(t40*<9ZY0dZr=XemqWH|LP-+7f&^7uOn|7zVZ=3KkkLReoQ_6I9?5~ z`||tRnP%;rk(_5yb*p1Yu5)%{4eUdoI*C3-ziRV;E>j@aR^9Gz9e6tXuQc}0rjs@9t#o!t46w?zx6v2S*_o3&Gr z`nuDLy$;9R?BNE|mj~Y7uf^!I{Wuoq{5Ww9A+8~>scWS4F!<#>$&tO2t6!5b=aV1e z=|?>J^|aEK;{vR``*M9N=WD(D32z;3Tf$gJDc(LO*WOHL90zsPg4Qyo8UkzeI~v-o zRqv;pwYM)fYpcEW>SGMe;eR11$lC`@1LS(MZmjQt+JJF=*t5}oQoj$iU#kb6){V9L zY_5m0s_UWTOrp9UhzV*S*JAXK>&+a(F@kYTioVWz=gom5yJ~~nhqOWA-?3h_Xx@8t zoLs1M^gaXQ|BK!_=ys)9n~!#T>p=d0Ded4gt^@Pc#~s;b?H6~O@&$4Y6l2ww-!s-Q z2ckE;^(Fg9+D@)z9z1S9OTVT*4ZUlR?oCqj&Dth(wzpr(y3M|3K!bHTvTC(Iv8`36%yxo*DCyc3PHvkk_x1EjyjGkyn- zrXQPrX@C5njxTEIbEb<<)Gj&{rCoR+TANijQ;Uo{SDO$X!#prclNngQKXu;>-m6La zMVu47#JE4L?RV3Oe%guSx?4?hJqYW4Fl#)=(TU{otaf=Ee{3EZI$G~P=x?w8gY$Mz zAMI}gxj*>?Q@+-v>1bKyMBOR$x6nh^YL*JpJnlUfOYtB<--mK#uCFX(v=7Pjpv$g{5Q(@bF*Y7zjQvFrtN?8y6e2=jc>do40 z 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 literal 0 HcmV?d00001 diff --git a/lib/discord/libdiscord-rpc.dylib b/lib/discord/libdiscord-rpc.dylib new file mode 100644 index 0000000000000000000000000000000000000000..f01acd67d5d5c296cd7fc92e1be0ec5d9d1b262f GIT binary patch literal 273216 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

xezs&G9f4|U$M<1ge?Gb0`)0q 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%0Dk- zLa(e zyzt?5w~D?aY;Je9ue06b_BV!fmO=-cK{`t!0y~-brY$eqSUTE?p%=vojS0+FZ?m=? zO-AXX!mO`u|C&pEI~_ihuAlPKK6IWyJCnR8K*0NyY^Mo?kqEG=>!laoX&Mor(cY#O zZHO2qu68=!pfc5{tu$t|Ek|Kuo3PitW%_(g4aqppV39{3v>hG$EZZBVo$}b2`}W$> zQyrVJnxs(wL?snT_)~Q! zIF#n@IjJ6#_vRFC4BR$1$-yp)I1YxKZY67HD0YhTSsQMh_SCdLtUJXiYH#Rvilb?F zU~-D%2@_Yi(PCRDUDnxl^8Zvv=&DFhw^D?;qVh7_KgH?lsIz_=qT*dQUS<$ZbyQq; zp<(wjYjcXD>TsBGs^j8hwKEA5fdMGr7|SQyVsS01tt0_G$+pd~6EhfHl44s?b`stG zmX9Kpl}ESHnX}u@bveVB_|i)+a&=*#t;(7mf1LgvcILURXQe*qsXOF{V}9PwG@LAh zozBe2477#ZpEdFIizHVZPF7rOxEQ@upZ$RARJc=f5&5os4M< zpz`d2eu%;y8@PMkpDhy9<|OGU%2SQAzg)ROa9ikU$h!_|pH6D2#@IQ^5%iuHjB)FN3ZV zm39Xc$0tlmJ8pQ2oAgs4FPxzjCn3Sw>B>6lyki3-o%WfPJYG9-uUj;9$}=o4B-mDz zY0mR9&!U`qQid4<3XX#5bK0OYh`@A{w9OaR4OW3D=^*|l48xmMzlg)pNuYV z7+wOwbrQ8UruY&Xte?&(NPwq1jtK2Nq0^cY#3E;i zPN%%640jNXHjw&*r}9o>*RT5upT4l2Bu^o3&)Rs+!nRFTmN{!K_T_lR?!+3i+iImg zEu9FPre9~&g*`pXx`h@@w&F~F!VIJHn7(YLPkY=}uT_Jylhnz9q!AYn*kUrV;~zJH zdCRa9CKwEjX}d*DCyo=PXfhXAPYrKv`YPi7HDhQ-hIoT4!&+QaHlM~M`cqLMy*?42olsy3p?HHs3UHH~1zolb+dO`g zBLlB0;hvrN`3VKsdXrEPVhjc};-WLMn-k_6@jzdQ(SWD#Op%chMpFb{-h*FoB>cjR zp%IbB(6C56Z5U?43wj0<1rCQ-1fK1ShzKGdwoS#1RGtl#S1uiJR_@p zv73#?5{oT^UqPZ%^;neGF3^**`~Ooqp(PeewsX^z6wLpZ`JCn4mDoW!NE**2fpIIM zSR1D5#)hYC3Ot5SqKlO=voTnfS9(dW1XnYs~V4um`3IEEdBXe;{Ca>VMO}Mj7@m%M@ib|Gq*{6eW+6s=@ zXc1WA%FVh{aOI{lrwmtW#*7gf5Q9U%HVZv36eApz8f8v}Pw%LVgjC(LO5|E4Tyc`J z{im4-uf_-Wa3-b36&1LiJ|g$~eCVdq^ul?#*(ihVbHekFa6Z~ofB9&e)(pi2U1;!h zc86$uT`AD2+|eTNif48n%^qanCDS~*VaI5|RiwBGE(5o@3DPyk4}&%~yC{QRTg%Rv zmx+}f-eX~uEirC|o6W5>-<*opgeI@Da9?U+kxLL?V8o(%8Io6iiwd(~bP<&@r_l{rTo)V4so|X3EXHcVyAS3Z>WWq=E(L6)a5nYiv~sPuycm?{?9n24n2FwEA*ZcIe$w-U@V$>d>FvNGR)Sjov=n6F2|4&aqkUSjyIPsER(_&G zM4#&dwF`4IOL31Fx}=#U7J31f-hhOEUAz8R&LM;bqGy%8V)3jRIXCK^5f?pENS!qD z+e3a>F6Xo~(FgjaoDx-h*h)|Ui>%CG3p+`PQ|P1Y00fbMigPHutyreEiax1e0~HTH zWhnkimss%%a)#17W2%y@_{SHb-ocH=cu;YCYHq15yJ%ja@^qJUD@vV3d8rHEd4u(Q zaD^L;cXUZnKI!7CG!-g}f0AM~DqnS*nxw1>3RYf<)7>ztd={^CH7d{ej8~TUx+W-< zqrReJrflx2-T$c6_H@muDLZ;9exb@|J|W89AkUjEl>-C3OrOJh5}c=NF?q4I{#HC3&KbA^RGY zNA<$E#b1~3zn`c0hO{%0{G+e#9$jtrxhctuF!W=!6hFU~CB&n*OEi^-{amxf%0Ixh zQF+DB?FPtS{1jiJ*XG{LLw??GmVBVU`^}uS{r&uE@QR$D-`eGXO3kgrjVoHOlhmL1 zdt=ut>MEjN%PCY2_`C7`d644koyoOb-I;v7tJgH{3i9)-eUy2BoOyqe;t5u^L#yw) zSn2Zr<-kH|=ytLr#oL0AgL0(xSvMYiEG1E`g?RjF6Ns|?O!rI0l?Qrwza(1Onh@c< z9(o)axD<;uA8SelXutFFlywu@yLtNF>lHt2(-o7-r|oiY<+dK^YM$mu=$h?SJusPk zn&Zh+8iSIHi?VQoaeVe%r78_&ay@Bx%UhIjA<8#B+^A=Ui-e}VvpO| zcML)i!OmUR4f0hzJ??nFt*4(~-3E?%BbTl^f=!#ig|GAC;D(-Vmjd5WiUl z?*bd;@aWl*%ID`h2QkX_zQM{T7oNrf?wHpj(#td^4LIXVvj=BzxC4Y0Q}`j zrK|3eTIJ}ubiJkW#s%K*mwcd~QCZXPMDK!p6OZ$@b7$khF-jMj15n;M?_{p6-P#w$ zhSc8o^i0VsyL%ax=XyKKQYYuZmAeKjUA#``AL+$2?N9VZ;obtiyNC)7Cps{UdAPU7 zRgm|`p(X!2)dY=OflLj_DS4zpS$Td(>nyeX+?0Ixl_ytdjLJWUbz-qaS)Zc#W93cR zc)n3-=!X!l)v*H?IoB_58{}GNT!o6&c`#+y`C&EfH_`J)!*< zFQO+|Q}5$bpnMbS=U34{ITWVceSt|i(7%Iyzh8`X+XJ#B&U2PYS(B<@Jm9{`<)sVq zl>I5C%F0wI!!}*gI=l_Hx}OkF=Wg$PWegJZfsYSgVf!W0RJVh4uVN=_AfTqM+PSyQ z{Zf^u(A%tNgrA==Rk`Cr>NN_TE^#fRe|?dcrTpfLC?iD%xln(-Na=FCEeAU;Y-c0H ze=Y(q9}=G(+<=Wq8m%qlwU*AF^E8WdmtRm?xDb5h*x>-xxGy-oqq}M)C9ZWtM`tZCI1p0=Z;S?qVzP^wQGj)GK5p6Xqy&l&kwU{ z?~KaRqWkH(u-dx^7HD@kb&b?>r@%alzCM2SFhvTSU1yu(LRY=ZhTh~ zUyc1s36$e%6c-wkbo9lwANHZgQnn~?CVQCr!>+G4f3*@i)x4*`Wy9mCemhZJ%>5G- zS@(ZX23_O_l)%4(ckFBM-b~T$JavRkyJcU8cK?BS+JzIKbS5OMUOCOBt_J#KlD?R0 z^<*d>hz#z(IJbX;|J%QV=!X=@S$@%7`u7Muu}U}WwDRhReC@3f4(*o_L$sdXkkhdi z&RX~HD0gX7AdDJ$-;EHTULXe0@w|TDAzJ$%=uP@~m+p%yCay}G9fzH4FIl@1!o~i? z$YLiA#`Bqj;qKYAr}xG2tol*@&52g+VW@nmk~NOLy;_NzFRT8#|P8qfC27#80 zg6bB-B)j2^xx9UpGH3MtXkBgKCaB{^rG!NKiIJ5 zvl}iSUW$>-uA7^Nq0?v?tm< z0UjkGVUo_*z2h>Vn)WcXm(i=C1YlPD^Kq&zhLa{J)*a5CK-Mlkh2b@6g8ekET6@+8 z1&H)b(lRakgw3jbL|VbxpM@F!2Ctnlp&wHb6gDw7uzkv_q5159TLz8j^?2?Q=kDeBKXwz`%E23f zanP>{Hv&tZ-xaR2vDW`UqtpR~2u;&%qCoG&0+s#64SU~fwF?iB9i|N{hj#e^8^zuR z%i%HTz8CLN&%@&UoVaVRVOy3?XHXg~CQHG09++7p$oIj!r}N|?^ejU6`t<{8!T6sg zWVr4(2-1EE1R0bug){Ce{4l=Xy`tCMP`VkH4u%#>5AKg_5Wz_^p~*WnE9G{Jvp=$l zZrT|jUB_uCU3}@J_Pi5@xpIx*S0$Of-%ubQl=Mexh~R9Hx%2cP_$oOQ&pqWn#!#u_fr`$3Dmv#8HAD~wEpdYoFLW!?dduxJjr|_f6x{a}pq+6|R3>7mDjeepiWiitZGzA`bx zn=QTt)57h`MaIRs{bu|hyA{t};@l(89eAaEg}8o)2y-W%JMY56$#A=|K)Yp9e`*rc z{{`Ad&~9|yEo8h0&pr2|q++zs_Qc+wl+eXo24mTd`$SlIz90X$KM1@bj%w}7$?C2V zPfU()Z1L=5T(*yG>tycL-Z5GBYF~ni6?+Kd=@94GO8nm`&OPEBeOUO4bEo{@iC22W zx$_bHAA1zfUEm^@>91>KZ5Vie!$*2Q zsM*K={!`M2{%H1h=gClKCQ^t{i|AQ!*wBlE$HerH$zyA7{lB=qfie6 z3q@0eS}_A=YhD6LH%qkz@w61X39p`>VsGRBRM@mN6)CnVUO6MhcEXR(NU?$NimDX* z6!*aAjp#=xdV%)mv^?$Ra(#;Io9S#}=`9fEnHj~}co=>B2pJ2W1_!Q4wpW!+7Ify&R{5}iX?G@(xU<=QC zAkL1};#v3t&z)c5x#KHw>T~4Ti+r25A5%pjv-=a z;JHVfqf79A=ThXrmtjhDp7y{@)jH7$psdn)4u1y z+F}s1^L(VWUx4Q>ac;j5|Hm%IbEh~*FA@L6x&2c7-*W|?qs#Ez4QG8u<%LRGDA$dz zzIMSA=WcQCx>8)ZN)&;dw6 z{nhzeXSG9nzZxdcAuOmbB14~Lf3sSdW&aHVMPEa2nq~i?TFkP;=HlA%p!wJheh>|4 z7(#V^8_&^qH_532Md{|rUeHXv7{c^?41Ac2zTgmD0YSTVcG|D;^y4UKNyvst&b#_5(KSU~n1K+d40XDf_2H<}Y0 z+&-?3BWvd%XAcx) z4HR{c$V*MvV2Bcm0;F(v=D52y&viovI&*4byTKoKjny3;lxuO;bPYmcSB|@5a1YFC zK!<0%rtP2&(RM#b{{DQh{Jm&`{Ed{#-y3FVT0Mk|&6N1qO8L9lk(xFNu4~N{?mUU# zxKZLeZ<4=Vx5(cIZqK8o8$o==7(T7~;zYKljVHdyf^T;i}O#I`Q5^|m;6`C0Pk@A2{S)eyv^c#6$|-iN&fdNKVjy#8`4)X z@|}ms0Dtkw`^Pw4emC()6QA*cfX(Wo6C;KLf3Q4NjPh9Ey@kwSW`2kC*3(xp@`G?6@hBlaW9D}X-_-J3Yh-{r;xlHxnjXrpVoblA_$Lyd zG4nfR^t${iMt-|j2Dp~^jG1pS@KucbPU7EBe8$7-%YeHCN+-Ne@#WcrMmugZ)0S26N=P!J(LW9F;v z5%N`xd@IO}$M$n&`iz-x5x(*JuVUo8i60<7;|l>VCNBPPd``NC80Aqh#uuabc5S5k zM40*N{YSovk>5$-UBqY1{GcIy6(ipY<%ma+_>7rfBYflKp<*FF@jqty2{T_!59L=e z@--+oJir3Ecpe!u-zvTJ`mAChKk;M4w-RQ4u7R&&O`YIOrC;lEyGW{;X%vZ}xq_4z>d=2uA z#~H+DoG#x={B2;K1K%f%nQsxXrcLb1 z%Fmej7U7#({uuFB5uY*h`zrrV;+FwFa> zKStq~5ufpgfYtJx7D>eS88D~UzJ*K>G0LlAOwSsX{(D2ZC@*6SkMcT)NPoo0S26N~ zB-9GxGuHW%uIJaOVB~iY|99duW_}m`fdhXqeH9}=db04=MlO)@Gsf^JzxyxJpZO|A ze%E=@e=_kIGe5R{B45SGuem|`ze0S*%(qByU49h{`HBAp%TJj3T?W32k?&qE101qY z=ASY1+wl(^_)`HV6(hgrM&Ye3CO%^fkLA}by>-5dk>7Qb46vN|jG1pS@Kr3*Cw?cV zPnh{N2EK}s@4i_Ec#rc>nE5dSU&YAprtmwp$?{{&{9OD42mVyRNyS3`TZFeZgZMp! zncpqFb-s#`-*u}D5G6k2bom{(N&bbzXUu#n{(%F3P<|C-`rRGETibUL<)5%0Fg=z)e2amvV&prCzw6Ob9>(eNYlwdc@fkBeXh>hhn0^=W zUnM?c=64$SDn@>6g$z)1jFg}8ae&Rr(`txM#TZ{F#it!B<6~?AY!;uz5TA-MzHW-| z3W|?0=TA+)0xqf;`MGz<1l}V)W9F;rAz#JFw-SHvf6DwYPM7Z{{yD^F%zU>LPp|JP z#`N2X|0eMnGhdb0O#V*d|3ZAm%y$~nS23oq-6;bU|4ZhdG4s{(#`IN;d@J#fB|c;3 ztNBH~ijf~B{u9J!%=}z~{3=F%jQAfBpE2`A!9yH~F?|&a{#`PGeUGE(gD~@*(p%@N z82MckzJmCSnQt}lRg8S?ZW&-6@fkC}#=uuG@@t5H9q}16zr(;+G4gZokpVs>K4a!v z415(M-%9)~qxAd`X1>$FS26N~6n-i388crkuL?|0i4Xbh#P1)4*3T^4-Mu6Q42jEe5`dksl=fhs0-`E9x# zcM*Tti86i0%CEH{t0Z#{h# zBfp#Y7ZIOvx_rw+GJ)HP&zSiZL;5Pl^qs_ihWL!r<<}7ZBjPhommekmTH-TKm)}nO z9Z#bAN0|A;4f$uB58+`&zqZ3M7*f-w5OxwiobXo1O8*wZMTCzhTu=Bs!p9Q6p742u z? zllVu%F~VD)O8MPf`VV8gg~SIi-cn*W;j;gBBv z`7!FNJq+RNg^xVF4A@Lxt&5(QBTl3C-|+lcC=N^t+dma!`_V(;BgAKn;fI5Bg2Mwb z@|_6aK#Y9rN&&TViO(4Qk>4S`b-s#`-%b2GiO-n%P6J=X$hSN!1H49j#>@{I_$o$z zjQHOYpE2__SzUGcRV?_A$^^DLU6y~0F!Q4ZzKW5b`=sRO6Q42j)$*!Sysr*bCALDfSR^o5EMDiJ@%da7RDe)OIKX;In4>8KGVw6AljP%#e zlIb&MzJvoW9HWw_$o$z5Al}~pYacX*XMp%o|Or|Jy;y{e)s~Gt` z#NX{~DL>{v_fvX1-IC2V&%_82Py`OaJ?b&zSiZ>7DZaTZ#WO@fkDUjep?4A534xn11vX z;jML@FZ0hB!{htiBE5CKijm(=e8&Zn&zSjYd1Lx2Mt&FZ=MkSV^Sce{s~GtmugU-q z5uY*h)%48L?De+J?~5Y(90yBG4rFFN`J%^a8fbygP%(O zZsId$esD-4U&YAp{zCfSdpVUKVdmHDlE_yv@|}Y*q^6yHh2%5V`I4^JzZwN2zn%EI zE|Yx5%y%l`E8wDvh5W?7l=$6*neR66Rg8S=5DckldF?WN#>}^%Cme_|eG39O5F_7B z{H5)Z&lvr&{i^|o2V&&cAb>PpFHjQ+@vfx`na@>Ps{=O*Z*X-{1#`Hb-@ z@^huP&Q~$=-J8k)o~tCEG4m}D2OfwqeG39O5F;H?*NAfV&tnB`Rzl|N7Md#wUnPRUPXQlI6M#|zXkyuh>@>th9^xcB0gih zihL(HJP;$_i2x47$afO|JmND(f8@Kt;eic_&Z)B7q!lis@gDn`Dxy$mpH zxlEsN6X3-nW_jZH+70ok7~^Z-K?eAo;$zHwC&h`l0!}JMemC*mH%fUJGrz{bS26OP zJ7P#pdyDvtneP<7@%y1-Vx61r8X1){Rzyq;a`nkKJ56s&UpE2{J!Z*%WF{U3Q{-oPv`iz-xHSkr8 z{7&NENPNc3j~VzXM!tJD3<>K6J7oHdnIAOpRV>mc{+q<_B+PucEDppKa8fbygS(@T zrg?9d=`+Twc>kQ>@IZ`wCjvMSBfo?AtBKDT{nO$15dWwZGJVF(k3u|nAjb5g2;e|0 zM?D`4%L@!F-EA@$@^0zn1unnO~!X$MjW<>F3f1+^g=A=`&`& zDzBORPU1W6mVCzP@`J>Gn)r;FpKFj`#VCK2_($9$(`U^5zU1#9{#V3j%zQOH%)g2; z{Z8Wl^In-g=4ozEk+d>w}7sA0+;r#AnQW zw}G!>kssn0fF1#+-$^)Ke(v5FQq%4uK4a!Pg>P#4-NY{jJp@djak~5%@$V--W9C~7 z>8lv?-$DEt56bizGe2hFs~GvtVHi@=!o+8ME?~3z5EY^0<)LD6KPbK(;Jc!@AB0&R ztAVd#d*U-rH+{>#7!u^}l=3rXeiS|7K#b)VMF0n4OuwD@H+M=tWAsnw{nkbN z+(#szG4m}D4<3jyeG39O5R3d1zv&Ul?;(u-n7#!Z9*E8Oxg*g>)9!dg@)_gRbmVsu zf7eGPpK-eUAn|V`K4a!PQ8+jdqx?<;a3IF~cM#wHm`tBB`lI}6eL=p8k#8A=A>qCf zpE2_-!Z)72ijnUm{=bROnEAUI_$o$z4e@t8p2N!K9lfUgzqK%HR10G4|+n% z14gTaJUbCCB0QR~oA5z^Eh3~mtuWxjpG@>W4lwE)U6iIi%n}G+uf)F$FzUnHXt3WD zqw*gGdIZ@1F~(dB2ba5>KNaKsYqz40rqvRkFU%zl->bh|f4( zzGlOanszDi88bgBeB7}JjuehvRe8HN;pR zD#rM7?dYRvPXHh92V=aNPI)?s|1I$uGha>5Ed3bqXFV;`XUu%{{vlt*D1RsMk0(B3 z<_AUY;`c+v$hYQUNKi8;KI3%x?Zp3*_>7sa%4;Tn7x8y_M&_R}^PNJvxcn+c`Ewl@ z66`GzpE2{@!Z*%WG4gAOe>L$LGv8w1s~GuF;@?Mn#?0?4{~g5tg!qh^A2g(|VocwX zk0CW}w`XPfF;15sBmPX{GiH8Y@^=#dpTuX(d{y2GxTs>3-&%knHEjj)88g4H^lOO! zF7X*N-y&j<-+vX0`$zmW#E%kYeqZT#Q20HcljYBt`D%X6@^2}`keXISe8%bWW5hp| z_>7tF7O}_kuVT!9H}StFK4a$B82BnizOx8Jg8a|R{4-|0Mfk?kS26Nyh~Gqf#_95- z#6O<+jG3=~Z@}_bF{YopKZew_tBKE;`A*>*mtV!mcN72L#Alo?KSunoiO-n%?f3@{ z{6YCujOkkslmT{lL6$#byo&EHHM|+WYrNziNPNc3cMgI`;6RLg6=V9jPV~{VBZ$u! zuVVU6aCjgVe1RlJzMJ^R6Q6Oq{21}CBR*s1w=3yk`YOisttA*z(;gx|W9HWg-?;oL zMt+R=BSDW&^ydgOzpwVAlfq9TK4a!v4C$*F)9)t!4a8^6e5Zl0V&q#UU`Y6WPkhGA z?@N9+@mCX{G4s{-rUEXi7}IYj{vlnm{1`J|eO{5TV&q#VVo2z}5uY*h)%48Lj}m`6 z=)vLrW6XT3h&_J)RgCF(5dSXXGftP^P5hCd2Z!l1W`59+zKSt@w+lmR+O5QA%zUTt zjmxiM%45?|K5T7ygbEUW5eyCW; zKUoH720b`TKSr4ORzvzKMt&!Se~tKznNQ7&p1z8aua)6R)4nA>W1TO2QsIkAbgZE z&zSjE17F3+?8lv|QR1INe8$XI?^gv} zR59{9i2nld8K=wdCjO?N2a5HNG4q`U`BjYRTih5@)0PpRG4n0LH-7(AjC?2Y-y}Zc zbon*J-|lTGKV#-Q4e6^G({CsKnZ#$ze6_qQ;G&9=-$ne#iO-n%YJQQgV&wM_{}19b zX1?1XzlxFXoQWYdZS*@b|BRX6DSYGQuVUnDm6Crh@fqI@czx!x+!SBIyHXy;EKk=E zDG*{T4;7<4mP64;(+(p(W4wy}`CRmb12OVdjC?Eck0(B3=Bwq0d=(=qeq6(e7piziKco%oFLYC7fTCjQ{} zDgT6-@5IRAK#b`-5x{{M(~nX3QN(AA{^_LOP5f%&GftOpZN!k8b{z2;Grvao#^qPB zke~QpviyXZZ#D2$jQmate?+$|KgP`Ov;O)qBz&hKelB6=|0I0l@-too;qm)UV^s2o zd?2y&c!_r=d@AA5gu4ijC%nrEGQ68`8{s;_*AQMnxQp;y@8^@b&Bozi$IJ`#zI9Pe#)4kt~14copkkF2#Yk0!}K%`)48kBH}Y< zzQw>-G4h?nzmWKhneR04RgC;7@$Vx(W9HWw_$o$zH}O{ypE2|4b*Uk)fRl=mZ*4*! zO7qk)4bwf zKI2jdzwh>%cI=JlqiNNM;rpMq^(F$>5^f@lp?a%tK?q+jnDTTAV6*xbZIS8i_=(If zW4t;XoSWi6jQLeD=C_OZBZ<$L`5pKN4*WsBijf};$^b>2K4H9y>Gw!)ov&i#2SYM| zi};M0-wtu$ff&upKbQ&-;l?BmZ2d3G;pj7ZacNFSv;??;r3uh3EYM))Hp>{$oFr z>9alb<%HQj_#U65KgjQs>E9$U$V+(WYRPAN+IGTh5Bo^MY~T7N!rELJ-|y^Cc*ief zd~A=oL|_OzPlkWhfDiamhG+kW1qOL3eC2;ge!}+&4Du5m|CRJ-`?t>u9Mu?){94A( z_HC~MjQ5l6)xJoW?a%&5nC-!C`;FwY{nBc}Y>)Ipz!)Ff+q{ST*?wke5Ako1`JY3W z?L!{L_*UtEDq*%?xbwG?-`zoc!j{`5K7p{4@JhmL@9)4hlz;MXC(QQvJ|oQb^oD*% z>8+6QPbQpuhs387W_xol5oY^w-x6kfaJKJdd~Dw>LYVEP-NX1U8UOo)*`C>N%)eXu z7ycmQ%e`0P3c_x}PZ16hcK#^C#|VE&xP$Ow=&0cH+eP?G!felJ$j{QB?KAC1nC&f1 z0gU&b?I(E%vpu9X!j^}myk`@3626ge4dKTKM+v_}xSjA?z(QWaJNzOs+pqXLVYV;f zC(QO7uH*2}NO{&0j&@0W=C3k7UN8S1VP604_)YrrdgzM?^ZMf72y3s&_zqty!}I#x zm4tac?w-F(f9nt^L^zHn%sxk(Hv*OyuUGje zVP6064q;wT;LMTXYp~IT<2AyppE_@l^zR%d{huVv`kKQ)HwV*W{mXw5W_`-H2(x}< z0puIQM~BP!&LPbDi(j)p=@(AjM22Vm!s`gLzTluur9bQcH4tWfxE~phlIcwunj`8j z>w9?!v;NizfKfiy2fCOr>-RiB;Wg5qd5`>A-(`!mbbb${r`o`i`pzv%ceM!mRJOmN4r(ZnKTd59>P) zBh31a1%z4OaVlZfcl-xo)^`jMW_`z#3A4WAC4^bu@m9h-p6?{goC@!yTIe!oYU?ZJIZnC-z0-ByNYdvJdx+(Y)?MiORwa8|->56(rH?ZH(MW_xh; zgxMb4BEoDB?n1(B5AI&ZWDo8+#$^Akn=sph`-w5xgWGC5%0JnI8^M_LRre>%_TZ`s zvpu-^gxMb4@r2nP+_{9=9^7)mtPgt+VIChpL72zKgW#PERYqgn9fphp^KLf8dx84*9(Q-|>Wbf68;&zY_kyaT7QU&-+0>CU8{W@9Pu7ygvoJ z4k0{@NB#jGaEv0%`;kp0%=Y8vGp-TAwKE7uY5edL`yVO&YoS0;9-dEX6&S|5CXlQFOzpU@+AAz_`^n%9rbu z^8P}Y^+WgERQmILb17pA-$Va$vpvEx!fYRK9^-jZ{*wvweAG3Bd4BE@!aU#g0b}C-N!Uqv@6BZXd4JXMgn571 zIfU6>ZX02?pM3%QW5tK#F2Zd8;tj%X((m|*@iZBJm(6AR?Os_PV+iy9C#8gWf0ZK$ z^L_(M2m4$E_ck&-uTOr1aI8W4&(4+pyng>3!p^zUf9kfB9<3LCnXrY% zQ>EKUf8PJ^dcwIQWqIMd8|7zvbIpW#J<`*J*&fi9@U9lm^IJ0gMLSB&_P%EBBr)3q z8ojf`Y>#O0E)v(kcTqgvCCuwfo8bk6@$-7sKM3>s-=(`se_jteY&VIWd&&IVLzwNK zjozKogK-5O&k$z&8g+Y+Kh=k|gxP-JdwWWMUO&8eFG>%_m3VAzk(ljeoK2YRPtDz1 z`m=qh@xvr$`(iP|y#8sIeWX9H7jGxb_BKZkm;P)Ib0uN6KiM`y`m;UA{Cz1svL~>T zFx$hJGE(~I?k)54Z^CT)$^k%=QeLp#y^T#YxZqb%fbI{-=c5e#FSJGJJ3snf^S& zyr0`EgxQ|Tw&P^@4yqq+!fc;yDPgvk_X1(IKa*=E`KbO?5oY@+mlNjilbhRQc>ey} z%6Nj5_d~+0UsGw9;aOkl5yBQ~-)(v1-zfQ45oZ0y9URi1^;K>m?4CK+ zS-KP@?s!oMiQ z)!rb?_Ai3tr9bQU{Y04UTby-}^k@Ci9ic;w^_%UH-9p$pQI=l%0W&yYB{ zSo*gT=KaFQyQM$xmp5pp#Jr!|-w|&D{hJeI`t5{+gv%BKo3FAi%_#=roW&iIDc*|-LpYA`>fDe*bCJvEQNIaP1Ycb%n z4EO;9uAe2+)A^?u@Nxrw(SScQ;G9DeaIf13t!p&o=I-39J$aQA?_7uiYgdluYt;GPHf0=O5!b%A>c z+{@rz0rx7n*TAg;_d2*Yz`Y6XEpTsxdk5UR;NAoGKDcghI7jm#xR1bn4DJ(fpMv`g z+~?p{gZl#9m*D;b?kjL#gZlfP5z^mYn8sa{&2(>iihGWRS}=Jd9t@TA#gYtXsK7iwziado0@99b@RjVt5uDy zk@~>GmiU!f!Fq4RH^tjh-{cD^A?5YBq@Fo8YgHuVZ<$*f2reosZ?@TsT(0KIl4_5q z&ONP8^CX3^=NI%5BG2Ae0EeTG5Cwe&NS4w**%v8miA?u3*ZM;4isFzr=&zp_4z$?7 zr^OfY*B#<*YW0;>RCye;swWkd)wx{o-&PEaKxmOW5NIlCY6{eOBY_YGve`>R5&en_ z4=517C=pC+M(w;Tr==(54h8Cb;c!{~0{s%)v@EAyRqPR|IVxJQM5_a`o|O4r3*2?p z(ywSLl<%P-f5bO6;BTq)1)CPR>zc8cWH}WJzZt=ZKhWZBq6kWCHqW#=*Mdr$Ri}q4 zt3B>2tBf@T%f3FWy!9dFuMeqUeMm*?Ln`i-WVh+1iqC(z(L3J5>6eiNYsvLzC~pv zHmhl#Fika-dBrh=GOs6wK#p|MGp`4Rn9T3HAy8pD$(dIMLrms39|Kj`@@BUBT7C7? zp{?-F^*OLfcU4ZS5>FNQRtD=z11&ASI(!@*GlISrmuOIuyefU(dRL{*j<<1Qpsuyq z*Ak%=65_}&Z3={a=8@!!n+r|mf@U*nL21YbZzyb1&AbaI`ofV=0K|8*_>KwQFjO{E z`Hg-e18z>);F~D5(bFil!Jp-(f;0GD`$CSYNFc~1=1BC*uZnm> zkrbW<6@iGqVG;Z0m-}0w&!NAc9FsymC`}T}=vy!yIt_t37u^b@cOjIQ@P{I!AVm}X zA*d*_$)3>K(BKQ@xmzPHx?3jR`IDMj!;K_g;RNWR1R5Ihu}{QV;)?|#XfLcbL(t+D zUt46NugS}KESeskD=KuEp<g~)OR+NU}*@igic4~c<>}amA;b|Zh9r$!_Wd>na$*`yWl-u z?U9v6rB%Z{hQ2Y>_=FBumEGgArO#K&6=m7$)m%{s}Cl^;8TdXt^ybjqso zq4@DW*(et>{W2Ili9ULHt*hH5yk5^|ZnTvas&Le$h3%nEyJn|!W$1Cm-XWVGDZGB?tg#RTn;2=r~? zZ6=BnpVPd=8pX9JyTy!h$VLX`KrsqP47%!Tz%gmo3O>#Bvs%>(^fGY6fDxYLthOeF zkeYmA!+LVP-2SYUd=bduYVu(>IxYx2*4auBr!=so)_X=-Xrzjv5|@O-{<$r#$}DEZ zTV)zOKfu`0Pwrya;dRyKt2cC!VRp-IbwJk<`;PePh3&rel3;MFJkV^-)H*^+8kM)Ebu+Z6Ww7v@XO4gNRXFWJ?U zlXw4BH%w+szR~{+GbTF&8#ZIL#y3+x+YY;|hLANJ)j_M)=hzE7_vl=CZhgK)d5dj0 zc^uU+pPKQPMn4M3QSEDL+L#0?pdP)Pi`pn|S`pqfcYJy(b3)ui)(YRrCG9LmT01RXFIa^OdyJ;|v{k%F}Lbse6^#<}qK~(6nX9WM>iM zQs<;xIHi{P&SN3W+lS#Z0yO>k@L_fR-v-dX#R<8JstF!@X=Bn@xqlTzk+Sa>6bn+E z1wrH!KE>DONb6nca?LZFgY92oNEs?xo0>LA#e~Kw8x>LJsyYOE02@_b-;vlf^>y3f zvDI}LXv~+?iYJXHRT4h;X%8&>H=G_wIm8DvG4xLE5DlOlvPG4j6$bR#GNy`j>^)|UB6N+iAM zL#RctPJMh=khRj{9o62Zk<^4>j#k$UTMxFw?eisnhD$qf^BcVmbhGKxwCM$yb@y%JcLw*b`$2Tr&Wg zisl2YjHe}JH-ATFIxSmoedLTMCNieH_YCixOsAJ8Ra?1bH@;pnot%S{OEKigbb3!)G-OfTnLenK_ z#GmPeL@Na^?WFmY3@6mfAR*H!i7c5;mlVOE(HDXhZn)GiGSNTR9|@O3ztH%K)x+7L zqY;V(>MH`FW^WTbKz05wtjTfJ8)u_*M!q|+&}L04&A30jhwA2+_0f9+%{TlCuBhE- zY;7d0j!a$$&|mS=zJ)@Ak+k;JVTS0e!1Xkj-DXs-4P2%2socEXR%%_NDR8v~VF_NQ3!2tj#;1V#AyB?A$W!hJ!*Ou8f)Io+j-MD4*-} zk}UA&*&_k3%bzq8rvxc*V34+6g0#w5V7a_ubPlB+9gP1a3L z%SO`h)ri)v zfHY{5D0?M^Pi)FWc<8g9tJC_SAFF;#Qy;E=N|ZOn8&~=?SaO%WI|XJ+4<5uidPt95iVJ^bSgzLp~cUtB;g= zK@;8|VUrt*;OiWn9qNctt*amL<-3}LnUKrS^QemCc|hge;qgR-RTfV$6lhz7Bcc3A zYp}^zHWm9-*47sPQLR2tFd|KX&u(-^Thhmyk@ZC<^$6= zp2$LBJI!Yy;D5_}^8&$d+eyA$S$pt@ffKN4~YlQDk>O6!{o$9(vh|9B>ro z;VHiuJPWOuvIC-BRFGHTu;mrl?RiCxg2LiFE5wKgn&=>((6KBP>#OB= zCzs7mPvoQ~?_4l?=$VtCcHPf+pjH3|`KEhYzz7@I`7}^i6wj=dgM9DbT#6cY*P31C?C%xKj8}H24?Q zfz42`JQ`^6EbxZ>XwSuFZ4u_fJYeT5F*38jAV7V<6Y)3u>OBj+@aaRS7ue{f2!_Pw zix*~dYsA+Etvt^C)HQ|zEdiSqNwUR;Ah^~mya=qFHhb!j1tIf2MfI)lo&({^+VHI_ z{+E?E!Aq;jX5~Y?J*YQDxi%5hnDJu$<$`uRn>=6x)tiu8yH$h;EcB3AJ~Y(?b4Fx^ zP9~KvGUgBxs|7Ew7qqsd@G*$PWnzZ{@YXMqMUdALSePJEJd{#U$)RL##W4@wg^6_O z!AVy|3gJe>y;z79swz?p-zA&3;nYeC;|8dqp+F>KDxp^gkN8CT{Faj zzd?Aq;TL)wnkP^@ug>Fb1xv8dwF9$*XdD(kx25oaZx-a!92V168uV#o@3IaSyhlI) z#t?g$`aPNlKKp`9(60lD&;y>3KoC;r5`lkk3FQe#LPAb_y0rR5P4#f4wboM$?FY0l z<66U^aiYeLgXeu*ZL7bjem<;n9Rux8OGM)EIIu+A?2U}EjjNYNi}`mGZC+lB|I(=ZW~j-sKwjtmr0dQhxORlNQPA@#@72oj9G}W0l3|BD&q5g zX0`xD1DT;xfLrK+u79g~&-SGiL(=0) zg25&j9$*U^9yc2mL&ti9!Ex}=LLHBU$4$iV-vM~e##KYDt!wo9IUK#{#sfCI!ioiIY;q1@BnOV0L zL#;R7az`&_OXa(VYeKSx@p4;16_|;F0qu+uFg?2fntrGU96p8Vbm$dH%jY0W>hBF1 zdgh_Q<2MLARY?!NS(9T+!yu;_uQKIyf?0RWa=gKdH#;dmbeINSHyfZvbE+(v z(U81n4%|-eLqlKLwE!9&>OPf2djP!zY2V)9SD`nRcF|O3y%j?nvjO=bOZMvQ|L5lm zj1Oh0z1Id6o8cml$KSFb02XTuZE+tBu@y$`CJZq+gZX>;#UpD*_A~V+g>I_YenGq} z!07I}W=YWmpCvL8gfsGNsd|j`*Gnnk(pg(#E#+b7(8IxosHUrIbq|qO$55i)T zMdS1h9md$k+QwSPakoXkKCYf@l~W6@%svnB2Y@UTF0LC(Vbd{n=H%?y`t5cBy*&Cl ztQy)C9m1>^tl9UCjOjTVKS9QC);cLkh?0nNGbSFCJAQ&N`=aK`R+{RQyAj%5=GhHX zy&q`I6ZC@yy3t|X?{P3lZ)k0)qsB+68D_T9Tbj0r z(<&Zpr{t$0m<{s67z(ETnmqc%mobh^l^cv|SOtLfOn4emX&+6WWA)2;U-iVU=MF{% zO5jXo!>BBgg(PeyX4A8g6;P>4N5Ltc!_+TMD?Ssv{#HC6>8{&$#aB{iC66f;jtnzA$k;lQ4p4kE3Vh?FnB;^pxh*~>=kHD_0^>xg4F=*I%&=9T$wqwT zwqiM9Q|Y5GBGvH4V8H;)Cd%)B;$6!#Jqa8748U}4)7${;MAs!m&#RG-T2j>P$N_*h5V@QE*C ztoUJ~;!uS87oG;#lGIdNLg-0AudKLk0elknMq0yt=xX5WinTT3ni$m{cw(pzm-x*N zdVNAfF>ea0;aQ$HmFu5Pzh|WJ!6p8wB=Iu~e$Yzz5~)up7(US$woFvM!WaU|z1vbP zJc-M1N=xU{jZ$Y|4N4-`mUE+Z=w`S65&RB>dRF7aIa#`N>mW!jA3D^1iPyt* zy-Q|QIXh!ln1rJxWyZ7eviU%zDDoL9-S%?V`13rf8D~x9gfy!@6XfaX;8p zn@+AnPW8qc3$w2_lXH|L2;P!9IiQQz#kAicW-VH}SxB+cK5`Uz&3zlc7Ht=dC3YSwx-f6 zr%^G-uvfQXIhaoCeVCxXYU07-;~Vk>iPSs{J31>HnFAs0Q z99Z9Eta|#Cm@)<7Ds1+)9SZXZ$SJqwfxR(MI;Bn(ZToi5?t1Xvz63Z#iP^JHn3G%_Z_qGQGxxX2Y%KKswIe<{DiO;%KBwz zqup^)sZR;>PNue~*0qWlOkpUMBU4jz=DW48tDL$C(M*X2?Uji&*nwSNVE$!w;kkm5Hn?H8bGsVPqH zXESYEkL`%lmsqi_lsSp5!mgAsO1^Pz$=T0(lGYQiK1q1%gr=z@ZfUC&R`(`ZA+=?G zvrxT-w!!=X_5{n(egf{{j5CgD*AQ2^A0{E8uTTk}e+`|xv?DR!&nKf2nlzOejUO6L zlM={i68a>f+O(o0N6-QHG^fep19fP%h zFW3#6$L{!@wpXr{)u`qX&*Ex)dLRt>plGTTXW+UqLVM!sWBcDGVcI(O?_ZYJhk*S~sz z$q!{mgd{y3s69eaQs``o7e`W%lpCUE>>=Qf{_$K6WXof^F;vE$Bv}4Xi{?~u^_yN3 zVB0YKgkIJFZFI562H#+t0}Fgr4PfuhSM8l!=AHz0`-(lq`V|;n7JI;2e-(V9EUSeX zeC&Hlh1~`8Ykccx?(S@u45U5mOuY?je|tU|HymoXM`>p<*vk3=iwHeIB{awp);*+lz1X>1CaiFSu@>?xu4mRRd|Z8&5>3h05E z#@+$&5fN-&m`sgj@I9GrTN&BTfh|qb7$&8-PUdTjPiMw%LBi7Vf>~kgqPUE@`DqXN zQg$2DRpc%zsjn|>Y;BpJJdbWKg+0vqi+Rd~GFJQHYnqA0mw{CE5X)r~wqH@&wSg0) zmpxlERtsTBjI#`88xrgN=QO7S^v}^ewMUjO)_WEMd)+4Aqt{ukf!RtjW4A=KY_j%M zdKdO;$Rn%o2wNe1X_NObtXuBEX(+?}g_$ig%O(T)Vg~bpu)tkRnkH-X4BP{odVlK7 zRSp~66p>L;H=t*f-8xW&Ut62N#y^-$)++&|Y8YGTbz=SWjBNeb%85RsqN3f#Ba|Z> zIsnR4Gwv85=h8_v51z~3#h9dvHU;}p>;jyu-NK8S%q`p z-d_b11Fbj;5i2P+jKXm~*v^2p2x7U-hLNCP7TggK0k*l=P+He{PzWw*;zN132d*AC zun3aJq8qMtAw?mRcf9^Y_p+C;9)@>6+Hh+bf`NrLYw{zWv9Yr)`Pt1_-1aQS4f}!^ zAGZw3oxQki$<0It{~xuyky;0lW(v6Ov4)2 zm`~l^Npl7#m6Cd+vY;pp6pUGp$fqTK((z-JPC{HHuB2FxW!r%Prz$Dm` zP8v>AMtAYIAxxUU4t0I$3MFhXt8_>DS8qu#*KDCZya*E4#wV|QOcz zv7hDgi)}7p;d~LS*M*(>V4Z&ARwo;5F?W&}axJ&rF%@?G6Z?=>`s*5b%|1*9gLxl6 z*tfM6lYvClTlAc4R-GDxd&}m4Y;spqIh~ACWokGif>8mTC`=h7gb;&}A|cQ;-=eY- zhX=PRPY42^WrYCorXj-{vnpx`1Kx382$pj7WtE1qEGx;!(nu`Qte1u|HcXPIIHf$c zVsQ^=1aUh&Zxd;RmlT-ZPB(1Uj<+-gsi;>{MUqrDTS~E%nq@9Zc57C`WJ7}7`pTDt ztDs$0QkXI`DT)j1{+K;8eH5}Rw4^7ES;?g=%FnberjRSISFtK=R#9Wbrv}V-FLhlF zn!4abwOJPdMT#j)AVsdkBao7$%qV5Jkz#$V>{eKZqCGiHZOI)~{-br%8_Ju2Z-?Ec zH}YsMCfo?K+VoZ-dmzfAXkKA4XG$QO)wKR#D0{x1SXFCnxGve7(5DP%E7HTErIt!xuxSxQ1F`sxZzuB_V-VcD`4aa{Em2{3!KnO^;YuT>wQL?? z1XcDdw`Bi+LTdx;Cak>7v-XPBSIOZ{rAY$BjSD8WhOl~1EisXUtci%5mcTb& z*^x;a>1O!G6hP0b!QYlK)d+p1MA~u|d%(nI`8=!3m0yk<)tak9q#a$Jr;lNtk`z=p z<7%x8r(=`x^>#z!UHSAzsd=R2k+!7f1uRF)W>0~sy6Cz}sjeRBkE9u2Ez%!hGN7WP ztPbgqBuT}Rc4X`HeAwmlVS`mvxYb~FfV$Iu*8+DPjfN6hO1*i_TI<-0s@S^LQC8zh zyX?%Lq%6NWQPoBmL&$ntkW7b6EPil%Q3M6!jlc#;tF5UEMW@^o&3@2pE znK!eC$+L*MnChWr10=oy-NvYtB=FwD*Pc(BuJ^t*CzU&TM zP9kciVLgf5=EGD<=wN}(L(ywhrpIljVH0wcLP;qNA}SLl^<8bft(36k>q{l*9-#)N zX;MPR%lx*dT03DHPeNXC7$glwChV%%H&NAqOL!TU+IyW$$l5DXj$O?(EA%&Hfj`e4 z33y>6u?=YM&<_$MX$ZtcY?UIygs@?}r3XP>Q?Tti7q&1eZ{-g_Nw*;NT%j_^H=j+B zL)C7_>IVo|kO9yC9iZm@GtLA=Wwd>td$wm~11I9*e8E(bp#1rh!kp zz!$Fb28FF|HPdUj%sA`8or-+T3h^WV>j5hLlZ&d*Fzz{I~0Ju4#H*i zG?n3);0?p9d6C;6^uek%X@4B8|4(Z2&JAn2DSh8ue;B^rc>>|Ku^F+*THESxst=EY z_{P*PYVkJv>&Ascb>m8>L$_{{zsVOKM`@2iGye7d5Mxg$K^DAS^c~kzNj{qXkEY7w z7iLwKCx@?!Ku;S@rHl7QeD4FZ4bh+rF7H4*n6gCzd-7JG5V}oj%o&a5b3DE5!)k>+ zyC=cBEnyou78_!<5iN**pelvH8^I0eT|ioVx_O44DPk4yzwso23#+| z^(z}CU>3JoaX?8yolVk0G!1ILN;YHKLH6|TnW=bK!*EYR+)Jg&+cMV!b~2kh&>A;` z)s={Bw3Pd98V7C~E#pvM*8{n(FiA}i?vRNRdVi~}c{0hSLE)7u9wAy-3#ExR%*$|1 zmpW({GXxMO5L)C81e)}v+c+7auk$rZ2wKZ};`zhd$LV^U#~!2sZ7;KK1|o{gzX1 zSe(!Sg;`A50aji)1E<{$sly|lg$;kPBK7fIA6oaMoTqCN#H`ygaHVF_C}ga`QSXSM z3#!isq`77SU!Q&MhT4yt0P$yOquF)NDZHxs%&EzPmTq-}o05^7_D_V3YD3n~VVZN9D+vL+x?`!b3Hbp%3z9wJ9S4I}md)e8Lw;@ech6A+8r(SF0lTW5| zR4isZm@-EtJyWa}GP}HyY~zVa{Pba7iz3Ew#_xgY zlc8NVlJ(Kx`VBP1OA)uh!u-ecvq6XMX1$sI4W}|6BfJ7lcM|HKoF=Osxemtfjour` z-qt1=O~Rz`Ga5hK3KP?T8BIcO8RK^$b3NSTJDj<=lUu6H#r;16&S;Yw28yve5X+!>s_#%c7d<^URMlbQOAMw?#iopVVx<0rxU5J!WrA(TuzV-XD4WWer@j7R|Fd=cOO7xt?#885~ zeJl$|3Y&Jb(YtE8;h~4Xsa3d>!=~Fn^sb$ql(*Ch%t>mMtn+57G-%Wmwk2x{+mrQ) z?L|o{#*Sot;{0TDMfu6m7bP1yGPA;zoMKV3g0u~+AtmL=nr!CDW=&4i+=7!yIJ-%F zCOX&2ng4IGH)Sm0%S-!)hQ< zyA>+nu23it!tJu9Z-I&LbWk7n&ZV5?5zkjY3)U6NOo%8GBeIEz#I*#v0}BSVl&gGo zAs>~0QB@FZT!0p!(Zew-SPz#IG5~g7yy2;>Y94%4Mg`sq1 z@Z$i77Y@<}zuj&bq-`a=#JRM|U#qB+Yx#LI3o7&Mhq@|<^|{I0 zo2_4-{Iut~=t;-ia@@@;W(S^J-OxGY^_O0nKWN76P5wOg&SQ^0>8*#(m~z_RukXwM z*mTWet2@;jH>AmZgK6$w;VM2Uz@+a&p~Cg-6s_8K63o+ z-~YOkx8sr4KO4ICJmRk_-9z8;J|7zTt^dlZf6bWGbNMsfUtG21?KQVPxF|35$*R{P z@9lBG+Sax7zRv6K?-}{tD_f19Qv;98$mk z7SDaW)#T%@|9s+!SH&J%S>IiAvUA7LMPGch@AN0#x1X}ZpJUG%+;Yrb*UXuJhW5pY zC#|~oktd$```6naHEzoCvtO89Gws08pg*q}HtN00K3OvS%%?{^|K$NKLw)02C;y{3 zZ_DS8KW@p|pI`I;<>ZzZEN?wB@v)W9eRadHyDzJ-)IUFVkF^E=-tJe&QHuj5jrT7( zrX+IQ!(*m=cEZi8ZkzG#!XJ-*GjNsVhx@lVes%3*!F`YWU_`|=kJS#Eange?yj3uK z&J^!|T#cgxi{5Pie+K|dt}G+inoaj`r*ak)4v~fRO3JYb!oUiHQmm+tVl!1R_)5Baj> zwx-JqzWwF9;v=r#qVmW|b*Eh$cqDk-Bdb1q_N8|oo)^96gqeY_$80yYWX={peYv{% z*qPVg^7WdJKYQp8`z^C(mc97Wi0-G}&e>s#ci+Qa*roB0?qiSmbVOO;!56ODw(iv* z-J}09@0~}kyLZXjeXc0K;^9}Gf1qmoKaL)9l5Np1E1xc|xpu`0U*XV2w&gp$G2{IU zCgwb~?8xcwT0NyF?smjAmu>s(8^?b!=A!Ns9=NG>|0gf2S!IttebDUc{p$DJtNww} zzmLrMe!C+Z7re6RtbGGZuKf8n*TK=5r#=?+d^6?E=dPb}^sh^9tJ;0|$uDeGzQ=;^ zsw|_mS8ptEtT_4OvR%7=+2`u}&s?*7i?ZvhE|_@HgNr{bc(-_$d53>ku0eO^3f z^ABGAb>vx>PI}Y%!h$_6cmCyt`hPFG=lBP!FI_m~xZsYHZOh*ub={O(M?2;`dBJUY z-;Z6k>!D*R7dJdL_2&o9*>jIox14?AN8NW1o_ycxN9Wvr)sVl>?fUKQ{H-rPe#w^0 z3lDzw_>X_LO}1Tm%1`xe7j3uVlpi17&C)RJ=I#H!ujBK38*bTVlh84nmRxYijd#@# z-+b?~n@@P+s#_a>Z9i_|>%rXP-njkfKWBV$%95Y2{`RfGw?Dqm;a|Sg_TAUxk0_sM zTlvq?*U$Or*E4>Y^XYv5^ z?bF|>I_KqQYCiF8U3+-rX@hob*rVivQ!<$u<<3P>$2oH^yZ8PVm+!i3hx6mZ4sAL0v6|}bK7M+e zamz1#GiUjkd){--uaAe%y}0L|f4{iq!b@-c<+ueS&pZFw71z9a?N;Z`J1lSS(|23w zJ7MKEIs5&5+ebSd;oWW6U&dd3{?FGh_pkcp%i9m!zvHvwN4G3H=sNexV+S1Q0{a)#T!zMz`0WJhtJ9m%IKrwPjf2=xc5bJ-*_CDW?xw zQ}e`@Z|^+ym(drlzVzzTe!9RP*yWLZE<19wX(MNi)T z@Nbh3J?pG#mao=a^>x^`dd_F(|G)OG1FETPU6T+>LKmb+iwPhqBq#LVk*YL7iZmfA z%|sIFs6gmNLC`@&x*#ZmBO-_$5J4=UfCz|4Q4v%`s*SgUs4&-i=dJhFnt5-nu-4(6 zz0Yp>vj1;?|9_GlgGdKVk#FVG$McbAUC&5g742|x)K?kWb~`iH%<+;;d3-89Q9N*LFHI}DT&tjGusvFJKx*Fn(vCMC zU)Tl<+8=Z_Sf5l2Z%C0JO_Pxye=2ZLdG)84YVW%zDpaY1DZ&1OR!sF<*UK0@r=nl% z#GzBOULWPwIE4?cUakFV_G@75GqI93xftp0yb(3m#W52*Zm^`i9U&{( zZjP@UgME}D?7Pbk^BkULqX0EQ*A?f$K|j+~hXBX}C#DnNpy#oIgRU&N|D+;7*5W;$ zr874;)61ha#F@s;dU>3=`&!??a>fd3pzS17P^n=epvI4k?boW=H* z$rYxL{Tv_kMVFLLmI1L74N({DQbvds8wivq+UgZ9mqI*O6 zTyhLbmsKj_)KT3rEAEWS3*2qZIwJwXRg$j~O|CyivJWpf99zHo<&m6A%0;Mq7j8Ts z^q9IczCP60$H&9ZJt_TjF7|~+J*J9aB~~|iQOU{R?YS~Iv+!ZW#i~%8qGY5omoe!w zx3f!x#>;N@#~j=W0iWVjhW*bp@+FaDWKQQ9wZE@z`t68Nw&^T~qhKBOR^Dp$19w~- z6x?|RY$NnuUn^(#KI+o4=EO+k9Z6p!F@K%Lb25_R<=%RyV1H{G7 z)oNJkpdgrd`yl6 zBfn1h9mMIC%$jVDV0VLX^a7HIb&xcK&0m`@87ID*N+oOH@m_)cI8XZg!+DVc@PS|& z;XoF|O)t+w?*RcObsWUY`oqHDtOz)m%_}E2cq?H{2I^G5g1)Acsj3@Ns>D%7SB}a> zTyd%`_x!|`macHAwxBzffYQwx7F>|S~I_FEa(-exC}iL@NSp*6fh ziSniQzHo**nsLfTD86M17rhW%ezE$p)w5F3oMw?sa}I}H_$6> z4vlgw8;mPCo>-K@d6dc%ZhP7%8nvvWu)U>?Y?&ql9=HtAn2Wyg01UnyBbL9903a1e zNkLhGpadzZ00K}{1_YqKl>A#r=&vk&_;49g@^G(&iS-!E8@I3+`7xEkZI<@q$s&pU z^A`ToY-cbK{FSiIoHg=MgnsF<`Sv?IPe}RkwG~|+7TwSwc{Dei^Q1|#ONXGUVrwJM z=KBIZ?JXjK)2`f|5$@TO(#&=CsheH7-g_%!S6i%h60bTkJ98rUfpy(YN9$dw>=)3p zt>toP68WMo3`(gne87{V{b8e-?3(7U_p2{)KXDW5YSpgRI6K9|&6LjZ$67%gwNs0$ zcZcAaqP^)RcJ?4v;JK_v5~rigEv|~UNI@^56E%c8KID} zyDC+@pGaBQ)*YOuC_pR-InpBk&C+SGaKL@Re=;@Je>Lu(WbjMV{!81Z!RQN( zI2u8Nv4bALQUzmLTA94OSzu7qB(#B*eIqN3g@p|c6O^Dc0|ih+NJz*sYFH!*FHbxa z)$pS*9E!TQCaTJo=3fk+(szpTa2t#}B2}6^?798M;LJ0~WQqZ1W zUPSWZZs%yyPEdzPKlY&MeSozN{Js;K0`7Wy2706E-^T79X+Kl-Pyn&d!F@GWdGJkTcf+s_2z{$!eq^tD|j%ThkH=1od=--nRw z$>4_}kkw7e*yvc%ENv6j$+B#{LvkH|q^;_{Hbu#P`_P-GHOxw>yHIC7biuEgZG69a zbg~`#ky_&)*NLZy8NFv@qNJD>1$`E?XZVfkhY%2O#(9!;VyNPPPFIU~~v54GIY)7mn-&`FBE zvs|oXJZrgo>L?;s)lXC+ZpPa`IhA!u!QfMO=ib}{ z1-3P!S2GNxR&BV=BYtu72{*51i%22s(@C8@!=KxbY^vvig4RMb78;;1-z6CXLm2ju zH|)B#94fku`3EHgUEKgSBd8J76(D7Zu5KWZR9{Mhm6Nar5@tmq(`6DfCgr?gFizA@ zp+_)+41ggZm^n39NFTa_T2fdVXj9LC0HBCu(1u_l6a5!e8Cv#dBkRBGHjWidi$kLH zrcs>0@BY^YRtP^}e*akr6=#(ulTYMO9E5g^NweKv<(?oOUhn&UwlE()yDp5$@AdWO zCz?et5hMMMeaF}ogN)CAJvQTPV|L`SaoR_|{A+5HFJD{@@HfX%c=#OmW9AUW3wvzF zm}keH54{zXsFN-;5TyP}GbTXn=! z!a+VM+oQ%0*lGs%@%J{t8+Lrc8DqWscW=DdkwILz-eqbo{mq9vlclmC zgRz5<_w9a>hN0Y1ykJZ8cY1sdka`N~d}kXN3<2J4pk$V)3WCL9mP8E6i$Y#TRrI91 zH!;}98zL-|QV$xK4<^4*{Y}uTqt=X2qfa@mI1h2ssc}(C!6Bv=APC&BX#|NlXY-xPIWYRwqDd+!BB3+>r*&-o9I-t^Y<;V%4zGK164DtU| zkT5R#?SCU8T`2AEy2V?b)oLQ`gg3nWIQ94wnOp2g$-w1!kyCcp{r#WUC$0BUOWK%X z!GCvd{!5F$DX$jHbK_{tK!T#B4OVqf*YaJ#0dcLosvh%&yUb{T=>)wQF+E9%siWqT zy)lL?9c|q>w0?4WqN32IkJYIrU->KMP`bP{gR+uTTcL0zq0tV{<}+QJp6uOcuJ8!H zz>#Ovlw<8Votbnku=W}Dg-|F6N4t^ZjcMxepg0LvBB(hUvpM+XxFDL@}+V+c41 zgC_3rB6<7l*`|Y19e4z*4IRJ{u$t&2c-a5X}FDkt% zLtoX%=XmDn9><`#bhqgZ&T8^bEII{Ol$0`@{loZ4${HdDhl_)#I;%h0WnMmC=1_C1 z;HX-a4A zzsv9UAiuvB6YUs2!St0opg*`l;E>fFPn~?k{K&;md(>o3sNrHR70`IwAR6yoR*t1W z4w4tnO`!1tH;=dG$4mynA{uWg$T|s!0b>9`9+r*V%28X2W(*33qBfjjJ6ncKfKWkRNnOw-0=7 zfgT|M(rDe{%tq562m`qsK>iy7Lv&RKUI#%Df|P)q1F8-r6%>@0l8^yG0+7n$=vMz6 z7k!5%Ak?;OvmktzWT^jn@Tt^j-;F} zEV&VHG^R>!Q)lp=_sWmPKFT61;p}=n<`%eXa5A6znhs|9 zJrTtaXO2Rv+&n7T{H?gL_n0m)uZ_ap7 zb9(H4_1d)a=I2z7)puR}y3IA=MU6`eMf+(o4QgV^b1EK1nhzll%?F{$gS6K4bJcN4 zQW;}r92{S315r7#+x6e~UJw~0)yscODR+`1-L8TLehbReu|C+#C!iYrfY0f156NXt zK!A1vYr9j}V+fH$++XMVU31+8qUP#<5JgJ&q_^DbSB+IGaFm&wA6(x*DV71MFhtQx z@AB6oh#gX-iz7*d9JB$F&6mlS`k`P~hT*8+t#2_F_tXE+5wYw#O+IvK|H7D#{onB;T8A}2`B6c6H_^SnSp-IK=?QpN( zj#cqEY2BgIkMf#l4lZ0)_5I8xDP5B-Zo~X_s&s$q&HXAbU2wzQay}Qo z)>ZZ`$1_Oksy(^H=?h*{Y0YKC>KJeL#wnwnWy8Hgkt29K4CCty{~Vedldb?$h5~7K%pOi=qyEU3igVHmr%7 z=Pe0Tye!vf?i`3xx28Uo-4o`1;8dx=1BWUH|Kib!#)|pZ=tIJ{WvPSgn-gUW!rW#& zhKwBxKG~SLrJHZQ^sa+a-GlgT$TqLFNW`_=@0fq?;5b#@NN2!Pht2qaQjp9sz3iae zX6TK@^^nwG$LN1aivMhk9{KOwE0u@S{d?`$TCm-r*~BX!I$cI=ES!&K1vj zmSP%a0q@t(-&A{jt0L3l$_c-`P@eZwB^+ALJ~>;tqibhcKzh18>l_ ze?%f9A8b;sVe?$z+amtj=opoC|M5;v$>PnU*Prr2# zI+-?UXSiRu_hGx*Yu^-jG>%KvvLP&AzO5CK&`rsPdgj$u+cZ%JO#{1bN-r))ZtYTPR=_DXk!Y|rk|Ew{6I z8Q*lgRgKvOclWVafBbxL&~M>)rp~vOU3agi9XPzo&!O+_7MI<%*xkAq`}LpmRjS;d zoyF7bqK+LEY$ zf@fm%-T}g@PU`zro%)cjf4aL6YBf{U_xgTOyr1<*rCX0w`{|zsG=NS2j8>>wzj7C} zgTLQft_&J|9;FQ5<4?53Z7l4E>1^(1V8d}7UsK1I&JpOJDz`Q5F!)1O!j_ zs9qLtbnmO%1Pof6SF~Ym+FNED+YkG%<^DO_JYMbk;l|Fx0=+$5j&74~F<#Zq^#g)B0*PPINk}O&5Q3OuMTzlSPZu+F06NIxKLC%G=~Yo>))2 zrB-9?tlYr^Z|~pb*#0L!+&?;V){Yf(v~{L=TA#jam#=N7rD__aF-q&w=5UV|)oVb( z<9&*vXB}ZMr5bvq8lyaI(#L9Af5Y$BF-^XdL$Pm48Q z?a@qHP`j#6uil-mhjevm*QdI@7TvB*yAIL6xVHFarABMBq77O*&C^b^YgwuA2NZaJ zt;4M9M?5hFhqsG`R9|I`(gym6^>O=59SvG+yM?oi+N@N~nc60%Z%{MBaYtExtTwbW zw&`7P#H_2TFUW%8xqfkPEm||ef89N8Ew6xZwKn|5*i(8(MH!F3zYWA^7}`sVGHC0x zj@@ELUlpxIjcC_F>u-kyZMnYB5n6Pywl1-qHg^8?R*MTV!ei0wIhxkX7-bz3rD>M2 z2Fq1#4li0;T~nYPVeIJXV2QG{v3@c;wM&ep+F)IpUVU}mFwfCrx3+m{)=kldBuks< zsCETyw7wnN^u0b|UX<1`xUStxh7K8rX&q9rE~G*j4&giq=@2p?jD#>6!WamU-?WW` zf3qQ+4`CvN3n5$r!3II!^572#gdzyV5T-yVflv+sY6xwY!oO|^RSN0fsqpV~2$!?w zfzMeGu7xlM!i^B-Lcq-n;T8z<5Ma9%!h8s~Ls$giP6$gN+zr78;a&*KAUpu!5eSb# zcpSnL5T1hYEQHk%o`bLkg1)`Lf2@Vibr4>J@G^u~A>g(i!bS*hLU;>84TN_fdaG9$HV7|5PCxB1)(2=lOgnna2kZuA($ZG76+dR z5C$=y37_XcurQ~>XBvcb2pJGEA&h{4+i3p8zsJJg;~*c)fbb%Omms_hVLgP`AZࣨ?2 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%0DjlU!+G+_!7O|Z1O*` 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

N-syH!iO@ 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 z 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/x`t9^)gcLznEvG{z_ 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 Date: Tue, 9 Jun 2020 23:28:26 +0300 Subject: [PATCH 119/166] check GL version in the GL2.1 backend; check GLEW errors --- src/pc/gfx/gfx_opengl.c | 30 +++++++++++++++++++++++++----- src/pc/gfx/gfx_opengl_legacy.c | 6 ++++-- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index b1311442..88ba3353 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -479,14 +479,34 @@ static void gfx_opengl_draw_triangles(float buf_vbo[], size_t buf_vbo_len, size_ glDrawArrays(GL_TRIANGLES, 0, 3 * buf_vbo_num_tris); } +static inline bool gl_get_version(int *major, int *minor, bool *is_es) { + const char *vstr = (const char *)glGetString(GL_VERSION); + if (!vstr || !vstr[0]) return false; + + if (!strncmp(vstr, "OpenGL ES ", 10)) { + vstr += 10; + *is_es = true; + } else if (!strncmp(vstr, "OpenGL ES-CM ", 13)) { + vstr += 13; + *is_es = true; + } + + return (sscanf(vstr, "%d.%d", major, minor) == 2); +} + static void gfx_opengl_init(void) { -#if FOR_WINDOWS - glewInit(); +#if FOR_WINDOWS || defined(OSX_BUILD) + GLenum err; + if ((err = glewInit()) != GLEW_OK) + sys_fatal("could not init GLEW:\n%s", glewGetErrorString(err)); #endif -#ifdef OSX_BUILD - glewInit(); -#endif + // check GL version + int vmajor, vminor; + bool is_es = false; + gl_get_version(&vmajor, &vminor, &is_es); + if (vmajor < 2 && vminor < 1 && !is_es) + sys_fatal("OpenGL 2.1+ is required.\nReported version: %s%d.%d", is_es ? "ES" : "", vmajor, vminor); glGenBuffers(1, &opengl_vbo); diff --git a/src/pc/gfx/gfx_opengl_legacy.c b/src/pc/gfx/gfx_opengl_legacy.c index 29a3a699..d97f122d 100644 --- a/src/pc/gfx/gfx_opengl_legacy.c +++ b/src/pc/gfx/gfx_opengl_legacy.c @@ -510,7 +510,9 @@ static inline bool gl_get_version(int *major, int *minor, bool *is_es) { static void gfx_opengl_init(void) { #if FOR_WINDOWS || defined(OSX_BUILD) - glewInit(); + GLenum err; + if ((err = glewInit()) != GLEW_OK) + sys_fatal("could not init GLEW:\n%s", glewGetErrorString(err)); #endif // check GL version @@ -518,7 +520,7 @@ static void gfx_opengl_init(void) { bool is_es = false; gl_get_version(&vmajor, &vminor, &is_es); if (vmajor < 2 && vminor < 2 && !is_es) - sys_fatal("OpenGL 1.2+ is required. Reported version: %s%d.%d\n", is_es ? "ES" : "", vmajor, vminor); + sys_fatal("OpenGL 1.2+ is required.\nReported version: %s%d.%d", is_es ? "ES" : "", vmajor, vminor); // check extensions that we need const bool supported = From fbbb3cba5ce0865329294af2cc4a98be4bbf7ae9 Mon Sep 17 00:00:00 2001 From: MaikelChan Date: Tue, 2 Jun 2020 22:46:12 +0200 Subject: [PATCH 120/166] Implemented noise effects in OpenGL. (#6) --- src/pc/gfx/gfx_cc.h | 1 + src/pc/gfx/gfx_opengl.c | 102 ++++++++++++++++++++++++++++------------ src/pc/gfx/gfx_pc.c | 2 + 3 files changed, 75 insertions(+), 30 deletions(-) diff --git a/src/pc/gfx/gfx_cc.h b/src/pc/gfx/gfx_cc.h index ba60f6e9..3342dca3 100644 --- a/src/pc/gfx/gfx_cc.h +++ b/src/pc/gfx/gfx_cc.h @@ -23,3 +23,4 @@ enum { #define SHADER_OPT_ALPHA (1 << 24) #define SHADER_OPT_FOG (1 << 25) #define SHADER_OPT_TEXTURE_EDGE (1 << 26) +#define SHADER_OPT_NOISE (1 << 27) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 88ba3353..c0ff1aac 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -46,12 +46,18 @@ struct ShaderProgram { GLint attrib_locations[7]; uint8_t attrib_sizes[7]; uint8_t num_attribs; + bool used_noise; + GLint frame_count_location; + GLint window_height_location; }; static struct ShaderProgram shader_program_pool[64]; static uint8_t shader_program_pool_size; static GLuint opengl_vbo; +static uint32_t frame_count; +static uint32_t current_height; + static bool gfx_opengl_z_is_from_0_to_1(void) { return false; } @@ -62,11 +68,18 @@ static void gfx_opengl_vertex_array_set_attribs(struct ShaderProgram *prg) { for (int i = 0; i < prg->num_attribs; i++) { glEnableVertexAttribArray(prg->attrib_locations[i]); - glVertexAttribPointer(prg->attrib_locations[i], prg->attrib_sizes[i], GL_FLOAT, GL_FALSE, num_floats * sizeof(float), (void *)(pos * sizeof(float))); + glVertexAttribPointer(prg->attrib_locations[i], prg->attrib_sizes[i], GL_FLOAT, GL_FALSE, num_floats * sizeof(float), (void *) (pos * sizeof(float))); pos += prg->attrib_sizes[i]; } } +static void gfx_opengl_set_uniforms(struct ShaderProgram *prg) { + if (prg->used_noise) { + glUniform1i(prg->frame_count_location, frame_count); + glUniform1i(prg->window_height_location, current_height); + } +} + static void gfx_opengl_unload_shader(struct ShaderProgram *old_prg) { if (old_prg != NULL) { for (int i = 0; i < old_prg->num_attribs; i++) { @@ -78,6 +91,7 @@ static void gfx_opengl_unload_shader(struct ShaderProgram *old_prg) { static void gfx_opengl_load_shader(struct ShaderProgram *new_prg) { glUseProgram(new_prg->opengl_program_id); gfx_opengl_vertex_array_set_attribs(new_prg); + gfx_opengl_set_uniforms(new_prg); } static void append_str(char *buf, size_t *len, const char *str) { @@ -168,7 +182,9 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad bool opt_alpha = (shader_id & SHADER_OPT_ALPHA) != 0; bool opt_fog = (shader_id & SHADER_OPT_FOG) != 0; bool opt_texture_edge = (shader_id & SHADER_OPT_TEXTURE_EDGE) != 0; - bool used_textures[2] = {0, 0}; + bool opt_noise = (shader_id & SHADER_OPT_NOISE) != 0; + + bool used_textures[2] = { 0, 0 }; int num_inputs = 0; for (int i = 0; i < 2; i++) { for (int j = 0; j < 4; j++) { @@ -185,9 +201,9 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad } } } - bool do_single[2] = {c[0][2] == 0, c[1][2] == 0}; - bool do_multiply[2] = {c[0][1] == 0 && c[0][3] == 0, c[1][1] == 0 && c[1][3] == 0}; - bool do_mix[2] = {c[0][1] == c[0][3], c[1][1] == c[1][3]}; + bool do_single[2] = { c[0][2] == 0, c[1][2] == 0 }; + bool do_multiply[2] = { c[0][1] == 0 && c[0][3] == 0, c[1][1] == 0 && c[1][3] == 0 }; + bool do_mix[2] = { c[0][1] == c[0][3], c[1][1] == c[1][3] }; bool color_alpha_same = (shader_id & 0xfff) == ((shader_id >> 12) & 0xfff); char vs_buf[1024]; @@ -254,15 +270,26 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad if (used_textures[1]) { append_line(fs_buf, &fs_len, "uniform sampler2D uTex1;"); } + + if (opt_alpha && opt_noise) { + append_line(fs_buf, &fs_len, "uniform int frame_count;"); + append_line(fs_buf, &fs_len, "uniform int window_height;"); + + append_line(fs_buf, &fs_len, "float random(in vec3 value) {"); + append_line(fs_buf, &fs_len, " float random = dot(sin(value), vec3(12.9898, 78.233, 37.719));"); + append_line(fs_buf, &fs_len, " return fract(sin(random) * 143758.5453);"); + append_line(fs_buf, &fs_len, "}"); + } + append_line(fs_buf, &fs_len, "void main() {"); - + if (used_textures[0]) { append_line(fs_buf, &fs_len, "vec4 texVal0 = texture2D(uTex0, vTexCoord);"); } if (used_textures[1]) { append_line(fs_buf, &fs_len, "vec4 texVal1 = texture2D(uTex1, vTexCoord);"); } - + append_str(fs_buf, &fs_len, opt_alpha ? "vec4 texel = " : "vec3 texel = "); if (!color_alpha_same && opt_alpha) { append_str(fs_buf, &fs_len, "vec4("); @@ -274,7 +301,7 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad append_formula(fs_buf, &fs_len, c, do_single[0], do_multiply[0], do_mix[0], opt_alpha, false, opt_alpha); } append_line(fs_buf, &fs_len, ";"); - + if (opt_texture_edge && opt_alpha) { append_line(fs_buf, &fs_len, "if (texel.a > 0.3) texel.a = 1.0; else discard;"); } @@ -286,27 +313,31 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad append_line(fs_buf, &fs_len, "texel = mix(texel, vFog.rgb, vFog.a);"); } } - + + if (opt_alpha && opt_noise) { + append_line(fs_buf, &fs_len, "texel.a *= floor(random(vec3(floor(gl_FragCoord.xy * (240.0 / float(window_height))), float(frame_count))) + 0.5);"); + } + if (opt_alpha) { append_line(fs_buf, &fs_len, "gl_FragColor = texel;"); } else { append_line(fs_buf, &fs_len, "gl_FragColor = vec4(texel, 1.0);"); } append_line(fs_buf, &fs_len, "}"); - + vs_buf[vs_len] = '\0'; fs_buf[fs_len] = '\0'; - + /*puts("Vertex shader:"); puts(vs_buf); puts("Fragment shader:"); puts(fs_buf); puts("End");*/ - - const GLchar *sources[2] = {vs_buf, fs_buf}; - const GLint lengths[2] = {vs_len, fs_len}; + + const GLchar *sources[2] = { vs_buf, fs_buf }; + const GLint lengths[2] = { vs_len, fs_len }; GLint success; - + GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertex_shader, 1, &sources[0], &lengths[0]); glCompileShader(vertex_shader); @@ -320,7 +351,7 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad fprintf(stderr, "%s\n", &error_log[0]); sys_fatal("vertex shader compilation failed (see terminal)"); } - + GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragment_shader, 1, &sources[1], &lengths[1]); glCompileShader(fragment_shader); @@ -334,31 +365,31 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad fprintf(stderr, "%s\n", &error_log[0]); sys_fatal("fragment shader compilation failed (see terminal)"); } - + GLuint shader_program = glCreateProgram(); glAttachShader(shader_program, vertex_shader); glAttachShader(shader_program, fragment_shader); glLinkProgram(shader_program); - + size_t cnt = 0; - + struct ShaderProgram *prg = &shader_program_pool[shader_program_pool_size++]; prg->attrib_locations[cnt] = glGetAttribLocation(shader_program, "aVtxPos"); prg->attrib_sizes[cnt] = 4; ++cnt; - + if (used_textures[0] || used_textures[1]) { prg->attrib_locations[cnt] = glGetAttribLocation(shader_program, "aTexCoord"); prg->attrib_sizes[cnt] = 2; ++cnt; } - + if (opt_fog) { prg->attrib_locations[cnt] = glGetAttribLocation(shader_program, "aFog"); prg->attrib_sizes[cnt] = 4; ++cnt; } - + for (int i = 0; i < num_inputs; i++) { char name[16]; sprintf(name, "aInput%d", i + 1); @@ -366,7 +397,7 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad prg->attrib_sizes[cnt] = opt_alpha ? 4 : 3; ++cnt; } - + prg->shader_id = shader_id; prg->opengl_program_id = shader_program; prg->num_inputs = num_inputs; @@ -374,18 +405,26 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad prg->used_textures[1] = used_textures[1]; prg->num_floats = num_floats; prg->num_attribs = cnt; - + gfx_opengl_load_shader(prg); - + if (used_textures[0]) { - GLint sampler_attrib = glGetUniformLocation(shader_program, "uTex0"); - glUniform1i(sampler_attrib, 0); + GLint sampler_location = glGetUniformLocation(shader_program, "uTex0"); + glUniform1i(sampler_location, 0); } if (used_textures[1]) { - GLint sampler_attrib = glGetUniformLocation(shader_program, "uTex1"); - glUniform1i(sampler_attrib, 1); + GLint sampler_location = glGetUniformLocation(shader_program, "uTex1"); + glUniform1i(sampler_location, 1); } - + + if (opt_alpha && opt_noise) { + prg->frame_count_location = glGetUniformLocation(shader_program, "frame_count"); + prg->window_height_location = glGetUniformLocation(shader_program, "window_height"); + prg->used_noise = true; + } else { + prg->used_noise = false; + } + return prg; } @@ -459,6 +498,7 @@ static void gfx_opengl_set_zmode_decal(bool zmode_decal) { static void gfx_opengl_set_viewport(int x, int y, int width, int height) { glViewport(x, y, width, height); + current_height = height; } static void gfx_opengl_set_scissor(int x, int y, int width, int height) { @@ -517,6 +557,8 @@ static void gfx_opengl_init(void) { } static void gfx_opengl_start_frame(void) { + frame_count++; + glDisable(GL_SCISSOR_TEST); glDepthMask(GL_TRUE); // Must be set to clear Z-buffer glClearColor(0.0f, 0.0f, 0.0f, 1.0f); diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 8dd91e08..aec9df32 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -934,6 +934,7 @@ static void gfx_sp_tri1(uint8_t vtx1_idx, uint8_t vtx2_idx, uint8_t vtx3_idx) { bool use_alpha = (rdp.other_mode_l & (G_BL_A_MEM << 18)) == 0; bool use_fog = (rdp.other_mode_l >> 30) == G_BL_CLR_FOG; bool texture_edge = (rdp.other_mode_l & CVG_X_ALPHA) == CVG_X_ALPHA; + bool use_noise = (rdp.other_mode_l & G_AC_DITHER) == G_AC_DITHER; if (texture_edge) { use_alpha = true; @@ -942,6 +943,7 @@ static void gfx_sp_tri1(uint8_t vtx1_idx, uint8_t vtx2_idx, uint8_t vtx3_idx) { if (use_alpha) cc_id |= SHADER_OPT_ALPHA; if (use_fog) cc_id |= SHADER_OPT_FOG; if (texture_edge) cc_id |= SHADER_OPT_TEXTURE_EDGE; + if (use_noise) cc_id |= SHADER_OPT_NOISE; if (!use_alpha) { cc_id &= ~0xfff000; From 735d032bdd1af2cf82139f81e58d9790bda4e37d Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 10 Jun 2020 00:56:10 +0300 Subject: [PATCH 121/166] use #version 120 on desktop GL --- src/pc/gfx/gfx_opengl.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index c0ff1aac..c8ef6b81 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -213,10 +213,10 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad size_t num_floats = 4; // Vertex shader -#ifdef OSX_BUILD - append_line(vs_buf, &vs_len, ""); -#else +#ifdef USE_GLES append_line(vs_buf, &vs_len, "#version 100"); +#else + append_line(vs_buf, &vs_len, "#version 120"); #endif append_line(vs_buf, &vs_len, "attribute vec4 aVtxPos;"); if (used_textures[0] || used_textures[1]) { @@ -248,11 +248,11 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad append_line(vs_buf, &vs_len, "}"); // Fragment shader -#ifdef OSX_BUILD - append_line(fs_buf, &fs_len, ""); -#else +#ifdef USE_GLES append_line(fs_buf, &fs_len, "#version 100"); append_line(fs_buf, &fs_len, "precision mediump float;"); +#else + append_line(fs_buf, &fs_len, "#version 120"); #endif if (used_textures[0] || used_textures[1]) { From 33b4bd7f8d18ada3d771d2ec27965e23931184b5 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 10 Jun 2020 00:58:44 +0300 Subject: [PATCH 122/166] don't use the noise shader on GLES --- src/pc/gfx/gfx_opengl.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index c8ef6b81..f506631e 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -182,7 +182,11 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad bool opt_alpha = (shader_id & SHADER_OPT_ALPHA) != 0; bool opt_fog = (shader_id & SHADER_OPT_FOG) != 0; bool opt_texture_edge = (shader_id & SHADER_OPT_TEXTURE_EDGE) != 0; +#ifdef USE_GLES + bool opt_noise = false; +#else bool opt_noise = (shader_id & SHADER_OPT_NOISE) != 0; +#endif bool used_textures[2] = { 0, 0 }; int num_inputs = 0; From fca5ed884668b957403472a13b7ce357fa8d8ca7 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 10 Jun 2020 01:00:20 +0300 Subject: [PATCH 123/166] don't scale the noise to 240 height --- src/pc/gfx/gfx_opengl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index f506631e..1fe59a26 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -319,7 +319,7 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad } if (opt_alpha && opt_noise) { - append_line(fs_buf, &fs_len, "texel.a *= floor(random(vec3(floor(gl_FragCoord.xy * (240.0 / float(window_height))), float(frame_count))) + 0.5);"); + append_line(fs_buf, &fs_len, "texel.a *= floor(random(vec3(floor(gl_FragCoord.xy * float(window_height)), float(frame_count))) + 0.5);"); } if (opt_alpha) { From 457189bb13f9ff8cfc343e3c7c44d25aba95d841 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 10 Jun 2020 01:01:34 +0300 Subject: [PATCH 124/166] use SDL_opengles2.h only when USE_GLES is defined --- src/pc/gfx/gfx_opengl.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 1fe59a26..9c9cc850 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -25,10 +25,10 @@ #include #define GL_GLEXT_PROTOTYPES 1 -#ifdef OSX_BUILD -#include -#else +#ifdef USE_GLES #include +#else +#include #endif #endif From ca4986e82d6eaea52ecd09ccf00a7fe0b5f996f0 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 10 Jun 2020 04:16:46 +0300 Subject: [PATCH 125/166] fix GLEW include on OSX --- src/pc/gfx/gfx_opengl.c | 25 ++++++++++--------------- src/pc/gfx/gfx_opengl_legacy.c | 10 +++++----- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 9c9cc850..5977e13b 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -4,33 +4,28 @@ #include #ifndef _LANGUAGE_C -#define _LANGUAGE_C +# define _LANGUAGE_C #endif #include #ifdef __MINGW32__ -#define FOR_WINDOWS 1 +# define FOR_WINDOWS 1 #else -#define FOR_WINDOWS 0 +# define FOR_WINDOWS 0 #endif -#if FOR_WINDOWS -#define GLEW_STATIC -#include -#include -#define GL_GLEXT_PROTOTYPES 1 -#include +#if FOR_WINDOWS || defined(OSX_BUILD) +# define GLEW_STATIC +# include +#endif -#else #include -#define GL_GLEXT_PROTOTYPES 1 +#define GL_GLEXT_PROTOTYPES 1 #ifdef USE_GLES -#include +# include #else -#include -#endif - +# include #endif #include "../platform.h" diff --git a/src/pc/gfx/gfx_opengl_legacy.c b/src/pc/gfx/gfx_opengl_legacy.c index d97f122d..d64674aa 100644 --- a/src/pc/gfx/gfx_opengl_legacy.c +++ b/src/pc/gfx/gfx_opengl_legacy.c @@ -5,21 +5,21 @@ #include #ifndef _LANGUAGE_C -#define _LANGUAGE_C +# define _LANGUAGE_C #endif #include #ifdef __MINGW32__ -#define FOR_WINDOWS 1 +# define FOR_WINDOWS 1 #else -#define FOR_WINDOWS 0 +# define FOR_WINDOWS 0 #endif #include #if FOR_WINDOWS || defined(OSX_BUILD) -#define GLEW_STATIC -#include +# define GLEW_STATIC +# include #endif #define GL_GLEXT_PROTOTYPES 1 From f6e456e1c0a410848f5f51e3ee23c239fc6b2201 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 10 Jun 2020 18:44:30 +0300 Subject: [PATCH 126/166] correct star texture size should fix incorrect star envmap with EXTERNAL_DATA --- actors/star/model.inc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actors/star/model.inc.c b/actors/star/model.inc.c index 1b52118b..0a4c9b28 100644 --- a/actors/star/model.inc.c +++ b/actors/star/model.inc.c @@ -56,7 +56,7 @@ const Gfx star_seg3_dl_0302B870[] = { gsSPSetGeometryMode(G_TEXTURE_GEN), gsDPSetEnvColor(255, 255, 255, 255), gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE), - gsDPLoadTextureBlock(star_seg3_texture_0302A6F0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD), //! Dimensions loaded as 32x64 despite this texture having only 32x32 dimensions, harmless due to environment mapping (G_TEXTURE_GEN & gsSPTexture values) + gsDPLoadTextureBlock(star_seg3_texture_0302A6F0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD), gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_ON), gsSPDisplayList(star_seg3_dl_0302B7B0), gsDPPipeSync(), From bc6ebbf1918355dd58475ea73d71b7195c7c1ef1 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 10 Jun 2020 19:09:57 +0300 Subject: [PATCH 127/166] use full texture sizes for the eyes of big bomb lad and chuckya this fixes the incorrect rendering of their eyes when EXTERNAL_DATA is enabled --- actors/chuckya/model.inc.c | 4 ++-- actors/king_bobomb/model.inc.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/actors/chuckya/model.inc.c b/actors/chuckya/model.inc.c index b6b0dd52..2bc59908 100644 --- a/actors/chuckya/model.inc.c +++ b/actors/chuckya/model.inc.c @@ -357,7 +357,7 @@ static const Vtx chuckya_seg8_vertex_0800A680[] = { const Gfx chuckya_seg8_dl_0800A700[] = { gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08006778), gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPLight(&chuckya_seg8_lights_0800A668.l, 1), gsSPLight(&chuckya_seg8_lights_0800A668.a, 2), gsSPVertex(chuckya_seg8_vertex_0800A680, 8, 0), @@ -375,7 +375,7 @@ const Gfx chuckya_seg8_dl_0800A758[] = { gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD), - gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC), + gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC), gsSPDisplayList(chuckya_seg8_dl_0800A700), gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), gsDPPipeSync(), diff --git a/actors/king_bobomb/model.inc.c b/actors/king_bobomb/model.inc.c index be75ab0a..dc1171a8 100644 --- a/actors/king_bobomb/model.inc.c +++ b/actors/king_bobomb/model.inc.c @@ -531,7 +531,7 @@ static const Vtx king_bobomb_seg5_vertex_0500B218[] = { const Gfx king_bobomb_seg5_dl_0500B278[] = { gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05004878), gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPLight(&king_bobomb_seg5_lights_0500B200.l, 1), gsSPLight(&king_bobomb_seg5_lights_0500B200.a, 2), gsSPVertex(king_bobomb_seg5_vertex_0500B218, 6, 0), @@ -548,7 +548,7 @@ const Gfx king_bobomb_seg5_dl_0500B2D0[] = { gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD), - gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC), + gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC), gsSPDisplayList(king_bobomb_seg5_dl_0500B278), gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), gsDPPipeSync(), From c2ecc7fb64dd32075fd1a5fbd1e314a0344f2213 Mon Sep 17 00:00:00 2001 From: "V. R. Miguel" <36349314+vrmiguel@users.noreply.github.com> Date: Wed, 10 Jun 2020 22:36:41 -0300 Subject: [PATCH 128/166] Create README_pt_BR.md --- README_pt_BR.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 README_pt_BR.md diff --git a/README_pt_BR.md b/README_pt_BR.md new file mode 100644 index 00000000..758733d1 --- /dev/null +++ b/README_pt_BR.md @@ -0,0 +1,33 @@ +# sm64pc +Adaptação em OpenGL de [n64decomp/sm64](https://github.com/n64decomp/sm64). + +Sinta-se livre para reportar bugs [aqui](https://github.com/sm64pc/sm64pc/issues) e contribuir, mas tenha em mente que não +aceitamos compartilhamento de conteúdo protegido com direitos autorais. + +Se necessário, rode `./extract_assets.py --clean && make clean` ou `make distclean` para remover conteúdos advindos da ROM do jogo. +Este port é possível graças à [Emill](https://github.com/Emill), [n64-fast32-engine](https://github.com/Emill/n64-fast3d-engine/), e, é claro, ao +time do [n64decomp](https://github.com/n64decomp). + +Em caso de contribuições, crie _pull requests_ apenas para a [branch nightly](https://github.com/sm64pc/sm64pc/tree/nightly/). +Novas funcionalidades serão adicionadas à branch master quando forem consideradas bem testadas. + +*Leia isso em outras linguas: [English](README.md) [简体中文](README_zh_CN.md).* + +## Recursos + + * Renderização nativa. Você agora pode jogar SM64 no PC sem precisar de emulador. + * Proporção de tela e resolução variáveis. O jogo renderiza corretamente em basicamente qualquer tamanho de janela. + * Suporte a entradas de controle através de `xinput`. Tal como usando DualShock 4 em distribuições Linux. + * Controle de câmera com analógico ou mouse. (Ative com `make BETTERCAMERA=1`.) + * Uma opção para desativar distância de renderização. (Ative com `make NODRAWINGDISTANCE=1`.) + * Remapeamento de controles _in-game_. + * Pule as cenas introdutórias da Peach e Lakitu com usando a opção `--skip-intro` ao executar o jogo na linha de comando. + * Menu de cheats nas opções. (Ative com `--cheats`) + ** Note que se algum cheat pedir pelo botão "L", o botão em questão é o "L" do N64. Certifique-se de que este está mapeado, caso necessário. + +## Compilação +Para instruções de compilaçao, consulte a [wiki](https://github.com/sm64pc/sm64pc/wiki). + +## Para usuários de Windows + +**Certifique-se de que você tem o [MXE](mxe.cc) antes de tentar compilar em Windows. Siga o guia na Wiki.** From fe1a8a8602066d17bbb8cd0dd21fc499f7a0d564 Mon Sep 17 00:00:00 2001 From: "V. R. Miguel" <36349314+vrmiguel@users.noreply.github.com> Date: Wed, 10 Jun 2020 22:41:29 -0300 Subject: [PATCH 129/166] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 882ee891..10dfa730 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Run `./extract_assets.py --clean && make clean` or `make distclean` to remove RO Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm64pc/tree/nightly/). New functionality will be merged to master once they're considered to be well-tested. -*Read this in other languages: [Español](README_es_ES.md) [简体中文](README_zh_CN.md).* +*Read this in other languages: [Español](README_es_ES.md), [Português](README_pt_BR.md) or [简体中文](README_zh_CN.md).* ## Features From a81a8e6ef1d52becbff3d08fb0bf8611084e0cce Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 11 Jun 2020 03:44:08 +0300 Subject: [PATCH 130/166] added D3D11 and D3D12 renderers from Emil/n64-fast3d-engine along with options to select backends for windowing, rendering, audio and controls in the Makefile use RENDER_API=D3D11 or D3D12 for the D3D renderers, that will also automatically enable using DXGI for windowing; SDL2 will still be used for input and audio for the time being also adds three-point filtering to the OpenGL backend and an option for it in the menu --- Makefile | 113 ++- include/text_options_strings.h.in | 2 + src/game/options_menu.c | 2 + src/pc/audio/audio_sdl.c | 6 +- src/pc/audio/audio_sdl.h | 2 + src/pc/configfile.c | 2 +- src/pc/controller/controller_sdl.c | 4 + src/pc/gfx/gfx_direct3d11.cpp | 1306 ++++++++++++++++++++++++++ src/pc/gfx/gfx_direct3d11.h | 10 + src/pc/gfx/gfx_direct3d12.cpp | 1317 +++++++++++++++++++++++++++ src/pc/gfx/gfx_direct3d12.h | 10 + src/pc/gfx/gfx_direct3d_common.cpp | 143 +++ src/pc/gfx/gfx_direct3d_common.h | 33 + src/pc/gfx/gfx_opengl.c | 126 ++- src/pc/gfx/gfx_opengl_legacy.c | 4 +- src/pc/gfx/gfx_pc.c | 13 +- src/pc/gfx/gfx_sdl2.c | 73 +- src/pc/gfx/gfx_window_manager_api.h | 5 +- src/pc/pc_main.c | 23 +- src/pc/platform.c | 2 +- 20 files changed, 3115 insertions(+), 81 deletions(-) create mode 100644 src/pc/gfx/gfx_direct3d11.cpp create mode 100644 src/pc/gfx/gfx_direct3d11.h create mode 100644 src/pc/gfx/gfx_direct3d12.cpp create mode 100644 src/pc/gfx/gfx_direct3d12.h create mode 100644 src/pc/gfx/gfx_direct3d_common.cpp create mode 100644 src/pc/gfx/gfx_direct3d_common.h diff --git a/Makefile b/Makefile index 890fb3f9..0b1f81d2 100644 --- a/Makefile +++ b/Makefile @@ -54,9 +54,16 @@ DISCORDRPC ?= 0 NO_BZERO_BCOPY ?= 0 NO_LDIV ?= 0 -# Use OpenGL 1.3 renderer +# Backend selection -LEGACY_GL ?= 0 +# Renderers: GL, GL_LEGACY, D3D11, D3D12 +RENDER_API ?= GL +# Window managers: SDL2, DXGI (forced if D3D11 or D3D12 in RENDER_API) +WINDOW_API ?= SDL2 +# Audio backends: SDL2 +AUDIO_API ?= SDL2 +# Controller backends (can have multiple, space separated): SDL2 +CONTROLLER_API ?= SDL2 # Misc settings for EXTERNAL_DATA @@ -207,6 +214,22 @@ ifeq ($(TARGET_WEB),1) VERSION_CFLAGS := $(VERSION_CFLAGS) -DTARGET_WEB endif +# Check backends + +ifneq (,$(filter $(RENDER_API),D3D11 D3D12)) + ifneq ($(WINDOWS_BUILD),1) + $(error DirectX is only supported on Windows) + endif + ifneq ($(WINDOW_API),DXGI) + $(warning DirectX renderers require DXGI, forcing WINDOW_API value) + WINDOW_API := DXGI + endif +else + ifeq ($(WINDOW_API),DXGI) + $(error DXGI can only be used with DirectX renderers) + endif +endif + ################### Universal Dependencies ################### # (This is a bit hacky, but a lot of rules implicitly depend @@ -515,18 +538,68 @@ endif PYTHON := python3 SDLCONFIG := $(CROSS)sdl2-config +# configure backend flags + +BACKEND_CFLAGS := -DRAPI_$(RENDER_API)=1 -DWAPI_$(WINDOW_API)=1 -DAAPI_$(AUDIO_API)=1 +# can have multiple controller APIs +BACKEND_CFLAGS += $(foreach capi,$(CONTROLLER_API),-DCAPI_$(capi)=1) +BACKEND_LDFLAGS := +SDL2_USED := 0 + +# for now, it's either SDL+GL or DXGI+DirectX, so choose based on WAPI +ifeq ($(WINDOW_API),DXGI) + DXBITS := `cat $(ENDIAN_BITWIDTH) | tr ' ' '\n' | tail -1` + ifeq ($(RENDER_API),D3D11) + BACKEND_LDFLAGS += -ld3d11 + else ifeq ($(RENDER_API),D3D12) + BACKEND_LDFLAGS += -ld3d12 + endif + BACKEND_LDFLAGS += -ld3dcompiler -ldxgi -ldxguid + BACKEND_LDFLAGS += -lsetupapi -ldinput8 -luser32 -lgdi32 -limm32 -lole32 -loleaut32 -lshell32 -lwinmm -lversion -luuid -static +else ifeq ($(WINDOW_API),SDL2) + ifeq ($(WINDOWS_BUILD),1) + BACKEND_LDFLAGS += -lglew32 -lglu32 -lopengl32 + else ifeq ($(TARGET_RPI),1) + BACKEND_LDFLAGS += -lGLESv2 + else ifeq ($(OSX_BUILD),1) + BACKEND_LDFLAGS += -framework OpenGL `pkg-config --libs glew` + else + BACKEND_LDFLAGS += -lGL + endif + SDL_USED := 2 +endif + +ifeq ($(AUDIO_API),SDL2) + SDL_USED := 2 +endif + +ifneq (,$(findstring SDL,$(CONTROLLER_API))) + SDL_USED := 2 +endif + +# SDL can be used by different systems, so we consolidate all of that shit into this +ifeq ($(SDL_USED),2) + BACKEND_CFLAGS += -DHAVE_SDL2=1 `$(SDLCONFIG) --cflags` + ifeq ($(WINDOWS_BUILD),1) + BACKEND_LDFLAGS += `$(SDLCONFIG) --static-libs` -lsetupapi -luser32 -limm32 -lOle32 -loleaut32 -lshell32 -lwinmm -lversion + else + BACKEND_LDFLAGS += `$(SDLCONFIG) --libs` + endif +endif + ifeq ($(WINDOWS_BUILD),1) -CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) `$(SDLCONFIG) --cflags` -DUSE_SDL=2 -CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv `$(SDLCONFIG) --cflags` -DUSE_SDL=2 + CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(BACKEND_CFLAGS) $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) + CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(BACKEND_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv else ifeq ($(TARGET_WEB),1) -CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -s USE_SDL=2 -CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv -s USE_SDL=2 + CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(BACKEND_CFLAGS) $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -s USE_SDL=2 + CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(BACKEND_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv -s USE_SDL=2 # Linux / Other builds below else -CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) `$(SDLCONFIG) --cflags` -DUSE_SDL=2 -CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv `$(SDLCONFIG) --cflags` -DUSE_SDL=2 + CC_CHECK := $(CC) -fsyntax-only -fsigned-char $(BACKEND_CFLAGS) $(INCLUDE_CFLAGS) -Wall -Wextra -Wno-format-security $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) + CFLAGS := $(OPT_FLAGS) $(INCLUDE_CFLAGS) $(BACKEND_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -fno-strict-aliasing -fwrapv + endif # Check for enhancement options @@ -598,26 +671,28 @@ ASFLAGS := -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) ifeq ($(TARGET_WEB),1) LDFLAGS := -lm -lGL -lSDL2 -no-pie -s TOTAL_MEMORY=20MB -g4 --source-map-base http://localhost:8080/ -s "EXTRA_EXPORTED_RUNTIME_METHODS=['callMain']" + else ifeq ($(WINDOWS_BUILD),1) - LDFLAGS := $(BITS) -march=$(TARGET_ARCH) -Llib -lpthread -lglew32 `$(SDLCONFIG) --static-libs` -lm -lglu32 -lsetupapi -ldinput8 -luser32 -lgdi32 -limm32 -lole32 -loleaut32 -lshell32 -lwinmm -lversion -luuid -lopengl32 -static + LDFLAGS := $(BITS) -march=$(TARGET_ARCH) -Llib -lpthread $(BACKEND_LDFLAGS) -static ifeq ($(CROSS),) LDFLAGS += -no-pie endif ifeq ($(WINDOWS_CONSOLE),1) LDFLAGS += -mconsole endif + else ifeq ($(TARGET_RPI),1) -# Linux / Other builds below -LDFLAGS := $(OPT_FLAGS) -lm -lGLESv2 `$(SDLCONFIG) --libs` -no-pie + LDFLAGS := $(OPT_FLAGS) -lm $(BACKEND_LDFLAGS) -no-pie + +else ifeq ($(OSX_BUILD),1) + LDFLAGS := -lm $(BACKEND_LDFLAGS) -no-pie -lpthread + else -ifeq ($(OSX_BUILD),1) -LDFLAGS := -lm -framework OpenGL `$(SDLCONFIG) --libs` -no-pie -lpthread `pkg-config --libs libusb-1.0 glfw3 glew` -else -LDFLAGS := $(BITS) -march=$(TARGET_ARCH) -lm -lGL `$(SDLCONFIG) --libs` -no-pie -lpthread -ifeq ($(DISCORDRPC),1) - LDFLAGS += -ldl -Wl,-rpath . -endif -endif + LDFLAGS := $(BITS) -march=$(TARGET_ARCH) -lm $(BACKEND_LDFLAGS) -no-pie -lpthread + ifeq ($(DISCORDRPC),1) + LDFLAGS += -ldl -Wl,-rpath . + endif + endif # End of LDFLAGS # Prevent a crash with -sopt diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 2941bde1..20b36f5c 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -51,6 +51,7 @@ #define TEXT_OPT_DOUBLE _("DOUBLE") #define TEXT_RESET_WINDOW _("RESET WINDOW") #define TEXT_OPT_HUD _("HUD") +#define TEXT_OPT_THREEPOINT _("THREE POINT") #define TEXT_BIND_A _("A BUTTON") #define TEXT_BIND_B _("B BUTTON") @@ -109,6 +110,7 @@ #define TEXT_OPT_DOUBLE _("Double") #define TEXT_RESET_WINDOW _("Reset Window") #define TEXT_OPT_HUD _("HUD") +#define TEXT_OPT_THREEPOINT _("Three-point") #define TEXT_BIND_A _("A Button") #define TEXT_BIND_B _("B Button") diff --git a/src/game/options_menu.c b/src/game/options_menu.c index d37b6afe..6b2c5bf8 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -80,6 +80,7 @@ static const u8 optsVideoStr[][32] = { { TEXT_OPT_VSYNC }, { TEXT_OPT_DOUBLE }, { TEXT_OPT_HUD }, + { TEXT_OPT_THREEPOINT }, }; static const u8 optsAudioStr[][32] = { @@ -122,6 +123,7 @@ static const u8 bindStr[][32] = { static const u8 *filterChoices[] = { optsVideoStr[2], optsVideoStr[3], + optsVideoStr[8], }; static const u8 *vsyncChoices[] = { diff --git a/src/pc/audio/audio_sdl.c b/src/pc/audio/audio_sdl.c index beb5a1e6..0701b037 100644 --- a/src/pc/audio/audio_sdl.c +++ b/src/pc/audio/audio_sdl.c @@ -1,3 +1,5 @@ +#ifdef AAPI_SDL2 + #include #include "audio_api.h" @@ -57,4 +59,6 @@ struct AudioAPI audio_sdl = { audio_sdl_get_desired_buffered, audio_sdl_play, audio_sdl_shutdown -}; \ No newline at end of file +}; + +#endif diff --git a/src/pc/audio/audio_sdl.h b/src/pc/audio/audio_sdl.h index e553239f..8b4a4e46 100644 --- a/src/pc/audio/audio_sdl.h +++ b/src/pc/audio/audio_sdl.h @@ -1,6 +1,8 @@ #ifndef AUDIO_SDL_H #define AUDIO_SDL_H +#include "audio_api.h" + extern struct AudioAPI audio_sdl; #endif diff --git a/src/pc/configfile.c b/src/pc/configfile.c index db420112..1af4bfb5 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -6,7 +6,7 @@ #include #include -#if USE_SDL == 2 +#ifdef WAPI_SDL2 # include # define WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED #else diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index 10fe9d71..0a8ad57e 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -1,3 +1,5 @@ +#ifdef CAPI_SDL2 + #include #include #include @@ -296,3 +298,5 @@ struct ControllerAPI controller_sdl = { controller_sdl_bind, controller_sdl_shutdown }; + +#endif // CAPI_SDL2 diff --git a/src/pc/gfx/gfx_direct3d11.cpp b/src/pc/gfx/gfx_direct3d11.cpp new file mode 100644 index 00000000..b81bbec6 --- /dev/null +++ b/src/pc/gfx/gfx_direct3d11.cpp @@ -0,0 +1,1306 @@ +#ifdef RAPI_D3D11 + +#if defined(_WIN32) || defined(_WIN64) + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +extern "C" { +#include "../configfile.h" +#include "../platform.h" +} + +#ifndef _LANGUAGE_C +# define _LANGUAGE_C +#endif +#include + +#include "gfx_cc.h" +#include "gfx_window_manager_api.h" +#include "gfx_rendering_api.h" +#include "gfx_direct3d_common.h" + +#include "gfx_screen_config.h" + +#define WINCLASS_NAME L"SUPERMARIO64" +#define WINDOW_CLIENT_MIN_WIDTH 320 +#define WINDOW_CLIENT_MIN_HEIGHT 240 +#define DEBUG_D3D 0 + +using namespace Microsoft::WRL; // For ComPtr + +struct PerFrameCB { + uint32_t noise_frame; + float noise_scale_x; + float noise_scale_y; + uint32_t padding; +}; + +struct PerDrawCB { + struct Texture { + uint32_t width; + uint32_t height; + uint32_t linear_filtering; + uint32_t padding; + } textures[2]; +}; + +struct TextureData { + ComPtr resource_view; + ComPtr sampler_state; + uint32_t width; + uint32_t height; + bool linear_filtering; +}; + +struct ShaderProgram { + ComPtr vertex_shader; + ComPtr pixel_shader; + ComPtr input_layout; + ComPtr blend_state; + + uint32_t shader_id; + uint8_t num_inputs; + uint8_t num_floats; + bool used_textures[2]; +}; + +static struct { + ComPtr device; + ComPtr context; + ComPtr swap_chain; // For Windows versions older than 8.1 + ComPtr swap_chain2; // For Windows version 8.1 or newer + ComPtr backbuffer_view; + ComPtr depth_stencil_view; + ComPtr rasterizer_state; + ComPtr depth_stencil_state; + ComPtr vertex_buffer; + ComPtr per_frame_cb; + ComPtr per_draw_cb; + +#if DEBUG_D3D + ComPtr debug; +#endif + + HANDLE frame_latency_waitable_object; + + DXGI_SAMPLE_DESC sample_description; + + PerFrameCB per_frame_cb_data; + PerDrawCB per_draw_cb_data; + + struct ShaderProgram shader_program_pool[64]; + uint8_t shader_program_pool_size; + + std::vector textures; + int current_tile; + uint32_t current_texture_ids[2]; + + // Current state + + struct ShaderProgram *shader_program; + + uint32_t current_width, current_height; + + int8_t depth_test; + int8_t depth_mask; + int8_t zmode_decal; + + // Previous states (to prevent setting states needlessly) + + struct ShaderProgram *last_shader_program = nullptr; + uint32_t last_vertex_buffer_stride = 0; + ComPtr last_blend_state = nullptr; + ComPtr last_resource_views[2] = { nullptr, nullptr }; + ComPtr last_sampler_states[2] = { nullptr, nullptr }; + int8_t last_depth_test = -1; + int8_t last_depth_mask = -1; + int8_t last_zmode_decal = -1; + D3D_PRIMITIVE_TOPOLOGY last_primitive_topology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED; + + // Game loop callback + + void (*run_one_game_iter)(void); + bool (*on_key_down)(int scancode); + bool (*on_key_up)(int scancode); + void (*on_all_keys_up)(void); +} d3d; + +static HWND h_wnd; +static bool lower_latency; +static LARGE_INTEGER last_time, accumulated_time, frequency; +static uint8_t sync_interval; +static RECT last_window_rect; +static bool is_full_screen, last_maximized_state; + +static void toggle_borderless_window_full_screen() { + if (is_full_screen) { + RECT r = last_window_rect; + + // Set in window mode with the last saved position and size + SetWindowLongPtr(h_wnd, GWL_STYLE, WS_VISIBLE | WS_OVERLAPPEDWINDOW); + + if (last_maximized_state) { + SetWindowPos(h_wnd, NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE); + ShowWindow(h_wnd, SW_MAXIMIZE); + } else { + SetWindowPos(h_wnd, NULL, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_FRAMECHANGED); + ShowWindow(h_wnd, SW_RESTORE); + } + + is_full_screen = false; + } else { + // Save if window is maximized or not + WINDOWPLACEMENT window_placement; + window_placement.length = sizeof(WINDOWPLACEMENT); + GetWindowPlacement(h_wnd, &window_placement); + last_maximized_state = window_placement.showCmd == SW_SHOWMAXIMIZED; + + // Save window position and size if the window is not maximized + GetWindowRect(h_wnd, &last_window_rect); + + // Get in which monitor the window is + HMONITOR h_monitor = MonitorFromWindow(h_wnd, MONITOR_DEFAULTTONEAREST); + + // Get info from that monitor + MONITORINFOEX monitor_info; + monitor_info.cbSize = sizeof(MONITORINFOEX); + GetMonitorInfo(h_monitor, &monitor_info); + RECT r = monitor_info.rcMonitor; + + // Set borderless full screen to that monitor + SetWindowLongPtr(h_wnd, GWL_STYLE, WS_VISIBLE | WS_POPUP); + SetWindowPos(h_wnd, HWND_TOP, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_FRAMECHANGED); + + is_full_screen = true; + } +} + +static void create_render_target_views(uint32_t width, uint32_t height) { + if (width == 0 || height == 0) { + return; + } + if (d3d.current_width == width && d3d.current_height == height) { + return; + } + + // Release previous stuff (if any) + + d3d.backbuffer_view.Reset(); + d3d.depth_stencil_view.Reset(); + + // Resize swap chain + + if (lower_latency) { + UINT swap_chain_flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT; + ThrowIfFailed(d3d.swap_chain2->ResizeBuffers(0, width, height, DXGI_FORMAT_UNKNOWN, swap_chain_flags), + h_wnd, "Failed to resize IDXGISwapChain2 buffers."); + } else { + UINT swap_chain_flags = 0; + ThrowIfFailed(d3d.swap_chain->ResizeBuffers(0, width, height, DXGI_FORMAT_UNKNOWN, swap_chain_flags), + h_wnd, "Failed to resize IDXGISwapChain buffers."); + } + + // Create back buffer + + ComPtr backbuffer_texture; + if (lower_latency) { + ThrowIfFailed(d3d.swap_chain2->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID *) backbuffer_texture.GetAddressOf()), + h_wnd, "Failed to get backbuffer from IDXGISwapChain2."); + } else { + ThrowIfFailed(d3d.swap_chain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID *) backbuffer_texture.GetAddressOf()), + h_wnd, "Failed to get backbuffer from IDXGISwapChain."); + } + + ThrowIfFailed(d3d.device->CreateRenderTargetView(backbuffer_texture.Get(), NULL, d3d.backbuffer_view.GetAddressOf()), + h_wnd, "Failed to create render target view."); + + // Create depth buffer + + D3D11_TEXTURE2D_DESC depth_stencil_texture_desc; + ZeroMemory(&depth_stencil_texture_desc, sizeof(D3D11_TEXTURE2D_DESC)); + + depth_stencil_texture_desc.Width = width; + depth_stencil_texture_desc.Height = height; + depth_stencil_texture_desc.MipLevels = 1; + depth_stencil_texture_desc.ArraySize = 1; + depth_stencil_texture_desc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; + depth_stencil_texture_desc.SampleDesc = d3d.sample_description; + depth_stencil_texture_desc.Usage = D3D11_USAGE_DEFAULT; + depth_stencil_texture_desc.BindFlags = D3D11_BIND_DEPTH_STENCIL; + depth_stencil_texture_desc.CPUAccessFlags = 0; + depth_stencil_texture_desc.MiscFlags = 0; + + ComPtr depth_stencil_texture; + ThrowIfFailed(d3d.device->CreateTexture2D(&depth_stencil_texture_desc, NULL, depth_stencil_texture.GetAddressOf())); + ThrowIfFailed(d3d.device->CreateDepthStencilView(depth_stencil_texture.Get(), NULL, d3d.depth_stencil_view.GetAddressOf())); + + // Save resolution + + d3d.current_width = width; + d3d.current_height = height; +} + +static void calculate_sync_interval() { + const POINT ptZero = { 0, 0 }; + HMONITOR h_monitor = MonitorFromPoint(ptZero, MONITOR_DEFAULTTOPRIMARY); + + MONITORINFOEX monitor_info; + monitor_info.cbSize = sizeof(MONITORINFOEX); + GetMonitorInfo(h_monitor, &monitor_info); + + DEVMODE dev_mode; + dev_mode.dmSize = sizeof(DEVMODE); + dev_mode.dmDriverExtra = 0; + EnumDisplaySettings(monitor_info.szDevice, ENUM_CURRENT_SETTINGS, &dev_mode); + + if (dev_mode.dmDisplayFrequency >= 29 && dev_mode.dmDisplayFrequency <= 31) { + sync_interval = 1; + } else if (dev_mode.dmDisplayFrequency >= 59 && dev_mode.dmDisplayFrequency <= 61) { + sync_interval = 2; + } else if (dev_mode.dmDisplayFrequency >= 89 && dev_mode.dmDisplayFrequency <= 91) { + sync_interval = 3; + } else if (dev_mode.dmDisplayFrequency >= 119 && dev_mode.dmDisplayFrequency <= 121) { + sync_interval = 4; + } else { + sync_interval = 0; + } +} + +LRESULT CALLBACK gfx_d3d11_dxgi_wnd_proc(HWND h_wnd, UINT message, WPARAM w_param, LPARAM l_param) { + switch (message) { + case WM_SIZE: { + RECT rect; + GetClientRect(h_wnd, &rect); + create_render_target_views(rect.right - rect.left, rect.bottom - rect.top); + break; + } + case WM_EXITSIZEMOVE: { + calculate_sync_interval(); + break; + } + case WM_GETMINMAXINFO: { + RECT wr = { 0, 0, WINDOW_CLIENT_MIN_WIDTH, WINDOW_CLIENT_MIN_HEIGHT }; + AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE); + LPMINMAXINFO lpMMI = (LPMINMAXINFO) l_param; + lpMMI->ptMinTrackSize.x = wr.right - wr.left; + lpMMI->ptMinTrackSize.y = wr.bottom - wr.top; + break; + } + case WM_DISPLAYCHANGE: { + calculate_sync_interval(); + break; + } + case WM_DESTROY: { +#if DEBUG_D3D + d3d.debug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL); +#endif + exit(0); + break; + } + case WM_ACTIVATEAPP: { + if (d3d.on_all_keys_up != nullptr) { + d3d.on_all_keys_up(); + } + break; + } + case WM_SYSKEYDOWN: { + if ((w_param == VK_RETURN) && ((l_param & 1 << 30) == 0)) { + toggle_borderless_window_full_screen(); + break; + } else { + return DefWindowProcW(h_wnd, message, w_param, l_param); + } + } + case WM_KEYDOWN: { + if (d3d.on_key_down != nullptr) { + d3d.on_key_down((l_param >> 16) & 0x1ff); + } + break; + } + case WM_KEYUP: { + if (d3d.on_key_up != nullptr) { + d3d.on_key_up((l_param >> 16) & 0x1ff); + } + break; + } + default: { + return DefWindowProcW(h_wnd, message, w_param, l_param); + } + } + return 0; +} + +static void gfx_d3d11_dxgi_init(const char *window_title) { + // Prepare window title + + wchar_t w_title[512]; + mbstowcs(w_title, window_title, strlen(window_title) + 1); + + // Create window + + WNDCLASSEXW wcex; + ZeroMemory(&wcex, sizeof(WNDCLASSEX)); + + wcex.cbSize = sizeof(WNDCLASSEX); + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = gfx_d3d11_dxgi_wnd_proc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = nullptr; + wcex.hIcon = nullptr; + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); + wcex.lpszMenuName = nullptr; + wcex.lpszClassName = WINCLASS_NAME; + wcex.hIconSm = nullptr; + + RegisterClassExW(&wcex); + + RECT wr = { 0, 0, DESIRED_SCREEN_WIDTH, DESIRED_SCREEN_HEIGHT }; + AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE); + + h_wnd = CreateWindowW(WINCLASS_NAME, w_title, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, 0, wr.right - wr.left, wr.bottom - wr.top, nullptr, nullptr, + nullptr, nullptr); + + is_full_screen = false; + + // Center window + + int screen_width = GetSystemMetrics(SM_CXSCREEN); + int screen_height = GetSystemMetrics(SM_CYSCREEN); + int xPos = (screen_width - wr.right) * 0.5; + int yPos = (screen_height - wr.bottom) * 0.5; + SetWindowPos(h_wnd, 0, xPos, yPos, 0, 0, SWP_NOZORDER | SWP_NOSIZE); + + // Check if a lower latency flip model can be used + + lower_latency = IsWindows8Point1OrGreater(); + + // Create D3D11 device + +#if DEBUG_D3D + UINT device_creation_flags = D3D11_CREATE_DEVICE_DEBUG; +#else + UINT device_creation_flags = 0; +#endif + + D3D_FEATURE_LEVEL FeatureLevels[] = { + D3D_FEATURE_LEVEL_11_0, + D3D_FEATURE_LEVEL_10_1, + D3D_FEATURE_LEVEL_10_0, + D3D_FEATURE_LEVEL_9_3, + D3D_FEATURE_LEVEL_9_2, + D3D_FEATURE_LEVEL_9_1 + }; + + ThrowIfFailed(D3D11CreateDevice( + nullptr, + D3D_DRIVER_TYPE_HARDWARE, + nullptr, + device_creation_flags, + FeatureLevels, + ARRAYSIZE(FeatureLevels), + D3D11_SDK_VERSION, + d3d.device.GetAddressOf(), + NULL, + d3d.context.GetAddressOf()), + h_wnd, "Failed to create D3D11 device."); + + // Sample description to be used in back buffer and depth buffer + + d3d.sample_description.Count = 1; + d3d.sample_description.Quality = 0; + + // Create the swap chain + + if (lower_latency) { + + // Create swap chain description + + DXGI_SWAP_CHAIN_DESC1 swap_chain_desc1; + ZeroMemory(&swap_chain_desc1, sizeof(DXGI_SWAP_CHAIN_DESC1)); + + swap_chain_desc1.Width = DESIRED_SCREEN_WIDTH; + swap_chain_desc1.Height = DESIRED_SCREEN_HEIGHT; + swap_chain_desc1.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + swap_chain_desc1.Stereo = FALSE; + swap_chain_desc1.SampleDesc = d3d.sample_description; + swap_chain_desc1.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + swap_chain_desc1.BufferCount = 2; + swap_chain_desc1.Scaling = DXGI_SCALING_STRETCH; + swap_chain_desc1.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; + swap_chain_desc1.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED; + swap_chain_desc1.Flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT; + + // Create DXGI Factory + + ComPtr dxgi_device2; + ThrowIfFailed(d3d.device.Get()->QueryInterface(__uuidof(IDXGIDevice2), (void **) dxgi_device2.GetAddressOf()), + h_wnd, "Failed to get IDXGIDevice2."); + + ComPtr dxgi_adapter; + ThrowIfFailed(dxgi_device2.Get()->GetAdapter(dxgi_adapter.GetAddressOf()), + h_wnd, "Failed to get IDXGIAdapter."); + + ComPtr dxgi_factory2; + ThrowIfFailed(dxgi_adapter.Get()->GetParent(__uuidof(IDXGIFactory2), (void **) dxgi_factory2.GetAddressOf()), + h_wnd, "Failed to get IDXGIFactory2."); + + // Create Swap Chain + + ComPtr swap_chain1; + ThrowIfFailed(dxgi_factory2.Get()->CreateSwapChainForHwnd(d3d.device.Get(), h_wnd, &swap_chain_desc1, NULL, NULL, swap_chain1.GetAddressOf()), + h_wnd, "Failed to create IDXGISwapChain1."); + + ThrowIfFailed(swap_chain1.As(&d3d.swap_chain2), + h_wnd, "Failed to get IDXGISwapChain2 from IDXGISwapChain1."); + + ThrowIfFailed(d3d.swap_chain2.Get()->SetMaximumFrameLatency(1), + h_wnd, "Failed to Set Maximum Frame Latency to 1."); + + d3d.frame_latency_waitable_object = d3d.swap_chain2.Get()->GetFrameLatencyWaitableObject(); + + // Prevent DXGI from intercepting Alt+Enter + + ThrowIfFailed(dxgi_factory2.Get()->MakeWindowAssociation(h_wnd, DXGI_MWA_NO_WINDOW_CHANGES | DXGI_MWA_NO_ALT_ENTER), + h_wnd, "Failed to call MakeWindowAssociation."); + + } else { + + // Create swap chain description + + DXGI_SWAP_CHAIN_DESC swap_chain_desc; + ZeroMemory(&swap_chain_desc, sizeof(DXGI_SWAP_CHAIN_DESC)); + + swap_chain_desc.BufferDesc.Width = DESIRED_SCREEN_WIDTH; + swap_chain_desc.BufferDesc.Height = DESIRED_SCREEN_HEIGHT; + swap_chain_desc.BufferDesc.RefreshRate.Numerator = 0; + swap_chain_desc.BufferDesc.RefreshRate.Denominator = 1; + swap_chain_desc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + swap_chain_desc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; + swap_chain_desc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; + swap_chain_desc.SampleDesc = d3d.sample_description; + swap_chain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + swap_chain_desc.BufferCount = 1; + swap_chain_desc.OutputWindow = h_wnd; + swap_chain_desc.Windowed = TRUE; + swap_chain_desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; + swap_chain_desc.Flags = 0; + + // Create DXGI Factory + + ComPtr dxgi_device; + ThrowIfFailed(d3d.device.Get()->QueryInterface(__uuidof(IDXGIDevice), (void **) dxgi_device.GetAddressOf()), + h_wnd, "Failed to get IDXGIDevice."); + + ComPtr dxgi_adapter; + ThrowIfFailed(dxgi_device.Get()->GetAdapter(dxgi_adapter.GetAddressOf()), + h_wnd, "Failed to get IDXGIAdapter."); + + ComPtr dxgi_factory; + ThrowIfFailed(dxgi_adapter.Get()->GetParent(__uuidof(IDXGIFactory), (void **) dxgi_factory.GetAddressOf()), + h_wnd, "Failed to get IDXGIFactory."); + + // Create Swap Chain + + ThrowIfFailed(dxgi_factory.Get()->CreateSwapChain(d3d.device.Get(), &swap_chain_desc, d3d.swap_chain.GetAddressOf()), + h_wnd, "Failed to create IDXGISwapChain."); + + // Prevent DXGI from intercepting Alt+Enter + + ThrowIfFailed(dxgi_factory.Get()->MakeWindowAssociation(h_wnd, DXGI_MWA_NO_WINDOW_CHANGES | DXGI_MWA_NO_ALT_ENTER), + h_wnd, "Failed to call MakeWindowAssociation."); + } + + // Create D3D Debug device if in debug mode + +#if DEBUG_D3D + ThrowIfFailed(d3d.device->QueryInterface(__uuidof(ID3D11Debug), (void **) d3d.debug.GetAddressOf()), + h_wnd, "Failed to get ID3D11Debug device."); +#endif + + // Create views + + create_render_target_views(DESIRED_SCREEN_WIDTH, DESIRED_SCREEN_HEIGHT); + + // Create main vertex buffer + + D3D11_BUFFER_DESC vertex_buffer_desc; + ZeroMemory(&vertex_buffer_desc, sizeof(D3D11_BUFFER_DESC)); + + vertex_buffer_desc.Usage = D3D11_USAGE_DYNAMIC; + vertex_buffer_desc.ByteWidth = 256 * 26 * 3 * sizeof(float); // Same as buf_vbo size in gfx_pc + vertex_buffer_desc.BindFlags = D3D11_BIND_VERTEX_BUFFER; + vertex_buffer_desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + vertex_buffer_desc.MiscFlags = 0; + + ThrowIfFailed(d3d.device->CreateBuffer(&vertex_buffer_desc, NULL, d3d.vertex_buffer.GetAddressOf()), + h_wnd, "Failed to create vertex buffer."); + + // Create per-frame constant buffer + + D3D11_BUFFER_DESC constant_buffer_desc; + ZeroMemory(&constant_buffer_desc, sizeof(D3D11_BUFFER_DESC)); + + constant_buffer_desc.Usage = D3D11_USAGE_DYNAMIC; + constant_buffer_desc.ByteWidth = sizeof(PerFrameCB); + constant_buffer_desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + constant_buffer_desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + constant_buffer_desc.MiscFlags = 0; + + ThrowIfFailed(d3d.device->CreateBuffer(&constant_buffer_desc, NULL, d3d.per_frame_cb.GetAddressOf()), + h_wnd, "Failed to create per-frame constant buffer."); + + d3d.context->PSSetConstantBuffers(0, 1, d3d.per_frame_cb.GetAddressOf()); + + // Create per-draw constant buffer + + constant_buffer_desc.Usage = D3D11_USAGE_DYNAMIC; + constant_buffer_desc.ByteWidth = sizeof(PerDrawCB); + constant_buffer_desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + constant_buffer_desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + constant_buffer_desc.MiscFlags = 0; + + ThrowIfFailed(d3d.device->CreateBuffer(&constant_buffer_desc, NULL, d3d.per_draw_cb.GetAddressOf()), + h_wnd, "Failed to create per-draw constant buffer."); + + d3d.context->PSSetConstantBuffers(1, 1, d3d.per_draw_cb.GetAddressOf()); + + // Initialize some timer values + + QueryPerformanceFrequency(&frequency); + accumulated_time.QuadPart = 0; + + // Decide vsync interval + + calculate_sync_interval(); + + // Show the window + + ShowWindow(h_wnd, SW_SHOW); +} + +static void gfx_d3d11_dxgi_shutdown(void) { + if (d3d.swap_chain) d3d.swap_chain.Get()->SetFullscreenState(false, nullptr); + if (d3d.swap_chain2) d3d.swap_chain2.Get()->SetFullscreenState(false, nullptr); + + for (unsigned int i = 0; i < sizeof(d3d.shader_program_pool) / sizeof(d3d.shader_program_pool[0]); ++i) { + d3d.shader_program_pool[i].vertex_shader.Reset(); + d3d.shader_program_pool[i].pixel_shader.Reset(); + d3d.shader_program_pool[i].input_layout.Reset(); + d3d.shader_program_pool[i].blend_state.Reset(); + } + + d3d.rasterizer_state.Reset(); + d3d.backbuffer_view.Reset(); + d3d.depth_stencil_view.Reset(); + d3d.depth_stencil_state.Reset(); + d3d.context.Reset(); + d3d.device.Reset(); + d3d.swap_chain.Reset(); + d3d.swap_chain2.Reset(); + + if (h_wnd) { + DestroyWindow(h_wnd); + h_wnd = nullptr; + } +} + +static void gfx_d3d11_dxgi_set_keyboard_callbacks(bool (*on_key_down)(int scancode), bool (*on_key_up)(int scancode), void (*on_all_keys_up)(void)) { + d3d.on_key_down = on_key_down; + d3d.on_key_up = on_key_up; + d3d.on_all_keys_up = on_all_keys_up; +} + +static void gfx_d3d11_dxgi_main_loop(void (*run_one_game_iter)(void)) { + MSG msg = { 0 }; + + bool quit = false; + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + if (msg.message == WM_QUIT) { + quit = true; + } + } + + if (quit) { + return; + } + + if (IsIconic(h_wnd)) { + Sleep(50); + return; + } + + d3d.run_one_game_iter = run_one_game_iter; + + if (sync_interval == 0) { + LARGE_INTEGER current_time; + QueryPerformanceCounter(¤t_time); + + LARGE_INTEGER elapsed_time_microseconds; + elapsed_time_microseconds.QuadPart = current_time.QuadPart - last_time.QuadPart; + elapsed_time_microseconds.QuadPart *= 1000000; + elapsed_time_microseconds.QuadPart /= frequency.QuadPart; + + accumulated_time.QuadPart += elapsed_time_microseconds.QuadPart; + last_time = current_time; + + const uint32_t FRAME_TIME = 1000000 / 30; + + if (accumulated_time.QuadPart >= FRAME_TIME) { + accumulated_time.QuadPart %= FRAME_TIME; + + if (lower_latency) { + WaitForSingleObjectEx(d3d.frame_latency_waitable_object, 1000, true); + } + + if (d3d.run_one_game_iter != nullptr) { + d3d.run_one_game_iter(); + } + + if (lower_latency) { + d3d.swap_chain2->Present(1, 0); + } else { + d3d.swap_chain->Present(1, 0); + } + } else { + Sleep(1); + } + } else { + if (lower_latency) { + WaitForSingleObjectEx(d3d.frame_latency_waitable_object, 1000, true); + } + + if (d3d.run_one_game_iter != nullptr) { + d3d.run_one_game_iter(); + } + + if (lower_latency) { + d3d.swap_chain2->Present(sync_interval, 0); + } else { + d3d.swap_chain->Present(sync_interval, 0); + } + } +} + +static void gfx_d3d11_dxgi_get_dimensions(uint32_t *width, uint32_t *height) { + *width = d3d.current_width; + *height = d3d.current_height; +} + +static void gfx_d3d11_dxgi_handle_events(void) { +} + +static bool gfx_d3d11_dxgi_start_frame(void) { + return true; +} + +static void gfx_d3d11_dxgi_swap_buffers_begin(void) { +} + +static void gfx_d3d11_dxgi_swap_buffers_end(void) { +} + +double gfx_d3d11_dxgi_get_time(void) { + return 0.0; +} + +static bool gfx_d3d11_z_is_from_0_to_1(void) { + return true; +} + +static void gfx_d3d11_unload_shader(struct ShaderProgram *old_prg) { +} + +static void gfx_d3d11_load_shader(struct ShaderProgram *new_prg) { + d3d.shader_program = new_prg; +} + +static struct ShaderProgram *gfx_d3d11_create_and_load_new_shader(uint32_t shader_id) { + CCFeatures cc_features; + get_cc_features(shader_id, &cc_features); + + char buf[4096]; + size_t len = 0; + size_t num_floats = 4; + + // Pixel shader input struct + + append_line(buf, &len, "struct PSInput {"); + append_line(buf, &len, " float4 position : SV_POSITION;"); + + if (cc_features.used_textures[0] || cc_features.used_textures[1]) { + append_line(buf, &len, " float2 uv : TEXCOORD;"); + num_floats += 2; + } + + if (cc_features.opt_alpha && cc_features.opt_noise) { + append_line(buf, &len, " float4 screenPos : TEXCOORD1;"); + } + + if (cc_features.opt_fog) { + append_line(buf, &len, " float4 fog : FOG;"); + num_floats += 4; + } + for (uint32_t i = 0; i < cc_features.num_inputs; i++) { + len += sprintf(buf + len, " float%d input%d : INPUT%d;\r\n", cc_features.opt_alpha ? 4 : 3, i + 1, i); + num_floats += cc_features.opt_alpha ? 4 : 3; + } + append_line(buf, &len, "};"); + + // Textures and samplers + + if (cc_features.used_textures[0]) { + append_line(buf, &len, "Texture2D g_texture0 : register(t0);"); + append_line(buf, &len, "SamplerState g_sampler0 : register(s0);"); + } + if (cc_features.used_textures[1]) { + append_line(buf, &len, "Texture2D g_texture1 : register(t1);"); + append_line(buf, &len, "SamplerState g_sampler1 : register(s1);"); + } + + // Constant buffer and random function + + if (cc_features.opt_alpha && cc_features.opt_noise) { + append_line(buf, &len, "cbuffer PerFrameCB : register(b0) {"); + append_line(buf, &len, " uint noise_frame;"); + append_line(buf, &len, " float2 noise_scale;"); + append_line(buf, &len, "}"); + + append_line(buf, &len, "float random(in float3 value) {"); + append_line(buf, &len, " float random = dot(value, float3(12.9898, 78.233, 37.719));"); + append_line(buf, &len, " return frac(sin(random) * 143758.5453);"); + append_line(buf, &len, "}"); + } + + // 3 point texture filtering + // Original author: ArthurCarvalho + // Based on GLSL implementation by twinaphex, mupen64plus-libretro project. + + if (configFiltering == 2) { + if (cc_features.used_textures[0] || cc_features.used_textures[1]) { + append_line(buf, &len, "cbuffer PerDrawCB : register(b1) {"); + append_line(buf, &len, " struct {"); + append_line(buf, &len, " uint width;"); + append_line(buf, &len, " uint height;"); + append_line(buf, &len, " bool linear_filtering;"); + append_line(buf, &len, " } textures[2];"); + append_line(buf, &len, "}"); + append_line(buf, &len, "#define TEX_OFFSET(tex, tSampler, texCoord, off, texSize) tex.Sample(tSampler, texCoord - off / texSize)"); + append_line(buf, &len, "float4 tex2D3PointFilter(in Texture2D tex, in SamplerState tSampler, in float2 texCoord, in float2 texSize) {"); + append_line(buf, &len, " float2 offset = frac(texCoord * texSize - float2(0.5, 0.5));"); + append_line(buf, &len, " offset -= step(1.0, offset.x + offset.y);"); + append_line(buf, &len, " float4 c0 = TEX_OFFSET(tex, tSampler, texCoord, offset, texSize);"); + append_line(buf, &len, " float4 c1 = TEX_OFFSET(tex, tSampler, texCoord, float2(offset.x - sign(offset.x), offset.y), texSize);"); + append_line(buf, &len, " float4 c2 = TEX_OFFSET(tex, tSampler, texCoord, float2(offset.x, offset.y - sign(offset.y)), texSize);"); + append_line(buf, &len, " return c0 + abs(offset.x)*(c1-c0) + abs(offset.y)*(c2-c0);"); + append_line(buf, &len, "}"); + } + } + + // Vertex shader + + append_str(buf, &len, "PSInput VSMain(float4 position : POSITION"); + if (cc_features.used_textures[0] || cc_features.used_textures[1]) { + append_str(buf, &len, ", float2 uv : TEXCOORD"); + } + if (cc_features.opt_fog) { + append_str(buf, &len, ", float4 fog : FOG"); + } + for (uint32_t i = 0; i < cc_features.num_inputs; i++) { + len += sprintf(buf + len, ", float%d input%d : INPUT%d", cc_features.opt_alpha ? 4 : 3, i + 1, i); + } + append_line(buf, &len, ") {"); + append_line(buf, &len, " PSInput result;"); + append_line(buf, &len, " result.position = position;"); + if (cc_features.opt_alpha && cc_features.opt_noise) { + append_line(buf, &len, " result.screenPos = position;"); + } + if (cc_features.used_textures[0] || cc_features.used_textures[1]) { + append_line(buf, &len, " result.uv = uv;"); + } + if (cc_features.opt_fog) { + append_line(buf, &len, " result.fog = fog;"); + } + for (uint32_t i = 0; i < cc_features.num_inputs; i++) { + len += sprintf(buf + len, " result.input%d = input%d;\r\n", i + 1, i + 1); + } + append_line(buf, &len, " return result;"); + append_line(buf, &len, "}"); + + // Pixel shader + + append_line(buf, &len, "float4 PSMain(PSInput input) : SV_TARGET {"); + if (cc_features.used_textures[0]) { + if (configFiltering == 2) { + append_line(buf, &len, " float4 texVal0;"); + append_line(buf, &len, " if (textures[0].linear_filtering)"); + append_line(buf, &len, " texVal0 = tex2D3PointFilter(g_texture0, g_sampler0, input.uv, float2(textures[0].width, textures[0].height));"); + append_line(buf, &len, " else"); + append_line(buf, &len, " texVal0 = g_texture0.Sample(g_sampler0, input.uv);"); + } else { + append_line(buf, &len, " float4 texVal0 = g_texture0.Sample(g_sampler0, input.uv);"); + } + } + if (cc_features.used_textures[1]) { + if (configFiltering == 2) { + append_line(buf, &len, " float4 texVal1;"); + append_line(buf, &len, " if (textures[1].linear_filtering)"); + append_line(buf, &len, " texVal1 = tex2D3PointFilter(g_texture1, g_sampler1, input.uv, float2(textures[1].width, textures[1].height));"); + append_line(buf, &len, " else"); + append_line(buf, &len, " texVal1 = g_texture1.Sample(g_sampler1, input.uv);"); + } else { + append_line(buf, &len, " float4 texVal1 = g_texture1.Sample(g_sampler1, input.uv);"); + } + } + + append_str(buf, &len, cc_features.opt_alpha ? " float4 texel = " : " float3 texel = "); + if (!cc_features.color_alpha_same && cc_features.opt_alpha) { + append_str(buf, &len, "float4("); + append_formula(buf, &len, cc_features.c, cc_features.do_single[0], cc_features.do_multiply[0], cc_features.do_mix[0], false, false, true); + append_str(buf, &len, ", "); + append_formula(buf, &len, cc_features.c, cc_features.do_single[1], cc_features.do_multiply[1], cc_features.do_mix[1], true, true, true); + append_str(buf, &len, ")"); + } else { + append_formula(buf, &len, cc_features.c, cc_features.do_single[0], cc_features.do_multiply[0], cc_features.do_mix[0], cc_features.opt_alpha, false, cc_features.opt_alpha); + } + append_line(buf, &len, ";"); + + if (cc_features.opt_texture_edge && cc_features.opt_alpha) { + append_line(buf, &len, " if (texel.a > 0.3) texel.a = 1.0; else discard;"); + } + // TODO discard if alpha is 0? + if (cc_features.opt_fog) { + if (cc_features.opt_alpha) { + append_line(buf, &len, " texel = float4(lerp(texel.rgb, input.fog.rgb, input.fog.a), texel.a);"); + } else { + append_line(buf, &len, " texel = lerp(texel, input.fog.rgb, input.fog.a);"); + } + } + + if (cc_features.opt_alpha && cc_features.opt_noise) { + append_line(buf, &len, " float2 coords = (input.screenPos.xy / input.screenPos.w) * noise_scale;"); + append_line(buf, &len, " texel.a *= round(random(float3(floor(coords), noise_frame)));"); + } + + if (cc_features.opt_alpha) { + append_line(buf, &len, " return texel;"); + } else { + append_line(buf, &len, " return float4(texel, 1.0);"); + } + append_line(buf, &len, "}"); + + ComPtr vs, ps; + ComPtr error_blob; + +#if DEBUG_D3D + UINT compile_flags = D3DCOMPILE_DEBUG; +#else + UINT compile_flags = D3DCOMPILE_OPTIMIZATION_LEVEL2; +#endif + + HRESULT hr = D3DCompile(buf, len, nullptr, nullptr, nullptr, "VSMain", "vs_4_0_level_9_1", compile_flags, 0, vs.GetAddressOf(), error_blob.GetAddressOf()); + + if (FAILED(hr)) + sys_fatal("%s", (char *) error_blob->GetBufferPointer()); + + hr = D3DCompile(buf, len, nullptr, nullptr, nullptr, "PSMain", "ps_4_0_level_9_1", compile_flags, 0, ps.GetAddressOf(), error_blob.GetAddressOf()); + + if (FAILED(hr)) + sys_fatal("%s", (char *) error_blob->GetBufferPointer()); + + struct ShaderProgram *prg = &d3d.shader_program_pool[d3d.shader_program_pool_size++]; + + ThrowIfFailed(d3d.device->CreateVertexShader(vs->GetBufferPointer(), vs->GetBufferSize(), NULL, prg->vertex_shader.GetAddressOf())); + ThrowIfFailed(d3d.device->CreatePixelShader(ps->GetBufferPointer(), ps->GetBufferSize(), NULL, prg->pixel_shader.GetAddressOf())); + + // Input Layout + + D3D11_INPUT_ELEMENT_DESC ied[7]; + uint8_t ied_index = 0; + ied[ied_index++] = { "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }; + if (cc_features.used_textures[0] || cc_features.used_textures[1]) { + ied[ied_index++] = { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }; + } + if (cc_features.opt_fog) { + ied[ied_index++] = { "FOG", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }; + } + for (unsigned int i = 0; i < cc_features.num_inputs; i++) { + DXGI_FORMAT format = cc_features.opt_alpha ? DXGI_FORMAT_R32G32B32A32_FLOAT : DXGI_FORMAT_R32G32B32_FLOAT; + ied[ied_index++] = { "INPUT", i, format, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }; + } + + ThrowIfFailed(d3d.device->CreateInputLayout(ied, ied_index, vs->GetBufferPointer(), vs->GetBufferSize(), prg->input_layout.GetAddressOf())); + + // Blend state + + D3D11_BLEND_DESC blend_desc; + ZeroMemory(&blend_desc, sizeof(D3D11_BLEND_DESC)); + + if (cc_features.opt_alpha) { + blend_desc.RenderTarget[0].BlendEnable = true; + blend_desc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA; + blend_desc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA; + blend_desc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; + blend_desc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE; + blend_desc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO; + blend_desc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; + blend_desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + } else { + blend_desc.RenderTarget[0].BlendEnable = false; + blend_desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + } + + ThrowIfFailed(d3d.device->CreateBlendState(&blend_desc, prg->blend_state.GetAddressOf())); + + // Save some values + + prg->shader_id = shader_id; + prg->num_inputs = cc_features.num_inputs; + prg->num_floats = num_floats; + prg->used_textures[0] = cc_features.used_textures[0]; + prg->used_textures[1] = cc_features.used_textures[1]; + + return d3d.shader_program = prg; +} + +static struct ShaderProgram *gfx_d3d11_lookup_shader(uint32_t shader_id) { + for (size_t i = 0; i < d3d.shader_program_pool_size; i++) { + if (d3d.shader_program_pool[i].shader_id == shader_id) { + return &d3d.shader_program_pool[i]; + } + } + return NULL; +} + +static void gfx_d3d11_shader_get_info(struct ShaderProgram *prg, uint8_t *num_inputs, bool used_textures[2]) { + *num_inputs = prg->num_inputs; + used_textures[0] = prg->used_textures[0]; + used_textures[1] = prg->used_textures[1]; +} + +static uint32_t gfx_d3d11_new_texture(void) { + d3d.textures.resize(d3d.textures.size() + 1); + return (uint32_t)(d3d.textures.size() - 1); +} + +static void gfx_d3d11_select_texture(int tile, uint32_t texture_id) { + d3d.current_tile = tile; + d3d.current_texture_ids[tile] = texture_id; +} + +static D3D11_TEXTURE_ADDRESS_MODE gfx_cm_to_d3d11(uint32_t val) { + if (val & G_TX_CLAMP) { + return D3D11_TEXTURE_ADDRESS_CLAMP; + } + return (val & G_TX_MIRROR) ? D3D11_TEXTURE_ADDRESS_MIRROR : D3D11_TEXTURE_ADDRESS_WRAP; +} + +static void gfx_d3d11_upload_texture(uint8_t *rgba32_buf, int width, int height) { + // Create texture + + D3D11_TEXTURE2D_DESC texture_desc; + ZeroMemory(&texture_desc, sizeof(D3D11_TEXTURE2D_DESC)); + + texture_desc.Width = width; + texture_desc.Height = height; + texture_desc.Usage = D3D11_USAGE_IMMUTABLE; + texture_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE; + texture_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + texture_desc.CPUAccessFlags = 0; + texture_desc.MiscFlags = 0; // D3D11_RESOURCE_MISC_GENERATE_MIPS ? + texture_desc.ArraySize = 1; + texture_desc.MipLevels = 1; + texture_desc.SampleDesc.Count = 1; + texture_desc.SampleDesc.Quality = 0; + + D3D11_SUBRESOURCE_DATA resource_data; + resource_data.pSysMem = rgba32_buf; + resource_data.SysMemPitch = width * 4; + resource_data.SysMemSlicePitch = resource_data.SysMemPitch * height; + + ComPtr texture; + ThrowIfFailed(d3d.device->CreateTexture2D(&texture_desc, &resource_data, texture.GetAddressOf())); + + // Create shader resource view from texture + + D3D11_SHADER_RESOURCE_VIEW_DESC resource_view_desc; + ZeroMemory(&resource_view_desc, sizeof(D3D11_SHADER_RESOURCE_VIEW_DESC)); + + resource_view_desc.Format = texture_desc.Format; + resource_view_desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; + resource_view_desc.Texture2D.MostDetailedMip = 0; + resource_view_desc.Texture2D.MipLevels = -1; + + TextureData *texture_data = &d3d.textures[d3d.current_texture_ids[d3d.current_tile]]; + texture_data->width = width; + texture_data->height = height; + + ThrowIfFailed(d3d.device->CreateShaderResourceView(texture.Get(), &resource_view_desc, texture_data->resource_view.GetAddressOf())); +} + +static void gfx_d3d11_set_sampler_parameters(int tile, bool linear_filter, uint32_t cms, uint32_t cmt) { + D3D11_SAMPLER_DESC sampler_desc; + ZeroMemory(&sampler_desc, sizeof(D3D11_SAMPLER_DESC)); + + if (configFiltering == 2) + sampler_desc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT; + else + sampler_desc.Filter = linear_filter ? D3D11_FILTER_MIN_MAG_MIP_LINEAR : D3D11_FILTER_MIN_MAG_MIP_POINT; + + sampler_desc.AddressU = gfx_cm_to_d3d11(cms); + sampler_desc.AddressV = gfx_cm_to_d3d11(cmt); + sampler_desc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; + sampler_desc.MinLOD = 0; + sampler_desc.MaxLOD = D3D11_FLOAT32_MAX; + + TextureData *texture_data = &d3d.textures[d3d.current_texture_ids[tile]]; + texture_data->linear_filtering = linear_filter; + + // This function is called twice per texture, the first one only to set default values. + // Maybe that could be skipped? Anyway, make sure to release the first default sampler + // state before setting the actual one. + texture_data->sampler_state.Reset(); + + ThrowIfFailed(d3d.device->CreateSamplerState(&sampler_desc, texture_data->sampler_state.GetAddressOf())); +} + +static void gfx_d3d11_set_depth_test(bool depth_test) { + d3d.depth_test = depth_test; +} + +static void gfx_d3d11_set_depth_mask(bool depth_mask) { + d3d.depth_mask = depth_mask; +} + +static void gfx_d3d11_set_zmode_decal(bool zmode_decal) { + d3d.zmode_decal = zmode_decal; +} + +static void gfx_d3d11_set_viewport(int x, int y, int width, int height) { + D3D11_VIEWPORT viewport; + viewport.TopLeftX = x; + viewport.TopLeftY = d3d.current_height - y - height; + viewport.Width = width; + viewport.Height = height; + viewport.MinDepth = 0.0f; + viewport.MaxDepth = 1.0f; + + d3d.context->RSSetViewports(1, &viewport); +} + +static void gfx_d3d11_set_scissor(int x, int y, int width, int height) { + D3D11_RECT rect; + rect.left = x; + rect.top = d3d.current_height - y - height; + rect.right = x + width; + rect.bottom = d3d.current_height - y; + + d3d.context->RSSetScissorRects(1, &rect); +} + +static void gfx_d3d11_set_use_alpha(bool use_alpha) { + // Already part of the pipeline state from shader info +} + +static void gfx_d3d11_draw_triangles(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris) { + + if (d3d.last_depth_test != d3d.depth_test || d3d.last_depth_mask != d3d.depth_mask) { + d3d.last_depth_test = d3d.depth_test; + d3d.last_depth_mask = d3d.depth_mask; + + d3d.depth_stencil_state.Reset(); + + D3D11_DEPTH_STENCIL_DESC depth_stencil_desc; + ZeroMemory(&depth_stencil_desc, sizeof(D3D11_DEPTH_STENCIL_DESC)); + + depth_stencil_desc.DepthEnable = d3d.depth_test; + depth_stencil_desc.DepthWriteMask = d3d.depth_mask ? D3D11_DEPTH_WRITE_MASK_ALL : D3D11_DEPTH_WRITE_MASK_ZERO; + depth_stencil_desc.DepthFunc = D3D11_COMPARISON_LESS_EQUAL; + depth_stencil_desc.StencilEnable = false; + + ThrowIfFailed(d3d.device->CreateDepthStencilState(&depth_stencil_desc, d3d.depth_stencil_state.GetAddressOf())); + d3d.context->OMSetDepthStencilState(d3d.depth_stencil_state.Get(), 0); + } + + if (d3d.last_zmode_decal != d3d.zmode_decal) { + d3d.last_zmode_decal = d3d.zmode_decal; + + d3d.rasterizer_state.Reset(); + + D3D11_RASTERIZER_DESC rasterizer_desc; + ZeroMemory(&rasterizer_desc, sizeof(D3D11_RASTERIZER_DESC)); + + rasterizer_desc.FillMode = D3D11_FILL_SOLID; + rasterizer_desc.CullMode = D3D11_CULL_NONE; + rasterizer_desc.FrontCounterClockwise = true; + rasterizer_desc.DepthBias = 0; + rasterizer_desc.SlopeScaledDepthBias = d3d.zmode_decal ? -2.0f : 0.0f; + rasterizer_desc.DepthBiasClamp = 0.0f; + rasterizer_desc.DepthClipEnable = true; + rasterizer_desc.ScissorEnable = true; + rasterizer_desc.MultisampleEnable = false; + rasterizer_desc.AntialiasedLineEnable = false; + + ThrowIfFailed(d3d.device->CreateRasterizerState(&rasterizer_desc, d3d.rasterizer_state.GetAddressOf())); + d3d.context->RSSetState(d3d.rasterizer_state.Get()); + } + + bool textures_changed = false; + + for (int i = 0; i < 2; i++) { + if (d3d.shader_program->used_textures[i]) { + if (d3d.last_resource_views[i].Get() != d3d.textures[d3d.current_texture_ids[i]].resource_view.Get()) { + d3d.last_resource_views[i] = d3d.textures[d3d.current_texture_ids[i]].resource_view.Get(); + d3d.context->PSSetShaderResources(i, 1, d3d.textures[d3d.current_texture_ids[i]].resource_view.GetAddressOf()); + + if (configFiltering == 2) { + d3d.per_draw_cb_data.textures[i].width = d3d.textures[d3d.current_texture_ids[i]].width; + d3d.per_draw_cb_data.textures[i].height = d3d.textures[d3d.current_texture_ids[i]].height; + d3d.per_draw_cb_data.textures[i].linear_filtering = d3d.textures[d3d.current_texture_ids[i]].linear_filtering; + textures_changed = true; + } + + if (d3d.last_sampler_states[i].Get() != d3d.textures[d3d.current_texture_ids[i]].sampler_state.Get()) { + d3d.last_sampler_states[i] = d3d.textures[d3d.current_texture_ids[i]].sampler_state.Get(); + d3d.context->PSSetSamplers(i, 1, d3d.textures[d3d.current_texture_ids[i]].sampler_state.GetAddressOf()); + } + } + } + } + + // Set per-draw constant buffer + + if (textures_changed) { + D3D11_MAPPED_SUBRESOURCE ms; + ZeroMemory(&ms, sizeof(D3D11_MAPPED_SUBRESOURCE)); + d3d.context->Map(d3d.per_draw_cb.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &ms); + memcpy(ms.pData, &d3d.per_draw_cb_data, sizeof(PerDrawCB)); + d3d.context->Unmap(d3d.per_draw_cb.Get(), 0); + } + + // Set vertex buffer data + + D3D11_MAPPED_SUBRESOURCE ms; + ZeroMemory(&ms, sizeof(D3D11_MAPPED_SUBRESOURCE)); + d3d.context->Map(d3d.vertex_buffer.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &ms); + memcpy(ms.pData, buf_vbo, buf_vbo_len * sizeof(float)); + d3d.context->Unmap(d3d.vertex_buffer.Get(), 0); + + uint32_t stride = d3d.shader_program->num_floats * sizeof(float); + uint32_t offset = 0; + + if (d3d.last_vertex_buffer_stride != stride) { + d3d.last_vertex_buffer_stride = stride; + d3d.context->IASetVertexBuffers(0, 1, d3d.vertex_buffer.GetAddressOf(), &stride, &offset); + } + + if (d3d.last_shader_program != d3d.shader_program) { + d3d.last_shader_program = d3d.shader_program; + d3d.context->IASetInputLayout(d3d.shader_program->input_layout.Get()); + d3d.context->VSSetShader(d3d.shader_program->vertex_shader.Get(), 0, 0); + d3d.context->PSSetShader(d3d.shader_program->pixel_shader.Get(), 0, 0); + + if (d3d.last_blend_state.Get() != d3d.shader_program->blend_state.Get()) { + d3d.last_blend_state = d3d.shader_program->blend_state.Get(); + d3d.context->OMSetBlendState(d3d.shader_program->blend_state.Get(), 0, 0xFFFFFFFF); + } + } + + if (d3d.last_primitive_topology != D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST) { + d3d.last_primitive_topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST; + d3d.context->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + } + + d3d.context->Draw(buf_vbo_num_tris * 3, 0); +} + +static void gfx_d3d11_init(void) { } + +static void gfx_d3d11_shutdown(void) { } + +static void gfx_d3d11_start_frame(void) { + // Set render targets + + d3d.context->OMSetRenderTargets(1, d3d.backbuffer_view.GetAddressOf(), d3d.depth_stencil_view.Get()); + + // Clear render targets + + const float clearColor[] = { 0.0f, 0.0f, 0.0f, 1.0f }; + d3d.context->ClearRenderTargetView(d3d.backbuffer_view.Get(), clearColor); + d3d.context->ClearDepthStencilView(d3d.depth_stencil_view.Get(), D3D11_CLEAR_DEPTH, 1.0f, 0); + + // Set per-frame constant buffer + + d3d.per_frame_cb_data.noise_frame++; + if (d3d.per_frame_cb_data.noise_frame > 150) { + // No high values, as noise starts to look ugly + d3d.per_frame_cb_data.noise_frame = 0; + } + float aspect_ratio = (float) d3d.current_width / (float) d3d.current_height; + d3d.per_frame_cb_data.noise_scale_x = 120 * aspect_ratio; // 120 = N64 height resolution (240) / 2 + d3d.per_frame_cb_data.noise_scale_y = 120; + + D3D11_MAPPED_SUBRESOURCE ms; + ZeroMemory(&ms, sizeof(D3D11_MAPPED_SUBRESOURCE)); + d3d.context->Map(d3d.per_frame_cb.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &ms); + memcpy(ms.pData, &d3d.per_frame_cb_data, sizeof(PerFrameCB)); + d3d.context->Unmap(d3d.per_frame_cb.Get(), 0); +} + +struct GfxRenderingAPI gfx_d3d11_api = { + gfx_d3d11_z_is_from_0_to_1, + gfx_d3d11_unload_shader, + gfx_d3d11_load_shader, + gfx_d3d11_create_and_load_new_shader, + gfx_d3d11_lookup_shader, + gfx_d3d11_shader_get_info, + gfx_d3d11_new_texture, + gfx_d3d11_select_texture, + gfx_d3d11_upload_texture, + gfx_d3d11_set_sampler_parameters, + gfx_d3d11_set_depth_test, + gfx_d3d11_set_depth_mask, + gfx_d3d11_set_zmode_decal, + gfx_d3d11_set_viewport, + gfx_d3d11_set_scissor, + gfx_d3d11_set_use_alpha, + gfx_d3d11_draw_triangles, + gfx_d3d11_init, + gfx_d3d11_start_frame, + gfx_d3d11_shutdown, +}; + +struct GfxWindowManagerAPI gfx_dxgi = { + gfx_d3d11_dxgi_init, + gfx_d3d11_dxgi_set_keyboard_callbacks, + gfx_d3d11_dxgi_main_loop, + gfx_d3d11_dxgi_get_dimensions, + gfx_d3d11_dxgi_handle_events, + gfx_d3d11_dxgi_start_frame, + gfx_d3d11_dxgi_swap_buffers_begin, + gfx_d3d11_dxgi_swap_buffers_end, + gfx_d3d11_dxgi_get_time, + gfx_d3d11_dxgi_shutdown, +}; + +#else + +#error "D3D11 is only supported on Windows" + +#endif // _WIN32 + +#endif // RAPI_D3D11 diff --git a/src/pc/gfx/gfx_direct3d11.h b/src/pc/gfx/gfx_direct3d11.h new file mode 100644 index 00000000..60b122b3 --- /dev/null +++ b/src/pc/gfx/gfx_direct3d11.h @@ -0,0 +1,10 @@ +#ifndef GFX_DIRECT3D11_H +#define GFX_DIRECT3D11_H + +#include "gfx_window_manager_api.h" +#include "gfx_rendering_api.h" + +extern struct GfxWindowManagerAPI gfx_dxgi; +extern struct GfxRenderingAPI gfx_d3d11_api; + +#endif diff --git a/src/pc/gfx/gfx_direct3d12.cpp b/src/pc/gfx/gfx_direct3d12.cpp new file mode 100644 index 00000000..90f3cd08 --- /dev/null +++ b/src/pc/gfx/gfx_direct3d12.cpp @@ -0,0 +1,1317 @@ +#ifdef RAPI_D3D12 + +#if defined(_WIN32) || defined(_WIN64) + +#include +#include +#include + +#include +#include +#include + +#include +#include + +// These are needed when compiling with MinGW +#include +#include +#define __in_ecount_opt(size) +#define __in +#define __out +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#include +#include + +#include "dxsdk/dxgi.h" +#include "dxsdk/dxgi1_4.h" +#include "dxsdk/d3d12.h" +#include "dxsdk/d3dcompiler.h" + +#include "dxsdk/d3dx12.h" + +#ifndef _LANGUAGE_C +#define _LANGUAGE_C +#endif +#include + +extern "C" { +#include "../configfile.h" +#include "../platform.h" +} + +#include "gfx_cc.h" +#include "gfx_window_manager_api.h" +#include "gfx_rendering_api.h" +#include "gfx_direct3d_common.h" + +#include "gfx_screen_config.h" + +#define WINCLASS_NAME L"SUPERMARIO64" +#define GFX_API_NAME "Direct3D 12" +#define DEBUG_D3D 0 + +#ifdef VERSION_EU +#define FRAME_INTERVAL_US_NUMERATOR 40000 +#define FRAME_INTERVAL_US_DENOMINATOR 1 +#else +#define FRAME_INTERVAL_US_NUMERATOR 100000 +#define FRAME_INTERVAL_US_DENOMINATOR 3 +#endif + +using namespace Microsoft::WRL; // For ComPtr + +struct ShaderProgram { + uint32_t shader_id; + uint8_t num_inputs; + bool used_textures[2]; + uint8_t num_floats; + uint8_t num_attribs; + + ComPtr vertex_shader; + ComPtr pixel_shader; + ComPtr root_signature; +}; + +struct PipelineDesc { + uint32_t shader_id; + bool depth_test; + bool depth_mask; + bool zmode_decal; + bool _padding; + + bool operator==(const PipelineDesc& o) const { + return memcmp(this, &o, sizeof(*this)) == 0; + } + + bool operator<(const PipelineDesc& o) const { + return memcmp(this, &o, sizeof(*this)) < 0; + } +}; + +struct TextureHeap { + ComPtr heap; + std::vector free_list; +}; + +struct TextureData { + ComPtr resource; + struct TextureHeap *heap; + uint8_t heap_offset; + + uint64_t last_frame_counter; + uint32_t descriptor_index; + int sampler_parameters; +}; + +static struct { + struct ShaderProgram shader_program_pool[64]; + uint8_t shader_program_pool_size; + + uint32_t current_width, current_height; + + ComPtr factory; + ComPtr device; + ComPtr command_queue; + ComPtr copy_command_queue; + ComPtr swap_chain; + ComPtr rtv_heap; + UINT rtv_descriptor_size; + ComPtr render_targets[2]; + ComPtr command_allocator; + ComPtr copy_command_allocator; + ComPtr command_list; + ComPtr copy_command_list; + ComPtr dsv_heap; + ComPtr depth_stencil_buffer; + ComPtr srv_heap; + UINT srv_descriptor_size; + ComPtr sampler_heap; + UINT sampler_descriptor_size; + + std::map, std::list> texture_heaps; + + std::map>> upload_heaps; + std::vector>> upload_heaps_in_flight; + ComPtr copy_fence; + uint64_t copy_fence_value; + + std::vector textures; + int current_tile; + uint32_t current_texture_ids[2]; + uint32_t srv_pos; + + int frame_index; + ComPtr fence; + HANDLE fence_event; + HANDLE waitable_object; + uint64_t qpc_init, qpc_freq; + uint64_t frame_timestamp; // in units of 1/FRAME_INTERVAL_US_DENOMINATOR microseconds + std::map frame_stats; + std::set> pending_frame_stats; + bool dropped_frame; + bool sync_interval_means_frames_to_wait; + UINT length_in_vsync_frames; + + uint64_t frame_counter; + + ComPtr vertex_buffer; + void *mapped_vbuf_address; + int vbuf_pos; + + std::vector> resources_to_clean_at_end_of_frame; + std::vector> texture_heap_allocations_to_reclaim_at_end_of_frame; + + std::map> pipeline_states; + bool must_reload_pipeline; + + // Current state: + ID3D12PipelineState *pipeline_state; + struct ShaderProgram *shader_program; + bool depth_test; + bool depth_mask; + bool zmode_decal; + + CD3DX12_VIEWPORT viewport; + CD3DX12_RECT scissor; + + void (*run_one_game_iter)(void); + bool (*on_key_down)(int scancode); + bool (*on_key_up)(int scancode); + void (*on_all_keys_up)(void); +} d3d; + +static int texture_uploads = 0; +static int max_texture_uploads; + +static D3D12_CPU_DESCRIPTOR_HANDLE get_cpu_descriptor_handle(ComPtr& heap) { +#if __MINGW32__ + // We would like to do this: + // D3D12_CPU_DESCRIPTOR_HANDLE handle = heap->GetCPUDescriptorHandleForHeapStart(); + // but MinGW64 doesn't follow the calling conventions of VC++ for some reason. + // Per MS documentation "User-defined types can be returned by value from global functions and static member functions"... + // "Otherwise, the caller assumes the responsibility of allocating memory and passing a pointer for the return value as the first argument". + // The method here is a non-static member function, and hence we need to pass the address to the return value as a parameter. + // MinGW32 has the same issue. + auto fn = heap->GetCPUDescriptorHandleForHeapStart; + void (STDMETHODCALLTYPE ID3D12DescriptorHeap::*fun)(D3D12_CPU_DESCRIPTOR_HANDLE *out) = (void (STDMETHODCALLTYPE ID3D12DescriptorHeap::*)(D3D12_CPU_DESCRIPTOR_HANDLE *out))fn; + D3D12_CPU_DESCRIPTOR_HANDLE handle; + (heap.Get()->*fun)(&handle); + return handle; +#else + return heap->GetCPUDescriptorHandleForHeapStart(); +#endif +} + +static D3D12_GPU_DESCRIPTOR_HANDLE get_gpu_descriptor_handle(ComPtr& heap) { +#ifdef __MINGW32__ + // See get_cpu_descriptor_handle + auto fn = heap->GetGPUDescriptorHandleForHeapStart; + void (STDMETHODCALLTYPE ID3D12DescriptorHeap::*fun)(D3D12_GPU_DESCRIPTOR_HANDLE *out) = (void (STDMETHODCALLTYPE ID3D12DescriptorHeap::*)(D3D12_GPU_DESCRIPTOR_HANDLE *out))fn; + D3D12_GPU_DESCRIPTOR_HANDLE handle; + (heap.Get()->*fun)(&handle); + return handle; +#else + return heap->GetGPUDescriptorHandleForHeapStart(); +#endif +} + +static D3D12_RESOURCE_ALLOCATION_INFO get_resource_allocation_info(const D3D12_RESOURCE_DESC *resource_desc) { +#ifdef __MINGW32__ + // See get_cpu_descriptor_handle + auto fn = d3d.device->GetResourceAllocationInfo; + void (STDMETHODCALLTYPE ID3D12Device::*fun)(D3D12_RESOURCE_ALLOCATION_INFO *out, UINT visibleMask, UINT numResourceDescs, const D3D12_RESOURCE_DESC *pResourceDescs) = + (void (STDMETHODCALLTYPE ID3D12Device::*)(D3D12_RESOURCE_ALLOCATION_INFO *out, UINT visibleMask, UINT numResourceDescs, const D3D12_RESOURCE_DESC *pResourceDescs))fn; + D3D12_RESOURCE_ALLOCATION_INFO out; + (d3d.device.Get()->*fun)(&out, 0, 1, resource_desc); + return out; +#else + return d3d.device->GetResourceAllocationInfo(0, 1, resource_desc); +#endif +} + +static bool gfx_d3d12_z_is_from_0_to_1(void) { + return true; +} + +static void gfx_d3d12_unload_shader(struct ShaderProgram *old_prg) { +} + +static void gfx_d3d12_load_shader(struct ShaderProgram *new_prg) { + d3d.shader_program = new_prg; + d3d.must_reload_pipeline = true; +} + +static struct ShaderProgram *gfx_d3d12_create_and_load_new_shader(uint32_t shader_id) { + /*static FILE *fp; + if (!fp) { + fp = fopen("shaders.txt", "w"); + } + fprintf(fp, "0x%08x\n", shader_id); + fflush(fp);*/ + + struct ShaderProgram *prg = &d3d.shader_program_pool[d3d.shader_program_pool_size++]; + + CCFeatures cc_features; + get_cc_features(shader_id, &cc_features); + + char buf[2048]; + size_t len = 0; + size_t num_floats = 4; + + append_str(buf, &len, "#define RS \"RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT | DENY_VERTEX_SHADER_ROOT_ACCESS)"); + if (cc_features.used_textures[0]) { + append_str(buf, &len, ",DescriptorTable(SRV(t0), visibility = SHADER_VISIBILITY_PIXEL)"); + append_str(buf, &len, ",DescriptorTable(Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL)"); + } + if (cc_features.used_textures[1]) { + append_str(buf, &len, ",DescriptorTable(SRV(t1), visibility = SHADER_VISIBILITY_PIXEL)"); + append_str(buf, &len, ",DescriptorTable(Sampler(s1), visibility = SHADER_VISIBILITY_PIXEL)"); + } + append_line(buf, &len, "\""); + + append_line(buf, &len, "struct PSInput {"); + append_line(buf, &len, "float4 position : SV_POSITION;"); + if (cc_features.used_textures[0] || cc_features.used_textures[1]) { + append_line(buf, &len, "float2 uv : TEXCOORD;"); + num_floats += 2; + } + if (cc_features.opt_fog) { + append_line(buf, &len, "float4 fog : FOG;"); + num_floats += 4; + } + for (int i = 0; i < cc_features.num_inputs; i++) { + len += sprintf(buf + len, "float%d input%d : INPUT%d;\r\n", cc_features.opt_alpha ? 4 : 3, i + 1, i); + num_floats += cc_features.opt_alpha ? 4 : 3; + } + append_line(buf, &len, "};"); + + if (cc_features.used_textures[0]) { + append_line(buf, &len, "Texture2D g_texture0 : register(t0);"); + append_line(buf, &len, "SamplerState g_sampler0 : register(s0);"); + } + if (cc_features.used_textures[1]) { + append_line(buf, &len, "Texture2D g_texture1 : register(t1);"); + append_line(buf, &len, "SamplerState g_sampler1 : register(s1);"); + } + + // Vertex shader + append_str(buf, &len, "PSInput VSMain(float4 position : POSITION"); + if (cc_features.used_textures[0] || cc_features.used_textures[1]) { + append_str(buf, &len, ", float2 uv : TEXCOORD"); + } + if (cc_features.opt_fog) { + append_str(buf, &len, ", float4 fog : FOG"); + } + for (int i = 0; i < cc_features.num_inputs; i++) { + len += sprintf(buf + len, ", float%d input%d : INPUT%d", cc_features.opt_alpha ? 4 : 3, i + 1, i); + } + append_line(buf, &len, ") {"); + append_line(buf, &len, "PSInput result;"); + append_line(buf, &len, "result.position = position;"); + if (cc_features.used_textures[0] || cc_features.used_textures[1]) { + append_line(buf, &len, "result.uv = uv;"); + } + if (cc_features.opt_fog) { + append_line(buf, &len, "result.fog = fog;"); + } + for (int i = 0; i < cc_features.num_inputs; i++) { + len += sprintf(buf + len, "result.input%d = input%d;\r\n", i + 1, i + 1); + } + append_line(buf, &len, "return result;"); + append_line(buf, &len, "}"); + + // Pixel shader + append_line(buf, &len, "[RootSignature(RS)]"); + append_line(buf, &len, "float4 PSMain(PSInput input) : SV_TARGET {"); + if (cc_features.used_textures[0]) { + append_line(buf, &len, "float4 texVal0 = g_texture0.Sample(g_sampler0, input.uv);"); + } + if (cc_features.used_textures[1]) { + append_line(buf, &len, "float4 texVal1 = g_texture1.Sample(g_sampler1, input.uv);"); + } + + append_str(buf, &len, cc_features.opt_alpha ? "float4 texel = " : "float3 texel = "); + if (!cc_features.color_alpha_same && cc_features.opt_alpha) { + append_str(buf, &len, "float4("); + append_formula(buf, &len, cc_features.c, cc_features.do_single[0], cc_features.do_multiply[0], cc_features.do_mix[0], false, false, true); + append_str(buf, &len, ", "); + append_formula(buf, &len, cc_features.c, cc_features.do_single[1], cc_features.do_multiply[1], cc_features.do_mix[1], true, true, true); + append_str(buf, &len, ")"); + } else { + append_formula(buf, &len, cc_features.c, cc_features.do_single[0], cc_features.do_multiply[0], cc_features.do_mix[0], cc_features.opt_alpha, false, cc_features.opt_alpha); + } + append_line(buf, &len, ";"); + + if (cc_features.opt_texture_edge && cc_features.opt_alpha) { + append_line(buf, &len, "if (texel.a > 0.3) texel.a = 1.0; else discard;"); + } + // TODO discard if alpha is 0? + if (cc_features.opt_fog) { + if (cc_features.opt_alpha) { + append_line(buf, &len, "texel = float4(lerp(texel.rgb, input.fog.rgb, input.fog.a), texel.a);"); + } else { + append_line(buf, &len, "texel = lerp(texel, input.fog.rgb, input.fog.a);"); + } + } + + if (cc_features.opt_alpha) { + append_line(buf, &len, "return texel;"); + } else { + append_line(buf, &len, "return float4(texel, 1.0);"); + } + append_line(buf, &len, "}"); + + //fwrite(buf, 1, len, stdout); + + ThrowIfFailed(D3DCompile(buf, len, nullptr, nullptr, nullptr, "VSMain", "vs_5_1", /*D3DCOMPILE_OPTIMIZATION_LEVEL3*/0, 0, &prg->vertex_shader, nullptr)); + ThrowIfFailed(D3DCompile(buf, len, nullptr, nullptr, nullptr, "PSMain", "ps_5_1", /*D3DCOMPILE_OPTIMIZATION_LEVEL3*/0, 0, &prg->pixel_shader, nullptr)); + + ThrowIfFailed(d3d.device->CreateRootSignature(0, prg->pixel_shader->GetBufferPointer(), prg->pixel_shader->GetBufferSize(), IID_ID3D12RootSignature, IID_PPV_ARGS_Helper(&prg->root_signature))); + + prg->shader_id = shader_id; + prg->num_inputs = cc_features.num_inputs; + prg->used_textures[0] = cc_features.used_textures[0]; + prg->used_textures[1] = cc_features.used_textures[1]; + prg->num_floats = num_floats; + //prg->num_attribs = cnt; + + d3d.must_reload_pipeline = true; + return d3d.shader_program = prg; +} + +static struct ShaderProgram *gfx_d3d12_lookup_shader(uint32_t shader_id) { + for (size_t i = 0; i < d3d.shader_program_pool_size; i++) { + if (d3d.shader_program_pool[i].shader_id == shader_id) { + return &d3d.shader_program_pool[i]; + } + } + return nullptr; +} + +static void gfx_d3d12_shader_get_info(struct ShaderProgram *prg, uint8_t *num_inputs, bool used_textures[2]) { + *num_inputs = prg->num_inputs; + used_textures[0] = prg->used_textures[0]; + used_textures[1] = prg->used_textures[1]; +} + +static uint32_t gfx_d3d12_new_texture(void) { + d3d.textures.resize(d3d.textures.size() + 1); + return (uint32_t)(d3d.textures.size() - 1); +} + +static void gfx_d3d12_select_texture(int tile, uint32_t texture_id) { + d3d.current_tile = tile; + d3d.current_texture_ids[tile] = texture_id; +} + +static void gfx_d3d12_upload_texture(uint8_t *rgba32_buf, int width, int height) { + texture_uploads++; + + ComPtr texture_resource; + + // Describe and create a Texture2D. + D3D12_RESOURCE_DESC texture_desc = {}; + texture_desc.MipLevels = 1; + texture_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + texture_desc.Width = width; + texture_desc.Height = height; + texture_desc.Flags = D3D12_RESOURCE_FLAG_NONE; + texture_desc.DepthOrArraySize = 1; + texture_desc.SampleDesc.Count = 1; + texture_desc.SampleDesc.Quality = 0; + texture_desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; + texture_desc.Alignment = D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT; + + D3D12_RESOURCE_ALLOCATION_INFO alloc_info = get_resource_allocation_info(&texture_desc); + + std::list& heaps = d3d.texture_heaps[std::pair(alloc_info.SizeInBytes, alloc_info.Alignment)]; + + struct TextureHeap *found_heap = nullptr; + for (struct TextureHeap& heap : heaps) { + if (!heap.free_list.empty()) { + found_heap = &heap; + } + } + if (found_heap == nullptr) { + heaps.resize(heaps.size() + 1); + found_heap = &heaps.back(); + + const int textures_per_heap = 64; + + D3D12_HEAP_DESC heap_desc = {}; + heap_desc.SizeInBytes = alloc_info.SizeInBytes * textures_per_heap; + if (alloc_info.Alignment == D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT) { + heap_desc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT; + } else { + heap_desc.Alignment = alloc_info.Alignment; + } + heap_desc.Properties.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + heap_desc.Properties.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + heap_desc.Properties.Type = D3D12_HEAP_TYPE_DEFAULT; + heap_desc.Flags = D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES; + ThrowIfFailed(d3d.device->CreateHeap(&heap_desc, IID_ID3D12Heap, IID_PPV_ARGS_Helper(&found_heap->heap))); + for (int i = 0; i < textures_per_heap; i++) { + found_heap->free_list.push_back(i); + } + } + + uint8_t heap_offset = found_heap->free_list.back(); + found_heap->free_list.pop_back(); + ThrowIfFailed(d3d.device->CreatePlacedResource(found_heap->heap.Get(), heap_offset * alloc_info.SizeInBytes, &texture_desc, D3D12_RESOURCE_STATE_COPY_DEST, nullptr, IID_ID3D12Resource, IID_PPV_ARGS_Helper(&texture_resource))); + + D3D12_PLACED_SUBRESOURCE_FOOTPRINT layout; + UINT num_rows; + UINT64 row_size_in_bytes; + UINT64 upload_buffer_size; + d3d.device->GetCopyableFootprints(&texture_desc, 0, 1, 0, &layout, &num_rows, &row_size_in_bytes, &upload_buffer_size); + + std::vector>& upload_heaps = d3d.upload_heaps[upload_buffer_size]; + ComPtr upload_heap; + if (upload_heaps.empty()) { + CD3DX12_HEAP_PROPERTIES hp(D3D12_HEAP_TYPE_UPLOAD); + CD3DX12_RESOURCE_DESC rdb = CD3DX12_RESOURCE_DESC::Buffer(upload_buffer_size); + ThrowIfFailed(d3d.device->CreateCommittedResource( + &hp, + D3D12_HEAP_FLAG_NONE, + &rdb, + D3D12_RESOURCE_STATE_GENERIC_READ, + nullptr, + IID_ID3D12Resource, IID_PPV_ARGS_Helper(&upload_heap))); + } else { + upload_heap = upload_heaps.back(); + upload_heaps.pop_back(); + } + + { + D3D12_SUBRESOURCE_DATA texture_data = {}; + texture_data.pData = rgba32_buf; + texture_data.RowPitch = width * 4; // RGBA + texture_data.SlicePitch = texture_data.RowPitch * height; + + void *data; + upload_heap->Map(0, nullptr, &data); + D3D12_MEMCPY_DEST dest_data = { (uint8_t *)data + layout.Offset, layout.Footprint.RowPitch, SIZE_T(layout.Footprint.RowPitch) * SIZE_T(num_rows) }; + MemcpySubresource(&dest_data, &texture_data, static_cast(row_size_in_bytes), num_rows, layout.Footprint.Depth); + upload_heap->Unmap(0, nullptr); + + CD3DX12_TEXTURE_COPY_LOCATION dst(texture_resource.Get(), 0); + CD3DX12_TEXTURE_COPY_LOCATION src(upload_heap.Get(), layout); + d3d.copy_command_list->CopyTextureRegion(&dst, 0, 0, 0, &src, nullptr); + } + + CD3DX12_RESOURCE_BARRIER barrier = CD3DX12_RESOURCE_BARRIER::Transition(texture_resource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE); + d3d.command_list->ResourceBarrier(1, &barrier); + + d3d.upload_heaps_in_flight.push_back(std::make_pair((size_t)upload_buffer_size, std::move(upload_heap))); + + struct TextureData& td = d3d.textures[d3d.current_texture_ids[d3d.current_tile]]; + if (td.resource.Get() != nullptr) { + d3d.resources_to_clean_at_end_of_frame.push_back(std::move(td.resource)); + d3d.texture_heap_allocations_to_reclaim_at_end_of_frame.push_back(std::make_pair(td.heap, td.heap_offset)); + td.last_frame_counter = 0; + } + td.resource = std::move(texture_resource); + td.heap = found_heap; + td.heap_offset = heap_offset; +} + +static int gfx_cm_to_index(uint32_t val) { + if (val & G_TX_CLAMP) { + return 2; + } + return (val & G_TX_MIRROR) ? 1 : 0; +} + +static void gfx_d3d12_set_sampler_parameters(int tile, bool linear_filter, uint32_t cms, uint32_t cmt) { + d3d.textures[d3d.current_texture_ids[tile]].sampler_parameters = linear_filter * 9 + gfx_cm_to_index(cms) * 3 + gfx_cm_to_index(cmt); +} + +static void gfx_d3d12_set_depth_test(bool depth_test) { + d3d.depth_test = depth_test; + d3d.must_reload_pipeline = true; +} + +static void gfx_d3d12_set_depth_mask(bool z_upd) { + d3d.depth_mask = z_upd; + d3d.must_reload_pipeline = true; +} + +static void gfx_d3d12_set_zmode_decal(bool zmode_decal) { + d3d.zmode_decal = zmode_decal; + d3d.must_reload_pipeline = true; +} + +static void gfx_d3d12_set_viewport(int x, int y, int width, int height) { + d3d.viewport = CD3DX12_VIEWPORT(x, d3d.current_height - y - height, width, height); +} + +static void gfx_d3d12_set_scissor(int x, int y, int width, int height) { + d3d.scissor = CD3DX12_RECT(x, d3d.current_height - y - height, x + width, d3d.current_height - y); +} + +static void gfx_d3d12_set_use_alpha(bool use_alpha) { + // Already part of the pipeline state from shader info +} + +static void gfx_d3d12_draw_triangles(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris) { + struct ShaderProgram *prg = d3d.shader_program; + + if (d3d.must_reload_pipeline) { + ComPtr& pipeline_state = d3d.pipeline_states[PipelineDesc{ + prg->shader_id, + d3d.depth_test, + d3d.depth_mask, + d3d.zmode_decal, + 0 + }]; + if (pipeline_state.Get() == nullptr) { + D3D12_INPUT_ELEMENT_DESC ied[7] = { + {"POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 } + }; + uint32_t ied_pos = 1; + if (prg->used_textures[0] || prg->used_textures[1]) { + ied[ied_pos++] = D3D12_INPUT_ELEMENT_DESC{"TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0}; + } + if (prg->shader_id & SHADER_OPT_FOG) { + ied[ied_pos++] = D3D12_INPUT_ELEMENT_DESC{"FOG", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0}; + } + for (int i = 0; i < prg->num_inputs; i++) { + DXGI_FORMAT format = (prg->shader_id & SHADER_OPT_ALPHA) ? DXGI_FORMAT_R32G32B32A32_FLOAT : DXGI_FORMAT_R32G32B32_FLOAT; + ied[ied_pos++] = D3D12_INPUT_ELEMENT_DESC{"INPUT", (UINT)i, format, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0}; + } + + D3D12_GRAPHICS_PIPELINE_STATE_DESC desc = {}; + desc.InputLayout = { ied, ied_pos }; + desc.pRootSignature = prg->root_signature.Get(); + desc.VS = CD3DX12_SHADER_BYTECODE(prg->vertex_shader.Get()); + desc.PS = CD3DX12_SHADER_BYTECODE(prg->pixel_shader.Get()); + desc.RasterizerState = CD3DX12_RASTERIZER_DESC(D3D12_DEFAULT); + if (d3d.zmode_decal) { + desc.RasterizerState.SlopeScaledDepthBias = -2.0f; + } + desc.RasterizerState.CullMode = D3D12_CULL_MODE_NONE; + if (prg->shader_id & SHADER_OPT_ALPHA) { + D3D12_BLEND_DESC bd = {}; + bd.AlphaToCoverageEnable = FALSE; + bd.IndependentBlendEnable = FALSE; + static const D3D12_RENDER_TARGET_BLEND_DESC default_rtbd = { + TRUE, FALSE, + D3D12_BLEND_SRC_ALPHA, D3D12_BLEND_INV_SRC_ALPHA, D3D12_BLEND_OP_ADD, + D3D12_BLEND_ONE, D3D12_BLEND_INV_SRC_ALPHA, D3D12_BLEND_OP_ADD, + D3D12_LOGIC_OP_NOOP, + D3D12_COLOR_WRITE_ENABLE_ALL + }; + for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; i++) { + bd.RenderTarget[i] = default_rtbd; + } + desc.BlendState = bd; + } else { + desc.BlendState = CD3DX12_BLEND_DESC(D3D12_DEFAULT); + } + desc.DepthStencilState.DepthEnable = d3d.depth_test; + desc.DepthStencilState.DepthWriteMask = d3d.depth_mask ? D3D12_DEPTH_WRITE_MASK_ALL : D3D12_DEPTH_WRITE_MASK_ZERO; + desc.DepthStencilState.DepthFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL; + desc.DSVFormat = d3d.depth_test ? DXGI_FORMAT_D32_FLOAT : DXGI_FORMAT_UNKNOWN; + desc.SampleMask = UINT_MAX; + desc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; + desc.NumRenderTargets = 1; + desc.RTVFormats[0] = DXGI_FORMAT_R8G8B8A8_UNORM; + desc.SampleDesc.Count = 1; + ThrowIfFailed(d3d.device->CreateGraphicsPipelineState(&desc, IID_ID3D12PipelineState, IID_PPV_ARGS_Helper(&pipeline_state))); + } + d3d.pipeline_state = pipeline_state.Get(); + d3d.must_reload_pipeline = false; + } + + d3d.command_list->SetGraphicsRootSignature(prg->root_signature.Get()); + d3d.command_list->SetPipelineState(d3d.pipeline_state); + + ID3D12DescriptorHeap *heaps[] = { d3d.srv_heap.Get(), d3d.sampler_heap.Get() }; + d3d.command_list->SetDescriptorHeaps(2, heaps); + + int texture_pos = 0; + for (int i = 0; i < 2; i++) { + if (prg->used_textures[i]) { + struct TextureData& td = d3d.textures[d3d.current_texture_ids[i]]; + if (td.last_frame_counter != d3d.frame_counter) { + td.descriptor_index = d3d.srv_pos; + td.last_frame_counter = d3d.frame_counter; + + D3D12_SHADER_RESOURCE_VIEW_DESC srv_desc = {}; + srv_desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING; + srv_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + srv_desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D; + srv_desc.Texture2D.MipLevels = 1; + + CD3DX12_CPU_DESCRIPTOR_HANDLE srv_handle(get_cpu_descriptor_handle(d3d.srv_heap), d3d.srv_pos++, d3d.srv_descriptor_size); + d3d.device->CreateShaderResourceView(td.resource.Get(), &srv_desc, srv_handle); + } + + CD3DX12_GPU_DESCRIPTOR_HANDLE srv_gpu_handle(get_gpu_descriptor_handle(d3d.srv_heap), td.descriptor_index, d3d.srv_descriptor_size); + d3d.command_list->SetGraphicsRootDescriptorTable(2 * texture_pos, srv_gpu_handle); + + CD3DX12_GPU_DESCRIPTOR_HANDLE sampler_gpu_handle(get_gpu_descriptor_handle(d3d.sampler_heap), td.sampler_parameters, d3d.sampler_descriptor_size); + d3d.command_list->SetGraphicsRootDescriptorTable(2 * texture_pos + 1, sampler_gpu_handle); + + ++texture_pos; + } + } + + CD3DX12_CPU_DESCRIPTOR_HANDLE rtv_handle(get_cpu_descriptor_handle(d3d.rtv_heap), d3d.frame_index, d3d.rtv_descriptor_size); + D3D12_CPU_DESCRIPTOR_HANDLE dsv_handle = get_cpu_descriptor_handle(d3d.dsv_heap); + d3d.command_list->OMSetRenderTargets(1, &rtv_handle, FALSE, &dsv_handle); + + d3d.command_list->RSSetViewports(1, &d3d.viewport); + d3d.command_list->RSSetScissorRects(1, &d3d.scissor); + + int current_pos = d3d.vbuf_pos; + memcpy((uint8_t *)d3d.mapped_vbuf_address + current_pos, buf_vbo, buf_vbo_len * sizeof(float)); + d3d.vbuf_pos += buf_vbo_len * sizeof(float); + static int maxpos; + if (d3d.vbuf_pos > maxpos) { + maxpos = d3d.vbuf_pos; + //printf("NEW MAXPOS: %d\n", maxpos); + } + + D3D12_VERTEX_BUFFER_VIEW vertex_buffer_view; + vertex_buffer_view.BufferLocation = d3d.vertex_buffer->GetGPUVirtualAddress() + current_pos; + vertex_buffer_view.StrideInBytes = buf_vbo_len / (3 * buf_vbo_num_tris) * sizeof(float); + vertex_buffer_view.SizeInBytes = buf_vbo_len * sizeof(float); + + d3d.command_list->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + d3d.command_list->IASetVertexBuffers(0, 1, &vertex_buffer_view); + d3d.command_list->DrawInstanced(3 * buf_vbo_num_tris, 1, 0, 0); +} + +static void gfx_d3d12_init(void) { } + +static void gfx_d3d12_shutdown(void) { } + +static void gfx_d3d12_start_frame(void) { + ++d3d.frame_counter; + d3d.srv_pos = 0; + texture_uploads = 0; + ThrowIfFailed(d3d.command_allocator->Reset()); + ThrowIfFailed(d3d.command_list->Reset(d3d.command_allocator.Get(), nullptr)); + + CD3DX12_RESOURCE_BARRIER barrier = CD3DX12_RESOURCE_BARRIER::Transition( + d3d.render_targets[d3d.frame_index].Get(), + D3D12_RESOURCE_STATE_PRESENT, + D3D12_RESOURCE_STATE_RENDER_TARGET); + d3d.command_list->ResourceBarrier(1, &barrier); + + CD3DX12_CPU_DESCRIPTOR_HANDLE rtv_handle(get_cpu_descriptor_handle(d3d.rtv_heap), d3d.frame_index, d3d.rtv_descriptor_size); + D3D12_CPU_DESCRIPTOR_HANDLE dsv_handle = get_cpu_descriptor_handle(d3d.dsv_heap); + d3d.command_list->OMSetRenderTargets(1, &rtv_handle, FALSE, &dsv_handle); + + static unsigned char c; + const float clear_color[] = { 0.0f, 0.0f, 0.0f, 1.0f }; + d3d.command_list->ClearRenderTargetView(rtv_handle, clear_color, 0, nullptr); + d3d.command_list->ClearDepthStencilView(dsv_handle, D3D12_CLEAR_FLAG_DEPTH, 1.0f, 0, 0, nullptr); + + d3d.vbuf_pos = 0; +} + +static void create_render_target_views(void) { + D3D12_CPU_DESCRIPTOR_HANDLE rtv_handle = get_cpu_descriptor_handle(d3d.rtv_heap); + for (UINT i = 0; i < 2; i++) { + ThrowIfFailed(d3d.swap_chain->GetBuffer(i, IID_ID3D12Resource, (void **)&d3d.render_targets[i])); + d3d.device->CreateRenderTargetView(d3d.render_targets[i].Get(), nullptr, rtv_handle); + rtv_handle.ptr += d3d.rtv_descriptor_size; + } +} + +static void create_depth_buffer(void) { + DXGI_SWAP_CHAIN_DESC1 desc1; + ThrowIfFailed(d3d.swap_chain->GetDesc1(&desc1)); + UINT width = desc1.Width; + UINT height = desc1.Height; + + d3d.current_width = width; + d3d.current_height = height; + + D3D12_DEPTH_STENCIL_VIEW_DESC dsv_desc = {}; + dsv_desc.Format = DXGI_FORMAT_D32_FLOAT; + dsv_desc.ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2D; + dsv_desc.Flags = D3D12_DSV_FLAG_NONE; + + D3D12_CLEAR_VALUE depth_optimized_cv = {}; + depth_optimized_cv.Format = DXGI_FORMAT_D32_FLOAT; + depth_optimized_cv.DepthStencil.Depth = 1.0f; + + D3D12_HEAP_PROPERTIES hp = {}; + hp.Type = D3D12_HEAP_TYPE_DEFAULT; + hp.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + hp.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + hp.CreationNodeMask = 1; + hp.VisibleNodeMask = 1; + + D3D12_RESOURCE_DESC rd = {}; + rd.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; + rd.Alignment = 0; + rd.Width = width; + rd.Height = height; + rd.DepthOrArraySize = 1; + rd.MipLevels = 0; + rd.Format = DXGI_FORMAT_D32_FLOAT; + rd.SampleDesc.Count = 1; + rd.SampleDesc.Quality = 0; + rd.Flags = D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL; + rd.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN; + ThrowIfFailed(d3d.device->CreateCommittedResource(&hp, D3D12_HEAP_FLAG_NONE, &rd, D3D12_RESOURCE_STATE_DEPTH_WRITE, &depth_optimized_cv, IID_ID3D12Resource, IID_PPV_ARGS_Helper(&d3d.depth_stencil_buffer))); + + d3d.device->CreateDepthStencilView(d3d.depth_stencil_buffer.Get(), &dsv_desc, get_cpu_descriptor_handle(d3d.dsv_heap)); +} + +static void gfx_d3d12_dxgi_on_resize(void) { + if (d3d.render_targets[0].Get() != nullptr) { + d3d.render_targets[0].Reset(); + d3d.render_targets[1].Reset(); + ThrowIfFailed(d3d.swap_chain->ResizeBuffers(0, 0, 0, DXGI_FORMAT_UNKNOWN, DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT)); + d3d.frame_index = d3d.swap_chain->GetCurrentBackBufferIndex(); + create_render_target_views(); + create_depth_buffer(); + } +} + +static void onkeydown(WPARAM w_param, LPARAM l_param) { + int key = ((l_param >> 16) & 0x1ff); + if (d3d.on_key_down != nullptr) { + d3d.on_key_down(key); + } +} +static void onkeyup(WPARAM w_param, LPARAM l_param) { + int key = ((l_param >> 16) & 0x1ff); + if (d3d.on_key_up != nullptr) { + d3d.on_key_up(key); + } +} + +LRESULT CALLBACK gfx_d3d12_dxgi_wnd_proc(HWND h_wnd, UINT message, WPARAM w_param, LPARAM l_param) { + switch (message) { + case WM_SIZE: + gfx_d3d12_dxgi_on_resize(); + break; + case WM_DESTROY: + exit(0); + case WM_PAINT: + if (d3d.run_one_game_iter != nullptr) + d3d.run_one_game_iter(); + break; + case WM_ACTIVATEAPP: + if (d3d.on_all_keys_up != nullptr) + d3d.on_all_keys_up(); + break; + case WM_KEYDOWN: + onkeydown(w_param, l_param); + break; + case WM_KEYUP: + onkeyup(w_param, l_param); + break; + default: + return DefWindowProcW(h_wnd, message, w_param, l_param); + } + return 0; +} + +static void gfx_d3d12_dxgi_init(const char *window_title) { + LARGE_INTEGER qpc_init, qpc_freq; + QueryPerformanceCounter(&qpc_init); + QueryPerformanceFrequency(&qpc_freq); + d3d.qpc_init = qpc_init.QuadPart; + d3d.qpc_freq = qpc_freq.QuadPart; + + // Prepare window title + + wchar_t w_title[512]; + mbstowcs(w_title, window_title, strlen(window_title) + 1); + + // Create window + WNDCLASSEXW wcex; + + wcex.cbSize = sizeof(WNDCLASSEX); + + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = gfx_d3d12_dxgi_wnd_proc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = nullptr; + wcex.hIcon = nullptr; + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = nullptr; + wcex.lpszClassName = WINCLASS_NAME; + wcex.hIconSm = nullptr; + + ATOM winclass = RegisterClassExW(&wcex); + + RECT wr = {0, 0, DESIRED_SCREEN_WIDTH, DESIRED_SCREEN_HEIGHT}; + AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE); + + HWND h_wnd = CreateWindowW(WINCLASS_NAME, w_title, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, 0, wr.right - wr.left, wr.bottom - wr.top, nullptr, nullptr, nullptr, nullptr); + + // Create device + { + UINT debug_flags = 0; +#if DEBUG_D3D + ComPtr debug_controller; + if (SUCCEEDED(D3D12GetDebugInterface(IID_ID3D12Debug, IID_PPV_ARGS_Helper(&debug_controller)))) { + debug_controller->EnableDebugLayer(); + debug_flags |= DXGI_CREATE_FACTORY_DEBUG; + } +#endif + + ThrowIfFailed(CreateDXGIFactory2(debug_flags, IID_IDXGIFactory4, &d3d.factory)); + ComPtr hw_adapter; + for (UINT i = 0; d3d.factory->EnumAdapters1(i, &hw_adapter) != DXGI_ERROR_NOT_FOUND; i++) { + DXGI_ADAPTER_DESC1 desc; + hw_adapter->GetDesc1(&desc); + if (desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) { + continue; + } + if (SUCCEEDED(D3D12CreateDevice(hw_adapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_ID3D12Device, nullptr))) { + break; + } + } + ThrowIfFailed(D3D12CreateDevice(hw_adapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_ID3D12Device, IID_PPV_ARGS_Helper(&d3d.device))); + } + + // Create command queues + { + D3D12_COMMAND_QUEUE_DESC queue_desc = {}; + queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE; + queue_desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT; + ThrowIfFailed(d3d.device->CreateCommandQueue(&queue_desc, IID_ID3D12CommandQueue, IID_PPV_ARGS_Helper(&d3d.command_queue))); + } + { + D3D12_COMMAND_QUEUE_DESC queue_desc = {}; + queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE; + queue_desc.Type = D3D12_COMMAND_LIST_TYPE_COPY; + ThrowIfFailed(d3d.device->CreateCommandQueue(&queue_desc, IID_ID3D12CommandQueue, IID_PPV_ARGS_Helper(&d3d.copy_command_queue))); + } + + // Create swap chain + { + DXGI_SWAP_CHAIN_DESC1 swap_chain_desc = {}; + swap_chain_desc.BufferCount = 2; + swap_chain_desc.Width = DESIRED_SCREEN_WIDTH; + swap_chain_desc.Height = DESIRED_SCREEN_HEIGHT; + swap_chain_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + swap_chain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + swap_chain_desc.Scaling = DXGI_SCALING_NONE; + swap_chain_desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; + swap_chain_desc.Flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT; + swap_chain_desc.SampleDesc.Count = 1; + + ComPtr swap_chain1; + ThrowIfFailed(d3d.factory->CreateSwapChainForHwnd(d3d.command_queue.Get(), h_wnd, &swap_chain_desc, nullptr, nullptr, &swap_chain1)); + //ThrowIfFailed(factory->MakeWindowAssociation(h_wnd, DXGI_MWA_NO_ALT_ENTER)); + ThrowIfFailed(swap_chain1->QueryInterface(IID_IDXGISwapChain3, &d3d.swap_chain)); + d3d.frame_index = d3d.swap_chain->GetCurrentBackBufferIndex(); + ThrowIfFailed(d3d.swap_chain->SetMaximumFrameLatency(1)); + d3d.waitable_object = d3d.swap_chain->GetFrameLatencyWaitableObject(); + WaitForSingleObject(d3d.waitable_object, INFINITE); + } + + // Create render target views + { + D3D12_DESCRIPTOR_HEAP_DESC rtv_heap_desc = {}; + rtv_heap_desc.NumDescriptors = 2; + rtv_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV; + rtv_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + ThrowIfFailed(d3d.device->CreateDescriptorHeap(&rtv_heap_desc, IID_ID3D12DescriptorHeap, IID_PPV_ARGS_Helper(&d3d.rtv_heap))); + d3d.rtv_descriptor_size = d3d.device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV); + + create_render_target_views(); + } + + // Create Z-buffer + { + D3D12_DESCRIPTOR_HEAP_DESC dsv_heap_desc = {}; + dsv_heap_desc.NumDescriptors = 1; + dsv_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_DSV; + dsv_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + ThrowIfFailed(d3d.device->CreateDescriptorHeap(&dsv_heap_desc, IID_ID3D12DescriptorHeap, IID_PPV_ARGS_Helper(&d3d.dsv_heap))); + + create_depth_buffer(); + } + + // Create SRV heap for texture descriptors + { + D3D12_DESCRIPTOR_HEAP_DESC srv_heap_desc = {}; + srv_heap_desc.NumDescriptors = 1024; // Max unique textures per frame + srv_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV; + srv_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE; + ThrowIfFailed(d3d.device->CreateDescriptorHeap(&srv_heap_desc, IID_ID3D12DescriptorHeap, IID_PPV_ARGS_Helper(&d3d.srv_heap))); + d3d.srv_descriptor_size = d3d.device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV); + } + + // Create sampler heap and descriptors + { + D3D12_DESCRIPTOR_HEAP_DESC sampler_heap_desc = {}; + sampler_heap_desc.NumDescriptors = 18; + sampler_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER; + sampler_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE; + ThrowIfFailed(d3d.device->CreateDescriptorHeap(&sampler_heap_desc, IID_ID3D12DescriptorHeap, IID_PPV_ARGS_Helper(&d3d.sampler_heap))); + d3d.sampler_descriptor_size = d3d.device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER); + + static const D3D12_TEXTURE_ADDRESS_MODE address_modes[] = { + D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE_MIRROR, + D3D12_TEXTURE_ADDRESS_MODE_CLAMP + }; + + D3D12_CPU_DESCRIPTOR_HANDLE sampler_handle = get_cpu_descriptor_handle(d3d.sampler_heap); + int pos = 0; + for (int linear_filter = 0; linear_filter < 2; linear_filter++) { + for (int cms = 0; cms < 3; cms++) { + for (int cmt = 0; cmt < 3; cmt++) { + D3D12_SAMPLER_DESC sampler_desc = {}; + sampler_desc.Filter = linear_filter ? D3D12_FILTER_MIN_MAG_MIP_LINEAR : D3D12_FILTER_MIN_MAG_MIP_POINT; + sampler_desc.AddressU = address_modes[cms]; + sampler_desc.AddressV = address_modes[cmt]; + sampler_desc.AddressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP; + sampler_desc.MinLOD = 0; + sampler_desc.MaxLOD = D3D12_FLOAT32_MAX; + sampler_desc.MipLODBias = 0.0f; + sampler_desc.MaxAnisotropy = 1; + sampler_desc.ComparisonFunc = D3D12_COMPARISON_FUNC_NEVER; + d3d.device->CreateSampler(&sampler_desc, CD3DX12_CPU_DESCRIPTOR_HANDLE(sampler_handle, pos++, d3d.sampler_descriptor_size)); + } + } + } + } + + ThrowIfFailed(d3d.device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_ID3D12CommandAllocator, IID_PPV_ARGS_Helper(&d3d.command_allocator))); + ThrowIfFailed(d3d.device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_COPY, IID_ID3D12CommandAllocator, IID_PPV_ARGS_Helper(&d3d.copy_command_allocator))); + + ThrowIfFailed(d3d.device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, d3d.command_allocator.Get(), nullptr, IID_ID3D12GraphicsCommandList, IID_PPV_ARGS_Helper(&d3d.command_list))); + ThrowIfFailed(d3d.device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_COPY, d3d.copy_command_allocator.Get(), nullptr, IID_ID3D12GraphicsCommandList, IID_PPV_ARGS_Helper(&d3d.copy_command_list))); + + ThrowIfFailed(d3d.command_list->Close()); + + ThrowIfFailed(d3d.device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_ID3D12Fence, IID_PPV_ARGS_Helper(&d3d.fence))); + d3d.fence_event = CreateEvent(nullptr, FALSE, FALSE, nullptr); + if (d3d.fence_event == nullptr) { + ThrowIfFailed(HRESULT_FROM_WIN32(GetLastError())); + } + + ThrowIfFailed(d3d.device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_ID3D12Fence, IID_PPV_ARGS_Helper(&d3d.copy_fence))); + + { + // Create a buffer of 1 MB in size. With a 120 star speed run 192 kB seems to be max usage. + CD3DX12_HEAP_PROPERTIES hp(D3D12_HEAP_TYPE_UPLOAD); + CD3DX12_RESOURCE_DESC rdb = CD3DX12_RESOURCE_DESC::Buffer(256 * 1024 * sizeof(float)); + ThrowIfFailed(d3d.device->CreateCommittedResource( + &hp, + D3D12_HEAP_FLAG_NONE, + &rdb, + D3D12_RESOURCE_STATE_GENERIC_READ, + nullptr, + IID_ID3D12Resource, + IID_PPV_ARGS_Helper(&d3d.vertex_buffer))); + + CD3DX12_RANGE read_range(0, 0); // Read not possible from CPU + ThrowIfFailed(d3d.vertex_buffer->Map(0, &read_range, &d3d.mapped_vbuf_address)); + } + + ShowWindow(h_wnd, SW_SHOW); + UpdateWindow(h_wnd); +} + +static void gfx_d3d12_dxgi_shutdown(void) { + if (d3d.render_targets[0].Get() != nullptr) { + d3d.render_targets[0].Reset(); + d3d.render_targets[1].Reset(); + } + + // uhh +} + +static void gfx_d3d12_dxgi_set_keyboard_callbacks(bool (*on_key_down)(int scancode), bool (*on_key_up)(int scancode), void (*on_all_keys_up)(void)) { + d3d.on_key_down = on_key_down; + d3d.on_key_up = on_key_up; + d3d.on_all_keys_up = on_all_keys_up; +} + +static void gfx_d3d12_dxgi_main_loop(void (*run_one_game_iter)(void)) { + d3d.run_one_game_iter = run_one_game_iter; + + MSG msg; + while (GetMessage(&msg, nullptr, 0, 0)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } +} + +static void gfx_d3d12_dxgi_get_dimensions(uint32_t *width, uint32_t *height) { + *width = d3d.current_width; + *height = d3d.current_height; +} + +static void gfx_d3d12_dxgi_handle_events(void) { + /*MSG msg; + while (PeekMessageW(&msg, nullptr, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + }*/ +} + +static uint64_t qpc_to_us(uint64_t qpc) { + return qpc / d3d.qpc_freq * 1000000 + qpc % d3d.qpc_freq * 1000000 / d3d.qpc_freq; +} + +static bool gfx_d3d12_dxgi_start_frame(void) { + DXGI_FRAME_STATISTICS stats; + if (d3d.swap_chain->GetFrameStatistics(&stats) == S_OK && (stats.SyncRefreshCount != 0 || stats.SyncQPCTime.QuadPart != 0ULL)) { + { + LARGE_INTEGER t0; + QueryPerformanceCounter(&t0); + //printf("Get frame stats: %llu\n", (unsigned long long)(t0.QuadPart - d3d.qpc_init)); + } + //printf("stats: %u %u %u %u %u %.6f\n", d3d.pending_frame_stats.rbegin()->first, d3d.pending_frame_stats.rbegin()->second, stats.PresentCount, stats.PresentRefreshCount, stats.SyncRefreshCount, (double)(stats.SyncQPCTime.QuadPart - d3d.qpc_init) / d3d.qpc_freq); + if (d3d.frame_stats.empty() || d3d.frame_stats.rbegin()->second.PresentCount != stats.PresentCount) { + d3d.frame_stats.insert(std::make_pair(stats.PresentCount, stats)); + } + if (d3d.frame_stats.size() > 3) { + d3d.frame_stats.erase(d3d.frame_stats.begin()); + } + } + if (!d3d.frame_stats.empty()) { + while (!d3d.pending_frame_stats.empty() && d3d.pending_frame_stats.begin()->first < d3d.frame_stats.rbegin()->first) { + d3d.pending_frame_stats.erase(d3d.pending_frame_stats.begin()); + } + } + while (d3d.pending_frame_stats.size() > 15) { + // Just make sure the list doesn't grow too large if GetFrameStatistics fails. + d3d.pending_frame_stats.erase(d3d.pending_frame_stats.begin()); + } + + d3d.frame_timestamp += FRAME_INTERVAL_US_NUMERATOR; + + if (d3d.frame_stats.size() >= 2) { + DXGI_FRAME_STATISTICS *first = &d3d.frame_stats.begin()->second; + DXGI_FRAME_STATISTICS *last = &d3d.frame_stats.rbegin()->second; + uint64_t sync_qpc_diff = last->SyncQPCTime.QuadPart - first->SyncQPCTime.QuadPart; + UINT sync_vsync_diff = last->SyncRefreshCount - first->SyncRefreshCount; + UINT present_vsync_diff = last->PresentRefreshCount - first->PresentRefreshCount; + UINT present_diff = last->PresentCount - first->PresentCount; + + if (sync_vsync_diff == 0) { + sync_vsync_diff = 1; + } + + double estimated_vsync_interval = (double)sync_qpc_diff / (double)sync_vsync_diff; + //printf("Estimated vsync_interval: %f\n", estimated_vsync_interval); + uint64_t estimated_vsync_interval_us = qpc_to_us(estimated_vsync_interval); + if (estimated_vsync_interval_us < 2 || estimated_vsync_interval_us > 1000000) { + // Unreasonable, maybe a monitor change + estimated_vsync_interval_us = 16666; + estimated_vsync_interval = estimated_vsync_interval_us * d3d.qpc_freq / 1000000; + } + + UINT queued_vsyncs = 0; + bool is_first = true; + for (const std::pair& p : d3d.pending_frame_stats) { + if (is_first && d3d.sync_interval_means_frames_to_wait) { + is_first = false; + continue; + } + queued_vsyncs += p.second; + } + + uint64_t last_frame_present_end_qpc = (last->SyncQPCTime.QuadPart - d3d.qpc_init) + estimated_vsync_interval * queued_vsyncs; + uint64_t last_end_us = qpc_to_us(last_frame_present_end_qpc); + + double vsyncs_to_wait = (double)(int64_t)(d3d.frame_timestamp / FRAME_INTERVAL_US_DENOMINATOR - last_end_us) / estimated_vsync_interval_us; + //printf("ts: %llu, last_end_us: %llu, Init v: %f\n", d3d.frame_timestamp / 3, last_end_us, vsyncs_to_wait); + + if (vsyncs_to_wait <= 0) { + // Too late + + if ((int64_t)(d3d.frame_timestamp / FRAME_INTERVAL_US_DENOMINATOR - last_end_us) < -66666) { + // The application must have been paused or similar + vsyncs_to_wait = round(((double)FRAME_INTERVAL_US_NUMERATOR / FRAME_INTERVAL_US_DENOMINATOR) / estimated_vsync_interval_us); + if (vsyncs_to_wait < 1) { + vsyncs_to_wait = 1; + } + d3d.frame_timestamp = FRAME_INTERVAL_US_DENOMINATOR * (last_end_us + vsyncs_to_wait * estimated_vsync_interval_us); + } else { + // Drop frame + //printf("Dropping frame\n"); + d3d.dropped_frame = true; + return false; + } + } + if (floor(vsyncs_to_wait) != vsyncs_to_wait) { + uint64_t left = last_end_us + floor(vsyncs_to_wait) * estimated_vsync_interval_us; + uint64_t right = last_end_us + ceil(vsyncs_to_wait) * estimated_vsync_interval_us; + uint64_t adjusted_desired_time = d3d.frame_timestamp / FRAME_INTERVAL_US_DENOMINATOR + (last_end_us + (FRAME_INTERVAL_US_NUMERATOR / FRAME_INTERVAL_US_DENOMINATOR) > d3d.frame_timestamp / FRAME_INTERVAL_US_DENOMINATOR ? 2000 : -2000); + int64_t diff_left = adjusted_desired_time - left; + int64_t diff_right = right - adjusted_desired_time; + if (diff_left < 0) { + diff_left = -diff_left; + } + if (diff_right < 0) { + diff_right = -diff_right; + } + if (diff_left < diff_right) { + vsyncs_to_wait = floor(vsyncs_to_wait); + } else { + vsyncs_to_wait = ceil(vsyncs_to_wait); + } + if (vsyncs_to_wait == 0) { + //printf("vsyncs_to_wait became 0 so dropping frame\n"); + d3d.dropped_frame = true; + return false; + } + } + //printf("v: %d\n", (int)vsyncs_to_wait); + if (vsyncs_to_wait > 4) { + // Invalid, so change to 4 + vsyncs_to_wait = 4; + } + d3d.length_in_vsync_frames = vsyncs_to_wait; + } else { + d3d.length_in_vsync_frames = 2; + } + + return true; +} + +static void gfx_d3d12_dxgi_swap_buffers_begin(void) { + if (max_texture_uploads < texture_uploads && texture_uploads != 38 && texture_uploads != 34 && texture_uploads != 29) { + max_texture_uploads = texture_uploads; + } + //printf("Texture uploads: %d %d\n", max_texture_uploads, texture_uploads); + texture_uploads = 0; + + ThrowIfFailed(d3d.copy_command_list->Close()); + { + ID3D12CommandList *lists[] = { d3d.copy_command_list.Get() }; + d3d.copy_command_queue->ExecuteCommandLists(1, lists); + d3d.copy_command_queue->Signal(d3d.copy_fence.Get(), ++d3d.copy_fence_value); + } + + CD3DX12_RESOURCE_BARRIER barrier = CD3DX12_RESOURCE_BARRIER::Transition( + d3d.render_targets[d3d.frame_index].Get(), + D3D12_RESOURCE_STATE_RENDER_TARGET, + D3D12_RESOURCE_STATE_PRESENT); + d3d.command_list->ResourceBarrier(1, &barrier); + + d3d.command_queue->Wait(d3d.copy_fence.Get(), d3d.copy_fence_value); + + ThrowIfFailed(d3d.command_list->Close()); + + { + ID3D12CommandList *lists[] = { d3d.command_list.Get() }; + d3d.command_queue->ExecuteCommandLists(1, lists); + } + + { + LARGE_INTEGER t0; + QueryPerformanceCounter(&t0); + //printf("Present: %llu %u\n", (unsigned long long)(t0.QuadPart - d3d.qpc_init), d3d.length_in_vsync_frames); + } + + //d3d.length_in_vsync_frames = 1; + ThrowIfFailed(d3d.swap_chain->Present(d3d.length_in_vsync_frames, 0)); + UINT this_present_id; + if (d3d.swap_chain->GetLastPresentCount(&this_present_id) == S_OK) { + d3d.pending_frame_stats.insert(std::make_pair(this_present_id, d3d.length_in_vsync_frames)); + } + d3d.dropped_frame = false; +} + +static void gfx_d3d12_dxgi_swap_buffers_end(void) { + LARGE_INTEGER t0, t1, t2; + QueryPerformanceCounter(&t0); + + static UINT64 fence_value; + ThrowIfFailed(d3d.command_queue->Signal(d3d.fence.Get(), ++fence_value)); + if (d3d.fence->GetCompletedValue() < fence_value) { + ThrowIfFailed(d3d.fence->SetEventOnCompletion(fence_value, d3d.fence_event)); + WaitForSingleObject(d3d.fence_event, INFINITE); + } + QueryPerformanceCounter(&t1); + + d3d.resources_to_clean_at_end_of_frame.clear(); + for (std::pair>& heap : d3d.upload_heaps_in_flight) { + d3d.upload_heaps[heap.first].push_back(std::move(heap.second)); + } + d3d.upload_heaps_in_flight.clear(); + for (std::pair& item : d3d.texture_heap_allocations_to_reclaim_at_end_of_frame) { + item.first->free_list.push_back(item.second); + } + d3d.texture_heap_allocations_to_reclaim_at_end_of_frame.clear(); + + if (!d3d.dropped_frame) { + WaitForSingleObject(d3d.waitable_object, INFINITE); + } + + DXGI_FRAME_STATISTICS stats; + d3d.swap_chain->GetFrameStatistics(&stats); + + QueryPerformanceCounter(&t2); + + d3d.frame_index = d3d.swap_chain->GetCurrentBackBufferIndex(); + + ThrowIfFailed(d3d.copy_command_allocator->Reset()); + ThrowIfFailed(d3d.copy_command_list->Reset(d3d.copy_command_allocator.Get(), nullptr)); + + d3d.sync_interval_means_frames_to_wait = d3d.pending_frame_stats.rbegin()->first == stats.PresentCount; + + //printf("done %llu gpu:%d wait:%d freed:%llu frame:%u %u monitor:%u t:%llu\n", (unsigned long long)(t0.QuadPart - d3d.qpc_init), (int)(t1.QuadPart - t0.QuadPart), (int)(t2.QuadPart - t0.QuadPart), (unsigned long long)(t2.QuadPart - d3d.qpc_init), d3d.pending_frame_stats.rbegin()->first, stats.PresentCount, stats.SyncRefreshCount, (unsigned long long)(stats.SyncQPCTime.QuadPart - d3d.qpc_init)); +} + +double gfx_d3d12_dxgi_get_time(void) { + LARGE_INTEGER t; + QueryPerformanceCounter(&t); + return (double)(t.QuadPart - d3d.qpc_init) / d3d.qpc_freq; +} + +struct GfxRenderingAPI gfx_d3d12_api = { + gfx_d3d12_z_is_from_0_to_1, + gfx_d3d12_unload_shader, + gfx_d3d12_load_shader, + gfx_d3d12_create_and_load_new_shader, + gfx_d3d12_lookup_shader, + gfx_d3d12_shader_get_info, + gfx_d3d12_new_texture, + gfx_d3d12_select_texture, + gfx_d3d12_upload_texture, + gfx_d3d12_set_sampler_parameters, + gfx_d3d12_set_depth_test, + gfx_d3d12_set_depth_mask, + gfx_d3d12_set_zmode_decal, + gfx_d3d12_set_viewport, + gfx_d3d12_set_scissor, + gfx_d3d12_set_use_alpha, + gfx_d3d12_draw_triangles, + gfx_d3d12_init, + gfx_d3d12_start_frame, + gfx_d3d12_shutdown, +}; + +struct GfxWindowManagerAPI gfx_dxgi = { + gfx_d3d12_dxgi_init, + gfx_d3d12_dxgi_set_keyboard_callbacks, + gfx_d3d12_dxgi_main_loop, + gfx_d3d12_dxgi_get_dimensions, + gfx_d3d12_dxgi_handle_events, + gfx_d3d12_dxgi_start_frame, + gfx_d3d12_dxgi_swap_buffers_begin, + gfx_d3d12_dxgi_swap_buffers_end, + gfx_d3d12_dxgi_get_time, + gfx_d3d12_dxgi_shutdown, +}; + +#else + +#error "D3D12 is only supported on Windows" + +#endif // _WIN32 + +#endif // RAPI_D3D12 diff --git a/src/pc/gfx/gfx_direct3d12.h b/src/pc/gfx/gfx_direct3d12.h new file mode 100644 index 00000000..7b8f5a66 --- /dev/null +++ b/src/pc/gfx/gfx_direct3d12.h @@ -0,0 +1,10 @@ +#ifndef GFX_DIRECT3D12_H +#define GFX_DIRECT3D12_H + +#include "gfx_window_manager_api.h" +#include "gfx_rendering_api.h" + +extern struct GfxWindowManagerAPI gfx_dxgi; +extern struct GfxRenderingAPI gfx_d3d12_api; + +#endif diff --git a/src/pc/gfx/gfx_direct3d_common.cpp b/src/pc/gfx/gfx_direct3d_common.cpp new file mode 100644 index 00000000..334814bd --- /dev/null +++ b/src/pc/gfx/gfx_direct3d_common.cpp @@ -0,0 +1,143 @@ +#if (defined(RAPI_D3D11) || defined(RAPI_D3D12)) && (defined(_WIN32) || defined(_WIN64)) + +#include + +extern "C" { +#include "../platform.h" +} + +#include "gfx_direct3d_common.h" +#include "gfx_cc.h" + +void ThrowIfFailed(HRESULT res) { + if (FAILED(res)) + sys_fatal("error while initializing D3D:\nerror code 0x%08X", res); +} + +void ThrowIfFailed(HRESULT res, HWND h_wnd, const char *message) { + if (FAILED(res)) + sys_fatal("%s\nerror code 0x%08X", message, res); +} + +void get_cc_features(uint32_t shader_id, CCFeatures *cc_features) { + for (int i = 0; i < 4; i++) { + cc_features->c[0][i] = (shader_id >> (i * 3)) & 7; + cc_features->c[1][i] = (shader_id >> (12 + i * 3)) & 7; + } + + cc_features->opt_alpha = (shader_id & SHADER_OPT_ALPHA) != 0; + cc_features->opt_fog = (shader_id & SHADER_OPT_FOG) != 0; + cc_features->opt_texture_edge = (shader_id & SHADER_OPT_TEXTURE_EDGE) != 0; + cc_features->opt_noise = (shader_id & SHADER_OPT_NOISE) != 0; + + cc_features->used_textures[0] = false; + cc_features->used_textures[1] = false; + cc_features->num_inputs = 0; + + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 4; j++) { + if (cc_features->c[i][j] >= SHADER_INPUT_1 && cc_features->c[i][j] <= SHADER_INPUT_4) { + if (cc_features->c[i][j] > cc_features->num_inputs) { + cc_features->num_inputs = cc_features->c[i][j]; + } + } + if (cc_features->c[i][j] == SHADER_TEXEL0 || cc_features->c[i][j] == SHADER_TEXEL0A) { + cc_features->used_textures[0] = true; + } + if (cc_features->c[i][j] == SHADER_TEXEL1) { + cc_features->used_textures[1] = true; + } + } + } + + cc_features->do_single[0] = cc_features->c[0][2] == 0; + cc_features->do_single[1] = cc_features->c[1][2] == 0; + cc_features->do_multiply[0] = cc_features->c[0][1] == 0 && cc_features->c[0][3] == 0; + cc_features->do_multiply[1] = cc_features->c[1][1] == 0 && cc_features->c[1][3] == 0; + cc_features->do_mix[0] = cc_features->c[0][1] == cc_features->c[0][3]; + cc_features->do_mix[1] = cc_features->c[1][1] == cc_features->c[1][3]; + cc_features->color_alpha_same = (shader_id & 0xfff) == ((shader_id >> 12) & 0xfff); +} + +void append_str(char *buf, size_t *len, const char *str) { + while (*str != '\0') buf[(*len)++] = *str++; +} + +void append_line(char *buf, size_t *len, const char *str) { + while (*str != '\0') buf[(*len)++] = *str++; + buf[(*len)++] = '\r'; + buf[(*len)++] = '\n'; +} + +const char *shader_item_to_str(uint32_t item, bool with_alpha, bool only_alpha, bool inputs_have_alpha, bool hint_single_element) { + if (!only_alpha) { + switch (item) { + default: + case SHADER_0: + return with_alpha ? "float4(0.0, 0.0, 0.0, 0.0)" : "float3(0.0, 0.0, 0.0)"; + case SHADER_INPUT_1: + return with_alpha || !inputs_have_alpha ? "input.input1" : "input.input1.rgb"; + case SHADER_INPUT_2: + return with_alpha || !inputs_have_alpha ? "input.input2" : "input.input2.rgb"; + case SHADER_INPUT_3: + return with_alpha || !inputs_have_alpha ? "input.input3" : "input.input3.rgb"; + case SHADER_INPUT_4: + return with_alpha || !inputs_have_alpha ? "input.input4" : "input.input4.rgb"; + case SHADER_TEXEL0: + return with_alpha ? "texVal0" : "texVal0.rgb"; + case SHADER_TEXEL0A: + return hint_single_element ? "texVal0.a" : (with_alpha ? "float4(texVal0.a, texVal0.a, texVal0.a, texVal0.a)" : "float3(texVal0.a, texVal0.a, texVal0.a)"); + case SHADER_TEXEL1: + return with_alpha ? "texVal1" : "texVal1.rgb"; + } + } else { + switch (item) { + default: + case SHADER_0: + return "0.0"; + case SHADER_INPUT_1: + return "input.input1.a"; + case SHADER_INPUT_2: + return "input.input2.a"; + case SHADER_INPUT_3: + return "input.input3.a"; + case SHADER_INPUT_4: + return "input.input4.a"; + case SHADER_TEXEL0: + return "texVal0.a"; + case SHADER_TEXEL0A: + return "texVal0.a"; + case SHADER_TEXEL1: + return "texVal1.a"; + } + } +} + +void append_formula(char *buf, size_t *len, uint8_t c[2][4], bool do_single, bool do_multiply, bool do_mix, bool with_alpha, bool only_alpha, bool opt_alpha) { + if (do_single) { + append_str(buf, len, shader_item_to_str(c[only_alpha][3], with_alpha, only_alpha, opt_alpha, false)); + } else if (do_multiply) { + append_str(buf, len, shader_item_to_str(c[only_alpha][0], with_alpha, only_alpha, opt_alpha, false)); + append_str(buf, len, " * "); + append_str(buf, len, shader_item_to_str(c[only_alpha][2], with_alpha, only_alpha, opt_alpha, true)); + } else if (do_mix) { + append_str(buf, len, "lerp("); + append_str(buf, len, shader_item_to_str(c[only_alpha][1], with_alpha, only_alpha, opt_alpha, false)); + append_str(buf, len, ", "); + append_str(buf, len, shader_item_to_str(c[only_alpha][0], with_alpha, only_alpha, opt_alpha, false)); + append_str(buf, len, ", "); + append_str(buf, len, shader_item_to_str(c[only_alpha][2], with_alpha, only_alpha, opt_alpha, true)); + append_str(buf, len, ")"); + } else { + append_str(buf, len, "("); + append_str(buf, len, shader_item_to_str(c[only_alpha][0], with_alpha, only_alpha, opt_alpha, false)); + append_str(buf, len, " - "); + append_str(buf, len, shader_item_to_str(c[only_alpha][1], with_alpha, only_alpha, opt_alpha, false)); + append_str(buf, len, ") * "); + append_str(buf, len, shader_item_to_str(c[only_alpha][2], with_alpha, only_alpha, opt_alpha, true)); + append_str(buf, len, " + "); + append_str(buf, len, shader_item_to_str(c[only_alpha][3], with_alpha, only_alpha, opt_alpha, false)); + } +} + +#endif diff --git a/src/pc/gfx/gfx_direct3d_common.h b/src/pc/gfx/gfx_direct3d_common.h new file mode 100644 index 00000000..09769a7c --- /dev/null +++ b/src/pc/gfx/gfx_direct3d_common.h @@ -0,0 +1,33 @@ +#if defined(RAPI_D3D11) || defined(RAPI_D3D12) + +#ifndef GFX_DIRECT3D_COMMON_H +#define GFX_DIRECT3D_COMMON_H + +#include +#include + +struct CCFeatures { + uint8_t c[2][4]; + bool opt_alpha; + bool opt_fog; + bool opt_texture_edge; + bool opt_noise; + bool used_textures[2]; + uint32_t num_inputs; + bool do_single[2]; + bool do_multiply[2]; + bool do_mix[2]; + bool color_alpha_same; +}; + +void ThrowIfFailed(HRESULT res); +void ThrowIfFailed(HRESULT res, HWND h_wnd, const char *message); +void get_cc_features(uint32_t shader_id, CCFeatures *shader_features); +void append_str(char *buf, size_t *len, const char *str); +void append_line(char *buf, size_t *len, const char *str); +const char *shader_item_to_str(uint32_t item, bool with_alpha, bool only_alpha, bool inputs_have_alpha, bool hint_single_element); +void append_formula(char *buf, size_t *len, uint8_t c[2][4], bool do_single, bool do_multiply, bool do_mix, bool with_alpha, bool only_alpha, bool opt_alpha); + +#endif + +#endif diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 5977e13b..9c0a0525 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -1,4 +1,4 @@ -#ifndef LEGACY_GL +#ifdef RAPI_GL #include #include @@ -29,9 +29,12 @@ #endif #include "../platform.h" +#include "../configfile.h" #include "gfx_cc.h" #include "gfx_rendering_api.h" +#define TEX_CACHE_STEP 512 + struct ShaderProgram { uint32_t shader_id; GLuint opengl_program_id; @@ -39,17 +42,30 @@ struct ShaderProgram { bool used_textures[2]; uint8_t num_floats; GLint attrib_locations[7]; + GLint uniform_locations[6]; uint8_t attrib_sizes[7]; uint8_t num_attribs; bool used_noise; - GLint frame_count_location; - GLint window_height_location; +}; + +struct GLTexture { + GLuint gltex; + GLfloat size[2]; + bool filter; }; static struct ShaderProgram shader_program_pool[64]; static uint8_t shader_program_pool_size; static GLuint opengl_vbo; +static int tex_cache_size = 0; +static int num_textures = 0; +static struct GLTexture *tex_cache = NULL; + +static struct ShaderProgram *opengl_prg = NULL; +static struct GLTexture *opengl_tex[2]; +static int opengl_curtex = 0; + static uint32_t frame_count; static uint32_t current_height; @@ -68,25 +84,38 @@ static void gfx_opengl_vertex_array_set_attribs(struct ShaderProgram *prg) { } } -static void gfx_opengl_set_uniforms(struct ShaderProgram *prg) { +static inline void gfx_opengl_set_shader_uniforms(struct ShaderProgram *prg) { if (prg->used_noise) { - glUniform1i(prg->frame_count_location, frame_count); - glUniform1i(prg->window_height_location, current_height); + glUniform1i(prg->uniform_locations[4], frame_count); + glUniform1i(prg->uniform_locations[5], current_height); + } +} + +static inline void gfx_opengl_set_texture_uniforms(struct ShaderProgram *prg, const int tile) { + if (prg->used_textures[tile] && opengl_tex[tile]) { + glUniform2f(prg->uniform_locations[tile*2 + 0], opengl_tex[tile]->size[0], opengl_tex[tile]->size[1]); + glUniform1i(prg->uniform_locations[tile*2 + 1], opengl_tex[tile]->filter); } } static void gfx_opengl_unload_shader(struct ShaderProgram *old_prg) { if (old_prg != NULL) { - for (int i = 0; i < old_prg->num_attribs; i++) { + for (int i = 0; i < old_prg->num_attribs; i++) glDisableVertexAttribArray(old_prg->attrib_locations[i]); - } + if (old_prg == opengl_prg) + opengl_prg = NULL; + } else { + opengl_prg = NULL; } } static void gfx_opengl_load_shader(struct ShaderProgram *new_prg) { + opengl_prg = new_prg; glUseProgram(new_prg->opengl_program_id); gfx_opengl_vertex_array_set_attribs(new_prg); - gfx_opengl_set_uniforms(new_prg); + gfx_opengl_set_shader_uniforms(new_prg); + gfx_opengl_set_texture_uniforms(new_prg, 0); + gfx_opengl_set_texture_uniforms(new_prg, 1); } static void append_str(char *buf, size_t *len, const char *str) { @@ -206,7 +235,7 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad bool color_alpha_same = (shader_id & 0xfff) == ((shader_id >> 12) & 0xfff); char vs_buf[1024]; - char fs_buf[1024]; + char fs_buf[2048]; size_t vs_len = 0; size_t fs_len = 0; size_t num_floats = 4; @@ -265,9 +294,41 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad } if (used_textures[0]) { append_line(fs_buf, &fs_len, "uniform sampler2D uTex0;"); + append_line(fs_buf, &fs_len, "uniform vec2 uTex0Size;"); + append_line(fs_buf, &fs_len, "uniform bool uTex0Filter;"); } if (used_textures[1]) { append_line(fs_buf, &fs_len, "uniform sampler2D uTex1;"); + append_line(fs_buf, &fs_len, "uniform vec2 uTex1Size;"); + append_line(fs_buf, &fs_len, "uniform bool uTex1Filter;"); + } + + // 3 point texture filtering + // Original author: ArthurCarvalho + // Slightly modified GLSL implementation by twinaphex, mupen64plus-libretro project. + + if (used_textures[0] || used_textures[1]) { + if (configFiltering == 2) { + append_line(fs_buf, &fs_len, "#define TEX_OFFSET(off) texture2D(tex, texCoord - (off)/texSize)"); + append_line(fs_buf, &fs_len, "lowp vec4 filter3point(in sampler2D tex, in mediump vec2 texCoord, in mediump vec2 texSize) {"); + append_line(fs_buf, &fs_len, " mediump vec2 offset = fract(texCoord*texSize - vec2(0.5));"); + append_line(fs_buf, &fs_len, " offset -= step(1.0, offset.x + offset.y);"); + append_line(fs_buf, &fs_len, " lowp vec4 c0 = TEX_OFFSET(offset);"); + append_line(fs_buf, &fs_len, " lowp vec4 c1 = TEX_OFFSET(vec2(offset.x - sign(offset.x), offset.y));"); + append_line(fs_buf, &fs_len, " lowp vec4 c2 = TEX_OFFSET(vec2(offset.x, offset.y - sign(offset.y)));"); + append_line(fs_buf, &fs_len, " return c0 + abs(offset.x)*(c1-c0) + abs(offset.y)*(c2-c0);"); + append_line(fs_buf, &fs_len, "}"); + append_line(fs_buf, &fs_len, "lowp vec4 sampleTex(in sampler2D tex, in mediump vec2 uv, in mediump vec2 texSize, in bool filter) {"); + append_line(fs_buf, &fs_len, "if (filter)"); + append_line(fs_buf, &fs_len, "return filter3point(tex, uv, texSize);"); + append_line(fs_buf, &fs_len, "else"); + append_line(fs_buf, &fs_len, "return texture2D(tex, uv);"); + append_line(fs_buf, &fs_len, "}"); + } else { + append_line(fs_buf, &fs_len, "lowp vec4 sampleTex(in sampler2D tex, in mediump vec2 uv, in mediump vec2 texSize, in bool filter) {"); + append_line(fs_buf, &fs_len, "return texture2D(tex, uv);"); + append_line(fs_buf, &fs_len, "}"); + } } if (opt_alpha && opt_noise) { @@ -283,10 +344,10 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad append_line(fs_buf, &fs_len, "void main() {"); if (used_textures[0]) { - append_line(fs_buf, &fs_len, "vec4 texVal0 = texture2D(uTex0, vTexCoord);"); + append_line(fs_buf, &fs_len, "vec4 texVal0 = sampleTex(uTex0, vTexCoord, uTex0Size, uTex0Filter);"); } if (used_textures[1]) { - append_line(fs_buf, &fs_len, "vec4 texVal1 = texture2D(uTex1, vTexCoord);"); + append_line(fs_buf, &fs_len, "vec4 texVal1 = sampleTex(uTex1, vTexCoord, uTex1Size, uTex1Filter);"); } append_str(fs_buf, &fs_len, opt_alpha ? "vec4 texel = " : "vec3 texel = "); @@ -409,16 +470,20 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad if (used_textures[0]) { GLint sampler_location = glGetUniformLocation(shader_program, "uTex0"); + prg->uniform_locations[0] = glGetUniformLocation(shader_program, "uTex0Size"); + prg->uniform_locations[1] = glGetUniformLocation(shader_program, "uTex0Filter"); glUniform1i(sampler_location, 0); } if (used_textures[1]) { GLint sampler_location = glGetUniformLocation(shader_program, "uTex1"); + prg->uniform_locations[2] = glGetUniformLocation(shader_program, "uTex1Size"); + prg->uniform_locations[3] = glGetUniformLocation(shader_program, "uTex1Filter"); glUniform1i(sampler_location, 1); } if (opt_alpha && opt_noise) { - prg->frame_count_location = glGetUniformLocation(shader_program, "frame_count"); - prg->window_height_location = glGetUniformLocation(shader_program, "window_height"); + prg->uniform_locations[4] = glGetUniformLocation(shader_program, "frame_count"); + prg->uniform_locations[5] = glGetUniformLocation(shader_program, "window_height"); prg->used_noise = true; } else { prg->used_noise = false; @@ -443,18 +508,30 @@ static void gfx_opengl_shader_get_info(struct ShaderProgram *prg, uint8_t *num_i } static GLuint gfx_opengl_new_texture(void) { - GLuint ret; - glGenTextures(1, &ret); - return ret; + if (num_textures >= tex_cache_size) { + tex_cache_size += TEX_CACHE_STEP; + tex_cache = realloc(tex_cache, sizeof(struct GLTexture) * tex_cache_size); + if (!tex_cache) sys_fatal("out of memory allocating texture cache"); + // invalidate these because they might be pointing to garbage now + opengl_tex[0] = NULL; + opengl_tex[1] = NULL; + } + glGenTextures(1, &tex_cache[num_textures].gltex); + return num_textures++; } static void gfx_opengl_select_texture(int tile, GLuint texture_id) { - glActiveTexture(GL_TEXTURE0 + tile); - glBindTexture(GL_TEXTURE_2D, texture_id); + opengl_tex[tile] = tex_cache + texture_id; + opengl_curtex = tile; + glActiveTexture(GL_TEXTURE0 + tile); + glBindTexture(GL_TEXTURE_2D, opengl_tex[tile]->gltex); + gfx_opengl_set_texture_uniforms(opengl_prg, tile); } static void gfx_opengl_upload_texture(uint8_t *rgba32_buf, int width, int height) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, rgba32_buf); + opengl_tex[opengl_curtex]->size[0] = width; + opengl_tex[opengl_curtex]->size[1] = height; } static uint32_t gfx_cm_to_opengl(uint32_t val) { @@ -471,6 +548,11 @@ static void gfx_opengl_set_sampler_parameters(int tile, bool linear_filter, uint glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gfx_cm_to_opengl(cms)); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gfx_cm_to_opengl(cmt)); + opengl_curtex = tile; + if (opengl_tex[tile]) { + opengl_tex[tile]->filter = linear_filter; + gfx_opengl_set_texture_uniforms(opengl_prg, tile); + } } static void gfx_opengl_set_depth_test(bool depth_test) { @@ -540,6 +622,10 @@ static void gfx_opengl_init(void) { sys_fatal("could not init GLEW:\n%s", glewGetErrorString(err)); #endif + tex_cache_size = TEX_CACHE_STEP; + tex_cache = calloc(tex_cache_size, sizeof(struct GLTexture)); + if (!tex_cache) sys_fatal("out of memory allocating texture cache"); + // check GL version int vmajor, vminor; bool is_es = false; @@ -591,4 +677,4 @@ struct GfxRenderingAPI gfx_opengl_api = { gfx_opengl_shutdown }; -#endif // !LEGACY_GL +#endif // RAPI_GL diff --git a/src/pc/gfx/gfx_opengl_legacy.c b/src/pc/gfx/gfx_opengl_legacy.c index d64674aa..4ab19c87 100644 --- a/src/pc/gfx/gfx_opengl_legacy.c +++ b/src/pc/gfx/gfx_opengl_legacy.c @@ -1,4 +1,4 @@ -#ifdef LEGACY_GL +#ifdef RAPI_GL_LEGACY #include #include @@ -603,4 +603,4 @@ struct GfxRenderingAPI gfx_opengl_api = { gfx_opengl_shutdown }; -#endif // LEGACY_GL +#endif // RAPI_GL_LEGACY diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index aec9df32..20430019 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -1719,9 +1719,20 @@ void gfx_get_dimensions(uint32_t *width, uint32_t *height) { } void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi) { + char window_title[96] = + #ifndef USE_GLES + "Super Mario 64 PC port (OpenGL)" + #else + "Super Mario 64 PC port (OpenGL_ES2)" + #endif + #ifdef NIGHTLY + " nightly " GIT_HASH + #endif + ; + gfx_wapi = wapi; gfx_rapi = rapi; - gfx_wapi->init(); + gfx_wapi->init(window_title); gfx_rapi->init(); // Used in the 120 star TAS diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index 78833092..94020e62 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -1,3 +1,5 @@ +#ifdef WAPI_SDL2 + #ifdef __MINGW32__ #define FOR_WINDOWS 1 #else @@ -50,33 +52,36 @@ static SDL_GLContext ctx = NULL; static int inverted_scancode_table[512]; static Uint32 frame_start = 0; -const SDL_Scancode windows_scancode_table[] = -{ - /* 0 1 2 3 4 5 6 7 */ - /* 8 9 A B C D E F */ - SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_ESCAPE, SDL_SCANCODE_1, SDL_SCANCODE_2, SDL_SCANCODE_3, SDL_SCANCODE_4, SDL_SCANCODE_5, SDL_SCANCODE_6, /* 0 */ - SDL_SCANCODE_7, SDL_SCANCODE_8, SDL_SCANCODE_9, SDL_SCANCODE_0, SDL_SCANCODE_MINUS, SDL_SCANCODE_EQUALS, SDL_SCANCODE_BACKSPACE, SDL_SCANCODE_TAB, /* 0 */ +static kb_callback_t kb_key_down = NULL; +static kb_callback_t kb_key_up = NULL; +static void (*kb_all_keys_up)(void) = NULL; - SDL_SCANCODE_Q, SDL_SCANCODE_W, SDL_SCANCODE_E, SDL_SCANCODE_R, SDL_SCANCODE_T, SDL_SCANCODE_Y, SDL_SCANCODE_U, SDL_SCANCODE_I, /* 1 */ - SDL_SCANCODE_O, SDL_SCANCODE_P, SDL_SCANCODE_LEFTBRACKET, SDL_SCANCODE_RIGHTBRACKET, SDL_SCANCODE_RETURN, SDL_SCANCODE_LCTRL, SDL_SCANCODE_A, SDL_SCANCODE_S, /* 1 */ +const SDL_Scancode windows_scancode_table[] = { + /* 0 1 2 3 4 5 6 7 */ + /* 8 9 A B C D E F */ + SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_ESCAPE, SDL_SCANCODE_1, SDL_SCANCODE_2, SDL_SCANCODE_3, SDL_SCANCODE_4, SDL_SCANCODE_5, SDL_SCANCODE_6, /* 0 */ + SDL_SCANCODE_7, SDL_SCANCODE_8, SDL_SCANCODE_9, SDL_SCANCODE_0, SDL_SCANCODE_MINUS, SDL_SCANCODE_EQUALS, SDL_SCANCODE_BACKSPACE, SDL_SCANCODE_TAB, /* 0 */ - SDL_SCANCODE_D, SDL_SCANCODE_F, SDL_SCANCODE_G, SDL_SCANCODE_H, SDL_SCANCODE_J, SDL_SCANCODE_K, SDL_SCANCODE_L, SDL_SCANCODE_SEMICOLON, /* 2 */ - SDL_SCANCODE_APOSTROPHE, SDL_SCANCODE_GRAVE, SDL_SCANCODE_LSHIFT, SDL_SCANCODE_BACKSLASH, SDL_SCANCODE_Z, SDL_SCANCODE_X, SDL_SCANCODE_C, SDL_SCANCODE_V, /* 2 */ + SDL_SCANCODE_Q, SDL_SCANCODE_W, SDL_SCANCODE_E, SDL_SCANCODE_R, SDL_SCANCODE_T, SDL_SCANCODE_Y, SDL_SCANCODE_U, SDL_SCANCODE_I, /* 1 */ + SDL_SCANCODE_O, SDL_SCANCODE_P, SDL_SCANCODE_LEFTBRACKET, SDL_SCANCODE_RIGHTBRACKET, SDL_SCANCODE_RETURN, SDL_SCANCODE_LCTRL, SDL_SCANCODE_A, SDL_SCANCODE_S, /* 1 */ - SDL_SCANCODE_B, SDL_SCANCODE_N, SDL_SCANCODE_M, SDL_SCANCODE_COMMA, SDL_SCANCODE_PERIOD, SDL_SCANCODE_SLASH, SDL_SCANCODE_RSHIFT, SDL_SCANCODE_PRINTSCREEN,/* 3 */ - SDL_SCANCODE_LALT, SDL_SCANCODE_SPACE, SDL_SCANCODE_CAPSLOCK, SDL_SCANCODE_F1, SDL_SCANCODE_F2, SDL_SCANCODE_F3, SDL_SCANCODE_F4, SDL_SCANCODE_F5, /* 3 */ + SDL_SCANCODE_D, SDL_SCANCODE_F, SDL_SCANCODE_G, SDL_SCANCODE_H, SDL_SCANCODE_J, SDL_SCANCODE_K, SDL_SCANCODE_L, SDL_SCANCODE_SEMICOLON, /* 2 */ + SDL_SCANCODE_APOSTROPHE, SDL_SCANCODE_GRAVE, SDL_SCANCODE_LSHIFT, SDL_SCANCODE_BACKSLASH, SDL_SCANCODE_Z, SDL_SCANCODE_X, SDL_SCANCODE_C, SDL_SCANCODE_V, /* 2 */ - SDL_SCANCODE_F6, SDL_SCANCODE_F7, SDL_SCANCODE_F8, SDL_SCANCODE_F9, SDL_SCANCODE_F10, SDL_SCANCODE_NUMLOCKCLEAR, SDL_SCANCODE_SCROLLLOCK, SDL_SCANCODE_HOME, /* 4 */ - SDL_SCANCODE_UP, SDL_SCANCODE_PAGEUP, SDL_SCANCODE_KP_MINUS, SDL_SCANCODE_LEFT, SDL_SCANCODE_KP_5, SDL_SCANCODE_RIGHT, SDL_SCANCODE_KP_PLUS, SDL_SCANCODE_END, /* 4 */ + SDL_SCANCODE_B, SDL_SCANCODE_N, SDL_SCANCODE_M, SDL_SCANCODE_COMMA, SDL_SCANCODE_PERIOD, SDL_SCANCODE_SLASH, SDL_SCANCODE_RSHIFT, SDL_SCANCODE_PRINTSCREEN,/* 3 */ + SDL_SCANCODE_LALT, SDL_SCANCODE_SPACE, SDL_SCANCODE_CAPSLOCK, SDL_SCANCODE_F1, SDL_SCANCODE_F2, SDL_SCANCODE_F3, SDL_SCANCODE_F4, SDL_SCANCODE_F5, /* 3 */ - SDL_SCANCODE_DOWN, SDL_SCANCODE_PAGEDOWN, SDL_SCANCODE_INSERT, SDL_SCANCODE_DELETE, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_NONUSBACKSLASH,SDL_SCANCODE_F11, /* 5 */ - SDL_SCANCODE_F12, SDL_SCANCODE_PAUSE, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_LGUI, SDL_SCANCODE_RGUI, SDL_SCANCODE_APPLICATION, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, /* 5 */ + SDL_SCANCODE_F6, SDL_SCANCODE_F7, SDL_SCANCODE_F8, SDL_SCANCODE_F9, SDL_SCANCODE_F10, SDL_SCANCODE_NUMLOCKCLEAR, SDL_SCANCODE_SCROLLLOCK, SDL_SCANCODE_HOME, /* 4 */ + SDL_SCANCODE_UP, SDL_SCANCODE_PAGEUP, SDL_SCANCODE_KP_MINUS, SDL_SCANCODE_LEFT, SDL_SCANCODE_KP_5, SDL_SCANCODE_RIGHT, SDL_SCANCODE_KP_PLUS, SDL_SCANCODE_END, /* 4 */ - SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_F13, SDL_SCANCODE_F14, SDL_SCANCODE_F15, SDL_SCANCODE_F16, /* 6 */ - SDL_SCANCODE_F17, SDL_SCANCODE_F18, SDL_SCANCODE_F19, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, /* 6 */ + SDL_SCANCODE_DOWN, SDL_SCANCODE_PAGEDOWN, SDL_SCANCODE_INSERT, SDL_SCANCODE_DELETE, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_NONUSBACKSLASH, SDL_SCANCODE_F11, /* 5 */ + SDL_SCANCODE_F12, SDL_SCANCODE_PAUSE, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_LGUI, SDL_SCANCODE_RGUI, SDL_SCANCODE_APPLICATION, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, /* 5 */ - SDL_SCANCODE_INTERNATIONAL2, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_INTERNATIONAL1, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, /* 7 */ - SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_INTERNATIONAL4, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_INTERNATIONAL5, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_INTERNATIONAL3, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN /* 7 */ + SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_F13, SDL_SCANCODE_F14, SDL_SCANCODE_F15, SDL_SCANCODE_F16, /* 6 */ + SDL_SCANCODE_F17, SDL_SCANCODE_F18, SDL_SCANCODE_F19, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, /* 6 */ + + SDL_SCANCODE_INTERNATIONAL2, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_INTERNATIONAL1, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN, /* 7 */ + SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_INTERNATIONAL4, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_INTERNATIONAL5, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_INTERNATIONAL3, SDL_SCANCODE_UNKNOWN, SDL_SCANCODE_UNKNOWN /* 7 */ }; const SDL_Scancode scancode_rmapping_extended[][2] = { @@ -140,7 +145,7 @@ static void gfx_sdl_reset_dimension_and_pos() { SDL_GL_SetSwapInterval(configWindow.vsync); // in case vsync changed } -static void gfx_sdl_init(void) { +static void gfx_sdl_init(const char *window_title) { SDL_Init(SDL_INIT_VIDEO); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); @@ -160,17 +165,6 @@ static void gfx_sdl_init(void) { else if (gCLIOpts.FullScreen == 2) configWindow.fullscreen = false; - char window_title[96] = - #ifndef USE_GLES - "Super Mario 64 PC port (OpenGL)"; - #else - "Super Mario 64 PC port (OpenGL_ES2)"; - #endif - - #ifdef NIGHTLY - strcat(window_title, " nightly " GIT_HASH); - #endif - wnd = SDL_CreateWindow( window_title, configWindow.x, configWindow.y, configWindow.w, configWindow.h, @@ -223,7 +217,8 @@ static int translate_scancode(int scancode) { } static void gfx_sdl_onkeydown(int scancode) { - keyboard_on_key_down(translate_scancode(scancode)); + if (kb_key_down) + kb_key_down(translate_scancode(scancode)); const Uint8 *state = SDL_GetKeyboardState(NULL); @@ -234,7 +229,8 @@ static void gfx_sdl_onkeydown(int scancode) { } static void gfx_sdl_onkeyup(int scancode) { - keyboard_on_key_up(translate_scancode(scancode)); + if (kb_key_up) + kb_key_up(translate_scancode(scancode)); } static void gfx_sdl_handle_events(void) { @@ -277,6 +273,12 @@ static void gfx_sdl_handle_events(void) { gfx_sdl_set_fullscreen(); } +static void gfx_sdl_set_keyboard_callbacks(kb_callback_t on_key_down, kb_callback_t on_key_up, void (*on_all_keys_up)(void)) { + kb_key_down = on_key_down; + kb_key_up = on_key_up; + kb_all_keys_up = on_all_keys_up; +} + static bool gfx_sdl_start_frame(void) { frame_start = SDL_GetTicks(); return true; @@ -304,6 +306,7 @@ static void gfx_sdl_shutdown(void) { struct GfxWindowManagerAPI gfx_sdl = { gfx_sdl_init, + gfx_sdl_set_keyboard_callbacks, gfx_sdl_main_loop, gfx_sdl_get_dimensions, gfx_sdl_handle_events, @@ -313,3 +316,5 @@ struct GfxWindowManagerAPI gfx_sdl = { gfx_sdl_get_time, gfx_sdl_shutdown }; + +#endif // BACKEND_WM diff --git a/src/pc/gfx/gfx_window_manager_api.h b/src/pc/gfx/gfx_window_manager_api.h index 45826711..44260a97 100644 --- a/src/pc/gfx/gfx_window_manager_api.h +++ b/src/pc/gfx/gfx_window_manager_api.h @@ -4,8 +4,11 @@ #include #include +typedef bool (*kb_callback_t)(int code); + struct GfxWindowManagerAPI { - void (*init)(void); + void (*init)(const char *window_title); + void (*set_keyboard_callbacks)(kb_callback_t on_key_down, kb_callback_t on_key_up, void (*on_all_keys_up)(void)); void (*main_loop)(void (*run_one_game_iter)(void)); void (*get_dimensions)(uint32_t *width, uint32_t *height); void (*handle_events)(void); diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index dc85b17e..c3e156d8 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -13,6 +13,8 @@ #include "gfx/gfx_pc.h" #include "gfx/gfx_opengl.h" +#include "gfx/gfx_direct3d11.h" +#include "gfx/gfx_direct3d12.h" #include "gfx/gfx_sdl.h" #include "audio/audio_api.h" @@ -23,6 +25,7 @@ #include "cliopts.h" #include "configfile.h" #include "controller/controller_api.h" +#include "controller/controller_keyboard.h" #include "fs/fs.h" #include "game/game_init.h" @@ -162,9 +165,26 @@ void main_func(void) { configfile_load(configfile_name()); + #if defined(WAPI_SDL1) || defined(WAPI_SDL2) wm_api = &gfx_sdl; + #elif defined(WAPI_DXGI) + wm_api = &gfx_dxgi; + #else + #error No window API! + #endif + + #if defined(RAPI_D3D11) + rendering_api = &gfx_d3d11_api; + #elif defined(RAPI_D3D12) + rendering_api = &gfx_d3d12_api; + #elif defined(RAPI_GL) || defined(RAPI_GL_LEGACY) rendering_api = &gfx_opengl_api; + #else + #error No rendering API! + #endif + gfx_init(wm_api, rendering_api); + wm_api->set_keyboard_callbacks(keyboard_on_key_down, keyboard_on_key_up, keyboard_on_all_keys_up); if (audio_api == NULL && audio_sdl.init()) audio_api = &audio_sdl; @@ -193,7 +213,8 @@ void main_func(void) { emscripten_set_main_loop(em_main_loop, 0, 0); request_anim_frame(on_anim_frame); #else - wm_api->main_loop(produce_one_frame); + while (true) + wm_api->main_loop(produce_one_frame); #endif } diff --git a/src/pc/platform.c b/src/pc/platform.c index d6bfd6e2..6fc86c9e 100644 --- a/src/pc/platform.c +++ b/src/pc/platform.c @@ -79,7 +79,7 @@ void sys_fatal(const char *fmt, ...) { sys_fatal_impl(msg); } -#if USE_SDL +#ifdef HAVE_SDL2 // we can just ask SDL for most of this shit if we have it #include From 383983ef9df0e7b8b9a5cfc4fb54b1a79e2e72e6 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 11 Jun 2020 03:54:30 +0300 Subject: [PATCH 131/166] form window title in pc_main; show correct RAPI in it --- src/pc/gfx/gfx_pc.c | 13 +------------ src/pc/gfx/gfx_pc.h | 2 +- src/pc/pc_main.c | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 20430019..9fa7dbfd 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -1718,18 +1718,7 @@ void gfx_get_dimensions(uint32_t *width, uint32_t *height) { gfx_wapi->get_dimensions(width, height); } -void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi) { - char window_title[96] = - #ifndef USE_GLES - "Super Mario 64 PC port (OpenGL)" - #else - "Super Mario 64 PC port (OpenGL_ES2)" - #endif - #ifdef NIGHTLY - " nightly " GIT_HASH - #endif - ; - +void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi, const char *window_title) { gfx_wapi = wapi; gfx_rapi = rapi; gfx_wapi->init(window_title); diff --git a/src/pc/gfx/gfx_pc.h b/src/pc/gfx/gfx_pc.h index 53a1677b..0d1780b3 100644 --- a/src/pc/gfx/gfx_pc.h +++ b/src/pc/gfx/gfx_pc.h @@ -11,7 +11,7 @@ struct GfxDimensions { extern struct GfxDimensions gfx_current_dimensions; -void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi); +void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi, const char *window_title); void gfx_start_frame(void); void gfx_run(Gfx *commands); void gfx_end_frame(void); diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index c3e156d8..2020464c 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -175,15 +175,29 @@ void main_func(void) { #if defined(RAPI_D3D11) rendering_api = &gfx_d3d11_api; + # define RAPI_NAME "DirectX 11" #elif defined(RAPI_D3D12) rendering_api = &gfx_d3d12_api; + # define RAPI_NAME "DirectX 12" #elif defined(RAPI_GL) || defined(RAPI_GL_LEGACY) rendering_api = &gfx_opengl_api; + # ifdef USE_GLES + # define RAPI_NAME "OpenGL ES" + # else + # define RAPI_NAME "OpenGL" + # endif #else #error No rendering API! #endif - gfx_init(wm_api, rendering_api); + char window_title[96] = + "Super Mario 64 PC port (" RAPI_NAME ")" + #ifdef NIGHTLY + " nightly " GIT_HASH + #endif + ; + + gfx_init(wm_api, rendering_api, window_title); wm_api->set_keyboard_callbacks(keyboard_on_key_down, keyboard_on_key_up, keyboard_on_all_keys_up); if (audio_api == NULL && audio_sdl.init()) From 3dff608c7bc7f37f8299f36c8e17f6744728a547 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 11 Jun 2020 06:11:11 +0300 Subject: [PATCH 132/166] add D3D12 headers because they're missing in mingw --- Makefile | 1 + include/dxsdk/d3d12.h | 17258 +++++++++++++++++++++++++++++++ include/dxsdk/d3d12sdklayers.h | 3230 ++++++ include/dxsdk/d3d12shader.h | 459 + include/dxsdk/d3dcommon.h | 1009 ++ include/dxsdk/d3dcompiler.h | 586 ++ include/dxsdk/d3dx12.h | 3440 ++++++ include/dxsdk/dxgi.h | 2958 ++++++ include/dxsdk/dxgi1_4.h | 1494 +++ src/pc/gfx/gfx_direct3d12.cpp | 20 +- 10 files changed, 30450 insertions(+), 5 deletions(-) create mode 100644 include/dxsdk/d3d12.h create mode 100644 include/dxsdk/d3d12sdklayers.h create mode 100644 include/dxsdk/d3d12shader.h create mode 100644 include/dxsdk/d3dcommon.h create mode 100644 include/dxsdk/d3dcompiler.h create mode 100644 include/dxsdk/d3dx12.h create mode 100644 include/dxsdk/dxgi.h create mode 100644 include/dxsdk/dxgi1_4.h diff --git a/Makefile b/Makefile index 0b1f81d2..d7a716cc 100644 --- a/Makefile +++ b/Makefile @@ -553,6 +553,7 @@ ifeq ($(WINDOW_API),DXGI) BACKEND_LDFLAGS += -ld3d11 else ifeq ($(RENDER_API),D3D12) BACKEND_LDFLAGS += -ld3d12 + BACKEND_CFLAGS += -Iinclude/dxsdk endif BACKEND_LDFLAGS += -ld3dcompiler -ldxgi -ldxguid BACKEND_LDFLAGS += -lsetupapi -ldinput8 -luser32 -lgdi32 -limm32 -lole32 -loleaut32 -lshell32 -lwinmm -lversion -luuid -static diff --git a/include/dxsdk/d3d12.h b/include/dxsdk/d3d12.h new file mode 100644 index 00000000..06e98dcc --- /dev/null +++ b/include/dxsdk/d3d12.h @@ -0,0 +1,17258 @@ +/*------------------------------------------------------------------------------------- + * + * Copyright (c) Microsoft Corporation + * + *-------------------------------------------------------------------------------------*/ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.01.0622 */ + + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 500 +#endif + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCSAL_H_VERSION__ +#define __REQUIRED_RPCSAL_H_VERSION__ 100 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif /* __RPCNDR_H_VERSION__ */ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __d3d12_h__ +#define __d3d12_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __ID3D12Object_FWD_DEFINED__ +#define __ID3D12Object_FWD_DEFINED__ +typedef interface ID3D12Object ID3D12Object; + +#endif /* __ID3D12Object_FWD_DEFINED__ */ + + +#ifndef __ID3D12DeviceChild_FWD_DEFINED__ +#define __ID3D12DeviceChild_FWD_DEFINED__ +typedef interface ID3D12DeviceChild ID3D12DeviceChild; + +#endif /* __ID3D12DeviceChild_FWD_DEFINED__ */ + + +#ifndef __ID3D12RootSignature_FWD_DEFINED__ +#define __ID3D12RootSignature_FWD_DEFINED__ +typedef interface ID3D12RootSignature ID3D12RootSignature; + +#endif /* __ID3D12RootSignature_FWD_DEFINED__ */ + + +#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__ +#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__ +typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer; + +#endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */ + + +#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ +#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ +typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer; + +#endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */ + + +#ifndef __ID3D12Pageable_FWD_DEFINED__ +#define __ID3D12Pageable_FWD_DEFINED__ +typedef interface ID3D12Pageable ID3D12Pageable; + +#endif /* __ID3D12Pageable_FWD_DEFINED__ */ + + +#ifndef __ID3D12Heap_FWD_DEFINED__ +#define __ID3D12Heap_FWD_DEFINED__ +typedef interface ID3D12Heap ID3D12Heap; + +#endif /* __ID3D12Heap_FWD_DEFINED__ */ + + +#ifndef __ID3D12Resource_FWD_DEFINED__ +#define __ID3D12Resource_FWD_DEFINED__ +typedef interface ID3D12Resource ID3D12Resource; + +#endif /* __ID3D12Resource_FWD_DEFINED__ */ + + +#ifndef __ID3D12CommandAllocator_FWD_DEFINED__ +#define __ID3D12CommandAllocator_FWD_DEFINED__ +typedef interface ID3D12CommandAllocator ID3D12CommandAllocator; + +#endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */ + + +#ifndef __ID3D12Fence_FWD_DEFINED__ +#define __ID3D12Fence_FWD_DEFINED__ +typedef interface ID3D12Fence ID3D12Fence; + +#endif /* __ID3D12Fence_FWD_DEFINED__ */ + + +#ifndef __ID3D12Fence1_FWD_DEFINED__ +#define __ID3D12Fence1_FWD_DEFINED__ +typedef interface ID3D12Fence1 ID3D12Fence1; + +#endif /* __ID3D12Fence1_FWD_DEFINED__ */ + + +#ifndef __ID3D12PipelineState_FWD_DEFINED__ +#define __ID3D12PipelineState_FWD_DEFINED__ +typedef interface ID3D12PipelineState ID3D12PipelineState; + +#endif /* __ID3D12PipelineState_FWD_DEFINED__ */ + + +#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__ +#define __ID3D12DescriptorHeap_FWD_DEFINED__ +typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap; + +#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */ + + +#ifndef __ID3D12QueryHeap_FWD_DEFINED__ +#define __ID3D12QueryHeap_FWD_DEFINED__ +typedef interface ID3D12QueryHeap ID3D12QueryHeap; + +#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */ + + +#ifndef __ID3D12CommandSignature_FWD_DEFINED__ +#define __ID3D12CommandSignature_FWD_DEFINED__ +typedef interface ID3D12CommandSignature ID3D12CommandSignature; + +#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */ + + +#ifndef __ID3D12CommandList_FWD_DEFINED__ +#define __ID3D12CommandList_FWD_DEFINED__ +typedef interface ID3D12CommandList ID3D12CommandList; + +#endif /* __ID3D12CommandList_FWD_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__ +#define __ID3D12GraphicsCommandList_FWD_DEFINED__ +typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList; + +#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__ +#define __ID3D12GraphicsCommandList1_FWD_DEFINED__ +typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1; + +#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__ +#define __ID3D12GraphicsCommandList2_FWD_DEFINED__ +typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2; + +#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */ + + +#ifndef __ID3D12CommandQueue_FWD_DEFINED__ +#define __ID3D12CommandQueue_FWD_DEFINED__ +typedef interface ID3D12CommandQueue ID3D12CommandQueue; + +#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */ + + +#ifndef __ID3D12Device_FWD_DEFINED__ +#define __ID3D12Device_FWD_DEFINED__ +typedef interface ID3D12Device ID3D12Device; + +#endif /* __ID3D12Device_FWD_DEFINED__ */ + + +#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__ +#define __ID3D12PipelineLibrary_FWD_DEFINED__ +typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary; + +#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */ + + +#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__ +#define __ID3D12PipelineLibrary1_FWD_DEFINED__ +typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1; + +#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */ + + +#ifndef __ID3D12Device1_FWD_DEFINED__ +#define __ID3D12Device1_FWD_DEFINED__ +typedef interface ID3D12Device1 ID3D12Device1; + +#endif /* __ID3D12Device1_FWD_DEFINED__ */ + + +#ifndef __ID3D12Device2_FWD_DEFINED__ +#define __ID3D12Device2_FWD_DEFINED__ +typedef interface ID3D12Device2 ID3D12Device2; + +#endif /* __ID3D12Device2_FWD_DEFINED__ */ + + +#ifndef __ID3D12Device3_FWD_DEFINED__ +#define __ID3D12Device3_FWD_DEFINED__ +typedef interface ID3D12Device3 ID3D12Device3; + +#endif /* __ID3D12Device3_FWD_DEFINED__ */ + + +#ifndef __ID3D12ProtectedSession_FWD_DEFINED__ +#define __ID3D12ProtectedSession_FWD_DEFINED__ +typedef interface ID3D12ProtectedSession ID3D12ProtectedSession; + +#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */ + + +#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__ +#define __ID3D12ProtectedResourceSession_FWD_DEFINED__ +typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession; + +#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */ + + +#ifndef __ID3D12Device4_FWD_DEFINED__ +#define __ID3D12Device4_FWD_DEFINED__ +typedef interface ID3D12Device4 ID3D12Device4; + +#endif /* __ID3D12Device4_FWD_DEFINED__ */ + + +#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__ +#define __ID3D12LifetimeOwner_FWD_DEFINED__ +typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner; + +#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */ + + +#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__ +#define __ID3D12SwapChainAssistant_FWD_DEFINED__ +typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant; + +#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */ + + +#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__ +#define __ID3D12LifetimeTracker_FWD_DEFINED__ +typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker; + +#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */ + + +#ifndef __ID3D12StateObject_FWD_DEFINED__ +#define __ID3D12StateObject_FWD_DEFINED__ +typedef interface ID3D12StateObject ID3D12StateObject; + +#endif /* __ID3D12StateObject_FWD_DEFINED__ */ + + +#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__ +#define __ID3D12StateObjectProperties_FWD_DEFINED__ +typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties; + +#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */ + + +#ifndef __ID3D12Device5_FWD_DEFINED__ +#define __ID3D12Device5_FWD_DEFINED__ +typedef interface ID3D12Device5 ID3D12Device5; + +#endif /* __ID3D12Device5_FWD_DEFINED__ */ + + +#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ +#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ +typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings; + +#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */ + + +#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ +#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ +typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData; + +#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */ + + +#ifndef __ID3D12Device6_FWD_DEFINED__ +#define __ID3D12Device6_FWD_DEFINED__ +typedef interface ID3D12Device6 ID3D12Device6; + +#endif /* __ID3D12Device6_FWD_DEFINED__ */ + + +#ifndef __ID3D12Resource1_FWD_DEFINED__ +#define __ID3D12Resource1_FWD_DEFINED__ +typedef interface ID3D12Resource1 ID3D12Resource1; + +#endif /* __ID3D12Resource1_FWD_DEFINED__ */ + + +#ifndef __ID3D12Heap1_FWD_DEFINED__ +#define __ID3D12Heap1_FWD_DEFINED__ +typedef interface ID3D12Heap1 ID3D12Heap1; + +#endif /* __ID3D12Heap1_FWD_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__ +#define __ID3D12GraphicsCommandList3_FWD_DEFINED__ +typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3; + +#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */ + + +#ifndef __ID3D12MetaCommand_FWD_DEFINED__ +#define __ID3D12MetaCommand_FWD_DEFINED__ +typedef interface ID3D12MetaCommand ID3D12MetaCommand; + +#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__ +#define __ID3D12GraphicsCommandList4_FWD_DEFINED__ +typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4; + +#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */ + + +#ifndef __ID3D12Tools_FWD_DEFINED__ +#define __ID3D12Tools_FWD_DEFINED__ +typedef interface ID3D12Tools ID3D12Tools; + +#endif /* __ID3D12Tools_FWD_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__ +#define __ID3D12GraphicsCommandList5_FWD_DEFINED__ +typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5; + +#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" +#include "dxgicommon.h" +#include "dxgiformat.h" +#include "d3dcommon.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +/* interface __MIDL_itf_d3d12_0000_0000 */ +/* [local] */ + +#include +#pragma region App Family +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) +#ifndef _D3D12_CONSTANTS +#define _D3D12_CONSTANTS +#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff ) + +#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff ) + +#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff ) + +#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff ) + +#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 ) + +#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 ) + +#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 ) + +#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 ) + +#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 ) + +#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 ) + +#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 ) + +#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 ) + +#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 ) + +#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 ) + +#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 ) + +#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 ) + +#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 ) + +#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 ) + +#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 ) + +#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 ) + +#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 ) + +#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 ) + +#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 ) + +#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 ) + +#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 ) + +#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 ) + +#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 ) + +#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 ) + +#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 ) + +#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 ) + +#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 ) + +#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 ) + +#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 ) + +#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 ) + +#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 ) + +#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 ) + +#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 ) + +#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 ) + +#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 ) + +#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 ) + +#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 ) + +#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 ) + +#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 ) + +#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 ) + +#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 ) + +#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 ) + +#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 ) + +#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 ) + +#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 ) + +#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 ) + +#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 ) + +#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 ) + +#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 ) + +#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 ) + +#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 ) + +#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 ) + +#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 ) + +#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 ) + +#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 ) + +#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 ) + +#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 ) + +#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 ) + +#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 ) + +#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 ) + +#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 ) + +#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 ) + +#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 ) + +#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 ) + +#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 ) + +#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 ) + +#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 ) + +#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 ) + +#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 ) + +#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 ) + +#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 ) + +#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 ) + +#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 ) + +#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 ) + +#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 ) + +#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 ) + +#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 ) + +#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f ) +#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f ) +#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f ) +#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f ) +#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f ) +#define D3D12_DEFAULT_DEPTH_BIAS ( 0 ) + +#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f ) +#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 ) + +#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f ) +#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 ) + +#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 ) + +#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 ) + +#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff ) + +#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 ) + +#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 ) + +#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 ) + +#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 ) + +#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f ) +#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff ) + +#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 ) + +#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff ) + +#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 ) + +#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 ) + +#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f ) +#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f ) +#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 ) + +#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 ) + +#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 ) + +#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff ) + +#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 ) + +#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 ) + +#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 ) + +#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 ) + +#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 ) + +#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 ) + +#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 ) + +#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 ) + +#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 ) + +#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 ) +#define D3D12_FLOAT32_MAX ( 3.402823466e+38f ) +#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f ) +#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f ) +#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f ) +#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f ) +#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f ) +#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f ) +#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f ) +#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f ) +#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f ) +#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f ) +#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f ) +#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 ) + +#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 ) + +#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 ) + +#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 ) + +#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 ) + +#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 ) + +#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 ) + +#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 ) + +#define D3D12_GS_OUTPUT_ELEMENTS ( 32 ) + +#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 ) + +#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 ) + +#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 ) + +#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff ) + +#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 ) + +#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 ) + +#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 ) + +#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff ) + +#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f ) +#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f ) +#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 ) + +#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 ) + +#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 ) + +#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 ) + +#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 ) + +#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 ) + +#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 ) + +#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 ) + +#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 ) + +#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 ) + +#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 ) + +#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 ) + +#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 ) + +#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 ) + +#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 ) + +#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 ) + +#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff ) + +#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff ) + +#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff ) + +#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff ) + +#define D3D12_LINEAR_GAMMA ( 1.0f ) +#define D3D12_MAJOR_VERSION ( 12 ) + +#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f ) +#define D3D12_MAX_DEPTH ( 1.0f ) +#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 ) + +#define D3D12_MAX_MAXANISOTROPY ( 16 ) + +#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 ) + +#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f ) +#define D3D12_MAX_ROOT_COST ( 64 ) + +#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 ) + +#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 ) + +#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 ) + +#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 ) + +#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 ) + +#define D3D12_MINOR_VERSION ( 0 ) + +#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f ) +#define D3D12_MIN_DEPTH ( 0.0f ) +#define D3D12_MIN_MAXANISOTROPY ( 0 ) + +#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f ) +#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f ) +#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 ) + +#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 ) + +#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f ) +#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 ) + +#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff ) + +#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 ) + +#define D3D12_PACKED_TILE ( 0xffffffff ) + +#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 ) + +#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 ) + +#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 ) + +#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 ) + +#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff ) + +#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 ) + +#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff ) + +#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 ) + +#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f ) +#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 ) + +#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 ) + +#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 ) + +#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 ) + +#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f ) +#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 ) + +#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 ) + +#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 ) + +#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 ) + +#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 ) + +#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 ) + +#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 ) + +#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 ) + +#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 ) + +#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 ) + +#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 ) + +#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 ) + +#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 ) + +#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 ) + +#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 ) + +#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 ) + +#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 ) + +#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 ) + +#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 ) + +#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 ) + +#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 ) + +#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 ) + +#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 ) + +#define D3D12_REQ_MAXANISOTROPY ( 16 ) + +#define D3D12_REQ_MIP_LEVELS ( 15 ) + +#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 ) + +#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 ) + +#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 ) + +#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 ) + +#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f ) +#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 ) + +#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 ) + +#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 ) + +#define D3D12_REQ_SUBRESOURCES ( 30720 ) + +#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 ) + +#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 ) + +#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 ) + +#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 ) + +#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 ) + +#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 ) + +#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 ) + +#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff ) + +#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 ) + +#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 ) + +#define D3D12_SHADER_MAJOR_VERSION ( 5 ) + +#define D3D12_SHADER_MAX_INSTANCES ( 65535 ) + +#define D3D12_SHADER_MAX_INTERFACES ( 253 ) + +#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 ) + +#define D3D12_SHADER_MAX_TYPES ( 65535 ) + +#define D3D12_SHADER_MINOR_VERSION ( 1 ) + +#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 ) + +#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 ) + +#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 ) + +#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 ) + +#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 ) + +#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 ) + +#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 ) + +#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 ) + +#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff ) + +#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff ) + +#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 ) + +#define D3D12_SO_STREAM_COUNT ( 4 ) + +#define D3D12_SPEC_DATE_DAY ( 14 ) + +#define D3D12_SPEC_DATE_MONTH ( 11 ) + +#define D3D12_SPEC_DATE_YEAR ( 2014 ) + +#define D3D12_SPEC_VERSION ( 1.16 ) +#define D3D12_SRGB_GAMMA ( 2.2f ) +#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f ) +#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f ) +#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f ) +#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f ) +#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f ) +#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f ) +#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 ) + +#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 ) + +#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 ) + +#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 ) + +#define D3D12_STANDARD_VECTOR_SIZE ( 4 ) + +#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 ) + +#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 ) + +#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 ) + +#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 ) + +#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff ) + +#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 ) + +#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 ) + +#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 ) + +#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 ) + +#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 ) + +#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 ) + +#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 ) + +#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 ) + +#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 ) + +#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 ) + +#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 ) + +#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 ) + +#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 ) + +#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 ) + +#define D3D12_UAV_SLOT_COUNT ( 64 ) + +#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 ) + +#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 ) + +#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 ) + +#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 ) + +#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 ) + +#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff ) + +#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 ) + +#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 ) + +#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 ) + +#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 ) + +#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 ) + +#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 ) + +#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 ) + +#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 ) + +#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 ) + +#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 ) + +#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 ) + +#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 ) + +#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 ) + +#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 ) + +#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 ) + +#endif + +typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS; + +typedef +enum D3D12_COMMAND_LIST_TYPE + { + D3D12_COMMAND_LIST_TYPE_DIRECT = 0, + D3D12_COMMAND_LIST_TYPE_BUNDLE = 1, + D3D12_COMMAND_LIST_TYPE_COMPUTE = 2, + D3D12_COMMAND_LIST_TYPE_COPY = 3, + D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4, + D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5, + D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6 + } D3D12_COMMAND_LIST_TYPE; + +typedef +enum D3D12_COMMAND_QUEUE_FLAGS + { + D3D12_COMMAND_QUEUE_FLAG_NONE = 0, + D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1 + } D3D12_COMMAND_QUEUE_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS ); +typedef +enum D3D12_COMMAND_QUEUE_PRIORITY + { + D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0, + D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100, + D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000 + } D3D12_COMMAND_QUEUE_PRIORITY; + +typedef struct D3D12_COMMAND_QUEUE_DESC + { + D3D12_COMMAND_LIST_TYPE Type; + INT Priority; + D3D12_COMMAND_QUEUE_FLAGS Flags; + UINT NodeMask; + } D3D12_COMMAND_QUEUE_DESC; + +typedef +enum D3D12_PRIMITIVE_TOPOLOGY_TYPE + { + D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0, + D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1, + D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2, + D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3, + D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4 + } D3D12_PRIMITIVE_TOPOLOGY_TYPE; + +typedef +enum D3D12_INPUT_CLASSIFICATION + { + D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0, + D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1 + } D3D12_INPUT_CLASSIFICATION; + +typedef struct D3D12_INPUT_ELEMENT_DESC + { + LPCSTR SemanticName; + UINT SemanticIndex; + DXGI_FORMAT Format; + UINT InputSlot; + UINT AlignedByteOffset; + D3D12_INPUT_CLASSIFICATION InputSlotClass; + UINT InstanceDataStepRate; + } D3D12_INPUT_ELEMENT_DESC; + +typedef +enum D3D12_FILL_MODE + { + D3D12_FILL_MODE_WIREFRAME = 2, + D3D12_FILL_MODE_SOLID = 3 + } D3D12_FILL_MODE; + +typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY; + +typedef D3D_PRIMITIVE D3D12_PRIMITIVE; + +typedef +enum D3D12_CULL_MODE + { + D3D12_CULL_MODE_NONE = 1, + D3D12_CULL_MODE_FRONT = 2, + D3D12_CULL_MODE_BACK = 3 + } D3D12_CULL_MODE; + +typedef struct D3D12_SO_DECLARATION_ENTRY + { + UINT Stream; + LPCSTR SemanticName; + UINT SemanticIndex; + BYTE StartComponent; + BYTE ComponentCount; + BYTE OutputSlot; + } D3D12_SO_DECLARATION_ENTRY; + +typedef struct D3D12_VIEWPORT + { + FLOAT TopLeftX; + FLOAT TopLeftY; + FLOAT Width; + FLOAT Height; + FLOAT MinDepth; + FLOAT MaxDepth; + } D3D12_VIEWPORT; + +typedef RECT D3D12_RECT; + +typedef struct D3D12_BOX + { + UINT left; + UINT top; + UINT front; + UINT right; + UINT bottom; + UINT back; + } D3D12_BOX; + +typedef +enum D3D12_COMPARISON_FUNC + { + D3D12_COMPARISON_FUNC_NEVER = 1, + D3D12_COMPARISON_FUNC_LESS = 2, + D3D12_COMPARISON_FUNC_EQUAL = 3, + D3D12_COMPARISON_FUNC_LESS_EQUAL = 4, + D3D12_COMPARISON_FUNC_GREATER = 5, + D3D12_COMPARISON_FUNC_NOT_EQUAL = 6, + D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7, + D3D12_COMPARISON_FUNC_ALWAYS = 8 + } D3D12_COMPARISON_FUNC; + +typedef +enum D3D12_DEPTH_WRITE_MASK + { + D3D12_DEPTH_WRITE_MASK_ZERO = 0, + D3D12_DEPTH_WRITE_MASK_ALL = 1 + } D3D12_DEPTH_WRITE_MASK; + +typedef +enum D3D12_STENCIL_OP + { + D3D12_STENCIL_OP_KEEP = 1, + D3D12_STENCIL_OP_ZERO = 2, + D3D12_STENCIL_OP_REPLACE = 3, + D3D12_STENCIL_OP_INCR_SAT = 4, + D3D12_STENCIL_OP_DECR_SAT = 5, + D3D12_STENCIL_OP_INVERT = 6, + D3D12_STENCIL_OP_INCR = 7, + D3D12_STENCIL_OP_DECR = 8 + } D3D12_STENCIL_OP; + +typedef struct D3D12_DEPTH_STENCILOP_DESC + { + D3D12_STENCIL_OP StencilFailOp; + D3D12_STENCIL_OP StencilDepthFailOp; + D3D12_STENCIL_OP StencilPassOp; + D3D12_COMPARISON_FUNC StencilFunc; + } D3D12_DEPTH_STENCILOP_DESC; + +typedef struct D3D12_DEPTH_STENCIL_DESC + { + BOOL DepthEnable; + D3D12_DEPTH_WRITE_MASK DepthWriteMask; + D3D12_COMPARISON_FUNC DepthFunc; + BOOL StencilEnable; + UINT8 StencilReadMask; + UINT8 StencilWriteMask; + D3D12_DEPTH_STENCILOP_DESC FrontFace; + D3D12_DEPTH_STENCILOP_DESC BackFace; + } D3D12_DEPTH_STENCIL_DESC; + +typedef struct D3D12_DEPTH_STENCIL_DESC1 + { + BOOL DepthEnable; + D3D12_DEPTH_WRITE_MASK DepthWriteMask; + D3D12_COMPARISON_FUNC DepthFunc; + BOOL StencilEnable; + UINT8 StencilReadMask; + UINT8 StencilWriteMask; + D3D12_DEPTH_STENCILOP_DESC FrontFace; + D3D12_DEPTH_STENCILOP_DESC BackFace; + BOOL DepthBoundsTestEnable; + } D3D12_DEPTH_STENCIL_DESC1; + +typedef +enum D3D12_BLEND + { + D3D12_BLEND_ZERO = 1, + D3D12_BLEND_ONE = 2, + D3D12_BLEND_SRC_COLOR = 3, + D3D12_BLEND_INV_SRC_COLOR = 4, + D3D12_BLEND_SRC_ALPHA = 5, + D3D12_BLEND_INV_SRC_ALPHA = 6, + D3D12_BLEND_DEST_ALPHA = 7, + D3D12_BLEND_INV_DEST_ALPHA = 8, + D3D12_BLEND_DEST_COLOR = 9, + D3D12_BLEND_INV_DEST_COLOR = 10, + D3D12_BLEND_SRC_ALPHA_SAT = 11, + D3D12_BLEND_BLEND_FACTOR = 14, + D3D12_BLEND_INV_BLEND_FACTOR = 15, + D3D12_BLEND_SRC1_COLOR = 16, + D3D12_BLEND_INV_SRC1_COLOR = 17, + D3D12_BLEND_SRC1_ALPHA = 18, + D3D12_BLEND_INV_SRC1_ALPHA = 19 + } D3D12_BLEND; + +typedef +enum D3D12_BLEND_OP + { + D3D12_BLEND_OP_ADD = 1, + D3D12_BLEND_OP_SUBTRACT = 2, + D3D12_BLEND_OP_REV_SUBTRACT = 3, + D3D12_BLEND_OP_MIN = 4, + D3D12_BLEND_OP_MAX = 5 + } D3D12_BLEND_OP; + +typedef +enum D3D12_COLOR_WRITE_ENABLE + { + D3D12_COLOR_WRITE_ENABLE_RED = 1, + D3D12_COLOR_WRITE_ENABLE_GREEN = 2, + D3D12_COLOR_WRITE_ENABLE_BLUE = 4, + D3D12_COLOR_WRITE_ENABLE_ALPHA = 8, + D3D12_COLOR_WRITE_ENABLE_ALL = ( ( ( D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN ) | D3D12_COLOR_WRITE_ENABLE_BLUE ) | D3D12_COLOR_WRITE_ENABLE_ALPHA ) + } D3D12_COLOR_WRITE_ENABLE; + +typedef +enum D3D12_LOGIC_OP + { + D3D12_LOGIC_OP_CLEAR = 0, + D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) , + D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) , + D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) , + D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) , + D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) , + D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) , + D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) , + D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) , + D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) , + D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) , + D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) , + D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) , + D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) , + D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) , + D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 ) + } D3D12_LOGIC_OP; + +typedef struct D3D12_RENDER_TARGET_BLEND_DESC + { + BOOL BlendEnable; + BOOL LogicOpEnable; + D3D12_BLEND SrcBlend; + D3D12_BLEND DestBlend; + D3D12_BLEND_OP BlendOp; + D3D12_BLEND SrcBlendAlpha; + D3D12_BLEND DestBlendAlpha; + D3D12_BLEND_OP BlendOpAlpha; + D3D12_LOGIC_OP LogicOp; + UINT8 RenderTargetWriteMask; + } D3D12_RENDER_TARGET_BLEND_DESC; + +typedef struct D3D12_BLEND_DESC + { + BOOL AlphaToCoverageEnable; + BOOL IndependentBlendEnable; + D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ]; + } D3D12_BLEND_DESC; + +/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. + IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */ +typedef +enum D3D12_CONSERVATIVE_RASTERIZATION_MODE + { + D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, + D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1 + } D3D12_CONSERVATIVE_RASTERIZATION_MODE; + +typedef struct D3D12_RASTERIZER_DESC + { + D3D12_FILL_MODE FillMode; + D3D12_CULL_MODE CullMode; + BOOL FrontCounterClockwise; + INT DepthBias; + FLOAT DepthBiasClamp; + FLOAT SlopeScaledDepthBias; + BOOL DepthClipEnable; + BOOL MultisampleEnable; + BOOL AntialiasedLineEnable; + UINT ForcedSampleCount; + D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster; + } D3D12_RASTERIZER_DESC; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec; + +#ifndef __ID3D12Object_INTERFACE_DEFINED__ +#define __ID3D12Object_INTERFACE_DEFINED__ + +/* interface ID3D12Object */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Object; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8") + ID3D12Object : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetPrivateData( + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPrivateData( + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface( + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetName( + _In_z_ LPCWSTR Name) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12ObjectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Object * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Object * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Object * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Object * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Object * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Object * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Object * This, + _In_z_ LPCWSTR Name); + + END_INTERFACE + } ID3D12ObjectVtbl; + + interface ID3D12Object + { + CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Object_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Object_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Object_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Object_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Object_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__ +#define __ID3D12DeviceChild_INTERFACE_DEFINED__ + +/* interface ID3D12DeviceChild */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DeviceChild; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357") + ID3D12DeviceChild : public ID3D12Object + { + public: + virtual HRESULT STDMETHODCALLTYPE GetDevice( + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DeviceChildVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DeviceChild * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DeviceChild * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DeviceChild * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12DeviceChild * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12DeviceChild * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12DeviceChild * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12DeviceChild * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12DeviceChild * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + END_INTERFACE + } ID3D12DeviceChildVtbl; + + interface ID3D12DeviceChild + { + CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DeviceChild_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DeviceChild_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12DeviceChild_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__ +#define __ID3D12RootSignature_INTERFACE_DEFINED__ + +/* interface ID3D12RootSignature */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12RootSignature; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214") + ID3D12RootSignature : public ID3D12DeviceChild + { + public: + }; + + +#else /* C style interface */ + + typedef struct ID3D12RootSignatureVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12RootSignature * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12RootSignature * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12RootSignature * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12RootSignature * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12RootSignature * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12RootSignature * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12RootSignature * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12RootSignature * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + END_INTERFACE + } ID3D12RootSignatureVtbl; + + interface ID3D12RootSignature + { + CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12RootSignature_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12RootSignature_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12RootSignature_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0001 */ +/* [local] */ + +typedef struct D3D12_SHADER_BYTECODE + { + _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode; + SIZE_T BytecodeLength; + } D3D12_SHADER_BYTECODE; + +typedef struct D3D12_STREAM_OUTPUT_DESC + { + _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration; + UINT NumEntries; + _Field_size_full_(NumStrides) const UINT *pBufferStrides; + UINT NumStrides; + UINT RasterizedStream; + } D3D12_STREAM_OUTPUT_DESC; + +typedef struct D3D12_INPUT_LAYOUT_DESC + { + _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs; + UINT NumElements; + } D3D12_INPUT_LAYOUT_DESC; + +typedef +enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE + { + D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0, + D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1, + D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2 + } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE; + +typedef struct D3D12_CACHED_PIPELINE_STATE + { + _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob; + SIZE_T CachedBlobSizeInBytes; + } D3D12_CACHED_PIPELINE_STATE; + +typedef +enum D3D12_PIPELINE_STATE_FLAGS + { + D3D12_PIPELINE_STATE_FLAG_NONE = 0, + D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1 + } D3D12_PIPELINE_STATE_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS ); +typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC + { + ID3D12RootSignature *pRootSignature; + D3D12_SHADER_BYTECODE VS; + D3D12_SHADER_BYTECODE PS; + D3D12_SHADER_BYTECODE DS; + D3D12_SHADER_BYTECODE HS; + D3D12_SHADER_BYTECODE GS; + D3D12_STREAM_OUTPUT_DESC StreamOutput; + D3D12_BLEND_DESC BlendState; + UINT SampleMask; + D3D12_RASTERIZER_DESC RasterizerState; + D3D12_DEPTH_STENCIL_DESC DepthStencilState; + D3D12_INPUT_LAYOUT_DESC InputLayout; + D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue; + D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType; + UINT NumRenderTargets; + DXGI_FORMAT RTVFormats[ 8 ]; + DXGI_FORMAT DSVFormat; + DXGI_SAMPLE_DESC SampleDesc; + UINT NodeMask; + D3D12_CACHED_PIPELINE_STATE CachedPSO; + D3D12_PIPELINE_STATE_FLAGS Flags; + } D3D12_GRAPHICS_PIPELINE_STATE_DESC; + +typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC + { + ID3D12RootSignature *pRootSignature; + D3D12_SHADER_BYTECODE CS; + UINT NodeMask; + D3D12_CACHED_PIPELINE_STATE CachedPSO; + D3D12_PIPELINE_STATE_FLAGS Flags; + } D3D12_COMPUTE_PIPELINE_STATE_DESC; + +struct D3D12_RT_FORMAT_ARRAY + { + DXGI_FORMAT RTFormats[ 8 ]; + UINT NumRenderTargets; + } ; +typedef struct D3D12_PIPELINE_STATE_STREAM_DESC + { + _In_ SIZE_T SizeInBytes; + _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream; + } D3D12_PIPELINE_STATE_STREAM_DESC; + +typedef +enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE + { + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0, + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) , + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING + 1 ) + } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE; + +typedef +enum D3D12_FEATURE + { + D3D12_FEATURE_D3D12_OPTIONS = 0, + D3D12_FEATURE_ARCHITECTURE = 1, + D3D12_FEATURE_FEATURE_LEVELS = 2, + D3D12_FEATURE_FORMAT_SUPPORT = 3, + D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4, + D3D12_FEATURE_FORMAT_INFO = 5, + D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6, + D3D12_FEATURE_SHADER_MODEL = 7, + D3D12_FEATURE_D3D12_OPTIONS1 = 8, + D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10, + D3D12_FEATURE_ROOT_SIGNATURE = 12, + D3D12_FEATURE_ARCHITECTURE1 = 16, + D3D12_FEATURE_D3D12_OPTIONS2 = 18, + D3D12_FEATURE_SHADER_CACHE = 19, + D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20, + D3D12_FEATURE_D3D12_OPTIONS3 = 21, + D3D12_FEATURE_EXISTING_HEAPS = 22, + D3D12_FEATURE_D3D12_OPTIONS4 = 23, + D3D12_FEATURE_SERIALIZATION = 24, + D3D12_FEATURE_CROSS_NODE = 25, + D3D12_FEATURE_D3D12_OPTIONS5 = 27, + D3D12_FEATURE_D3D12_OPTIONS6 = 30, + D3D12_FEATURE_QUERY_META_COMMAND = 31 + } D3D12_FEATURE; + +typedef +enum D3D12_SHADER_MIN_PRECISION_SUPPORT + { + D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0, + D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1, + D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2 + } D3D12_SHADER_MIN_PRECISION_SUPPORT; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT ); +typedef +enum D3D12_TILED_RESOURCES_TIER + { + D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0, + D3D12_TILED_RESOURCES_TIER_1 = 1, + D3D12_TILED_RESOURCES_TIER_2 = 2, + D3D12_TILED_RESOURCES_TIER_3 = 3, + D3D12_TILED_RESOURCES_TIER_4 = 4 + } D3D12_TILED_RESOURCES_TIER; + +typedef +enum D3D12_RESOURCE_BINDING_TIER + { + D3D12_RESOURCE_BINDING_TIER_1 = 1, + D3D12_RESOURCE_BINDING_TIER_2 = 2, + D3D12_RESOURCE_BINDING_TIER_3 = 3 + } D3D12_RESOURCE_BINDING_TIER; + +typedef +enum D3D12_CONSERVATIVE_RASTERIZATION_TIER + { + D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0, + D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1, + D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2, + D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3 + } D3D12_CONSERVATIVE_RASTERIZATION_TIER; + +typedef +enum D3D12_FORMAT_SUPPORT1 + { + D3D12_FORMAT_SUPPORT1_NONE = 0, + D3D12_FORMAT_SUPPORT1_BUFFER = 0x1, + D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2, + D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4, + D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8, + D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10, + D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20, + D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40, + D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80, + D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100, + D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200, + D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400, + D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800, + D3D12_FORMAT_SUPPORT1_MIP = 0x1000, + D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000, + D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000, + D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000, + D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000, + D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000, + D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000, + D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000, + D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000, + D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000, + D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000, + D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000, + D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000, + D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000, + D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000, + D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000, + D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000 + } D3D12_FORMAT_SUPPORT1; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 ); +typedef +enum D3D12_FORMAT_SUPPORT2 + { + D3D12_FORMAT_SUPPORT2_NONE = 0, + D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1, + D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2, + D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4, + D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8, + D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10, + D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20, + D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40, + D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80, + D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100, + D3D12_FORMAT_SUPPORT2_TILED = 0x200, + D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000 + } D3D12_FORMAT_SUPPORT2; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 ); +typedef +enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS + { + D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0, + D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1 + } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS ); +typedef +enum D3D12_CROSS_NODE_SHARING_TIER + { + D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0, + D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1, + D3D12_CROSS_NODE_SHARING_TIER_1 = 2, + D3D12_CROSS_NODE_SHARING_TIER_2 = 3, + D3D12_CROSS_NODE_SHARING_TIER_3 = 4 + } D3D12_CROSS_NODE_SHARING_TIER; + +typedef +enum D3D12_RESOURCE_HEAP_TIER + { + D3D12_RESOURCE_HEAP_TIER_1 = 1, + D3D12_RESOURCE_HEAP_TIER_2 = 2 + } D3D12_RESOURCE_HEAP_TIER; + +typedef +enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER + { + D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0, + D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1, + D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2 + } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER; + +typedef +enum D3D12_VIEW_INSTANCING_TIER + { + D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0, + D3D12_VIEW_INSTANCING_TIER_1 = 1, + D3D12_VIEW_INSTANCING_TIER_2 = 2, + D3D12_VIEW_INSTANCING_TIER_3 = 3 + } D3D12_VIEW_INSTANCING_TIER; + +typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS + { + _Out_ BOOL DoublePrecisionFloatShaderOps; + _Out_ BOOL OutputMergerLogicOp; + _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport; + _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier; + _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier; + _Out_ BOOL PSSpecifiedStencilRefSupported; + _Out_ BOOL TypedUAVLoadAdditionalFormats; + _Out_ BOOL ROVsSupported; + _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier; + _Out_ UINT MaxGPUVirtualAddressBitsPerResource; + _Out_ BOOL StandardSwizzle64KBSupported; + _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier; + _Out_ BOOL CrossAdapterRowMajorTextureSupported; + _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation; + _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier; + } D3D12_FEATURE_DATA_D3D12_OPTIONS; + +typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1 + { + _Out_ BOOL WaveOps; + _Out_ UINT WaveLaneCountMin; + _Out_ UINT WaveLaneCountMax; + _Out_ UINT TotalLaneCount; + _Out_ BOOL ExpandedComputeResourceStates; + _Out_ BOOL Int64ShaderOps; + } D3D12_FEATURE_DATA_D3D12_OPTIONS1; + +typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2 + { + _Out_ BOOL DepthBoundsTestSupported; + _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier; + } D3D12_FEATURE_DATA_D3D12_OPTIONS2; + +typedef +enum D3D_ROOT_SIGNATURE_VERSION + { + D3D_ROOT_SIGNATURE_VERSION_1 = 0x1, + D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1, + D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2 + } D3D_ROOT_SIGNATURE_VERSION; + +typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE + { + _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion; + } D3D12_FEATURE_DATA_ROOT_SIGNATURE; + +typedef struct D3D12_FEATURE_DATA_ARCHITECTURE + { + _In_ UINT NodeIndex; + _Out_ BOOL TileBasedRenderer; + _Out_ BOOL UMA; + _Out_ BOOL CacheCoherentUMA; + } D3D12_FEATURE_DATA_ARCHITECTURE; + +typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1 + { + _In_ UINT NodeIndex; + _Out_ BOOL TileBasedRenderer; + _Out_ BOOL UMA; + _Out_ BOOL CacheCoherentUMA; + _Out_ BOOL IsolatedMMU; + } D3D12_FEATURE_DATA_ARCHITECTURE1; + +typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS + { + _In_ UINT NumFeatureLevels; + _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested; + _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel; + } D3D12_FEATURE_DATA_FEATURE_LEVELS; + +typedef +enum D3D_SHADER_MODEL + { + D3D_SHADER_MODEL_5_1 = 0x51, + D3D_SHADER_MODEL_6_0 = 0x60, + D3D_SHADER_MODEL_6_1 = 0x61, + D3D_SHADER_MODEL_6_2 = 0x62, + D3D_SHADER_MODEL_6_3 = 0x63, + D3D_SHADER_MODEL_6_4 = 0x64, + D3D_SHADER_MODEL_6_5 = 0x65 + } D3D_SHADER_MODEL; + +typedef struct D3D12_FEATURE_DATA_SHADER_MODEL + { + _Inout_ D3D_SHADER_MODEL HighestShaderModel; + } D3D12_FEATURE_DATA_SHADER_MODEL; + +typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT + { + _In_ DXGI_FORMAT Format; + _Out_ D3D12_FORMAT_SUPPORT1 Support1; + _Out_ D3D12_FORMAT_SUPPORT2 Support2; + } D3D12_FEATURE_DATA_FORMAT_SUPPORT; + +typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS + { + _In_ DXGI_FORMAT Format; + _In_ UINT SampleCount; + _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags; + _Out_ UINT NumQualityLevels; + } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS; + +typedef struct D3D12_FEATURE_DATA_FORMAT_INFO + { + DXGI_FORMAT Format; + UINT8 PlaneCount; + } D3D12_FEATURE_DATA_FORMAT_INFO; + +typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT + { + UINT MaxGPUVirtualAddressBitsPerResource; + UINT MaxGPUVirtualAddressBitsPerProcess; + } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT; + +typedef +enum D3D12_SHADER_CACHE_SUPPORT_FLAGS + { + D3D12_SHADER_CACHE_SUPPORT_NONE = 0, + D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, + D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2, + D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4, + D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8 + } D3D12_SHADER_CACHE_SUPPORT_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS ); +typedef struct D3D12_FEATURE_DATA_SHADER_CACHE + { + _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags; + } D3D12_FEATURE_DATA_SHADER_CACHE; + +typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY + { + _In_ D3D12_COMMAND_LIST_TYPE CommandListType; + _In_ UINT Priority; + _Out_ BOOL PriorityForTypeIsSupported; + } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY; + +typedef +enum D3D12_COMMAND_LIST_SUPPORT_FLAGS + { + D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0, + D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) , + D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) , + D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) , + D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) , + D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) , + D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) , + D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE ) + } D3D12_COMMAND_LIST_SUPPORT_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS ); +typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3 + { + _Out_ BOOL CopyQueueTimestampQueriesSupported; + _Out_ BOOL CastingFullyTypedFormatSupported; + _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags; + _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier; + _Out_ BOOL BarycentricsSupported; + } D3D12_FEATURE_DATA_D3D12_OPTIONS3; + +typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS + { + _Out_ BOOL Supported; + } D3D12_FEATURE_DATA_EXISTING_HEAPS; + +typedef +enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER + { + D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0, + D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) + } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER; + +typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4 + { + _Out_ BOOL MSAA64KBAlignedTextureSupported; + _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier; + _Out_ BOOL Native16BitShaderOpsSupported; + } D3D12_FEATURE_DATA_D3D12_OPTIONS4; + +typedef +enum D3D12_HEAP_SERIALIZATION_TIER + { + D3D12_HEAP_SERIALIZATION_TIER_0 = 0, + D3D12_HEAP_SERIALIZATION_TIER_10 = 10 + } D3D12_HEAP_SERIALIZATION_TIER; + +typedef struct D3D12_FEATURE_DATA_SERIALIZATION + { + _In_ UINT NodeIndex; + _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier; + } D3D12_FEATURE_DATA_SERIALIZATION; + +typedef struct D3D12_FEATURE_DATA_CROSS_NODE + { + D3D12_CROSS_NODE_SHARING_TIER SharingTier; + BOOL AtomicShaderInstructions; + } D3D12_FEATURE_DATA_CROSS_NODE; + +typedef +enum D3D12_RENDER_PASS_TIER + { + D3D12_RENDER_PASS_TIER_0 = 0, + D3D12_RENDER_PASS_TIER_1 = 1, + D3D12_RENDER_PASS_TIER_2 = 2 + } D3D12_RENDER_PASS_TIER; + +typedef +enum D3D12_RAYTRACING_TIER + { + D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0, + D3D12_RAYTRACING_TIER_1_0 = 10 + } D3D12_RAYTRACING_TIER; + +typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5 + { + _Out_ BOOL SRVOnlyTiledResourceTier3; + _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier; + _Out_ D3D12_RAYTRACING_TIER RaytracingTier; + } D3D12_FEATURE_DATA_D3D12_OPTIONS5; + +typedef +enum D3D12_VARIABLE_SHADING_RATE_TIER + { + D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0, + D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1, + D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2 + } D3D12_VARIABLE_SHADING_RATE_TIER; + +typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6 + { + _Out_ BOOL AdditionalShadingRatesSupported; + _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing; + _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier; + _Out_ UINT ShadingRateImageTileSize; + _Out_ BOOL BackgroundProcessingSupported; + } D3D12_FEATURE_DATA_D3D12_OPTIONS6; + +typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND + { + _In_ GUID CommandId; + _In_ UINT NodeMask; + _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData; + _In_ SIZE_T QueryInputDataSizeInBytes; + _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData; + _In_ SIZE_T QueryOutputDataSizeInBytes; + } D3D12_FEATURE_DATA_QUERY_META_COMMAND; + +typedef struct D3D12_RESOURCE_ALLOCATION_INFO + { + UINT64 SizeInBytes; + UINT64 Alignment; + } D3D12_RESOURCE_ALLOCATION_INFO; + +typedef struct D3D12_RESOURCE_ALLOCATION_INFO1 + { + UINT64 Offset; + UINT64 Alignment; + UINT64 SizeInBytes; + } D3D12_RESOURCE_ALLOCATION_INFO1; + +typedef +enum D3D12_HEAP_TYPE + { + D3D12_HEAP_TYPE_DEFAULT = 1, + D3D12_HEAP_TYPE_UPLOAD = 2, + D3D12_HEAP_TYPE_READBACK = 3, + D3D12_HEAP_TYPE_CUSTOM = 4 + } D3D12_HEAP_TYPE; + +typedef +enum D3D12_CPU_PAGE_PROPERTY + { + D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0, + D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1, + D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2, + D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3 + } D3D12_CPU_PAGE_PROPERTY; + +typedef +enum D3D12_MEMORY_POOL + { + D3D12_MEMORY_POOL_UNKNOWN = 0, + D3D12_MEMORY_POOL_L0 = 1, + D3D12_MEMORY_POOL_L1 = 2 + } D3D12_MEMORY_POOL; + +typedef struct D3D12_HEAP_PROPERTIES + { + D3D12_HEAP_TYPE Type; + D3D12_CPU_PAGE_PROPERTY CPUPageProperty; + D3D12_MEMORY_POOL MemoryPoolPreference; + UINT CreationNodeMask; + UINT VisibleNodeMask; + } D3D12_HEAP_PROPERTIES; + +typedef +enum D3D12_HEAP_FLAGS + { + D3D12_HEAP_FLAG_NONE = 0, + D3D12_HEAP_FLAG_SHARED = 0x1, + D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4, + D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8, + D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20, + D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40, + D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80, + D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100, + D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200, + D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400, + D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0, + D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0, + D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44, + D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84 + } D3D12_HEAP_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS ); +typedef struct D3D12_HEAP_DESC + { + UINT64 SizeInBytes; + D3D12_HEAP_PROPERTIES Properties; + UINT64 Alignment; + D3D12_HEAP_FLAGS Flags; + } D3D12_HEAP_DESC; + +typedef +enum D3D12_RESOURCE_DIMENSION + { + D3D12_RESOURCE_DIMENSION_UNKNOWN = 0, + D3D12_RESOURCE_DIMENSION_BUFFER = 1, + D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2, + D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3, + D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4 + } D3D12_RESOURCE_DIMENSION; + +typedef +enum D3D12_TEXTURE_LAYOUT + { + D3D12_TEXTURE_LAYOUT_UNKNOWN = 0, + D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, + D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2, + D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3 + } D3D12_TEXTURE_LAYOUT; + +typedef +enum D3D12_RESOURCE_FLAGS + { + D3D12_RESOURCE_FLAG_NONE = 0, + D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1, + D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2, + D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4, + D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8, + D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10, + D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20, + D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40 + } D3D12_RESOURCE_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS ); +typedef struct D3D12_RESOURCE_DESC + { + D3D12_RESOURCE_DIMENSION Dimension; + UINT64 Alignment; + UINT64 Width; + UINT Height; + UINT16 DepthOrArraySize; + UINT16 MipLevels; + DXGI_FORMAT Format; + DXGI_SAMPLE_DESC SampleDesc; + D3D12_TEXTURE_LAYOUT Layout; + D3D12_RESOURCE_FLAGS Flags; + } D3D12_RESOURCE_DESC; + +typedef struct D3D12_DEPTH_STENCIL_VALUE + { + FLOAT Depth; + UINT8 Stencil; + } D3D12_DEPTH_STENCIL_VALUE; + +typedef struct D3D12_CLEAR_VALUE + { + DXGI_FORMAT Format; + union + { + FLOAT Color[ 4 ]; + D3D12_DEPTH_STENCIL_VALUE DepthStencil; + } ; + } D3D12_CLEAR_VALUE; + +typedef struct D3D12_RANGE + { + SIZE_T Begin; + SIZE_T End; + } D3D12_RANGE; + +typedef struct D3D12_RANGE_UINT64 + { + UINT64 Begin; + UINT64 End; + } D3D12_RANGE_UINT64; + +typedef struct D3D12_SUBRESOURCE_RANGE_UINT64 + { + UINT Subresource; + D3D12_RANGE_UINT64 Range; + } D3D12_SUBRESOURCE_RANGE_UINT64; + +typedef struct D3D12_SUBRESOURCE_INFO + { + UINT64 Offset; + UINT RowPitch; + UINT DepthPitch; + } D3D12_SUBRESOURCE_INFO; + +typedef struct D3D12_TILED_RESOURCE_COORDINATE + { + UINT X; + UINT Y; + UINT Z; + UINT Subresource; + } D3D12_TILED_RESOURCE_COORDINATE; + +typedef struct D3D12_TILE_REGION_SIZE + { + UINT NumTiles; + BOOL UseBox; + UINT Width; + UINT16 Height; + UINT16 Depth; + } D3D12_TILE_REGION_SIZE; + +typedef +enum D3D12_TILE_RANGE_FLAGS + { + D3D12_TILE_RANGE_FLAG_NONE = 0, + D3D12_TILE_RANGE_FLAG_NULL = 1, + D3D12_TILE_RANGE_FLAG_SKIP = 2, + D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4 + } D3D12_TILE_RANGE_FLAGS; + +typedef struct D3D12_SUBRESOURCE_TILING + { + UINT WidthInTiles; + UINT16 HeightInTiles; + UINT16 DepthInTiles; + UINT StartTileIndexInOverallResource; + } D3D12_SUBRESOURCE_TILING; + +typedef struct D3D12_TILE_SHAPE + { + UINT WidthInTexels; + UINT HeightInTexels; + UINT DepthInTexels; + } D3D12_TILE_SHAPE; + +typedef struct D3D12_PACKED_MIP_INFO + { + UINT8 NumStandardMips; + UINT8 NumPackedMips; + UINT NumTilesForPackedMips; + UINT StartTileIndexInOverallResource; + } D3D12_PACKED_MIP_INFO; + +typedef +enum D3D12_TILE_MAPPING_FLAGS + { + D3D12_TILE_MAPPING_FLAG_NONE = 0, + D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1 + } D3D12_TILE_MAPPING_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS ); +typedef +enum D3D12_TILE_COPY_FLAGS + { + D3D12_TILE_COPY_FLAG_NONE = 0, + D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1, + D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2, + D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4 + } D3D12_TILE_COPY_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS ); +typedef +enum D3D12_RESOURCE_STATES + { + D3D12_RESOURCE_STATE_COMMON = 0, + D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1, + D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2, + D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4, + D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8, + D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10, + D3D12_RESOURCE_STATE_DEPTH_READ = 0x20, + D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40, + D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80, + D3D12_RESOURCE_STATE_STREAM_OUT = 0x100, + D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200, + D3D12_RESOURCE_STATE_COPY_DEST = 0x400, + D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800, + D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000, + D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000, + D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000, + D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000, + D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) , + D3D12_RESOURCE_STATE_PRESENT = 0, + D3D12_RESOURCE_STATE_PREDICATION = 0x200, + D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000, + D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000, + D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000, + D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000, + D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000, + D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000 + } D3D12_RESOURCE_STATES; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES ); +typedef +enum D3D12_RESOURCE_BARRIER_TYPE + { + D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0, + D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) , + D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 ) + } D3D12_RESOURCE_BARRIER_TYPE; + + +typedef struct D3D12_RESOURCE_TRANSITION_BARRIER + { + ID3D12Resource *pResource; + UINT Subresource; + D3D12_RESOURCE_STATES StateBefore; + D3D12_RESOURCE_STATES StateAfter; + } D3D12_RESOURCE_TRANSITION_BARRIER; + +typedef struct D3D12_RESOURCE_ALIASING_BARRIER + { + ID3D12Resource *pResourceBefore; + ID3D12Resource *pResourceAfter; + } D3D12_RESOURCE_ALIASING_BARRIER; + +typedef struct D3D12_RESOURCE_UAV_BARRIER + { + ID3D12Resource *pResource; + } D3D12_RESOURCE_UAV_BARRIER; + +typedef +enum D3D12_RESOURCE_BARRIER_FLAGS + { + D3D12_RESOURCE_BARRIER_FLAG_NONE = 0, + D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1, + D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2 + } D3D12_RESOURCE_BARRIER_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS ); +typedef struct D3D12_RESOURCE_BARRIER + { + D3D12_RESOURCE_BARRIER_TYPE Type; + D3D12_RESOURCE_BARRIER_FLAGS Flags; + union + { + D3D12_RESOURCE_TRANSITION_BARRIER Transition; + D3D12_RESOURCE_ALIASING_BARRIER Aliasing; + D3D12_RESOURCE_UAV_BARRIER UAV; + } ; + } D3D12_RESOURCE_BARRIER; + +typedef struct D3D12_SUBRESOURCE_FOOTPRINT + { + DXGI_FORMAT Format; + UINT Width; + UINT Height; + UINT Depth; + UINT RowPitch; + } D3D12_SUBRESOURCE_FOOTPRINT; + +typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT + { + UINT64 Offset; + D3D12_SUBRESOURCE_FOOTPRINT Footprint; + } D3D12_PLACED_SUBRESOURCE_FOOTPRINT; + +typedef +enum D3D12_TEXTURE_COPY_TYPE + { + D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0, + D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1 + } D3D12_TEXTURE_COPY_TYPE; + +typedef struct D3D12_TEXTURE_COPY_LOCATION + { + ID3D12Resource *pResource; + D3D12_TEXTURE_COPY_TYPE Type; + union + { + D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint; + UINT SubresourceIndex; + } ; + } D3D12_TEXTURE_COPY_LOCATION; + +typedef +enum D3D12_RESOLVE_MODE + { + D3D12_RESOLVE_MODE_DECOMPRESS = 0, + D3D12_RESOLVE_MODE_MIN = 1, + D3D12_RESOLVE_MODE_MAX = 2, + D3D12_RESOLVE_MODE_AVERAGE = 3 + } D3D12_RESOLVE_MODE; + +typedef struct D3D12_SAMPLE_POSITION + { + INT8 X; + INT8 Y; + } D3D12_SAMPLE_POSITION; + +typedef struct D3D12_VIEW_INSTANCE_LOCATION + { + UINT ViewportArrayIndex; + UINT RenderTargetArrayIndex; + } D3D12_VIEW_INSTANCE_LOCATION; + +typedef +enum D3D12_VIEW_INSTANCING_FLAGS + { + D3D12_VIEW_INSTANCING_FLAG_NONE = 0, + D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1 + } D3D12_VIEW_INSTANCING_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS ); +typedef struct D3D12_VIEW_INSTANCING_DESC + { + UINT ViewInstanceCount; + _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations; + D3D12_VIEW_INSTANCING_FLAGS Flags; + } D3D12_VIEW_INSTANCING_DESC; + +typedef +enum D3D12_SHADER_COMPONENT_MAPPING + { + D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0, + D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1, + D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2, + D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3, + D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4, + D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5 + } D3D12_SHADER_COMPONENT_MAPPING; + +#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 +#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 +#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) +#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \ + (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK)) +#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) +typedef +enum D3D12_BUFFER_SRV_FLAGS + { + D3D12_BUFFER_SRV_FLAG_NONE = 0, + D3D12_BUFFER_SRV_FLAG_RAW = 0x1 + } D3D12_BUFFER_SRV_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS ); +typedef struct D3D12_BUFFER_SRV + { + UINT64 FirstElement; + UINT NumElements; + UINT StructureByteStride; + D3D12_BUFFER_SRV_FLAGS Flags; + } D3D12_BUFFER_SRV; + +typedef struct D3D12_TEX1D_SRV + { + UINT MostDetailedMip; + UINT MipLevels; + FLOAT ResourceMinLODClamp; + } D3D12_TEX1D_SRV; + +typedef struct D3D12_TEX1D_ARRAY_SRV + { + UINT MostDetailedMip; + UINT MipLevels; + UINT FirstArraySlice; + UINT ArraySize; + FLOAT ResourceMinLODClamp; + } D3D12_TEX1D_ARRAY_SRV; + +typedef struct D3D12_TEX2D_SRV + { + UINT MostDetailedMip; + UINT MipLevels; + UINT PlaneSlice; + FLOAT ResourceMinLODClamp; + } D3D12_TEX2D_SRV; + +typedef struct D3D12_TEX2D_ARRAY_SRV + { + UINT MostDetailedMip; + UINT MipLevels; + UINT FirstArraySlice; + UINT ArraySize; + UINT PlaneSlice; + FLOAT ResourceMinLODClamp; + } D3D12_TEX2D_ARRAY_SRV; + +typedef struct D3D12_TEX3D_SRV + { + UINT MostDetailedMip; + UINT MipLevels; + FLOAT ResourceMinLODClamp; + } D3D12_TEX3D_SRV; + +typedef struct D3D12_TEXCUBE_SRV + { + UINT MostDetailedMip; + UINT MipLevels; + FLOAT ResourceMinLODClamp; + } D3D12_TEXCUBE_SRV; + +typedef struct D3D12_TEXCUBE_ARRAY_SRV + { + UINT MostDetailedMip; + UINT MipLevels; + UINT First2DArrayFace; + UINT NumCubes; + FLOAT ResourceMinLODClamp; + } D3D12_TEXCUBE_ARRAY_SRV; + +typedef struct D3D12_TEX2DMS_SRV + { + UINT UnusedField_NothingToDefine; + } D3D12_TEX2DMS_SRV; + +typedef struct D3D12_TEX2DMS_ARRAY_SRV + { + UINT FirstArraySlice; + UINT ArraySize; + } D3D12_TEX2DMS_ARRAY_SRV; + +typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV + { + D3D12_GPU_VIRTUAL_ADDRESS Location; + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV; + +typedef +enum D3D12_SRV_DIMENSION + { + D3D12_SRV_DIMENSION_UNKNOWN = 0, + D3D12_SRV_DIMENSION_BUFFER = 1, + D3D12_SRV_DIMENSION_TEXTURE1D = 2, + D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3, + D3D12_SRV_DIMENSION_TEXTURE2D = 4, + D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5, + D3D12_SRV_DIMENSION_TEXTURE2DMS = 6, + D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7, + D3D12_SRV_DIMENSION_TEXTURE3D = 8, + D3D12_SRV_DIMENSION_TEXTURECUBE = 9, + D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10, + D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11 + } D3D12_SRV_DIMENSION; + +typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC + { + DXGI_FORMAT Format; + D3D12_SRV_DIMENSION ViewDimension; + UINT Shader4ComponentMapping; + union + { + D3D12_BUFFER_SRV Buffer; + D3D12_TEX1D_SRV Texture1D; + D3D12_TEX1D_ARRAY_SRV Texture1DArray; + D3D12_TEX2D_SRV Texture2D; + D3D12_TEX2D_ARRAY_SRV Texture2DArray; + D3D12_TEX2DMS_SRV Texture2DMS; + D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray; + D3D12_TEX3D_SRV Texture3D; + D3D12_TEXCUBE_SRV TextureCube; + D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray; + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure; + } ; + } D3D12_SHADER_RESOURCE_VIEW_DESC; + +typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC + { + D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; + UINT SizeInBytes; + } D3D12_CONSTANT_BUFFER_VIEW_DESC; + +typedef +enum D3D12_FILTER + { + D3D12_FILTER_MIN_MAG_MIP_POINT = 0, + D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1, + D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4, + D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5, + D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10, + D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11, + D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14, + D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15, + D3D12_FILTER_ANISOTROPIC = 0x55, + D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80, + D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81, + D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84, + D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85, + D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90, + D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91, + D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94, + D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95, + D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5, + D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100, + D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101, + D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104, + D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105, + D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110, + D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111, + D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114, + D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115, + D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155, + D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180, + D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181, + D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184, + D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185, + D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190, + D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191, + D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194, + D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195, + D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5 + } D3D12_FILTER; + +typedef +enum D3D12_FILTER_TYPE + { + D3D12_FILTER_TYPE_POINT = 0, + D3D12_FILTER_TYPE_LINEAR = 1 + } D3D12_FILTER_TYPE; + +typedef +enum D3D12_FILTER_REDUCTION_TYPE + { + D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0, + D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1, + D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2, + D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3 + } D3D12_FILTER_REDUCTION_TYPE; + +#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 ) + +#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 ) + +#define D3D12_FILTER_TYPE_MASK ( 0x3 ) + +#define D3D12_MIN_FILTER_SHIFT ( 4 ) + +#define D3D12_MAG_FILTER_SHIFT ( 2 ) + +#define D3D12_MIP_FILTER_SHIFT ( 0 ) + +#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 ) + +#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \ + ( ( D3D12_FILTER ) ( \ + ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \ + ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \ + ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \ + ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) +#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \ + ( ( D3D12_FILTER ) ( \ + D3D12_ANISOTROPIC_FILTERING_BIT | \ + D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \ + D3D12_FILTER_TYPE_LINEAR, \ + D3D12_FILTER_TYPE_LINEAR, \ + reduction ) ) ) +#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \ + ( ( D3D12_FILTER_TYPE ) \ + ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) +#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \ + ( ( D3D12_FILTER_TYPE ) \ + ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) +#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \ + ( ( D3D12_FILTER_TYPE ) \ + ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) +#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \ + ( ( D3D12_FILTER_REDUCTION_TYPE ) \ + ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) +#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \ + ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) +#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \ + ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \ + ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \ + ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \ + ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) ) +typedef +enum D3D12_TEXTURE_ADDRESS_MODE + { + D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1, + D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2, + D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3, + D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4, + D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5 + } D3D12_TEXTURE_ADDRESS_MODE; + +typedef struct D3D12_SAMPLER_DESC + { + D3D12_FILTER Filter; + D3D12_TEXTURE_ADDRESS_MODE AddressU; + D3D12_TEXTURE_ADDRESS_MODE AddressV; + D3D12_TEXTURE_ADDRESS_MODE AddressW; + FLOAT MipLODBias; + UINT MaxAnisotropy; + D3D12_COMPARISON_FUNC ComparisonFunc; + FLOAT BorderColor[ 4 ]; + FLOAT MinLOD; + FLOAT MaxLOD; + } D3D12_SAMPLER_DESC; + +typedef +enum D3D12_BUFFER_UAV_FLAGS + { + D3D12_BUFFER_UAV_FLAG_NONE = 0, + D3D12_BUFFER_UAV_FLAG_RAW = 0x1 + } D3D12_BUFFER_UAV_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS ); +typedef struct D3D12_BUFFER_UAV + { + UINT64 FirstElement; + UINT NumElements; + UINT StructureByteStride; + UINT64 CounterOffsetInBytes; + D3D12_BUFFER_UAV_FLAGS Flags; + } D3D12_BUFFER_UAV; + +typedef struct D3D12_TEX1D_UAV + { + UINT MipSlice; + } D3D12_TEX1D_UAV; + +typedef struct D3D12_TEX1D_ARRAY_UAV + { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; + } D3D12_TEX1D_ARRAY_UAV; + +typedef struct D3D12_TEX2D_UAV + { + UINT MipSlice; + UINT PlaneSlice; + } D3D12_TEX2D_UAV; + +typedef struct D3D12_TEX2D_ARRAY_UAV + { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; + UINT PlaneSlice; + } D3D12_TEX2D_ARRAY_UAV; + +typedef struct D3D12_TEX3D_UAV + { + UINT MipSlice; + UINT FirstWSlice; + UINT WSize; + } D3D12_TEX3D_UAV; + +typedef +enum D3D12_UAV_DIMENSION + { + D3D12_UAV_DIMENSION_UNKNOWN = 0, + D3D12_UAV_DIMENSION_BUFFER = 1, + D3D12_UAV_DIMENSION_TEXTURE1D = 2, + D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3, + D3D12_UAV_DIMENSION_TEXTURE2D = 4, + D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5, + D3D12_UAV_DIMENSION_TEXTURE3D = 8 + } D3D12_UAV_DIMENSION; + +typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC + { + DXGI_FORMAT Format; + D3D12_UAV_DIMENSION ViewDimension; + union + { + D3D12_BUFFER_UAV Buffer; + D3D12_TEX1D_UAV Texture1D; + D3D12_TEX1D_ARRAY_UAV Texture1DArray; + D3D12_TEX2D_UAV Texture2D; + D3D12_TEX2D_ARRAY_UAV Texture2DArray; + D3D12_TEX3D_UAV Texture3D; + } ; + } D3D12_UNORDERED_ACCESS_VIEW_DESC; + +typedef struct D3D12_BUFFER_RTV + { + UINT64 FirstElement; + UINT NumElements; + } D3D12_BUFFER_RTV; + +typedef struct D3D12_TEX1D_RTV + { + UINT MipSlice; + } D3D12_TEX1D_RTV; + +typedef struct D3D12_TEX1D_ARRAY_RTV + { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; + } D3D12_TEX1D_ARRAY_RTV; + +typedef struct D3D12_TEX2D_RTV + { + UINT MipSlice; + UINT PlaneSlice; + } D3D12_TEX2D_RTV; + +typedef struct D3D12_TEX2DMS_RTV + { + UINT UnusedField_NothingToDefine; + } D3D12_TEX2DMS_RTV; + +typedef struct D3D12_TEX2D_ARRAY_RTV + { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; + UINT PlaneSlice; + } D3D12_TEX2D_ARRAY_RTV; + +typedef struct D3D12_TEX2DMS_ARRAY_RTV + { + UINT FirstArraySlice; + UINT ArraySize; + } D3D12_TEX2DMS_ARRAY_RTV; + +typedef struct D3D12_TEX3D_RTV + { + UINT MipSlice; + UINT FirstWSlice; + UINT WSize; + } D3D12_TEX3D_RTV; + +typedef +enum D3D12_RTV_DIMENSION + { + D3D12_RTV_DIMENSION_UNKNOWN = 0, + D3D12_RTV_DIMENSION_BUFFER = 1, + D3D12_RTV_DIMENSION_TEXTURE1D = 2, + D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3, + D3D12_RTV_DIMENSION_TEXTURE2D = 4, + D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5, + D3D12_RTV_DIMENSION_TEXTURE2DMS = 6, + D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7, + D3D12_RTV_DIMENSION_TEXTURE3D = 8 + } D3D12_RTV_DIMENSION; + +typedef struct D3D12_RENDER_TARGET_VIEW_DESC + { + DXGI_FORMAT Format; + D3D12_RTV_DIMENSION ViewDimension; + union + { + D3D12_BUFFER_RTV Buffer; + D3D12_TEX1D_RTV Texture1D; + D3D12_TEX1D_ARRAY_RTV Texture1DArray; + D3D12_TEX2D_RTV Texture2D; + D3D12_TEX2D_ARRAY_RTV Texture2DArray; + D3D12_TEX2DMS_RTV Texture2DMS; + D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray; + D3D12_TEX3D_RTV Texture3D; + } ; + } D3D12_RENDER_TARGET_VIEW_DESC; + +typedef struct D3D12_TEX1D_DSV + { + UINT MipSlice; + } D3D12_TEX1D_DSV; + +typedef struct D3D12_TEX1D_ARRAY_DSV + { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; + } D3D12_TEX1D_ARRAY_DSV; + +typedef struct D3D12_TEX2D_DSV + { + UINT MipSlice; + } D3D12_TEX2D_DSV; + +typedef struct D3D12_TEX2D_ARRAY_DSV + { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; + } D3D12_TEX2D_ARRAY_DSV; + +typedef struct D3D12_TEX2DMS_DSV + { + UINT UnusedField_NothingToDefine; + } D3D12_TEX2DMS_DSV; + +typedef struct D3D12_TEX2DMS_ARRAY_DSV + { + UINT FirstArraySlice; + UINT ArraySize; + } D3D12_TEX2DMS_ARRAY_DSV; + +typedef +enum D3D12_DSV_FLAGS + { + D3D12_DSV_FLAG_NONE = 0, + D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1, + D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2 + } D3D12_DSV_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS ); +typedef +enum D3D12_DSV_DIMENSION + { + D3D12_DSV_DIMENSION_UNKNOWN = 0, + D3D12_DSV_DIMENSION_TEXTURE1D = 1, + D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2, + D3D12_DSV_DIMENSION_TEXTURE2D = 3, + D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4, + D3D12_DSV_DIMENSION_TEXTURE2DMS = 5, + D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6 + } D3D12_DSV_DIMENSION; + +typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC + { + DXGI_FORMAT Format; + D3D12_DSV_DIMENSION ViewDimension; + D3D12_DSV_FLAGS Flags; + union + { + D3D12_TEX1D_DSV Texture1D; + D3D12_TEX1D_ARRAY_DSV Texture1DArray; + D3D12_TEX2D_DSV Texture2D; + D3D12_TEX2D_ARRAY_DSV Texture2DArray; + D3D12_TEX2DMS_DSV Texture2DMS; + D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray; + } ; + } D3D12_DEPTH_STENCIL_VIEW_DESC; + +typedef +enum D3D12_CLEAR_FLAGS + { + D3D12_CLEAR_FLAG_DEPTH = 0x1, + D3D12_CLEAR_FLAG_STENCIL = 0x2 + } D3D12_CLEAR_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS ); +typedef +enum D3D12_FENCE_FLAGS + { + D3D12_FENCE_FLAG_NONE = 0, + D3D12_FENCE_FLAG_SHARED = 0x1, + D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2, + D3D12_FENCE_FLAG_NON_MONITORED = 0x4 + } D3D12_FENCE_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS ); +typedef +enum D3D12_DESCRIPTOR_HEAP_TYPE + { + D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0, + D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) , + D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) , + D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) , + D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 ) + } D3D12_DESCRIPTOR_HEAP_TYPE; + +typedef +enum D3D12_DESCRIPTOR_HEAP_FLAGS + { + D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0, + D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1 + } D3D12_DESCRIPTOR_HEAP_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS ); +typedef struct D3D12_DESCRIPTOR_HEAP_DESC + { + D3D12_DESCRIPTOR_HEAP_TYPE Type; + UINT NumDescriptors; + D3D12_DESCRIPTOR_HEAP_FLAGS Flags; + UINT NodeMask; + } D3D12_DESCRIPTOR_HEAP_DESC; + +typedef +enum D3D12_DESCRIPTOR_RANGE_TYPE + { + D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0, + D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) , + D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) , + D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 ) + } D3D12_DESCRIPTOR_RANGE_TYPE; + +typedef struct D3D12_DESCRIPTOR_RANGE + { + D3D12_DESCRIPTOR_RANGE_TYPE RangeType; + UINT NumDescriptors; + UINT BaseShaderRegister; + UINT RegisterSpace; + UINT OffsetInDescriptorsFromTableStart; + } D3D12_DESCRIPTOR_RANGE; + +typedef struct D3D12_ROOT_DESCRIPTOR_TABLE + { + UINT NumDescriptorRanges; + _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges; + } D3D12_ROOT_DESCRIPTOR_TABLE; + +typedef struct D3D12_ROOT_CONSTANTS + { + UINT ShaderRegister; + UINT RegisterSpace; + UINT Num32BitValues; + } D3D12_ROOT_CONSTANTS; + +typedef struct D3D12_ROOT_DESCRIPTOR + { + UINT ShaderRegister; + UINT RegisterSpace; + } D3D12_ROOT_DESCRIPTOR; + +typedef +enum D3D12_SHADER_VISIBILITY + { + D3D12_SHADER_VISIBILITY_ALL = 0, + D3D12_SHADER_VISIBILITY_VERTEX = 1, + D3D12_SHADER_VISIBILITY_HULL = 2, + D3D12_SHADER_VISIBILITY_DOMAIN = 3, + D3D12_SHADER_VISIBILITY_GEOMETRY = 4, + D3D12_SHADER_VISIBILITY_PIXEL = 5 + } D3D12_SHADER_VISIBILITY; + +typedef +enum D3D12_ROOT_PARAMETER_TYPE + { + D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0, + D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) , + D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) , + D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) , + D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 ) + } D3D12_ROOT_PARAMETER_TYPE; + +typedef struct D3D12_ROOT_PARAMETER + { + D3D12_ROOT_PARAMETER_TYPE ParameterType; + union + { + D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable; + D3D12_ROOT_CONSTANTS Constants; + D3D12_ROOT_DESCRIPTOR Descriptor; + } ; + D3D12_SHADER_VISIBILITY ShaderVisibility; + } D3D12_ROOT_PARAMETER; + +typedef +enum D3D12_ROOT_SIGNATURE_FLAGS + { + D3D12_ROOT_SIGNATURE_FLAG_NONE = 0, + D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1, + D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2, + D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4, + D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8, + D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10, + D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20, + D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40, + D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80 + } D3D12_ROOT_SIGNATURE_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS ); +typedef +enum D3D12_STATIC_BORDER_COLOR + { + D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0, + D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) , + D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 ) + } D3D12_STATIC_BORDER_COLOR; + +typedef struct D3D12_STATIC_SAMPLER_DESC + { + D3D12_FILTER Filter; + D3D12_TEXTURE_ADDRESS_MODE AddressU; + D3D12_TEXTURE_ADDRESS_MODE AddressV; + D3D12_TEXTURE_ADDRESS_MODE AddressW; + FLOAT MipLODBias; + UINT MaxAnisotropy; + D3D12_COMPARISON_FUNC ComparisonFunc; + D3D12_STATIC_BORDER_COLOR BorderColor; + FLOAT MinLOD; + FLOAT MaxLOD; + UINT ShaderRegister; + UINT RegisterSpace; + D3D12_SHADER_VISIBILITY ShaderVisibility; + } D3D12_STATIC_SAMPLER_DESC; + +typedef struct D3D12_ROOT_SIGNATURE_DESC + { + UINT NumParameters; + _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters; + UINT NumStaticSamplers; + _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers; + D3D12_ROOT_SIGNATURE_FLAGS Flags; + } D3D12_ROOT_SIGNATURE_DESC; + +typedef +enum D3D12_DESCRIPTOR_RANGE_FLAGS + { + D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0, + D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1, + D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2, + D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4, + D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8, + D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000 + } D3D12_DESCRIPTOR_RANGE_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS ); +typedef struct D3D12_DESCRIPTOR_RANGE1 + { + D3D12_DESCRIPTOR_RANGE_TYPE RangeType; + UINT NumDescriptors; + UINT BaseShaderRegister; + UINT RegisterSpace; + D3D12_DESCRIPTOR_RANGE_FLAGS Flags; + UINT OffsetInDescriptorsFromTableStart; + } D3D12_DESCRIPTOR_RANGE1; + +typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1 + { + UINT NumDescriptorRanges; + _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges; + } D3D12_ROOT_DESCRIPTOR_TABLE1; + +typedef +enum D3D12_ROOT_DESCRIPTOR_FLAGS + { + D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0, + D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2, + D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4, + D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8 + } D3D12_ROOT_DESCRIPTOR_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS ); +typedef struct D3D12_ROOT_DESCRIPTOR1 + { + UINT ShaderRegister; + UINT RegisterSpace; + D3D12_ROOT_DESCRIPTOR_FLAGS Flags; + } D3D12_ROOT_DESCRIPTOR1; + +typedef struct D3D12_ROOT_PARAMETER1 + { + D3D12_ROOT_PARAMETER_TYPE ParameterType; + union + { + D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable; + D3D12_ROOT_CONSTANTS Constants; + D3D12_ROOT_DESCRIPTOR1 Descriptor; + } ; + D3D12_SHADER_VISIBILITY ShaderVisibility; + } D3D12_ROOT_PARAMETER1; + +typedef struct D3D12_ROOT_SIGNATURE_DESC1 + { + UINT NumParameters; + _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters; + UINT NumStaticSamplers; + _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers; + D3D12_ROOT_SIGNATURE_FLAGS Flags; + } D3D12_ROOT_SIGNATURE_DESC1; + +typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC + { + D3D_ROOT_SIGNATURE_VERSION Version; + union + { + D3D12_ROOT_SIGNATURE_DESC Desc_1_0; + D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1; + } ; + } D3D12_VERSIONED_ROOT_SIGNATURE_DESC; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec; + +#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ +#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ + +/* interface ID3D12RootSignatureDeserializer */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12RootSignatureDeserializer; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046") + ID3D12RootSignatureDeserializer : public IUnknown + { + public: + virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12RootSignatureDeserializerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12RootSignatureDeserializer * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12RootSignatureDeserializer * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12RootSignatureDeserializer * This); + + const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )( + ID3D12RootSignatureDeserializer * This); + + END_INTERFACE + } ID3D12RootSignatureDeserializerVtbl; + + interface ID3D12RootSignatureDeserializer + { + CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12RootSignatureDeserializer_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12RootSignatureDeserializer_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \ + ( (This)->lpVtbl -> GetRootSignatureDesc(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ +#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ + +/* interface ID3D12VersionedRootSignatureDeserializer */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0") + ID3D12VersionedRootSignatureDeserializer : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion( + D3D_ROOT_SIGNATURE_VERSION convertToVersion, + _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0; + + virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12VersionedRootSignatureDeserializerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12VersionedRootSignatureDeserializer * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12VersionedRootSignatureDeserializer * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12VersionedRootSignatureDeserializer * This); + + HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )( + ID3D12VersionedRootSignatureDeserializer * This, + D3D_ROOT_SIGNATURE_VERSION convertToVersion, + _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc); + + const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )( + ID3D12VersionedRootSignatureDeserializer * This); + + END_INTERFACE + } ID3D12VersionedRootSignatureDeserializerVtbl; + + interface ID3D12VersionedRootSignatureDeserializer + { + CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12VersionedRootSignatureDeserializer_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \ + ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) ) + +#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \ + ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0003 */ +/* [local] */ + +typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)( + _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature, + _In_ D3D_ROOT_SIGNATURE_VERSION Version, + _Out_ ID3DBlob** ppBlob, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob); + +HRESULT WINAPI D3D12SerializeRootSignature( + _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature, + _In_ D3D_ROOT_SIGNATURE_VERSION Version, + _Out_ ID3DBlob** ppBlob, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob); + +typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)( + _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSizeInBytes, + _In_ REFIID pRootSignatureDeserializerInterface, + _Out_ void** ppRootSignatureDeserializer); + +HRESULT WINAPI D3D12CreateRootSignatureDeserializer( + _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSizeInBytes, + _In_ REFIID pRootSignatureDeserializerInterface, + _Out_ void** ppRootSignatureDeserializer); + +typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)( + _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature, + _Out_ ID3DBlob** ppBlob, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob); + +HRESULT WINAPI D3D12SerializeVersionedRootSignature( + _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature, + _Out_ ID3DBlob** ppBlob, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob); + +typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)( + _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSizeInBytes, + _In_ REFIID pRootSignatureDeserializerInterface, + _Out_ void** ppRootSignatureDeserializer); + +HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer( + _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSizeInBytes, + _In_ REFIID pRootSignatureDeserializerInterface, + _Out_ void** ppRootSignatureDeserializer); + +typedef struct D3D12_CPU_DESCRIPTOR_HANDLE + { + SIZE_T ptr; + } D3D12_CPU_DESCRIPTOR_HANDLE; + +typedef struct D3D12_GPU_DESCRIPTOR_HANDLE + { + UINT64 ptr; + } D3D12_GPU_DESCRIPTOR_HANDLE; + +// If rects are supplied in D3D12_DISCARD_REGION, below, the resource +// must have 2D subresources with all specified subresources the same dimension. +typedef struct D3D12_DISCARD_REGION + { + UINT NumRects; + _In_reads_(NumRects) const D3D12_RECT *pRects; + UINT FirstSubresource; + UINT NumSubresources; + } D3D12_DISCARD_REGION; + +typedef +enum D3D12_QUERY_HEAP_TYPE + { + D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0, + D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1, + D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2, + D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3, + D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4, + D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5 + } D3D12_QUERY_HEAP_TYPE; + +typedef struct D3D12_QUERY_HEAP_DESC + { + D3D12_QUERY_HEAP_TYPE Type; + UINT Count; + UINT NodeMask; + } D3D12_QUERY_HEAP_DESC; + +typedef +enum D3D12_QUERY_TYPE + { + D3D12_QUERY_TYPE_OCCLUSION = 0, + D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1, + D3D12_QUERY_TYPE_TIMESTAMP = 2, + D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3, + D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4, + D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5, + D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6, + D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7, + D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8 + } D3D12_QUERY_TYPE; + +typedef +enum D3D12_PREDICATION_OP + { + D3D12_PREDICATION_OP_EQUAL_ZERO = 0, + D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1 + } D3D12_PREDICATION_OP; + +typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS + { + UINT64 IAVertices; + UINT64 IAPrimitives; + UINT64 VSInvocations; + UINT64 GSInvocations; + UINT64 GSPrimitives; + UINT64 CInvocations; + UINT64 CPrimitives; + UINT64 PSInvocations; + UINT64 HSInvocations; + UINT64 DSInvocations; + UINT64 CSInvocations; + } D3D12_QUERY_DATA_PIPELINE_STATISTICS; + +typedef struct D3D12_QUERY_DATA_SO_STATISTICS + { + UINT64 NumPrimitivesWritten; + UINT64 PrimitivesStorageNeeded; + } D3D12_QUERY_DATA_SO_STATISTICS; + +typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW + { + D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; + UINT64 SizeInBytes; + D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation; + } D3D12_STREAM_OUTPUT_BUFFER_VIEW; + +typedef struct D3D12_DRAW_ARGUMENTS + { + UINT VertexCountPerInstance; + UINT InstanceCount; + UINT StartVertexLocation; + UINT StartInstanceLocation; + } D3D12_DRAW_ARGUMENTS; + +typedef struct D3D12_DRAW_INDEXED_ARGUMENTS + { + UINT IndexCountPerInstance; + UINT InstanceCount; + UINT StartIndexLocation; + INT BaseVertexLocation; + UINT StartInstanceLocation; + } D3D12_DRAW_INDEXED_ARGUMENTS; + +typedef struct D3D12_DISPATCH_ARGUMENTS + { + UINT ThreadGroupCountX; + UINT ThreadGroupCountY; + UINT ThreadGroupCountZ; + } D3D12_DISPATCH_ARGUMENTS; + +typedef struct D3D12_VERTEX_BUFFER_VIEW + { + D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; + UINT SizeInBytes; + UINT StrideInBytes; + } D3D12_VERTEX_BUFFER_VIEW; + +typedef struct D3D12_INDEX_BUFFER_VIEW + { + D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; + UINT SizeInBytes; + DXGI_FORMAT Format; + } D3D12_INDEX_BUFFER_VIEW; + +typedef +enum D3D12_INDIRECT_ARGUMENT_TYPE + { + D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0, + D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) , + D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) , + D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) , + D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) , + D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) , + D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) , + D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) , + D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) + } D3D12_INDIRECT_ARGUMENT_TYPE; + +typedef struct D3D12_INDIRECT_ARGUMENT_DESC + { + D3D12_INDIRECT_ARGUMENT_TYPE Type; + union + { + struct + { + UINT Slot; + } VertexBuffer; + struct + { + UINT RootParameterIndex; + UINT DestOffsetIn32BitValues; + UINT Num32BitValuesToSet; + } Constant; + struct + { + UINT RootParameterIndex; + } ConstantBufferView; + struct + { + UINT RootParameterIndex; + } ShaderResourceView; + struct + { + UINT RootParameterIndex; + } UnorderedAccessView; + } ; + } D3D12_INDIRECT_ARGUMENT_DESC; + +typedef struct D3D12_COMMAND_SIGNATURE_DESC + { + UINT ByteStride; + UINT NumArgumentDescs; + _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs; + UINT NodeMask; + } D3D12_COMMAND_SIGNATURE_DESC; + + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec; + +#ifndef __ID3D12Pageable_INTERFACE_DEFINED__ +#define __ID3D12Pageable_INTERFACE_DEFINED__ + +/* interface ID3D12Pageable */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Pageable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6") + ID3D12Pageable : public ID3D12DeviceChild + { + public: + }; + + +#else /* C style interface */ + + typedef struct ID3D12PageableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Pageable * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Pageable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Pageable * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Pageable * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Pageable * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Pageable * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Pageable * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12Pageable * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + END_INTERFACE + } ID3D12PageableVtbl; + + interface ID3D12Pageable + { + CONST_VTBL struct ID3D12PageableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Pageable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Pageable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Pageable_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Heap_INTERFACE_DEFINED__ +#define __ID3D12Heap_INTERFACE_DEFINED__ + +/* interface ID3D12Heap */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Heap; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3") + ID3D12Heap : public ID3D12Pageable + { + public: + virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12HeapVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Heap * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Heap * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Heap * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Heap * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Heap * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Heap * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Heap * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12Heap * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )( + ID3D12Heap * This); + + END_INTERFACE + } ID3D12HeapVtbl; + + interface ID3D12Heap + { + CONST_VTBL struct ID3D12HeapVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Heap_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Heap_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Heap_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12Heap_GetDesc(This) \ + ( (This)->lpVtbl -> GetDesc(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + + + + + +#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Resource_INTERFACE_DEFINED__ +#define __ID3D12Resource_INTERFACE_DEFINED__ + +/* interface ID3D12Resource */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Resource; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad") + ID3D12Resource : public ID3D12Pageable + { + public: + virtual HRESULT STDMETHODCALLTYPE Map( + UINT Subresource, + _In_opt_ const D3D12_RANGE *pReadRange, + _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0; + + virtual void STDMETHODCALLTYPE Unmap( + UINT Subresource, + _In_opt_ const D3D12_RANGE *pWrittenRange) = 0; + + virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0; + + virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteToSubresource( + UINT DstSubresource, + _In_opt_ const D3D12_BOX *pDstBox, + _In_ const void *pSrcData, + UINT SrcRowPitch, + UINT SrcDepthPitch) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource( + _Out_ void *pDstData, + UINT DstRowPitch, + UINT DstDepthPitch, + UINT SrcSubresource, + _In_opt_ const D3D12_BOX *pSrcBox) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHeapProperties( + _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties, + _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12ResourceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Resource * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Resource * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Resource * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Resource * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Resource * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Resource * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Resource * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12Resource * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *Map )( + ID3D12Resource * This, + UINT Subresource, + _In_opt_ const D3D12_RANGE *pReadRange, + _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData); + + void ( STDMETHODCALLTYPE *Unmap )( + ID3D12Resource * This, + UINT Subresource, + _In_opt_ const D3D12_RANGE *pWrittenRange); + + D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )( + ID3D12Resource * This); + + D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )( + ID3D12Resource * This); + + HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )( + ID3D12Resource * This, + UINT DstSubresource, + _In_opt_ const D3D12_BOX *pDstBox, + _In_ const void *pSrcData, + UINT SrcRowPitch, + UINT SrcDepthPitch); + + HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )( + ID3D12Resource * This, + _Out_ void *pDstData, + UINT DstRowPitch, + UINT DstDepthPitch, + UINT SrcSubresource, + _In_opt_ const D3D12_BOX *pSrcBox); + + HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )( + ID3D12Resource * This, + _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties, + _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags); + + END_INTERFACE + } ID3D12ResourceVtbl; + + interface ID3D12Resource + { + CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Resource_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Resource_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Resource_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \ + ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) ) + +#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \ + ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) ) + +#define ID3D12Resource_GetDesc(This) \ + ( (This)->lpVtbl -> GetDesc(This) ) + +#define ID3D12Resource_GetGPUVirtualAddress(This) \ + ( (This)->lpVtbl -> GetGPUVirtualAddress(This) ) + +#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \ + ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) ) + +#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \ + ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) ) + +#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \ + ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + + + + + +#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__ +#define __ID3D12CommandAllocator_INTERFACE_DEFINED__ + +/* interface ID3D12CommandAllocator */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12CommandAllocator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24") + ID3D12CommandAllocator : public ID3D12Pageable + { + public: + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12CommandAllocatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12CommandAllocator * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12CommandAllocator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12CommandAllocator * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12CommandAllocator * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12CommandAllocator * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12CommandAllocator * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12CommandAllocator * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12CommandAllocator * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + ID3D12CommandAllocator * This); + + END_INTERFACE + } ID3D12CommandAllocatorVtbl; + + interface ID3D12CommandAllocator + { + CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12CommandAllocator_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12CommandAllocator_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12CommandAllocator_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12CommandAllocator_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Fence_INTERFACE_DEFINED__ +#define __ID3D12Fence_INTERFACE_DEFINED__ + +/* interface ID3D12Fence */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Fence; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76") + ID3D12Fence : public ID3D12Pageable + { + public: + virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion( + UINT64 Value, + HANDLE hEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE Signal( + UINT64 Value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12FenceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Fence * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Fence * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Fence * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Fence * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Fence * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Fence * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Fence * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12Fence * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )( + ID3D12Fence * This); + + HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )( + ID3D12Fence * This, + UINT64 Value, + HANDLE hEvent); + + HRESULT ( STDMETHODCALLTYPE *Signal )( + ID3D12Fence * This, + UINT64 Value); + + END_INTERFACE + } ID3D12FenceVtbl; + + interface ID3D12Fence + { + CONST_VTBL struct ID3D12FenceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Fence_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Fence_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Fence_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12Fence_GetCompletedValue(This) \ + ( (This)->lpVtbl -> GetCompletedValue(This) ) + +#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \ + ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) ) + +#define ID3D12Fence_Signal(This,Value) \ + ( (This)->lpVtbl -> Signal(This,Value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Fence1_INTERFACE_DEFINED__ +#define __ID3D12Fence1_INTERFACE_DEFINED__ + +/* interface ID3D12Fence1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Fence1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a") + ID3D12Fence1 : public ID3D12Fence + { + public: + virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Fence1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Fence1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Fence1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Fence1 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Fence1 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Fence1 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Fence1 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Fence1 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12Fence1 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )( + ID3D12Fence1 * This); + + HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )( + ID3D12Fence1 * This, + UINT64 Value, + HANDLE hEvent); + + HRESULT ( STDMETHODCALLTYPE *Signal )( + ID3D12Fence1 * This, + UINT64 Value); + + D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )( + ID3D12Fence1 * This); + + END_INTERFACE + } ID3D12Fence1Vtbl; + + interface ID3D12Fence1 + { + CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Fence1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Fence1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Fence1_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12Fence1_GetCompletedValue(This) \ + ( (This)->lpVtbl -> GetCompletedValue(This) ) + +#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \ + ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) ) + +#define ID3D12Fence1_Signal(This,Value) \ + ( (This)->lpVtbl -> Signal(This,Value) ) + + +#define ID3D12Fence1_GetCreationFlags(This) \ + ( (This)->lpVtbl -> GetCreationFlags(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__ +#define __ID3D12PipelineState_INTERFACE_DEFINED__ + +/* interface ID3D12PipelineState */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12PipelineState; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445") + ID3D12PipelineState : public ID3D12Pageable + { + public: + virtual HRESULT STDMETHODCALLTYPE GetCachedBlob( + _COM_Outptr_ ID3DBlob **ppBlob) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12PipelineStateVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12PipelineState * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12PipelineState * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12PipelineState * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12PipelineState * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12PipelineState * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12PipelineState * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12PipelineState * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12PipelineState * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )( + ID3D12PipelineState * This, + _COM_Outptr_ ID3DBlob **ppBlob); + + END_INTERFACE + } ID3D12PipelineStateVtbl; + + interface ID3D12PipelineState + { + CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12PipelineState_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12PipelineState_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12PipelineState_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \ + ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__ +#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__ + +/* interface ID3D12DescriptorHeap */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DescriptorHeap; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51") + ID3D12DescriptorHeap : public ID3D12Pageable + { + public: + virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0; + + virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0; + + virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DescriptorHeapVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DescriptorHeap * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DescriptorHeap * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DescriptorHeap * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12DescriptorHeap * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12DescriptorHeap * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12DescriptorHeap * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12DescriptorHeap * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12DescriptorHeap * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_DESCRIPTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )( + ID3D12DescriptorHeap * This); + + D3D12_CPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )( + ID3D12DescriptorHeap * This); + + D3D12_GPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )( + ID3D12DescriptorHeap * This); + + END_INTERFACE + } ID3D12DescriptorHeapVtbl; + + interface ID3D12DescriptorHeap + { + CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DescriptorHeap_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DescriptorHeap_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12DescriptorHeap_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12DescriptorHeap_GetDesc(This) \ + ( (This)->lpVtbl -> GetDesc(This) ) + +#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This) \ + ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This) ) + +#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This) \ + ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + + + + + + + + + + + + + +#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__ +#define __ID3D12QueryHeap_INTERFACE_DEFINED__ + +/* interface ID3D12QueryHeap */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12QueryHeap; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4") + ID3D12QueryHeap : public ID3D12Pageable + { + public: + }; + + +#else /* C style interface */ + + typedef struct ID3D12QueryHeapVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12QueryHeap * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12QueryHeap * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12QueryHeap * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12QueryHeap * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12QueryHeap * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12QueryHeap * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12QueryHeap * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12QueryHeap * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + END_INTERFACE + } ID3D12QueryHeapVtbl; + + interface ID3D12QueryHeap + { + CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12QueryHeap_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12QueryHeap_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12QueryHeap_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__ +#define __ID3D12CommandSignature_INTERFACE_DEFINED__ + +/* interface ID3D12CommandSignature */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12CommandSignature; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1") + ID3D12CommandSignature : public ID3D12Pageable + { + public: + }; + + +#else /* C style interface */ + + typedef struct ID3D12CommandSignatureVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12CommandSignature * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12CommandSignature * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12CommandSignature * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12CommandSignature * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12CommandSignature * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12CommandSignature * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12CommandSignature * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12CommandSignature * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + END_INTERFACE + } ID3D12CommandSignatureVtbl; + + interface ID3D12CommandSignature + { + CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12CommandSignature_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12CommandSignature_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12CommandSignature_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12CommandList_INTERFACE_DEFINED__ +#define __ID3D12CommandList_INTERFACE_DEFINED__ + +/* interface ID3D12CommandList */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12CommandList; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5") + ID3D12CommandList : public ID3D12DeviceChild + { + public: + virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12CommandListVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12CommandList * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12CommandList * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12CommandList * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12CommandList * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12CommandList * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12CommandList * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12CommandList * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12CommandList * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )( + ID3D12CommandList * This); + + END_INTERFACE + } ID3D12CommandListVtbl; + + interface ID3D12CommandList + { + CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12CommandList_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12CommandList_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12CommandList_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12CommandList_GetType(This) \ + ( (This)->lpVtbl -> GetType(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ +#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ + +/* interface ID3D12GraphicsCommandList */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12GraphicsCommandList; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455") + ID3D12GraphicsCommandList : public ID3D12CommandList + { + public: + virtual HRESULT STDMETHODCALLTYPE Close( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + _In_ ID3D12CommandAllocator *pAllocator, + _In_opt_ ID3D12PipelineState *pInitialState) = 0; + + virtual void STDMETHODCALLTYPE ClearState( + _In_opt_ ID3D12PipelineState *pPipelineState) = 0; + + virtual void STDMETHODCALLTYPE DrawInstanced( + _In_ UINT VertexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartVertexLocation, + _In_ UINT StartInstanceLocation) = 0; + + virtual void STDMETHODCALLTYPE DrawIndexedInstanced( + _In_ UINT IndexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartIndexLocation, + _In_ INT BaseVertexLocation, + _In_ UINT StartInstanceLocation) = 0; + + virtual void STDMETHODCALLTYPE Dispatch( + _In_ UINT ThreadGroupCountX, + _In_ UINT ThreadGroupCountY, + _In_ UINT ThreadGroupCountZ) = 0; + + virtual void STDMETHODCALLTYPE CopyBufferRegion( + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT64 NumBytes) = 0; + + virtual void STDMETHODCALLTYPE CopyTextureRegion( + _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst, + UINT DstX, + UINT DstY, + UINT DstZ, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc, + _In_opt_ const D3D12_BOX *pSrcBox) = 0; + + virtual void STDMETHODCALLTYPE CopyResource( + _In_ ID3D12Resource *pDstResource, + _In_ ID3D12Resource *pSrcResource) = 0; + + virtual void STDMETHODCALLTYPE CopyTiles( + _In_ ID3D12Resource *pTiledResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize, + _In_ ID3D12Resource *pBuffer, + UINT64 BufferStartOffsetInBytes, + D3D12_TILE_COPY_FLAGS Flags) = 0; + + virtual void STDMETHODCALLTYPE ResolveSubresource( + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_ DXGI_FORMAT Format) = 0; + + virtual void STDMETHODCALLTYPE IASetPrimitiveTopology( + _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0; + + virtual void STDMETHODCALLTYPE RSSetViewports( + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports, + _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0; + + virtual void STDMETHODCALLTYPE RSSetScissorRects( + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects, + _In_reads_( NumRects) const D3D12_RECT *pRects) = 0; + + virtual void STDMETHODCALLTYPE OMSetBlendFactor( + _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0; + + virtual void STDMETHODCALLTYPE OMSetStencilRef( + _In_ UINT StencilRef) = 0; + + virtual void STDMETHODCALLTYPE SetPipelineState( + _In_ ID3D12PipelineState *pPipelineState) = 0; + + virtual void STDMETHODCALLTYPE ResourceBarrier( + _In_ UINT NumBarriers, + _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0; + + virtual void STDMETHODCALLTYPE ExecuteBundle( + _In_ ID3D12GraphicsCommandList *pCommandList) = 0; + + virtual void STDMETHODCALLTYPE SetDescriptorHeaps( + _In_ UINT NumDescriptorHeaps, + _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0; + + virtual void STDMETHODCALLTYPE SetComputeRootSignature( + _In_opt_ ID3D12RootSignature *pRootSignature) = 0; + + virtual void STDMETHODCALLTYPE SetGraphicsRootSignature( + _In_opt_ ID3D12RootSignature *pRootSignature) = 0; + + virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable( + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0; + + virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable( + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0; + + virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant( + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues) = 0; + + virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant( + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues) = 0; + + virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants( + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues) = 0; + + virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants( + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues) = 0; + + virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView( + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0; + + virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView( + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0; + + virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView( + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0; + + virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView( + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0; + + virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView( + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0; + + virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView( + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0; + + virtual void STDMETHODCALLTYPE IASetIndexBuffer( + _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0; + + virtual void STDMETHODCALLTYPE IASetVertexBuffers( + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0; + + virtual void STDMETHODCALLTYPE SOSetTargets( + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0; + + virtual void STDMETHODCALLTYPE OMSetRenderTargets( + _In_ UINT NumRenderTargetDescriptors, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, + _In_ BOOL RTsSingleHandleToDescriptorRange, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0; + + virtual void STDMETHODCALLTYPE ClearDepthStencilView( + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, + _In_ D3D12_CLEAR_FLAGS ClearFlags, + _In_ FLOAT Depth, + _In_ UINT8 Stencil, + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects) = 0; + + virtual void STDMETHODCALLTYPE ClearRenderTargetView( + _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, + _In_ const FLOAT ColorRGBA[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects) = 0; + + virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint( + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const UINT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects) = 0; + + virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat( + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const FLOAT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects) = 0; + + virtual void STDMETHODCALLTYPE DiscardResource( + _In_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0; + + virtual void STDMETHODCALLTYPE BeginQuery( + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index) = 0; + + virtual void STDMETHODCALLTYPE EndQuery( + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index) = 0; + + virtual void STDMETHODCALLTYPE ResolveQueryData( + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT StartIndex, + _In_ UINT NumQueries, + _In_ ID3D12Resource *pDestinationBuffer, + _In_ UINT64 AlignedDestinationBufferOffset) = 0; + + virtual void STDMETHODCALLTYPE SetPredication( + _In_opt_ ID3D12Resource *pBuffer, + _In_ UINT64 AlignedBufferOffset, + _In_ D3D12_PREDICATION_OP Operation) = 0; + + virtual void STDMETHODCALLTYPE SetMarker( + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size) = 0; + + virtual void STDMETHODCALLTYPE BeginEvent( + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size) = 0; + + virtual void STDMETHODCALLTYPE EndEvent( void) = 0; + + virtual void STDMETHODCALLTYPE ExecuteIndirect( + _In_ ID3D12CommandSignature *pCommandSignature, + _In_ UINT MaxCommandCount, + _In_ ID3D12Resource *pArgumentBuffer, + _In_ UINT64 ArgumentBufferOffset, + _In_opt_ ID3D12Resource *pCountBuffer, + _In_ UINT64 CountBufferOffset) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12GraphicsCommandListVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12GraphicsCommandList * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12GraphicsCommandList * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12GraphicsCommandList * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12GraphicsCommandList * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12GraphicsCommandList * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12GraphicsCommandList * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12GraphicsCommandList * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12GraphicsCommandList * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )( + ID3D12GraphicsCommandList * This); + + HRESULT ( STDMETHODCALLTYPE *Close )( + ID3D12GraphicsCommandList * This); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12CommandAllocator *pAllocator, + _In_opt_ ID3D12PipelineState *pInitialState); + + void ( STDMETHODCALLTYPE *ClearState )( + ID3D12GraphicsCommandList * This, + _In_opt_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *DrawInstanced )( + ID3D12GraphicsCommandList * This, + _In_ UINT VertexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *DrawIndexedInstanced )( + ID3D12GraphicsCommandList * This, + _In_ UINT IndexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartIndexLocation, + _In_ INT BaseVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *Dispatch )( + ID3D12GraphicsCommandList * This, + _In_ UINT ThreadGroupCountX, + _In_ UINT ThreadGroupCountY, + _In_ UINT ThreadGroupCountZ); + + void ( STDMETHODCALLTYPE *CopyBufferRegion )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT64 NumBytes); + + void ( STDMETHODCALLTYPE *CopyTextureRegion )( + ID3D12GraphicsCommandList * This, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst, + UINT DstX, + UINT DstY, + UINT DstZ, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc, + _In_opt_ const D3D12_BOX *pSrcBox); + + void ( STDMETHODCALLTYPE *CopyResource )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12Resource *pDstResource, + _In_ ID3D12Resource *pSrcResource); + + void ( STDMETHODCALLTYPE *CopyTiles )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12Resource *pTiledResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize, + _In_ ID3D12Resource *pBuffer, + UINT64 BufferStartOffsetInBytes, + D3D12_TILE_COPY_FLAGS Flags); + + void ( STDMETHODCALLTYPE *ResolveSubresource )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_ DXGI_FORMAT Format); + + void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )( + ID3D12GraphicsCommandList * This, + _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); + + void ( STDMETHODCALLTYPE *RSSetViewports )( + ID3D12GraphicsCommandList * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports, + _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports); + + void ( STDMETHODCALLTYPE *RSSetScissorRects )( + ID3D12GraphicsCommandList * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects, + _In_reads_( NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *OMSetBlendFactor )( + ID3D12GraphicsCommandList * This, + _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]); + + void ( STDMETHODCALLTYPE *OMSetStencilRef )( + ID3D12GraphicsCommandList * This, + _In_ UINT StencilRef); + + void ( STDMETHODCALLTYPE *SetPipelineState )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *ResourceBarrier )( + ID3D12GraphicsCommandList * This, + _In_ UINT NumBarriers, + _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers); + + void ( STDMETHODCALLTYPE *ExecuteBundle )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12GraphicsCommandList *pCommandList); + + void ( STDMETHODCALLTYPE *SetDescriptorHeaps )( + ID3D12GraphicsCommandList * This, + _In_ UINT NumDescriptorHeaps, + _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps); + + void ( STDMETHODCALLTYPE *SetComputeRootSignature )( + ID3D12GraphicsCommandList * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )( + ID3D12GraphicsCommandList * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )( + ID3D12GraphicsCommandList * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *IASetIndexBuffer )( + ID3D12GraphicsCommandList * This, + _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView); + + void ( STDMETHODCALLTYPE *IASetVertexBuffers )( + ID3D12GraphicsCommandList * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *SOSetTargets )( + ID3D12GraphicsCommandList * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *OMSetRenderTargets )( + ID3D12GraphicsCommandList * This, + _In_ UINT NumRenderTargetDescriptors, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, + _In_ BOOL RTsSingleHandleToDescriptorRange, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor); + + void ( STDMETHODCALLTYPE *ClearDepthStencilView )( + ID3D12GraphicsCommandList * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, + _In_ D3D12_CLEAR_FLAGS ClearFlags, + _In_ FLOAT Depth, + _In_ UINT8 Stencil, + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearRenderTargetView )( + ID3D12GraphicsCommandList * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, + _In_ const FLOAT ColorRGBA[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )( + ID3D12GraphicsCommandList * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const UINT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )( + ID3D12GraphicsCommandList * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const FLOAT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *DiscardResource )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DISCARD_REGION *pRegion); + + void ( STDMETHODCALLTYPE *BeginQuery )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *EndQuery )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *ResolveQueryData )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT StartIndex, + _In_ UINT NumQueries, + _In_ ID3D12Resource *pDestinationBuffer, + _In_ UINT64 AlignedDestinationBufferOffset); + + void ( STDMETHODCALLTYPE *SetPredication )( + ID3D12GraphicsCommandList * This, + _In_opt_ ID3D12Resource *pBuffer, + _In_ UINT64 AlignedBufferOffset, + _In_ D3D12_PREDICATION_OP Operation); + + void ( STDMETHODCALLTYPE *SetMarker )( + ID3D12GraphicsCommandList * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *BeginEvent )( + ID3D12GraphicsCommandList * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *EndEvent )( + ID3D12GraphicsCommandList * This); + + void ( STDMETHODCALLTYPE *ExecuteIndirect )( + ID3D12GraphicsCommandList * This, + _In_ ID3D12CommandSignature *pCommandSignature, + _In_ UINT MaxCommandCount, + _In_ ID3D12Resource *pArgumentBuffer, + _In_ UINT64 ArgumentBufferOffset, + _In_opt_ ID3D12Resource *pCountBuffer, + _In_ UINT64 CountBufferOffset); + + END_INTERFACE + } ID3D12GraphicsCommandListVtbl; + + interface ID3D12GraphicsCommandList + { + CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12GraphicsCommandList_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12GraphicsCommandList_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12GraphicsCommandList_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12GraphicsCommandList_GetType(This) \ + ( (This)->lpVtbl -> GetType(This) ) + + +#define ID3D12GraphicsCommandList_Close(This) \ + ( (This)->lpVtbl -> Close(This) ) + +#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \ + ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) ) + +#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \ + ( (This)->lpVtbl -> ClearState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \ + ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) + +#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \ + ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) + +#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \ + ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) + +#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \ + ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) ) + +#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \ + ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) + +#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \ + ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) + +#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \ + ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) ) + +#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \ + ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) ) + +#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \ + ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \ + ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) ) + +#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \ + ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) ) + +#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \ + ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \ + ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) ) + +#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \ + ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) ) + +#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \ + ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) ) + +#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \ + ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) ) + +#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \ + ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) + +#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \ + ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) ) + +#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \ + ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) + +#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \ + ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) ) + +#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList_EndEvent(This) \ + ( (This)->lpVtbl -> EndEvent(This) ) + +#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \ + ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ +#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ + +/* interface ID3D12GraphicsCommandList1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12GraphicsCommandList1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7") + ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList + { + public: + virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT( + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0; + + virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64( + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0; + + virtual void STDMETHODCALLTYPE OMSetDepthBounds( + _In_ FLOAT Min, + _In_ FLOAT Max) = 0; + + virtual void STDMETHODCALLTYPE SetSamplePositions( + _In_ UINT NumSamplesPerPixel, + _In_ UINT NumPixels, + _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0; + + virtual void STDMETHODCALLTYPE ResolveSubresourceRegion( + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ UINT DstX, + _In_ UINT DstY, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_opt_ D3D12_RECT *pSrcRect, + _In_ DXGI_FORMAT Format, + _In_ D3D12_RESOLVE_MODE ResolveMode) = 0; + + virtual void STDMETHODCALLTYPE SetViewInstanceMask( + _In_ UINT Mask) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12GraphicsCommandList1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12GraphicsCommandList1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12GraphicsCommandList1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12GraphicsCommandList1 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12GraphicsCommandList1 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12GraphicsCommandList1 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12GraphicsCommandList1 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12GraphicsCommandList1 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12GraphicsCommandList1 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )( + ID3D12GraphicsCommandList1 * This); + + HRESULT ( STDMETHODCALLTYPE *Close )( + ID3D12GraphicsCommandList1 * This); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12CommandAllocator *pAllocator, + _In_opt_ ID3D12PipelineState *pInitialState); + + void ( STDMETHODCALLTYPE *ClearState )( + ID3D12GraphicsCommandList1 * This, + _In_opt_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *DrawInstanced )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT VertexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *DrawIndexedInstanced )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT IndexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartIndexLocation, + _In_ INT BaseVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *Dispatch )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT ThreadGroupCountX, + _In_ UINT ThreadGroupCountY, + _In_ UINT ThreadGroupCountZ); + + void ( STDMETHODCALLTYPE *CopyBufferRegion )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT64 NumBytes); + + void ( STDMETHODCALLTYPE *CopyTextureRegion )( + ID3D12GraphicsCommandList1 * This, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst, + UINT DstX, + UINT DstY, + UINT DstZ, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc, + _In_opt_ const D3D12_BOX *pSrcBox); + + void ( STDMETHODCALLTYPE *CopyResource )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12Resource *pDstResource, + _In_ ID3D12Resource *pSrcResource); + + void ( STDMETHODCALLTYPE *CopyTiles )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12Resource *pTiledResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize, + _In_ ID3D12Resource *pBuffer, + UINT64 BufferStartOffsetInBytes, + D3D12_TILE_COPY_FLAGS Flags); + + void ( STDMETHODCALLTYPE *ResolveSubresource )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_ DXGI_FORMAT Format); + + void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )( + ID3D12GraphicsCommandList1 * This, + _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); + + void ( STDMETHODCALLTYPE *RSSetViewports )( + ID3D12GraphicsCommandList1 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports, + _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports); + + void ( STDMETHODCALLTYPE *RSSetScissorRects )( + ID3D12GraphicsCommandList1 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects, + _In_reads_( NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *OMSetBlendFactor )( + ID3D12GraphicsCommandList1 * This, + _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]); + + void ( STDMETHODCALLTYPE *OMSetStencilRef )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT StencilRef); + + void ( STDMETHODCALLTYPE *SetPipelineState )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *ResourceBarrier )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT NumBarriers, + _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers); + + void ( STDMETHODCALLTYPE *ExecuteBundle )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12GraphicsCommandList *pCommandList); + + void ( STDMETHODCALLTYPE *SetDescriptorHeaps )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT NumDescriptorHeaps, + _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps); + + void ( STDMETHODCALLTYPE *SetComputeRootSignature )( + ID3D12GraphicsCommandList1 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )( + ID3D12GraphicsCommandList1 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *IASetIndexBuffer )( + ID3D12GraphicsCommandList1 * This, + _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView); + + void ( STDMETHODCALLTYPE *IASetVertexBuffers )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *SOSetTargets )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *OMSetRenderTargets )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT NumRenderTargetDescriptors, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, + _In_ BOOL RTsSingleHandleToDescriptorRange, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor); + + void ( STDMETHODCALLTYPE *ClearDepthStencilView )( + ID3D12GraphicsCommandList1 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, + _In_ D3D12_CLEAR_FLAGS ClearFlags, + _In_ FLOAT Depth, + _In_ UINT8 Stencil, + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearRenderTargetView )( + ID3D12GraphicsCommandList1 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, + _In_ const FLOAT ColorRGBA[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )( + ID3D12GraphicsCommandList1 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const UINT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )( + ID3D12GraphicsCommandList1 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const FLOAT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *DiscardResource )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DISCARD_REGION *pRegion); + + void ( STDMETHODCALLTYPE *BeginQuery )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *EndQuery )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *ResolveQueryData )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT StartIndex, + _In_ UINT NumQueries, + _In_ ID3D12Resource *pDestinationBuffer, + _In_ UINT64 AlignedDestinationBufferOffset); + + void ( STDMETHODCALLTYPE *SetPredication )( + ID3D12GraphicsCommandList1 * This, + _In_opt_ ID3D12Resource *pBuffer, + _In_ UINT64 AlignedBufferOffset, + _In_ D3D12_PREDICATION_OP Operation); + + void ( STDMETHODCALLTYPE *SetMarker )( + ID3D12GraphicsCommandList1 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *BeginEvent )( + ID3D12GraphicsCommandList1 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *EndEvent )( + ID3D12GraphicsCommandList1 * This); + + void ( STDMETHODCALLTYPE *ExecuteIndirect )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12CommandSignature *pCommandSignature, + _In_ UINT MaxCommandCount, + _In_ ID3D12Resource *pArgumentBuffer, + _In_ UINT64 ArgumentBufferOffset, + _In_opt_ ID3D12Resource *pCountBuffer, + _In_ UINT64 CountBufferOffset); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *OMSetDepthBounds )( + ID3D12GraphicsCommandList1 * This, + _In_ FLOAT Min, + _In_ FLOAT Max); + + void ( STDMETHODCALLTYPE *SetSamplePositions )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT NumSamplesPerPixel, + _In_ UINT NumPixels, + _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions); + + void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )( + ID3D12GraphicsCommandList1 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ UINT DstX, + _In_ UINT DstY, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_opt_ D3D12_RECT *pSrcRect, + _In_ DXGI_FORMAT Format, + _In_ D3D12_RESOLVE_MODE ResolveMode); + + void ( STDMETHODCALLTYPE *SetViewInstanceMask )( + ID3D12GraphicsCommandList1 * This, + _In_ UINT Mask); + + END_INTERFACE + } ID3D12GraphicsCommandList1Vtbl; + + interface ID3D12GraphicsCommandList1 + { + CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12GraphicsCommandList1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12GraphicsCommandList1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12GraphicsCommandList1_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12GraphicsCommandList1_GetType(This) \ + ( (This)->lpVtbl -> GetType(This) ) + + +#define ID3D12GraphicsCommandList1_Close(This) \ + ( (This)->lpVtbl -> Close(This) ) + +#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \ + ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) ) + +#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \ + ( (This)->lpVtbl -> ClearState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \ + ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) + +#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \ + ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) + +#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \ + ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) + +#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \ + ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) ) + +#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \ + ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) + +#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \ + ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) + +#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \ + ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) ) + +#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \ + ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) ) + +#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \ + ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \ + ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) ) + +#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \ + ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) ) + +#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \ + ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \ + ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) ) + +#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \ + ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) ) + +#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \ + ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) ) + +#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \ + ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) ) + +#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \ + ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) + +#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \ + ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) ) + +#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \ + ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) + +#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \ + ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) ) + +#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList1_EndEvent(This) \ + ( (This)->lpVtbl -> EndEvent(This) ) + +#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \ + ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) + + +#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \ + ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) ) + +#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \ + ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) ) + +#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \ + ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) + +#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \ + ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0018 */ +/* [local] */ + +typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER + { + D3D12_GPU_VIRTUAL_ADDRESS Dest; + UINT32 Value; + } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER; + +typedef +enum D3D12_WRITEBUFFERIMMEDIATE_MODE + { + D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0, + D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1, + D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2 + } D3D12_WRITEBUFFERIMMEDIATE_MODE; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_s_ifspec; + +#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ +#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ + +/* interface ID3D12GraphicsCommandList2 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12GraphicsCommandList2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28") + ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1 + { + public: + virtual void STDMETHODCALLTYPE WriteBufferImmediate( + UINT Count, + _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, + _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12GraphicsCommandList2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12GraphicsCommandList2 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12GraphicsCommandList2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12GraphicsCommandList2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12GraphicsCommandList2 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12GraphicsCommandList2 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12GraphicsCommandList2 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12GraphicsCommandList2 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12GraphicsCommandList2 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )( + ID3D12GraphicsCommandList2 * This); + + HRESULT ( STDMETHODCALLTYPE *Close )( + ID3D12GraphicsCommandList2 * This); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12CommandAllocator *pAllocator, + _In_opt_ ID3D12PipelineState *pInitialState); + + void ( STDMETHODCALLTYPE *ClearState )( + ID3D12GraphicsCommandList2 * This, + _In_opt_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *DrawInstanced )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT VertexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *DrawIndexedInstanced )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT IndexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartIndexLocation, + _In_ INT BaseVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *Dispatch )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT ThreadGroupCountX, + _In_ UINT ThreadGroupCountY, + _In_ UINT ThreadGroupCountZ); + + void ( STDMETHODCALLTYPE *CopyBufferRegion )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT64 NumBytes); + + void ( STDMETHODCALLTYPE *CopyTextureRegion )( + ID3D12GraphicsCommandList2 * This, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst, + UINT DstX, + UINT DstY, + UINT DstZ, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc, + _In_opt_ const D3D12_BOX *pSrcBox); + + void ( STDMETHODCALLTYPE *CopyResource )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12Resource *pDstResource, + _In_ ID3D12Resource *pSrcResource); + + void ( STDMETHODCALLTYPE *CopyTiles )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12Resource *pTiledResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize, + _In_ ID3D12Resource *pBuffer, + UINT64 BufferStartOffsetInBytes, + D3D12_TILE_COPY_FLAGS Flags); + + void ( STDMETHODCALLTYPE *ResolveSubresource )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_ DXGI_FORMAT Format); + + void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )( + ID3D12GraphicsCommandList2 * This, + _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); + + void ( STDMETHODCALLTYPE *RSSetViewports )( + ID3D12GraphicsCommandList2 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports, + _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports); + + void ( STDMETHODCALLTYPE *RSSetScissorRects )( + ID3D12GraphicsCommandList2 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects, + _In_reads_( NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *OMSetBlendFactor )( + ID3D12GraphicsCommandList2 * This, + _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]); + + void ( STDMETHODCALLTYPE *OMSetStencilRef )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT StencilRef); + + void ( STDMETHODCALLTYPE *SetPipelineState )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *ResourceBarrier )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT NumBarriers, + _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers); + + void ( STDMETHODCALLTYPE *ExecuteBundle )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12GraphicsCommandList *pCommandList); + + void ( STDMETHODCALLTYPE *SetDescriptorHeaps )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT NumDescriptorHeaps, + _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps); + + void ( STDMETHODCALLTYPE *SetComputeRootSignature )( + ID3D12GraphicsCommandList2 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )( + ID3D12GraphicsCommandList2 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *IASetIndexBuffer )( + ID3D12GraphicsCommandList2 * This, + _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView); + + void ( STDMETHODCALLTYPE *IASetVertexBuffers )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *SOSetTargets )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *OMSetRenderTargets )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT NumRenderTargetDescriptors, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, + _In_ BOOL RTsSingleHandleToDescriptorRange, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor); + + void ( STDMETHODCALLTYPE *ClearDepthStencilView )( + ID3D12GraphicsCommandList2 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, + _In_ D3D12_CLEAR_FLAGS ClearFlags, + _In_ FLOAT Depth, + _In_ UINT8 Stencil, + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearRenderTargetView )( + ID3D12GraphicsCommandList2 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, + _In_ const FLOAT ColorRGBA[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )( + ID3D12GraphicsCommandList2 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const UINT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )( + ID3D12GraphicsCommandList2 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const FLOAT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *DiscardResource )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DISCARD_REGION *pRegion); + + void ( STDMETHODCALLTYPE *BeginQuery )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *EndQuery )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *ResolveQueryData )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT StartIndex, + _In_ UINT NumQueries, + _In_ ID3D12Resource *pDestinationBuffer, + _In_ UINT64 AlignedDestinationBufferOffset); + + void ( STDMETHODCALLTYPE *SetPredication )( + ID3D12GraphicsCommandList2 * This, + _In_opt_ ID3D12Resource *pBuffer, + _In_ UINT64 AlignedBufferOffset, + _In_ D3D12_PREDICATION_OP Operation); + + void ( STDMETHODCALLTYPE *SetMarker )( + ID3D12GraphicsCommandList2 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *BeginEvent )( + ID3D12GraphicsCommandList2 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *EndEvent )( + ID3D12GraphicsCommandList2 * This); + + void ( STDMETHODCALLTYPE *ExecuteIndirect )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12CommandSignature *pCommandSignature, + _In_ UINT MaxCommandCount, + _In_ ID3D12Resource *pArgumentBuffer, + _In_ UINT64 ArgumentBufferOffset, + _In_opt_ ID3D12Resource *pCountBuffer, + _In_ UINT64 CountBufferOffset); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *OMSetDepthBounds )( + ID3D12GraphicsCommandList2 * This, + _In_ FLOAT Min, + _In_ FLOAT Max); + + void ( STDMETHODCALLTYPE *SetSamplePositions )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT NumSamplesPerPixel, + _In_ UINT NumPixels, + _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions); + + void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )( + ID3D12GraphicsCommandList2 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ UINT DstX, + _In_ UINT DstY, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_opt_ D3D12_RECT *pSrcRect, + _In_ DXGI_FORMAT Format, + _In_ D3D12_RESOLVE_MODE ResolveMode); + + void ( STDMETHODCALLTYPE *SetViewInstanceMask )( + ID3D12GraphicsCommandList2 * This, + _In_ UINT Mask); + + void ( STDMETHODCALLTYPE *WriteBufferImmediate )( + ID3D12GraphicsCommandList2 * This, + UINT Count, + _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, + _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes); + + END_INTERFACE + } ID3D12GraphicsCommandList2Vtbl; + + interface ID3D12GraphicsCommandList2 + { + CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12GraphicsCommandList2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12GraphicsCommandList2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12GraphicsCommandList2_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12GraphicsCommandList2_GetType(This) \ + ( (This)->lpVtbl -> GetType(This) ) + + +#define ID3D12GraphicsCommandList2_Close(This) \ + ( (This)->lpVtbl -> Close(This) ) + +#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \ + ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) ) + +#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \ + ( (This)->lpVtbl -> ClearState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \ + ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) + +#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \ + ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) + +#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \ + ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) + +#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \ + ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) ) + +#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \ + ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) + +#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \ + ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) + +#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \ + ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) ) + +#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \ + ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) ) + +#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \ + ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \ + ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) ) + +#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \ + ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) ) + +#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \ + ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \ + ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) ) + +#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \ + ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) ) + +#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \ + ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) ) + +#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \ + ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) ) + +#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \ + ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) + +#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \ + ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) ) + +#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \ + ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) + +#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \ + ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) ) + +#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList2_EndEvent(This) \ + ( (This)->lpVtbl -> EndEvent(This) ) + +#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \ + ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) + + +#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \ + ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) ) + +#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \ + ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) ) + +#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \ + ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) + +#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \ + ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) ) + + +#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \ + ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__ +#define __ID3D12CommandQueue_INTERFACE_DEFINED__ + +/* interface ID3D12CommandQueue */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12CommandQueue; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed") + ID3D12CommandQueue : public ID3D12Pageable + { + public: + virtual void STDMETHODCALLTYPE UpdateTileMappings( + _In_ ID3D12Resource *pResource, + UINT NumResourceRegions, + _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates, + _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes, + _In_opt_ ID3D12Heap *pHeap, + UINT NumRanges, + _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags, + _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets, + _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts, + D3D12_TILE_MAPPING_FLAGS Flags) = 0; + + virtual void STDMETHODCALLTYPE CopyTileMappings( + _In_ ID3D12Resource *pDstResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate, + _In_ ID3D12Resource *pSrcResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pRegionSize, + D3D12_TILE_MAPPING_FLAGS Flags) = 0; + + virtual void STDMETHODCALLTYPE ExecuteCommandLists( + _In_ UINT NumCommandLists, + _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0; + + virtual void STDMETHODCALLTYPE SetMarker( + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size) = 0; + + virtual void STDMETHODCALLTYPE BeginEvent( + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size) = 0; + + virtual void STDMETHODCALLTYPE EndEvent( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Signal( + ID3D12Fence *pFence, + UINT64 Value) = 0; + + virtual HRESULT STDMETHODCALLTYPE Wait( + ID3D12Fence *pFence, + UINT64 Value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency( + _Out_ UINT64 *pFrequency) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetClockCalibration( + _Out_ UINT64 *pGpuTimestamp, + _Out_ UINT64 *pCpuTimestamp) = 0; + + virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12CommandQueueVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12CommandQueue * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12CommandQueue * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12CommandQueue * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12CommandQueue * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12CommandQueue * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12CommandQueue * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12CommandQueue * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12CommandQueue * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + void ( STDMETHODCALLTYPE *UpdateTileMappings )( + ID3D12CommandQueue * This, + _In_ ID3D12Resource *pResource, + UINT NumResourceRegions, + _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates, + _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes, + _In_opt_ ID3D12Heap *pHeap, + UINT NumRanges, + _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags, + _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets, + _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts, + D3D12_TILE_MAPPING_FLAGS Flags); + + void ( STDMETHODCALLTYPE *CopyTileMappings )( + ID3D12CommandQueue * This, + _In_ ID3D12Resource *pDstResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate, + _In_ ID3D12Resource *pSrcResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pRegionSize, + D3D12_TILE_MAPPING_FLAGS Flags); + + void ( STDMETHODCALLTYPE *ExecuteCommandLists )( + ID3D12CommandQueue * This, + _In_ UINT NumCommandLists, + _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists); + + void ( STDMETHODCALLTYPE *SetMarker )( + ID3D12CommandQueue * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *BeginEvent )( + ID3D12CommandQueue * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *EndEvent )( + ID3D12CommandQueue * This); + + HRESULT ( STDMETHODCALLTYPE *Signal )( + ID3D12CommandQueue * This, + ID3D12Fence *pFence, + UINT64 Value); + + HRESULT ( STDMETHODCALLTYPE *Wait )( + ID3D12CommandQueue * This, + ID3D12Fence *pFence, + UINT64 Value); + + HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )( + ID3D12CommandQueue * This, + _Out_ UINT64 *pFrequency); + + HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )( + ID3D12CommandQueue * This, + _Out_ UINT64 *pGpuTimestamp, + _Out_ UINT64 *pCpuTimestamp); + + D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )( + ID3D12CommandQueue * This); + + END_INTERFACE + } ID3D12CommandQueueVtbl; + + interface ID3D12CommandQueue + { + CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12CommandQueue_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12CommandQueue_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12CommandQueue_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \ + ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) ) + +#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \ + ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) ) + +#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \ + ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) ) + +#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) ) + +#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) ) + +#define ID3D12CommandQueue_EndEvent(This) \ + ( (This)->lpVtbl -> EndEvent(This) ) + +#define ID3D12CommandQueue_Signal(This,pFence,Value) \ + ( (This)->lpVtbl -> Signal(This,pFence,Value) ) + +#define ID3D12CommandQueue_Wait(This,pFence,Value) \ + ( (This)->lpVtbl -> Wait(This,pFence,Value) ) + +#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \ + ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) ) + +#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \ + ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) ) + +#define ID3D12CommandQueue_GetDesc(This) \ + ( (This)->lpVtbl -> GetDesc(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + + + + + +#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0020 */ +/* [local] */ + +#ifdef __midl +#ifndef LUID_DEFINED +#define LUID_DEFINED 1 +typedef struct __LUID + { + DWORD LowPart; + LONG HighPart; + } LUID; + +typedef struct __LUID *PLUID; + +#endif +#endif + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_s_ifspec; + +#ifndef __ID3D12Device_INTERFACE_DEFINED__ +#define __ID3D12Device_INTERFACE_DEFINED__ + +/* interface ID3D12Device */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Device; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7") + ID3D12Device : public ID3D12Object + { + public: + virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue( + _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppCommandQueue) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator( + _In_ D3D12_COMMAND_LIST_TYPE type, + REFIID riid, + _COM_Outptr_ void **ppCommandAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState( + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState( + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateCommandList( + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ ID3D12CommandAllocator *pCommandAllocator, + _In_opt_ ID3D12PipelineState *pInitialState, + REFIID riid, + _COM_Outptr_ void **ppCommandList) = 0; + + virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport( + D3D12_FEATURE Feature, + _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData, + UINT FeatureSupportDataSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap( + _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, + REFIID riid, + _COM_Outptr_ void **ppvHeap) = 0; + + virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize( + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateRootSignature( + _In_ UINT nodeMask, + _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature, + _In_ SIZE_T blobLengthInBytes, + REFIID riid, + _COM_Outptr_ void **ppvRootSignature) = 0; + + virtual void STDMETHODCALLTYPE CreateConstantBufferView( + _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0; + + virtual void STDMETHODCALLTYPE CreateShaderResourceView( + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0; + + virtual void STDMETHODCALLTYPE CreateUnorderedAccessView( + _In_opt_ ID3D12Resource *pResource, + _In_opt_ ID3D12Resource *pCounterResource, + _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0; + + virtual void STDMETHODCALLTYPE CreateRenderTargetView( + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0; + + virtual void STDMETHODCALLTYPE CreateDepthStencilView( + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0; + + virtual void STDMETHODCALLTYPE CreateSampler( + _In_ const D3D12_SAMPLER_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0; + + virtual void STDMETHODCALLTYPE CopyDescriptors( + _In_ UINT NumDestDescriptorRanges, + _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, + _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes, + _In_ UINT NumSrcDescriptorRanges, + _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts, + _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0; + + virtual void STDMETHODCALLTYPE CopyDescriptorsSimple( + _In_ UINT NumDescriptors, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0; + + virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo( + _In_ UINT visibleMask, + _In_ UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0; + + virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties( + _In_ UINT nodeMask, + D3D12_HEAP_TYPE heapType) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource( + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateHeap( + _In_ const D3D12_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource( + _In_ ID3D12Heap *pHeap, + UINT64 HeapOffset, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateReservedResource( + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle( + _In_ ID3D12DeviceChild *pObject, + _In_opt_ const SECURITY_ATTRIBUTES *pAttributes, + DWORD Access, + _In_opt_ LPCWSTR Name, + _Out_ HANDLE *pHandle) = 0; + + virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle( + _In_ HANDLE NTHandle, + REFIID riid, + _COM_Outptr_opt_ void **ppvObj) = 0; + + virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName( + _In_ LPCWSTR Name, + DWORD Access, + /* [annotation][out] */ + _Out_ HANDLE *pNTHandle) = 0; + + virtual HRESULT STDMETHODCALLTYPE MakeResident( + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0; + + virtual HRESULT STDMETHODCALLTYPE Evict( + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateFence( + UINT64 InitialValue, + D3D12_FENCE_FLAGS Flags, + REFIID riid, + _COM_Outptr_ void **ppFence) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0; + + virtual void STDMETHODCALLTYPE GetCopyableFootprints( + _In_ const D3D12_RESOURCE_DESC *pResourceDesc, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 BaseOffset, + _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, + _Out_writes_opt_(NumSubresources) UINT *pNumRows, + _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes, + _Out_opt_ UINT64 *pTotalBytes) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap( + _In_ const D3D12_QUERY_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStablePowerState( + BOOL Enable) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature( + _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc, + _In_opt_ ID3D12RootSignature *pRootSignature, + REFIID riid, + _COM_Outptr_opt_ void **ppvCommandSignature) = 0; + + virtual void STDMETHODCALLTYPE GetResourceTiling( + _In_ ID3D12Resource *pTiledResource, + _Out_opt_ UINT *pNumTilesForEntireResource, + _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc, + _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, + _Inout_opt_ UINT *pNumSubresourceTilings, + _In_ UINT FirstSubresourceTilingToGet, + _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0; + + virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DeviceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Device * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Device * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Device * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Device * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Device * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Device * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Device * This, + _In_z_ LPCWSTR Name); + + UINT ( STDMETHODCALLTYPE *GetNodeCount )( + ID3D12Device * This); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )( + ID3D12Device * This, + _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppCommandQueue); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )( + ID3D12Device * This, + _In_ D3D12_COMMAND_LIST_TYPE type, + REFIID riid, + _COM_Outptr_ void **ppCommandAllocator); + + HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )( + ID3D12Device * This, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )( + ID3D12Device * This, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList )( + ID3D12Device * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ ID3D12CommandAllocator *pCommandAllocator, + _In_opt_ ID3D12PipelineState *pInitialState, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )( + ID3D12Device * This, + D3D12_FEATURE Feature, + _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData, + UINT FeatureSupportDataSize); + + HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )( + ID3D12Device * This, + _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )( + ID3D12Device * This, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); + + HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )( + ID3D12Device * This, + _In_ UINT nodeMask, + _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature, + _In_ SIZE_T blobLengthInBytes, + REFIID riid, + _COM_Outptr_ void **ppvRootSignature); + + void ( STDMETHODCALLTYPE *CreateConstantBufferView )( + ID3D12Device * This, + _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateShaderResourceView )( + ID3D12Device * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )( + ID3D12Device * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ ID3D12Resource *pCounterResource, + _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateRenderTargetView )( + ID3D12Device * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateDepthStencilView )( + ID3D12Device * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateSampler )( + ID3D12Device * This, + _In_ const D3D12_SAMPLER_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CopyDescriptors )( + ID3D12Device * This, + _In_ UINT NumDestDescriptorRanges, + _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, + _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes, + _In_ UINT NumSrcDescriptorRanges, + _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts, + _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )( + ID3D12Device * This, + _In_ UINT NumDescriptors, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )( + ID3D12Device * This, + _In_ UINT visibleMask, + _In_ UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs); + + D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )( + ID3D12Device * This, + _In_ UINT nodeMask, + D3D12_HEAP_TYPE heapType); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )( + ID3D12Device * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap )( + ID3D12Device * This, + _In_ const D3D12_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )( + ID3D12Device * This, + _In_ ID3D12Heap *pHeap, + UINT64 HeapOffset, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )( + ID3D12Device * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )( + ID3D12Device * This, + _In_ ID3D12DeviceChild *pObject, + _In_opt_ const SECURITY_ATTRIBUTES *pAttributes, + DWORD Access, + _In_opt_ LPCWSTR Name, + _Out_ HANDLE *pHandle); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )( + ID3D12Device * This, + _In_ HANDLE NTHandle, + REFIID riid, + _COM_Outptr_opt_ void **ppvObj); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )( + ID3D12Device * This, + _In_ LPCWSTR Name, + DWORD Access, + /* [annotation][out] */ + _Out_ HANDLE *pNTHandle); + + HRESULT ( STDMETHODCALLTYPE *MakeResident )( + ID3D12Device * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *Evict )( + ID3D12Device * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *CreateFence )( + ID3D12Device * This, + UINT64 InitialValue, + D3D12_FENCE_FLAGS Flags, + REFIID riid, + _COM_Outptr_ void **ppFence); + + HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )( + ID3D12Device * This); + + void ( STDMETHODCALLTYPE *GetCopyableFootprints )( + ID3D12Device * This, + _In_ const D3D12_RESOURCE_DESC *pResourceDesc, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 BaseOffset, + _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, + _Out_writes_opt_(NumSubresources) UINT *pNumRows, + _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes, + _Out_opt_ UINT64 *pTotalBytes); + + HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )( + ID3D12Device * This, + _In_ const D3D12_QUERY_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )( + ID3D12Device * This, + BOOL Enable); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )( + ID3D12Device * This, + _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc, + _In_opt_ ID3D12RootSignature *pRootSignature, + REFIID riid, + _COM_Outptr_opt_ void **ppvCommandSignature); + + void ( STDMETHODCALLTYPE *GetResourceTiling )( + ID3D12Device * This, + _In_ ID3D12Resource *pTiledResource, + _Out_opt_ UINT *pNumTilesForEntireResource, + _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc, + _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, + _Inout_opt_ UINT *pNumSubresourceTilings, + _In_ UINT FirstSubresourceTilingToGet, + _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips); + + LUID ( STDMETHODCALLTYPE *GetAdapterLuid )( + ID3D12Device * This); + + END_INTERFACE + } ID3D12DeviceVtbl; + + interface ID3D12Device + { + CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Device_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Device_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Device_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Device_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Device_GetNodeCount(This) \ + ( (This)->lpVtbl -> GetNodeCount(This) ) + +#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \ + ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) ) + +#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \ + ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) ) + +#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) + +#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \ + ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) ) + +#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) ) + +#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \ + ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) ) + +#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \ + ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) + +#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) ) + +#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) ) + +#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) ) + +#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) + +#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) + +#define ID3D12Device_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) ) + +#define ID3D12Device_GetCustomHeapProperties(This,nodeMask,heapType) \ + ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) ) + +#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) + +#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \ + ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) ) + +#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \ + ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) ) + +#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \ + ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) ) + +#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) ) + +#define ID3D12Device_Evict(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) ) + +#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \ + ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) ) + +#define ID3D12Device_GetDeviceRemovedReason(This) \ + ( (This)->lpVtbl -> GetDeviceRemovedReason(This) ) + +#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \ + ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) + +#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device_SetStablePowerState(This,Enable) \ + ( (This)->lpVtbl -> SetStablePowerState(This,Enable) ) + +#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \ + ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) ) + +#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \ + ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) + +#define ID3D12Device_GetAdapterLuid(This) \ + ( (This)->lpVtbl -> GetAdapterLuid(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + + + + + + + + + + + + + +#endif /* __ID3D12Device_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__ +#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__ + +/* interface ID3D12PipelineLibrary */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12PipelineLibrary; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f") + ID3D12PipelineLibrary : public ID3D12DeviceChild + { + public: + virtual HRESULT STDMETHODCALLTYPE StorePipeline( + _In_opt_ LPCWSTR pName, + _In_ ID3D12PipelineState *pPipeline) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline( + _In_ LPCWSTR pName, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline( + _In_ LPCWSTR pName, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState) = 0; + + virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Serialize( + _Out_writes_(DataSizeInBytes) void *pData, + SIZE_T DataSizeInBytes) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12PipelineLibraryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12PipelineLibrary * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12PipelineLibrary * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12PipelineLibrary * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12PipelineLibrary * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12PipelineLibrary * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12PipelineLibrary * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12PipelineLibrary * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12PipelineLibrary * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *StorePipeline )( + ID3D12PipelineLibrary * This, + _In_opt_ LPCWSTR pName, + _In_ ID3D12PipelineState *pPipeline); + + HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )( + ID3D12PipelineLibrary * This, + _In_ LPCWSTR pName, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )( + ID3D12PipelineLibrary * This, + _In_ LPCWSTR pName, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )( + ID3D12PipelineLibrary * This); + + HRESULT ( STDMETHODCALLTYPE *Serialize )( + ID3D12PipelineLibrary * This, + _Out_writes_(DataSizeInBytes) void *pData, + SIZE_T DataSizeInBytes); + + END_INTERFACE + } ID3D12PipelineLibraryVtbl; + + interface ID3D12PipelineLibrary + { + CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12PipelineLibrary_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12PipelineLibrary_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12PipelineLibrary_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \ + ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) ) + +#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) ) + +#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) ) + +#define ID3D12PipelineLibrary_GetSerializedSize(This) \ + ( (This)->lpVtbl -> GetSerializedSize(This) ) + +#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \ + ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ +#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ + +/* interface ID3D12PipelineLibrary1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12PipelineLibrary1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3") + ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary + { + public: + virtual HRESULT STDMETHODCALLTYPE LoadPipeline( + _In_ LPCWSTR pName, + _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12PipelineLibrary1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12PipelineLibrary1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12PipelineLibrary1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12PipelineLibrary1 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12PipelineLibrary1 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12PipelineLibrary1 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12PipelineLibrary1 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12PipelineLibrary1 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12PipelineLibrary1 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *StorePipeline )( + ID3D12PipelineLibrary1 * This, + _In_opt_ LPCWSTR pName, + _In_ ID3D12PipelineState *pPipeline); + + HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )( + ID3D12PipelineLibrary1 * This, + _In_ LPCWSTR pName, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )( + ID3D12PipelineLibrary1 * This, + _In_ LPCWSTR pName, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )( + ID3D12PipelineLibrary1 * This); + + HRESULT ( STDMETHODCALLTYPE *Serialize )( + ID3D12PipelineLibrary1 * This, + _Out_writes_(DataSizeInBytes) void *pData, + SIZE_T DataSizeInBytes); + + HRESULT ( STDMETHODCALLTYPE *LoadPipeline )( + ID3D12PipelineLibrary1 * This, + _In_ LPCWSTR pName, + _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + END_INTERFACE + } ID3D12PipelineLibrary1Vtbl; + + interface ID3D12PipelineLibrary1 + { + CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12PipelineLibrary1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12PipelineLibrary1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12PipelineLibrary1_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \ + ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) ) + +#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) ) + +#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) ) + +#define ID3D12PipelineLibrary1_GetSerializedSize(This) \ + ( (This)->lpVtbl -> GetSerializedSize(This) ) + +#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \ + ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) ) + + +#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0023 */ +/* [local] */ + +typedef +enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS + { + D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0, + D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1, + D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0 + } D3D12_MULTIPLE_FENCE_WAIT_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS ); +typedef +enum D3D12_RESIDENCY_PRIORITY + { + D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000, + D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000, + D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000, + D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000, + D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000 + } D3D12_RESIDENCY_PRIORITY; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_s_ifspec; + +#ifndef __ID3D12Device1_INTERFACE_DEFINED__ +#define __ID3D12Device1_INTERFACE_DEFINED__ + +/* interface ID3D12Device1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Device1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e") + ID3D12Device1 : public ID3D12Device + { + public: + virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary( + _In_reads_(BlobLength) const void *pLibraryBlob, + SIZE_T BlobLength, + REFIID riid, + _COM_Outptr_ void **ppPipelineLibrary) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion( + _In_reads_(NumFences) ID3D12Fence *const *ppFences, + _In_reads_(NumFences) const UINT64 *pFenceValues, + UINT NumFences, + D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, + HANDLE hEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority( + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Device1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Device1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Device1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Device1 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Device1 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Device1 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Device1 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Device1 * This, + _In_z_ LPCWSTR Name); + + UINT ( STDMETHODCALLTYPE *GetNodeCount )( + ID3D12Device1 * This); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )( + ID3D12Device1 * This, + _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppCommandQueue); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )( + ID3D12Device1 * This, + _In_ D3D12_COMMAND_LIST_TYPE type, + REFIID riid, + _COM_Outptr_ void **ppCommandAllocator); + + HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )( + ID3D12Device1 * This, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )( + ID3D12Device1 * This, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList )( + ID3D12Device1 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ ID3D12CommandAllocator *pCommandAllocator, + _In_opt_ ID3D12PipelineState *pInitialState, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )( + ID3D12Device1 * This, + D3D12_FEATURE Feature, + _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData, + UINT FeatureSupportDataSize); + + HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )( + ID3D12Device1 * This, + _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )( + ID3D12Device1 * This, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); + + HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )( + ID3D12Device1 * This, + _In_ UINT nodeMask, + _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature, + _In_ SIZE_T blobLengthInBytes, + REFIID riid, + _COM_Outptr_ void **ppvRootSignature); + + void ( STDMETHODCALLTYPE *CreateConstantBufferView )( + ID3D12Device1 * This, + _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateShaderResourceView )( + ID3D12Device1 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )( + ID3D12Device1 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ ID3D12Resource *pCounterResource, + _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateRenderTargetView )( + ID3D12Device1 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateDepthStencilView )( + ID3D12Device1 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateSampler )( + ID3D12Device1 * This, + _In_ const D3D12_SAMPLER_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CopyDescriptors )( + ID3D12Device1 * This, + _In_ UINT NumDestDescriptorRanges, + _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, + _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes, + _In_ UINT NumSrcDescriptorRanges, + _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts, + _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )( + ID3D12Device1 * This, + _In_ UINT NumDescriptors, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )( + ID3D12Device1 * This, + _In_ UINT visibleMask, + _In_ UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs); + + D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )( + ID3D12Device1 * This, + _In_ UINT nodeMask, + D3D12_HEAP_TYPE heapType); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )( + ID3D12Device1 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap )( + ID3D12Device1 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )( + ID3D12Device1 * This, + _In_ ID3D12Heap *pHeap, + UINT64 HeapOffset, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )( + ID3D12Device1 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )( + ID3D12Device1 * This, + _In_ ID3D12DeviceChild *pObject, + _In_opt_ const SECURITY_ATTRIBUTES *pAttributes, + DWORD Access, + _In_opt_ LPCWSTR Name, + _Out_ HANDLE *pHandle); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )( + ID3D12Device1 * This, + _In_ HANDLE NTHandle, + REFIID riid, + _COM_Outptr_opt_ void **ppvObj); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )( + ID3D12Device1 * This, + _In_ LPCWSTR Name, + DWORD Access, + /* [annotation][out] */ + _Out_ HANDLE *pNTHandle); + + HRESULT ( STDMETHODCALLTYPE *MakeResident )( + ID3D12Device1 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *Evict )( + ID3D12Device1 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *CreateFence )( + ID3D12Device1 * This, + UINT64 InitialValue, + D3D12_FENCE_FLAGS Flags, + REFIID riid, + _COM_Outptr_ void **ppFence); + + HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )( + ID3D12Device1 * This); + + void ( STDMETHODCALLTYPE *GetCopyableFootprints )( + ID3D12Device1 * This, + _In_ const D3D12_RESOURCE_DESC *pResourceDesc, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 BaseOffset, + _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, + _Out_writes_opt_(NumSubresources) UINT *pNumRows, + _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes, + _Out_opt_ UINT64 *pTotalBytes); + + HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )( + ID3D12Device1 * This, + _In_ const D3D12_QUERY_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )( + ID3D12Device1 * This, + BOOL Enable); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )( + ID3D12Device1 * This, + _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc, + _In_opt_ ID3D12RootSignature *pRootSignature, + REFIID riid, + _COM_Outptr_opt_ void **ppvCommandSignature); + + void ( STDMETHODCALLTYPE *GetResourceTiling )( + ID3D12Device1 * This, + _In_ ID3D12Resource *pTiledResource, + _Out_opt_ UINT *pNumTilesForEntireResource, + _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc, + _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, + _Inout_opt_ UINT *pNumSubresourceTilings, + _In_ UINT FirstSubresourceTilingToGet, + _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips); + + LUID ( STDMETHODCALLTYPE *GetAdapterLuid )( + ID3D12Device1 * This); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )( + ID3D12Device1 * This, + _In_reads_(BlobLength) const void *pLibraryBlob, + SIZE_T BlobLength, + REFIID riid, + _COM_Outptr_ void **ppPipelineLibrary); + + HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )( + ID3D12Device1 * This, + _In_reads_(NumFences) ID3D12Fence *const *ppFences, + _In_reads_(NumFences) const UINT64 *pFenceValues, + UINT NumFences, + D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, + HANDLE hEvent); + + HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )( + ID3D12Device1 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities); + + END_INTERFACE + } ID3D12Device1Vtbl; + + interface ID3D12Device1 + { + CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Device1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Device1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Device1_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Device1_GetNodeCount(This) \ + ( (This)->lpVtbl -> GetNodeCount(This) ) + +#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \ + ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) ) + +#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \ + ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) ) + +#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) + +#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \ + ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) ) + +#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) ) + +#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \ + ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) ) + +#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \ + ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) + +#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) ) + +#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) ) + +#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) ) + +#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) + +#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) + +#define ID3D12Device1_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) ) + +#define ID3D12Device1_GetCustomHeapProperties(This,nodeMask,heapType) \ + ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) ) + +#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) + +#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \ + ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) ) + +#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \ + ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) ) + +#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \ + ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) ) + +#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) ) + +#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) ) + +#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \ + ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) ) + +#define ID3D12Device1_GetDeviceRemovedReason(This) \ + ( (This)->lpVtbl -> GetDeviceRemovedReason(This) ) + +#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \ + ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) + +#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device1_SetStablePowerState(This,Enable) \ + ( (This)->lpVtbl -> SetStablePowerState(This,Enable) ) + +#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \ + ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) ) + +#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \ + ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) + +#define ID3D12Device1_GetAdapterLuid(This) \ + ( (This)->lpVtbl -> GetAdapterLuid(This) ) + + +#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \ + ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) + +#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \ + ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) ) + +#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \ + ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Device2_INTERFACE_DEFINED__ +#define __ID3D12Device2_INTERFACE_DEFINED__ + +/* interface ID3D12Device2 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Device2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328") + ID3D12Device2 : public ID3D12Device1 + { + public: + virtual HRESULT STDMETHODCALLTYPE CreatePipelineState( + const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Device2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Device2 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Device2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Device2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Device2 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Device2 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Device2 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Device2 * This, + _In_z_ LPCWSTR Name); + + UINT ( STDMETHODCALLTYPE *GetNodeCount )( + ID3D12Device2 * This); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )( + ID3D12Device2 * This, + _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppCommandQueue); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )( + ID3D12Device2 * This, + _In_ D3D12_COMMAND_LIST_TYPE type, + REFIID riid, + _COM_Outptr_ void **ppCommandAllocator); + + HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )( + ID3D12Device2 * This, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )( + ID3D12Device2 * This, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList )( + ID3D12Device2 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ ID3D12CommandAllocator *pCommandAllocator, + _In_opt_ ID3D12PipelineState *pInitialState, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )( + ID3D12Device2 * This, + D3D12_FEATURE Feature, + _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData, + UINT FeatureSupportDataSize); + + HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )( + ID3D12Device2 * This, + _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )( + ID3D12Device2 * This, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); + + HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )( + ID3D12Device2 * This, + _In_ UINT nodeMask, + _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature, + _In_ SIZE_T blobLengthInBytes, + REFIID riid, + _COM_Outptr_ void **ppvRootSignature); + + void ( STDMETHODCALLTYPE *CreateConstantBufferView )( + ID3D12Device2 * This, + _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateShaderResourceView )( + ID3D12Device2 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )( + ID3D12Device2 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ ID3D12Resource *pCounterResource, + _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateRenderTargetView )( + ID3D12Device2 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateDepthStencilView )( + ID3D12Device2 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateSampler )( + ID3D12Device2 * This, + _In_ const D3D12_SAMPLER_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CopyDescriptors )( + ID3D12Device2 * This, + _In_ UINT NumDestDescriptorRanges, + _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, + _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes, + _In_ UINT NumSrcDescriptorRanges, + _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts, + _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )( + ID3D12Device2 * This, + _In_ UINT NumDescriptors, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )( + ID3D12Device2 * This, + _In_ UINT visibleMask, + _In_ UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs); + + D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )( + ID3D12Device2 * This, + _In_ UINT nodeMask, + D3D12_HEAP_TYPE heapType); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )( + ID3D12Device2 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap )( + ID3D12Device2 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )( + ID3D12Device2 * This, + _In_ ID3D12Heap *pHeap, + UINT64 HeapOffset, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )( + ID3D12Device2 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )( + ID3D12Device2 * This, + _In_ ID3D12DeviceChild *pObject, + _In_opt_ const SECURITY_ATTRIBUTES *pAttributes, + DWORD Access, + _In_opt_ LPCWSTR Name, + _Out_ HANDLE *pHandle); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )( + ID3D12Device2 * This, + _In_ HANDLE NTHandle, + REFIID riid, + _COM_Outptr_opt_ void **ppvObj); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )( + ID3D12Device2 * This, + _In_ LPCWSTR Name, + DWORD Access, + /* [annotation][out] */ + _Out_ HANDLE *pNTHandle); + + HRESULT ( STDMETHODCALLTYPE *MakeResident )( + ID3D12Device2 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *Evict )( + ID3D12Device2 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *CreateFence )( + ID3D12Device2 * This, + UINT64 InitialValue, + D3D12_FENCE_FLAGS Flags, + REFIID riid, + _COM_Outptr_ void **ppFence); + + HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )( + ID3D12Device2 * This); + + void ( STDMETHODCALLTYPE *GetCopyableFootprints )( + ID3D12Device2 * This, + _In_ const D3D12_RESOURCE_DESC *pResourceDesc, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 BaseOffset, + _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, + _Out_writes_opt_(NumSubresources) UINT *pNumRows, + _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes, + _Out_opt_ UINT64 *pTotalBytes); + + HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )( + ID3D12Device2 * This, + _In_ const D3D12_QUERY_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )( + ID3D12Device2 * This, + BOOL Enable); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )( + ID3D12Device2 * This, + _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc, + _In_opt_ ID3D12RootSignature *pRootSignature, + REFIID riid, + _COM_Outptr_opt_ void **ppvCommandSignature); + + void ( STDMETHODCALLTYPE *GetResourceTiling )( + ID3D12Device2 * This, + _In_ ID3D12Resource *pTiledResource, + _Out_opt_ UINT *pNumTilesForEntireResource, + _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc, + _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, + _Inout_opt_ UINT *pNumSubresourceTilings, + _In_ UINT FirstSubresourceTilingToGet, + _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips); + + LUID ( STDMETHODCALLTYPE *GetAdapterLuid )( + ID3D12Device2 * This); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )( + ID3D12Device2 * This, + _In_reads_(BlobLength) const void *pLibraryBlob, + SIZE_T BlobLength, + REFIID riid, + _COM_Outptr_ void **ppPipelineLibrary); + + HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )( + ID3D12Device2 * This, + _In_reads_(NumFences) ID3D12Fence *const *ppFences, + _In_reads_(NumFences) const UINT64 *pFenceValues, + UINT NumFences, + D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, + HANDLE hEvent); + + HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )( + ID3D12Device2 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )( + ID3D12Device2 * This, + const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + END_INTERFACE + } ID3D12Device2Vtbl; + + interface ID3D12Device2 + { + CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Device2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Device2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Device2_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Device2_GetNodeCount(This) \ + ( (This)->lpVtbl -> GetNodeCount(This) ) + +#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \ + ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) ) + +#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \ + ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) ) + +#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) + +#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \ + ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) ) + +#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) ) + +#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \ + ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) ) + +#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \ + ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) + +#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) ) + +#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) ) + +#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) ) + +#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) + +#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) + +#define ID3D12Device2_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) ) + +#define ID3D12Device2_GetCustomHeapProperties(This,nodeMask,heapType) \ + ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) ) + +#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) + +#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \ + ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) ) + +#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \ + ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) ) + +#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \ + ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) ) + +#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) ) + +#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) ) + +#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \ + ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) ) + +#define ID3D12Device2_GetDeviceRemovedReason(This) \ + ( (This)->lpVtbl -> GetDeviceRemovedReason(This) ) + +#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \ + ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) + +#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device2_SetStablePowerState(This,Enable) \ + ( (This)->lpVtbl -> SetStablePowerState(This,Enable) ) + +#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \ + ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) ) + +#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \ + ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) + +#define ID3D12Device2_GetAdapterLuid(This) \ + ( (This)->lpVtbl -> GetAdapterLuid(This) ) + + +#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \ + ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) + +#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \ + ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) ) + +#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \ + ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) ) + + +#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0025 */ +/* [local] */ + +typedef +enum D3D12_RESIDENCY_FLAGS + { + D3D12_RESIDENCY_FLAG_NONE = 0, + D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1 + } D3D12_RESIDENCY_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS ); + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec; + +#ifndef __ID3D12Device3_INTERFACE_DEFINED__ +#define __ID3D12Device3_INTERFACE_DEFINED__ + +/* interface ID3D12Device3 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Device3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98") + ID3D12Device3 : public ID3D12Device2 + { + public: + virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress( + _In_ const void *pAddress, + REFIID riid, + _COM_Outptr_ void **ppvHeap) = 0; + + virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping( + _In_ HANDLE hFileMapping, + REFIID riid, + _COM_Outptr_ void **ppvHeap) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident( + D3D12_RESIDENCY_FLAGS Flags, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_ ID3D12Fence *pFenceToSignal, + UINT64 FenceValueToSignal) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Device3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Device3 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Device3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Device3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Device3 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Device3 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Device3 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Device3 * This, + _In_z_ LPCWSTR Name); + + UINT ( STDMETHODCALLTYPE *GetNodeCount )( + ID3D12Device3 * This); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )( + ID3D12Device3 * This, + _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppCommandQueue); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )( + ID3D12Device3 * This, + _In_ D3D12_COMMAND_LIST_TYPE type, + REFIID riid, + _COM_Outptr_ void **ppCommandAllocator); + + HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )( + ID3D12Device3 * This, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )( + ID3D12Device3 * This, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList )( + ID3D12Device3 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ ID3D12CommandAllocator *pCommandAllocator, + _In_opt_ ID3D12PipelineState *pInitialState, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )( + ID3D12Device3 * This, + D3D12_FEATURE Feature, + _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData, + UINT FeatureSupportDataSize); + + HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )( + ID3D12Device3 * This, + _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )( + ID3D12Device3 * This, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); + + HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )( + ID3D12Device3 * This, + _In_ UINT nodeMask, + _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature, + _In_ SIZE_T blobLengthInBytes, + REFIID riid, + _COM_Outptr_ void **ppvRootSignature); + + void ( STDMETHODCALLTYPE *CreateConstantBufferView )( + ID3D12Device3 * This, + _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateShaderResourceView )( + ID3D12Device3 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )( + ID3D12Device3 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ ID3D12Resource *pCounterResource, + _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateRenderTargetView )( + ID3D12Device3 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateDepthStencilView )( + ID3D12Device3 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateSampler )( + ID3D12Device3 * This, + _In_ const D3D12_SAMPLER_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CopyDescriptors )( + ID3D12Device3 * This, + _In_ UINT NumDestDescriptorRanges, + _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, + _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes, + _In_ UINT NumSrcDescriptorRanges, + _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts, + _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )( + ID3D12Device3 * This, + _In_ UINT NumDescriptors, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )( + ID3D12Device3 * This, + _In_ UINT visibleMask, + _In_ UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs); + + D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )( + ID3D12Device3 * This, + _In_ UINT nodeMask, + D3D12_HEAP_TYPE heapType); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )( + ID3D12Device3 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap )( + ID3D12Device3 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )( + ID3D12Device3 * This, + _In_ ID3D12Heap *pHeap, + UINT64 HeapOffset, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )( + ID3D12Device3 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )( + ID3D12Device3 * This, + _In_ ID3D12DeviceChild *pObject, + _In_opt_ const SECURITY_ATTRIBUTES *pAttributes, + DWORD Access, + _In_opt_ LPCWSTR Name, + _Out_ HANDLE *pHandle); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )( + ID3D12Device3 * This, + _In_ HANDLE NTHandle, + REFIID riid, + _COM_Outptr_opt_ void **ppvObj); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )( + ID3D12Device3 * This, + _In_ LPCWSTR Name, + DWORD Access, + /* [annotation][out] */ + _Out_ HANDLE *pNTHandle); + + HRESULT ( STDMETHODCALLTYPE *MakeResident )( + ID3D12Device3 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *Evict )( + ID3D12Device3 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *CreateFence )( + ID3D12Device3 * This, + UINT64 InitialValue, + D3D12_FENCE_FLAGS Flags, + REFIID riid, + _COM_Outptr_ void **ppFence); + + HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )( + ID3D12Device3 * This); + + void ( STDMETHODCALLTYPE *GetCopyableFootprints )( + ID3D12Device3 * This, + _In_ const D3D12_RESOURCE_DESC *pResourceDesc, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 BaseOffset, + _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, + _Out_writes_opt_(NumSubresources) UINT *pNumRows, + _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes, + _Out_opt_ UINT64 *pTotalBytes); + + HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )( + ID3D12Device3 * This, + _In_ const D3D12_QUERY_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )( + ID3D12Device3 * This, + BOOL Enable); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )( + ID3D12Device3 * This, + _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc, + _In_opt_ ID3D12RootSignature *pRootSignature, + REFIID riid, + _COM_Outptr_opt_ void **ppvCommandSignature); + + void ( STDMETHODCALLTYPE *GetResourceTiling )( + ID3D12Device3 * This, + _In_ ID3D12Resource *pTiledResource, + _Out_opt_ UINT *pNumTilesForEntireResource, + _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc, + _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, + _Inout_opt_ UINT *pNumSubresourceTilings, + _In_ UINT FirstSubresourceTilingToGet, + _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips); + + LUID ( STDMETHODCALLTYPE *GetAdapterLuid )( + ID3D12Device3 * This); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )( + ID3D12Device3 * This, + _In_reads_(BlobLength) const void *pLibraryBlob, + SIZE_T BlobLength, + REFIID riid, + _COM_Outptr_ void **ppPipelineLibrary); + + HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )( + ID3D12Device3 * This, + _In_reads_(NumFences) ID3D12Fence *const *ppFences, + _In_reads_(NumFences) const UINT64 *pFenceValues, + UINT NumFences, + D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, + HANDLE hEvent); + + HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )( + ID3D12Device3 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )( + ID3D12Device3 * This, + const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )( + ID3D12Device3 * This, + _In_ const void *pAddress, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )( + ID3D12Device3 * This, + _In_ HANDLE hFileMapping, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )( + ID3D12Device3 * This, + D3D12_RESIDENCY_FLAGS Flags, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_ ID3D12Fence *pFenceToSignal, + UINT64 FenceValueToSignal); + + END_INTERFACE + } ID3D12Device3Vtbl; + + interface ID3D12Device3 + { + CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Device3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Device3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Device3_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Device3_GetNodeCount(This) \ + ( (This)->lpVtbl -> GetNodeCount(This) ) + +#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \ + ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) ) + +#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \ + ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) ) + +#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) + +#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \ + ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) ) + +#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) ) + +#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \ + ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) ) + +#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \ + ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) + +#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) ) + +#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) ) + +#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) ) + +#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) + +#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) + +#define ID3D12Device3_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) ) + +#define ID3D12Device3_GetCustomHeapProperties(This,nodeMask,heapType) \ + ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) ) + +#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) + +#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \ + ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) ) + +#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \ + ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) ) + +#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \ + ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) ) + +#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) ) + +#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) ) + +#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \ + ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) ) + +#define ID3D12Device3_GetDeviceRemovedReason(This) \ + ( (This)->lpVtbl -> GetDeviceRemovedReason(This) ) + +#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \ + ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) + +#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device3_SetStablePowerState(This,Enable) \ + ( (This)->lpVtbl -> SetStablePowerState(This,Enable) ) + +#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \ + ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) ) + +#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \ + ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) + +#define ID3D12Device3_GetAdapterLuid(This) \ + ( (This)->lpVtbl -> GetAdapterLuid(This) ) + + +#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \ + ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) + +#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \ + ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) ) + +#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \ + ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) ) + + +#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) ) + + +#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \ + ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) ) + +#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \ + ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) ) + +#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \ + ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0026 */ +/* [local] */ + +typedef +enum D3D12_COMMAND_LIST_FLAGS + { + D3D12_COMMAND_LIST_FLAG_NONE = 0 + } D3D12_COMMAND_LIST_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS ); +typedef +enum D3D12_COMMAND_POOL_FLAGS + { + D3D12_COMMAND_POOL_FLAG_NONE = 0 + } D3D12_COMMAND_POOL_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS ); +typedef +enum D3D12_COMMAND_RECORDER_FLAGS + { + D3D12_COMMAND_RECORDER_FLAG_NONE = 0 + } D3D12_COMMAND_RECORDER_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS ); +typedef +enum D3D12_PROTECTED_SESSION_STATUS + { + D3D12_PROTECTED_SESSION_STATUS_OK = 0, + D3D12_PROTECTED_SESSION_STATUS_INVALID = 1 + } D3D12_PROTECTED_SESSION_STATUS; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_s_ifspec; + +#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__ +#define __ID3D12ProtectedSession_INTERFACE_DEFINED__ + +/* interface ID3D12ProtectedSession */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12ProtectedSession; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B") + ID3D12ProtectedSession : public ID3D12DeviceChild + { + public: + virtual HRESULT STDMETHODCALLTYPE GetStatusFence( + REFIID riid, + _COM_Outptr_opt_ void **ppFence) = 0; + + virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12ProtectedSessionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12ProtectedSession * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12ProtectedSession * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12ProtectedSession * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12ProtectedSession * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12ProtectedSession * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12ProtectedSession * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12ProtectedSession * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12ProtectedSession * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *GetStatusFence )( + ID3D12ProtectedSession * This, + REFIID riid, + _COM_Outptr_opt_ void **ppFence); + + D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )( + ID3D12ProtectedSession * This); + + END_INTERFACE + } ID3D12ProtectedSessionVtbl; + + interface ID3D12ProtectedSession + { + CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12ProtectedSession_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12ProtectedSession_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12ProtectedSession_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \ + ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) ) + +#define ID3D12ProtectedSession_GetSessionStatus(This) \ + ( (This)->lpVtbl -> GetSessionStatus(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0027 */ +/* [local] */ + +typedef +enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS + { + D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0, + D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1 + } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS ); +typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT + { + UINT NodeIndex; + D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; + } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT; + +typedef +enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS + { + D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0 + } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS ); +typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC + { + UINT NodeMask; + D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags; + } D3D12_PROTECTED_RESOURCE_SESSION_DESC; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec; + +#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ +#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ + +/* interface ID3D12ProtectedResourceSession */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12ProtectedResourceSession; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D") + ID3D12ProtectedResourceSession : public ID3D12ProtectedSession + { + public: + virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12ProtectedResourceSessionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12ProtectedResourceSession * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12ProtectedResourceSession * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12ProtectedResourceSession * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12ProtectedResourceSession * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12ProtectedResourceSession * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12ProtectedResourceSession * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12ProtectedResourceSession * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12ProtectedResourceSession * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *GetStatusFence )( + ID3D12ProtectedResourceSession * This, + REFIID riid, + _COM_Outptr_opt_ void **ppFence); + + D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )( + ID3D12ProtectedResourceSession * This); + + D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )( + ID3D12ProtectedResourceSession * This); + + END_INTERFACE + } ID3D12ProtectedResourceSessionVtbl; + + interface ID3D12ProtectedResourceSession + { + CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12ProtectedResourceSession_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12ProtectedResourceSession_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12ProtectedResourceSession_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \ + ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) ) + +#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \ + ( (This)->lpVtbl -> GetSessionStatus(This) ) + + +#define ID3D12ProtectedResourceSession_GetDesc(This) \ + ( (This)->lpVtbl -> GetDesc(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + + + + + +#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Device4_INTERFACE_DEFINED__ +#define __ID3D12Device4_INTERFACE_DEFINED__ + +/* interface ID3D12Device4 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Device4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5") + ID3D12Device4 : public ID3D12Device3 + { + public: + virtual HRESULT STDMETHODCALLTYPE CreateCommandList1( + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ D3D12_COMMAND_LIST_FLAGS flags, + REFIID riid, + _COM_Outptr_ void **ppCommandList) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession( + _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc, + _In_ REFIID riid, + _COM_Outptr_ void **ppSession) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1( + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateHeap1( + _In_ const D3D12_HEAP_DESC *pDesc, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1( + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource) = 0; + + virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1( + UINT visibleMask, + UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs, + _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Device4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Device4 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Device4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Device4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Device4 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Device4 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Device4 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Device4 * This, + _In_z_ LPCWSTR Name); + + UINT ( STDMETHODCALLTYPE *GetNodeCount )( + ID3D12Device4 * This); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )( + ID3D12Device4 * This, + _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppCommandQueue); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )( + ID3D12Device4 * This, + _In_ D3D12_COMMAND_LIST_TYPE type, + REFIID riid, + _COM_Outptr_ void **ppCommandAllocator); + + HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )( + ID3D12Device4 * This, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )( + ID3D12Device4 * This, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList )( + ID3D12Device4 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ ID3D12CommandAllocator *pCommandAllocator, + _In_opt_ ID3D12PipelineState *pInitialState, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )( + ID3D12Device4 * This, + D3D12_FEATURE Feature, + _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData, + UINT FeatureSupportDataSize); + + HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )( + ID3D12Device4 * This, + _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )( + ID3D12Device4 * This, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); + + HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )( + ID3D12Device4 * This, + _In_ UINT nodeMask, + _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature, + _In_ SIZE_T blobLengthInBytes, + REFIID riid, + _COM_Outptr_ void **ppvRootSignature); + + void ( STDMETHODCALLTYPE *CreateConstantBufferView )( + ID3D12Device4 * This, + _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateShaderResourceView )( + ID3D12Device4 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )( + ID3D12Device4 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ ID3D12Resource *pCounterResource, + _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateRenderTargetView )( + ID3D12Device4 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateDepthStencilView )( + ID3D12Device4 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateSampler )( + ID3D12Device4 * This, + _In_ const D3D12_SAMPLER_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CopyDescriptors )( + ID3D12Device4 * This, + _In_ UINT NumDestDescriptorRanges, + _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, + _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes, + _In_ UINT NumSrcDescriptorRanges, + _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts, + _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )( + ID3D12Device4 * This, + _In_ UINT NumDescriptors, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )( + ID3D12Device4 * This, + _In_ UINT visibleMask, + _In_ UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs); + + D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )( + ID3D12Device4 * This, + _In_ UINT nodeMask, + D3D12_HEAP_TYPE heapType); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )( + ID3D12Device4 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap )( + ID3D12Device4 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )( + ID3D12Device4 * This, + _In_ ID3D12Heap *pHeap, + UINT64 HeapOffset, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )( + ID3D12Device4 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )( + ID3D12Device4 * This, + _In_ ID3D12DeviceChild *pObject, + _In_opt_ const SECURITY_ATTRIBUTES *pAttributes, + DWORD Access, + _In_opt_ LPCWSTR Name, + _Out_ HANDLE *pHandle); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )( + ID3D12Device4 * This, + _In_ HANDLE NTHandle, + REFIID riid, + _COM_Outptr_opt_ void **ppvObj); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )( + ID3D12Device4 * This, + _In_ LPCWSTR Name, + DWORD Access, + /* [annotation][out] */ + _Out_ HANDLE *pNTHandle); + + HRESULT ( STDMETHODCALLTYPE *MakeResident )( + ID3D12Device4 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *Evict )( + ID3D12Device4 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *CreateFence )( + ID3D12Device4 * This, + UINT64 InitialValue, + D3D12_FENCE_FLAGS Flags, + REFIID riid, + _COM_Outptr_ void **ppFence); + + HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )( + ID3D12Device4 * This); + + void ( STDMETHODCALLTYPE *GetCopyableFootprints )( + ID3D12Device4 * This, + _In_ const D3D12_RESOURCE_DESC *pResourceDesc, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 BaseOffset, + _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, + _Out_writes_opt_(NumSubresources) UINT *pNumRows, + _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes, + _Out_opt_ UINT64 *pTotalBytes); + + HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )( + ID3D12Device4 * This, + _In_ const D3D12_QUERY_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )( + ID3D12Device4 * This, + BOOL Enable); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )( + ID3D12Device4 * This, + _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc, + _In_opt_ ID3D12RootSignature *pRootSignature, + REFIID riid, + _COM_Outptr_opt_ void **ppvCommandSignature); + + void ( STDMETHODCALLTYPE *GetResourceTiling )( + ID3D12Device4 * This, + _In_ ID3D12Resource *pTiledResource, + _Out_opt_ UINT *pNumTilesForEntireResource, + _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc, + _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, + _Inout_opt_ UINT *pNumSubresourceTilings, + _In_ UINT FirstSubresourceTilingToGet, + _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips); + + LUID ( STDMETHODCALLTYPE *GetAdapterLuid )( + ID3D12Device4 * This); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )( + ID3D12Device4 * This, + _In_reads_(BlobLength) const void *pLibraryBlob, + SIZE_T BlobLength, + REFIID riid, + _COM_Outptr_ void **ppPipelineLibrary); + + HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )( + ID3D12Device4 * This, + _In_reads_(NumFences) ID3D12Fence *const *ppFences, + _In_reads_(NumFences) const UINT64 *pFenceValues, + UINT NumFences, + D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, + HANDLE hEvent); + + HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )( + ID3D12Device4 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )( + ID3D12Device4 * This, + const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )( + ID3D12Device4 * This, + _In_ const void *pAddress, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )( + ID3D12Device4 * This, + _In_ HANDLE hFileMapping, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )( + ID3D12Device4 * This, + D3D12_RESIDENCY_FLAGS Flags, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_ ID3D12Fence *pFenceToSignal, + UINT64 FenceValueToSignal); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )( + ID3D12Device4 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ D3D12_COMMAND_LIST_FLAGS flags, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )( + ID3D12Device4 * This, + _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc, + _In_ REFIID riid, + _COM_Outptr_ void **ppSession); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )( + ID3D12Device4 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )( + ID3D12Device4 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )( + ID3D12Device4 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )( + ID3D12Device4 * This, + UINT visibleMask, + UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs, + _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1); + + END_INTERFACE + } ID3D12Device4Vtbl; + + interface ID3D12Device4 + { + CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Device4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Device4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Device4_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Device4_GetNodeCount(This) \ + ( (This)->lpVtbl -> GetNodeCount(This) ) + +#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \ + ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) ) + +#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \ + ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) ) + +#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) + +#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \ + ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) ) + +#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) ) + +#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \ + ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) ) + +#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \ + ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) + +#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) ) + +#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) ) + +#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) ) + +#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) + +#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) + +#define ID3D12Device4_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) ) + +#define ID3D12Device4_GetCustomHeapProperties(This,nodeMask,heapType) \ + ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) ) + +#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) + +#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \ + ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) ) + +#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \ + ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) ) + +#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \ + ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) ) + +#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) ) + +#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) ) + +#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \ + ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) ) + +#define ID3D12Device4_GetDeviceRemovedReason(This) \ + ( (This)->lpVtbl -> GetDeviceRemovedReason(This) ) + +#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \ + ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) + +#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device4_SetStablePowerState(This,Enable) \ + ( (This)->lpVtbl -> SetStablePowerState(This,Enable) ) + +#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \ + ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) ) + +#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \ + ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) + +#define ID3D12Device4_GetAdapterLuid(This) \ + ( (This)->lpVtbl -> GetAdapterLuid(This) ) + + +#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \ + ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) + +#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \ + ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) ) + +#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \ + ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) ) + + +#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) ) + + +#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \ + ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) ) + +#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \ + ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) ) + +#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \ + ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) + + +#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) ) + +#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \ + ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) ) + +#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) + +#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) ) + +#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) + +#define ID3D12Device4_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + + + + + +#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0029 */ +/* [local] */ + +typedef +enum D3D12_LIFETIME_STATE + { + D3D12_LIFETIME_STATE_IN_USE = 0, + D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 ) + } D3D12_LIFETIME_STATE; + + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec; + +#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__ +#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__ + +/* interface ID3D12LifetimeOwner */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12LifetimeOwner; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8") + ID3D12LifetimeOwner : public IUnknown + { + public: + virtual void STDMETHODCALLTYPE LifetimeStateUpdated( + D3D12_LIFETIME_STATE NewState) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12LifetimeOwnerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12LifetimeOwner * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12LifetimeOwner * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12LifetimeOwner * This); + + void ( STDMETHODCALLTYPE *LifetimeStateUpdated )( + ID3D12LifetimeOwner * This, + D3D12_LIFETIME_STATE NewState); + + END_INTERFACE + } ID3D12LifetimeOwnerVtbl; + + interface ID3D12LifetimeOwner + { + CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12LifetimeOwner_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12LifetimeOwner_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \ + ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ +#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ + +/* interface ID3D12SwapChainAssistant */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12SwapChainAssistant; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f") + ID3D12SwapChainAssistant : public IUnknown + { + public: + virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject( + REFIID riid, + _COM_Outptr_ void **ppv) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue( + REFIID riidResource, + _COM_Outptr_ void **ppvResource, + REFIID riidQueue, + _COM_Outptr_ void **ppvQueue) = 0; + + virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12SwapChainAssistantVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12SwapChainAssistant * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12SwapChainAssistant * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12SwapChainAssistant * This); + + LUID ( STDMETHODCALLTYPE *GetLUID )( + ID3D12SwapChainAssistant * This); + + HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )( + ID3D12SwapChainAssistant * This, + REFIID riid, + _COM_Outptr_ void **ppv); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )( + ID3D12SwapChainAssistant * This, + REFIID riidResource, + _COM_Outptr_ void **ppvResource, + REFIID riidQueue, + _COM_Outptr_ void **ppvQueue); + + HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )( + ID3D12SwapChainAssistant * This); + + END_INTERFACE + } ID3D12SwapChainAssistantVtbl; + + interface ID3D12SwapChainAssistant + { + CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12SwapChainAssistant_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12SwapChainAssistant_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12SwapChainAssistant_GetLUID(This) \ + ( (This)->lpVtbl -> GetLUID(This) ) + +#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \ + ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) ) + +#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \ + ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) ) + +#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \ + ( (This)->lpVtbl -> InsertImplicitSync(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + + + + + +#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__ +#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__ + +/* interface ID3D12LifetimeTracker */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12LifetimeTracker; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813") + ID3D12LifetimeTracker : public ID3D12DeviceChild + { + public: + virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject( + _In_ ID3D12DeviceChild *pObject) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12LifetimeTrackerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12LifetimeTracker * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12LifetimeTracker * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12LifetimeTracker * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12LifetimeTracker * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12LifetimeTracker * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12LifetimeTracker * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12LifetimeTracker * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12LifetimeTracker * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )( + ID3D12LifetimeTracker * This, + _In_ ID3D12DeviceChild *pObject); + + END_INTERFACE + } ID3D12LifetimeTrackerVtbl; + + interface ID3D12LifetimeTracker + { + CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12LifetimeTracker_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12LifetimeTracker_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12LifetimeTracker_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \ + ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0032 */ +/* [local] */ + +typedef +enum D3D12_META_COMMAND_PARAMETER_TYPE + { + D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0, + D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1, + D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2, + D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3, + D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4 + } D3D12_META_COMMAND_PARAMETER_TYPE; + +typedef +enum D3D12_META_COMMAND_PARAMETER_FLAGS + { + D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1, + D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2 + } D3D12_META_COMMAND_PARAMETER_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS ); +typedef +enum D3D12_META_COMMAND_PARAMETER_STAGE + { + D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0, + D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1, + D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2 + } D3D12_META_COMMAND_PARAMETER_STAGE; + +typedef struct D3D12_META_COMMAND_PARAMETER_DESC + { + LPCWSTR Name; + D3D12_META_COMMAND_PARAMETER_TYPE Type; + D3D12_META_COMMAND_PARAMETER_FLAGS Flags; + D3D12_RESOURCE_STATES RequiredResourceState; + UINT StructureOffset; + } D3D12_META_COMMAND_PARAMETER_DESC; + +typedef +enum D3D12_GRAPHICS_STATES + { + D3D12_GRAPHICS_STATE_NONE = 0, + D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) , + D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) , + D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) , + D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) , + D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) , + D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) , + D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) , + D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) , + D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) , + D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) , + D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) , + D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) , + D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) , + D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) , + D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) , + D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) , + D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 ) + } D3D12_GRAPHICS_STATES; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES ); +typedef struct D3D12_META_COMMAND_DESC + { + GUID Id; + LPCWSTR Name; + D3D12_GRAPHICS_STATES InitializationDirtyState; + D3D12_GRAPHICS_STATES ExecutionDirtyState; + } D3D12_META_COMMAND_DESC; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_s_ifspec; + +#ifndef __ID3D12StateObject_INTERFACE_DEFINED__ +#define __ID3D12StateObject_INTERFACE_DEFINED__ + +/* interface ID3D12StateObject */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12StateObject; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d") + ID3D12StateObject : public ID3D12Pageable + { + public: + }; + + +#else /* C style interface */ + + typedef struct ID3D12StateObjectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12StateObject * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12StateObject * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12StateObject * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12StateObject * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12StateObject * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12StateObject * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12StateObject * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12StateObject * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + END_INTERFACE + } ID3D12StateObjectVtbl; + + interface ID3D12StateObject + { + CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12StateObject_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12StateObject_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12StateObject_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__ +#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__ + +/* interface ID3D12StateObjectProperties */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12StateObjectProperties; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860") + ID3D12StateObjectProperties : public IUnknown + { + public: + virtual void *STDMETHODCALLTYPE GetShaderIdentifier( + _In_ LPCWSTR pExportName) = 0; + + virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize( + _In_ LPCWSTR pExportName) = 0; + + virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0; + + virtual void STDMETHODCALLTYPE SetPipelineStackSize( + UINT64 PipelineStackSizeInBytes) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12StateObjectPropertiesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12StateObjectProperties * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12StateObjectProperties * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12StateObjectProperties * This); + + void *( STDMETHODCALLTYPE *GetShaderIdentifier )( + ID3D12StateObjectProperties * This, + _In_ LPCWSTR pExportName); + + UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )( + ID3D12StateObjectProperties * This, + _In_ LPCWSTR pExportName); + + UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )( + ID3D12StateObjectProperties * This); + + void ( STDMETHODCALLTYPE *SetPipelineStackSize )( + ID3D12StateObjectProperties * This, + UINT64 PipelineStackSizeInBytes); + + END_INTERFACE + } ID3D12StateObjectPropertiesVtbl; + + interface ID3D12StateObjectProperties + { + CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12StateObjectProperties_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12StateObjectProperties_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \ + ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) ) + +#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \ + ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) ) + +#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \ + ( (This)->lpVtbl -> GetPipelineStackSize(This) ) + +#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \ + ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0034 */ +/* [local] */ + +typedef +enum D3D12_STATE_SUBOBJECT_TYPE + { + D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, + D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, + D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, + D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, + D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, + D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, + D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, + D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, + D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, + D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, + D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, + D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP + 1 ) + } D3D12_STATE_SUBOBJECT_TYPE; + +typedef struct D3D12_STATE_SUBOBJECT + { + D3D12_STATE_SUBOBJECT_TYPE Type; + const void *pDesc; + } D3D12_STATE_SUBOBJECT; + +typedef +enum D3D12_STATE_OBJECT_FLAGS + { + D3D12_STATE_OBJECT_FLAG_NONE = 0, + D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1, + D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2 + } D3D12_STATE_OBJECT_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS ); +typedef struct D3D12_STATE_OBJECT_CONFIG + { + D3D12_STATE_OBJECT_FLAGS Flags; + } D3D12_STATE_OBJECT_CONFIG; + +typedef struct D3D12_GLOBAL_ROOT_SIGNATURE + { + ID3D12RootSignature *pGlobalRootSignature; + } D3D12_GLOBAL_ROOT_SIGNATURE; + +typedef struct D3D12_LOCAL_ROOT_SIGNATURE + { + ID3D12RootSignature *pLocalRootSignature; + } D3D12_LOCAL_ROOT_SIGNATURE; + +typedef struct D3D12_NODE_MASK + { + UINT NodeMask; + } D3D12_NODE_MASK; + +typedef +enum D3D12_EXPORT_FLAGS + { + D3D12_EXPORT_FLAG_NONE = 0 + } D3D12_EXPORT_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS ); +typedef struct D3D12_EXPORT_DESC + { + LPCWSTR Name; + _In_opt_ LPCWSTR ExportToRename; + D3D12_EXPORT_FLAGS Flags; + } D3D12_EXPORT_DESC; + +typedef struct D3D12_DXIL_LIBRARY_DESC + { + D3D12_SHADER_BYTECODE DXILLibrary; + UINT NumExports; + _In_reads_(NumExports) D3D12_EXPORT_DESC *pExports; + } D3D12_DXIL_LIBRARY_DESC; + +typedef struct D3D12_EXISTING_COLLECTION_DESC + { + ID3D12StateObject *pExistingCollection; + UINT NumExports; + _In_reads_(NumExports) D3D12_EXPORT_DESC *pExports; + } D3D12_EXISTING_COLLECTION_DESC; + +typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION + { + const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate; + UINT NumExports; + _In_reads_(NumExports) LPCWSTR *pExports; + } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION; + +typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION + { + LPCWSTR SubobjectToAssociate; + UINT NumExports; + _In_reads_(NumExports) LPCWSTR *pExports; + } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION; + +typedef +enum D3D12_HIT_GROUP_TYPE + { + D3D12_HIT_GROUP_TYPE_TRIANGLES = 0, + D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1 + } D3D12_HIT_GROUP_TYPE; + +typedef struct D3D12_HIT_GROUP_DESC + { + LPCWSTR HitGroupExport; + D3D12_HIT_GROUP_TYPE Type; + _In_opt_ LPCWSTR AnyHitShaderImport; + _In_opt_ LPCWSTR ClosestHitShaderImport; + _In_opt_ LPCWSTR IntersectionShaderImport; + } D3D12_HIT_GROUP_DESC; + +typedef struct D3D12_RAYTRACING_SHADER_CONFIG + { + UINT MaxPayloadSizeInBytes; + UINT MaxAttributeSizeInBytes; + } D3D12_RAYTRACING_SHADER_CONFIG; + +typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG + { + UINT MaxTraceRecursionDepth; + } D3D12_RAYTRACING_PIPELINE_CONFIG; + +typedef +enum D3D12_STATE_OBJECT_TYPE + { + D3D12_STATE_OBJECT_TYPE_COLLECTION = 0, + D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3 + } D3D12_STATE_OBJECT_TYPE; + +typedef struct D3D12_STATE_OBJECT_DESC + { + D3D12_STATE_OBJECT_TYPE Type; + UINT NumSubobjects; + _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects; + } D3D12_STATE_OBJECT_DESC; + +typedef +enum D3D12_RAYTRACING_GEOMETRY_FLAGS + { + D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0, + D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1, + D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2 + } D3D12_RAYTRACING_GEOMETRY_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS ); +typedef +enum D3D12_RAYTRACING_GEOMETRY_TYPE + { + D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0, + D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 ) + } D3D12_RAYTRACING_GEOMETRY_TYPE; + +typedef +enum D3D12_RAYTRACING_INSTANCE_FLAGS + { + D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0, + D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1, + D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2, + D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4, + D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8 + } D3D12_RAYTRACING_INSTANCE_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS ); +typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE + { + D3D12_GPU_VIRTUAL_ADDRESS StartAddress; + UINT64 StrideInBytes; + } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE; + +typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE + { + D3D12_GPU_VIRTUAL_ADDRESS StartAddress; + UINT64 SizeInBytes; + } D3D12_GPU_VIRTUAL_ADDRESS_RANGE; + +typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE + { + D3D12_GPU_VIRTUAL_ADDRESS StartAddress; + UINT64 SizeInBytes; + UINT64 StrideInBytes; + } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE; + +typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC + { + D3D12_GPU_VIRTUAL_ADDRESS Transform3x4; + DXGI_FORMAT IndexFormat; + DXGI_FORMAT VertexFormat; + UINT IndexCount; + UINT VertexCount; + D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer; + D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer; + } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC; + +typedef struct D3D12_RAYTRACING_AABB + { + FLOAT MinX; + FLOAT MinY; + FLOAT MinZ; + FLOAT MaxX; + FLOAT MaxY; + FLOAT MaxZ; + } D3D12_RAYTRACING_AABB; + +typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC + { + UINT64 AABBCount; + D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs; + } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC; + +typedef +enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS + { + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20 + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS ); +typedef +enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE + { + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4 + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE; + +typedef +enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE + { + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1 + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE; + +typedef +enum D3D12_ELEMENTS_LAYOUT + { + D3D12_ELEMENTS_LAYOUT_ARRAY = 0, + D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1 + } D3D12_ELEMENTS_LAYOUT; + +typedef +enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE + { + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2, + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3 + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE; + +typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC + { + D3D12_GPU_VIRTUAL_ADDRESS DestBuffer; + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType; + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC; + +typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC + { + UINT64 CompactedSizeInBytes; + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC; + +typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC + { + UINT64 DecodedSizeInBytes; + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC; + +typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER + { + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type; + UINT NumDescs; + } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER; + +// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above, +// depending on Type field, NumDescs above is followed by either: +// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs] +// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs]. +// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU. + +typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC + { + UINT64 SerializedSizeInBytes; + UINT64 NumBottomLevelAccelerationStructurePointers; + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC; + +typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER + { + GUID DriverOpaqueGUID; + BYTE DriverOpaqueVersioningData[ 16 ]; + } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER; + +typedef +enum D3D12_SERIALIZED_DATA_TYPE + { + D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0 + } D3D12_SERIALIZED_DATA_TYPE; + +typedef +enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS + { + D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0, + D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1, + D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2, + D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3, + D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4 + } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS; + +typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER + { + D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier; + UINT64 SerializedSizeInBytesIncludingHeader; + UINT64 DeserializedSizeInBytes; + UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader; + } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER; + +typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC + { + UINT64 CurrentSizeInBytes; + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC; + +typedef struct D3D12_RAYTRACING_INSTANCE_DESC + { + FLOAT Transform[ 3 ][ 4 ]; + UINT InstanceID : 24; + UINT InstanceMask : 8; + UINT InstanceContributionToHitGroupIndex : 24; + UINT Flags : 8; + D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure; + } D3D12_RAYTRACING_INSTANCE_DESC; + +typedef struct D3D12_RAYTRACING_GEOMETRY_DESC + { + D3D12_RAYTRACING_GEOMETRY_TYPE Type; + D3D12_RAYTRACING_GEOMETRY_FLAGS Flags; + union + { + D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles; + D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs; + } ; + } D3D12_RAYTRACING_GEOMETRY_DESC; + +typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS + { + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type; + D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags; + UINT NumDescs; + D3D12_ELEMENTS_LAYOUT DescsLayout; + union + { + D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs; + const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs; + const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs; + } ; + } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS; + +typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC + { + D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData; + D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs; + _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData; + D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData; + } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC; + +typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO + { + UINT64 ResultDataMaxSizeInBytes; + UINT64 ScratchDataSizeInBytes; + UINT64 UpdateScratchDataSizeInBytes; + } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO; + +typedef +enum D3D12_RAY_FLAGS + { + D3D12_RAY_FLAG_NONE = 0, + D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1, + D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2, + D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4, + D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8, + D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10, + D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20, + D3D12_RAY_FLAG_CULL_OPAQUE = 0x40, + D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80 + } D3D12_RAY_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS ); +typedef +enum D3D12_HIT_KIND + { + D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe, + D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff + } D3D12_HIT_KIND; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec; + +#ifndef __ID3D12Device5_INTERFACE_DEFINED__ +#define __ID3D12Device5_INTERFACE_DEFINED__ + +/* interface ID3D12Device5 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Device5; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d") + ID3D12Device5 : public ID3D12Device4 + { + public: + virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker( + _In_ ID3D12LifetimeOwner *pOwner, + REFIID riid, + _COM_Outptr_ void **ppvTracker) = 0; + + virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands( + _Inout_ UINT *pNumMetaCommands, + _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters( + _In_ REFGUID CommandId, + _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage, + _Out_opt_ UINT *pTotalStructureSizeInBytes, + _Inout_ UINT *pParameterCount, + _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand( + _In_ REFGUID CommandId, + _In_ UINT NodeMask, + _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData, + _In_ SIZE_T CreationParametersDataSizeInBytes, + REFIID riid, + _COM_Outptr_ void **ppMetaCommand) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateStateObject( + const D3D12_STATE_OBJECT_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppStateObject) = 0; + + virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo( + _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc, + _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0; + + virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier( + _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType, + _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Device5Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Device5 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Device5 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Device5 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Device5 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Device5 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Device5 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Device5 * This, + _In_z_ LPCWSTR Name); + + UINT ( STDMETHODCALLTYPE *GetNodeCount )( + ID3D12Device5 * This); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )( + ID3D12Device5 * This, + _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppCommandQueue); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )( + ID3D12Device5 * This, + _In_ D3D12_COMMAND_LIST_TYPE type, + REFIID riid, + _COM_Outptr_ void **ppCommandAllocator); + + HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )( + ID3D12Device5 * This, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )( + ID3D12Device5 * This, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList )( + ID3D12Device5 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ ID3D12CommandAllocator *pCommandAllocator, + _In_opt_ ID3D12PipelineState *pInitialState, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )( + ID3D12Device5 * This, + D3D12_FEATURE Feature, + _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData, + UINT FeatureSupportDataSize); + + HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )( + ID3D12Device5 * This, + _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )( + ID3D12Device5 * This, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); + + HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )( + ID3D12Device5 * This, + _In_ UINT nodeMask, + _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature, + _In_ SIZE_T blobLengthInBytes, + REFIID riid, + _COM_Outptr_ void **ppvRootSignature); + + void ( STDMETHODCALLTYPE *CreateConstantBufferView )( + ID3D12Device5 * This, + _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateShaderResourceView )( + ID3D12Device5 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )( + ID3D12Device5 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ ID3D12Resource *pCounterResource, + _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateRenderTargetView )( + ID3D12Device5 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateDepthStencilView )( + ID3D12Device5 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateSampler )( + ID3D12Device5 * This, + _In_ const D3D12_SAMPLER_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CopyDescriptors )( + ID3D12Device5 * This, + _In_ UINT NumDestDescriptorRanges, + _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, + _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes, + _In_ UINT NumSrcDescriptorRanges, + _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts, + _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )( + ID3D12Device5 * This, + _In_ UINT NumDescriptors, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )( + ID3D12Device5 * This, + _In_ UINT visibleMask, + _In_ UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs); + + D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )( + ID3D12Device5 * This, + _In_ UINT nodeMask, + D3D12_HEAP_TYPE heapType); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )( + ID3D12Device5 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap )( + ID3D12Device5 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )( + ID3D12Device5 * This, + _In_ ID3D12Heap *pHeap, + UINT64 HeapOffset, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )( + ID3D12Device5 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )( + ID3D12Device5 * This, + _In_ ID3D12DeviceChild *pObject, + _In_opt_ const SECURITY_ATTRIBUTES *pAttributes, + DWORD Access, + _In_opt_ LPCWSTR Name, + _Out_ HANDLE *pHandle); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )( + ID3D12Device5 * This, + _In_ HANDLE NTHandle, + REFIID riid, + _COM_Outptr_opt_ void **ppvObj); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )( + ID3D12Device5 * This, + _In_ LPCWSTR Name, + DWORD Access, + /* [annotation][out] */ + _Out_ HANDLE *pNTHandle); + + HRESULT ( STDMETHODCALLTYPE *MakeResident )( + ID3D12Device5 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *Evict )( + ID3D12Device5 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *CreateFence )( + ID3D12Device5 * This, + UINT64 InitialValue, + D3D12_FENCE_FLAGS Flags, + REFIID riid, + _COM_Outptr_ void **ppFence); + + HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )( + ID3D12Device5 * This); + + void ( STDMETHODCALLTYPE *GetCopyableFootprints )( + ID3D12Device5 * This, + _In_ const D3D12_RESOURCE_DESC *pResourceDesc, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 BaseOffset, + _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, + _Out_writes_opt_(NumSubresources) UINT *pNumRows, + _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes, + _Out_opt_ UINT64 *pTotalBytes); + + HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )( + ID3D12Device5 * This, + _In_ const D3D12_QUERY_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )( + ID3D12Device5 * This, + BOOL Enable); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )( + ID3D12Device5 * This, + _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc, + _In_opt_ ID3D12RootSignature *pRootSignature, + REFIID riid, + _COM_Outptr_opt_ void **ppvCommandSignature); + + void ( STDMETHODCALLTYPE *GetResourceTiling )( + ID3D12Device5 * This, + _In_ ID3D12Resource *pTiledResource, + _Out_opt_ UINT *pNumTilesForEntireResource, + _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc, + _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, + _Inout_opt_ UINT *pNumSubresourceTilings, + _In_ UINT FirstSubresourceTilingToGet, + _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips); + + LUID ( STDMETHODCALLTYPE *GetAdapterLuid )( + ID3D12Device5 * This); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )( + ID3D12Device5 * This, + _In_reads_(BlobLength) const void *pLibraryBlob, + SIZE_T BlobLength, + REFIID riid, + _COM_Outptr_ void **ppPipelineLibrary); + + HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )( + ID3D12Device5 * This, + _In_reads_(NumFences) ID3D12Fence *const *ppFences, + _In_reads_(NumFences) const UINT64 *pFenceValues, + UINT NumFences, + D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, + HANDLE hEvent); + + HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )( + ID3D12Device5 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )( + ID3D12Device5 * This, + const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )( + ID3D12Device5 * This, + _In_ const void *pAddress, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )( + ID3D12Device5 * This, + _In_ HANDLE hFileMapping, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )( + ID3D12Device5 * This, + D3D12_RESIDENCY_FLAGS Flags, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_ ID3D12Fence *pFenceToSignal, + UINT64 FenceValueToSignal); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )( + ID3D12Device5 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ D3D12_COMMAND_LIST_FLAGS flags, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )( + ID3D12Device5 * This, + _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc, + _In_ REFIID riid, + _COM_Outptr_ void **ppSession); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )( + ID3D12Device5 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )( + ID3D12Device5 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )( + ID3D12Device5 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )( + ID3D12Device5 * This, + UINT visibleMask, + UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs, + _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1); + + HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )( + ID3D12Device5 * This, + _In_ ID3D12LifetimeOwner *pOwner, + REFIID riid, + _COM_Outptr_ void **ppvTracker); + + void ( STDMETHODCALLTYPE *RemoveDevice )( + ID3D12Device5 * This); + + HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )( + ID3D12Device5 * This, + _Inout_ UINT *pNumMetaCommands, + _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs); + + HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )( + ID3D12Device5 * This, + _In_ REFGUID CommandId, + _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage, + _Out_opt_ UINT *pTotalStructureSizeInBytes, + _Inout_ UINT *pParameterCount, + _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs); + + HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )( + ID3D12Device5 * This, + _In_ REFGUID CommandId, + _In_ UINT NodeMask, + _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData, + _In_ SIZE_T CreationParametersDataSizeInBytes, + REFIID riid, + _COM_Outptr_ void **ppMetaCommand); + + HRESULT ( STDMETHODCALLTYPE *CreateStateObject )( + ID3D12Device5 * This, + const D3D12_STATE_OBJECT_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppStateObject); + + void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )( + ID3D12Device5 * This, + _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc, + _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo); + + D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )( + ID3D12Device5 * This, + _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType, + _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck); + + END_INTERFACE + } ID3D12Device5Vtbl; + + interface ID3D12Device5 + { + CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Device5_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Device5_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Device5_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Device5_GetNodeCount(This) \ + ( (This)->lpVtbl -> GetNodeCount(This) ) + +#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \ + ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) ) + +#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \ + ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) ) + +#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) + +#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \ + ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) ) + +#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) ) + +#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \ + ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) ) + +#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \ + ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) + +#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) ) + +#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) ) + +#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) ) + +#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) + +#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) + +#define ID3D12Device5_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) ) + +#define ID3D12Device5_GetCustomHeapProperties(This,nodeMask,heapType) \ + ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) ) + +#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) + +#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \ + ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) ) + +#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \ + ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) ) + +#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \ + ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) ) + +#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) ) + +#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) ) + +#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \ + ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) ) + +#define ID3D12Device5_GetDeviceRemovedReason(This) \ + ( (This)->lpVtbl -> GetDeviceRemovedReason(This) ) + +#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \ + ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) + +#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device5_SetStablePowerState(This,Enable) \ + ( (This)->lpVtbl -> SetStablePowerState(This,Enable) ) + +#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \ + ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) ) + +#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \ + ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) + +#define ID3D12Device5_GetAdapterLuid(This) \ + ( (This)->lpVtbl -> GetAdapterLuid(This) ) + + +#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \ + ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) + +#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \ + ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) ) + +#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \ + ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) ) + + +#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) ) + + +#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \ + ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) ) + +#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \ + ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) ) + +#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \ + ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) + + +#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) ) + +#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \ + ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) ) + +#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) + +#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) ) + +#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) + +#define ID3D12Device5_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) ) + + +#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \ + ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) ) + +#define ID3D12Device5_RemoveDevice(This) \ + ( (This)->lpVtbl -> RemoveDevice(This) ) + +#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \ + ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) ) + +#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \ + ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) + +#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \ + ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) + +#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \ + ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) ) + +#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \ + ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) ) + +#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \ + ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0035 */ +/* [local] */ + +typedef +enum D3D12_AUTO_BREADCRUMB_OP + { + D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0, + D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1, + D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2, + D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3, + D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4, + D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5, + D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6, + D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7, + D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8, + D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9, + D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10, + D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11, + D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12, + D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13, + D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14, + D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15, + D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16, + D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17, + D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18, + D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19, + D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20, + D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21, + D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22, + D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23, + D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24, + D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25, + D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26, + D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27, + D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28, + D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29, + D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30, + D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31, + D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32, + D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33, + D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34, + D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35, + D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36, + D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37, + D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38, + D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39, + D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40, + D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41 + } D3D12_AUTO_BREADCRUMB_OP; + +typedef struct D3D12_AUTO_BREADCRUMB_NODE + { + const char *pCommandListDebugNameA; + const wchar_t *pCommandListDebugNameW; + const char *pCommandQueueDebugNameA; + const wchar_t *pCommandQueueDebugNameW; + ID3D12GraphicsCommandList *pCommandList; + ID3D12CommandQueue *pCommandQueue; + UINT32 BreadcrumbCount; + const UINT32 *pLastBreadcrumbValue; + const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory; + const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; + } D3D12_AUTO_BREADCRUMB_NODE; + +typedef +enum D3D12_DRED_VERSION + { + D3D12_DRED_VERSION_1_0 = 0x1, + D3D12_DRED_VERSION_1_1 = 0x2 + } D3D12_DRED_VERSION; + +typedef +enum D3D12_DRED_FLAGS + { + D3D12_DRED_FLAG_NONE = 0, + D3D12_DRED_FLAG_FORCE_ENABLE = 1, + D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2 + } D3D12_DRED_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS ); +typedef +enum D3D12_DRED_ENABLEMENT + { + D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0, + D3D12_DRED_ENABLEMENT_FORCED_OFF = 1, + D3D12_DRED_ENABLEMENT_FORCED_ON = 2 + } D3D12_DRED_ENABLEMENT; + +typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA + { + _In_ D3D12_DRED_FLAGS Flags; + _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; + } D3D12_DEVICE_REMOVED_EXTENDED_DATA; + +typedef +enum D3D12_DRED_ALLOCATION_TYPE + { + D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19, + D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20, + D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21, + D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22, + D3D12_DRED_ALLOCATION_TYPE_FENCE = 23, + D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24, + D3D12_DRED_ALLOCATION_TYPE_HEAP = 25, + D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27, + D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28, + D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29, + D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30, + D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32, + D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34, + D3D12_DRED_ALLOCATION_TYPE_PASS = 35, + D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36, + D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37, + D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38, + D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39, + D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40, + D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41, + D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42, + D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43, + D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44, + D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45, + D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46, + D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47, + D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff + } D3D12_DRED_ALLOCATION_TYPE; + +typedef struct D3D12_DRED_ALLOCATION_NODE + { + const char *ObjectNameA; + const wchar_t *ObjectNameW; + D3D12_DRED_ALLOCATION_TYPE AllocationType; + const struct D3D12_DRED_ALLOCATION_NODE *pNext; + } D3D12_DRED_ALLOCATION_NODE; + +typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT + { + _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; + } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT; + +typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT + { + D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; + _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode; + _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode; + } D3D12_DRED_PAGE_FAULT_OUTPUT; + +typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1 + { + HRESULT DeviceRemovedReason; + D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput; + D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput; + } D3D12_DEVICE_REMOVED_EXTENDED_DATA1; + +typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA + { + D3D12_DRED_VERSION Version; + union + { + D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0; + D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1; + } ; + } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_s_ifspec; + +#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ +#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ + +/* interface ID3D12DeviceRemovedExtendedDataSettings */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63") + ID3D12DeviceRemovedExtendedDataSettings : public IUnknown + { + public: + virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement( + D3D12_DRED_ENABLEMENT __MIDL__ID3D12DeviceRemovedExtendedDataSettings0000) = 0; + + virtual void STDMETHODCALLTYPE SetPageFaultEnablement( + D3D12_DRED_ENABLEMENT __MIDL__ID3D12DeviceRemovedExtendedDataSettings0001) = 0; + + virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement( + D3D12_DRED_ENABLEMENT __MIDL__ID3D12DeviceRemovedExtendedDataSettings0002) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DeviceRemovedExtendedDataSettings * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DeviceRemovedExtendedDataSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DeviceRemovedExtendedDataSettings * This); + + void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )( + ID3D12DeviceRemovedExtendedDataSettings * This, + D3D12_DRED_ENABLEMENT __MIDL__ID3D12DeviceRemovedExtendedDataSettings0000); + + void ( STDMETHODCALLTYPE *SetPageFaultEnablement )( + ID3D12DeviceRemovedExtendedDataSettings * This, + D3D12_DRED_ENABLEMENT __MIDL__ID3D12DeviceRemovedExtendedDataSettings0001); + + void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )( + ID3D12DeviceRemovedExtendedDataSettings * This, + D3D12_DRED_ENABLEMENT __MIDL__ID3D12DeviceRemovedExtendedDataSettings0002); + + END_INTERFACE + } ID3D12DeviceRemovedExtendedDataSettingsVtbl; + + interface ID3D12DeviceRemovedExtendedDataSettings + { + CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,__MIDL__ID3D12DeviceRemovedExtendedDataSettings0000) \ + ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,__MIDL__ID3D12DeviceRemovedExtendedDataSettings0000) ) + +#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,__MIDL__ID3D12DeviceRemovedExtendedDataSettings0001) \ + ( (This)->lpVtbl -> SetPageFaultEnablement(This,__MIDL__ID3D12DeviceRemovedExtendedDataSettings0001) ) + +#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,__MIDL__ID3D12DeviceRemovedExtendedDataSettings0002) \ + ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,__MIDL__ID3D12DeviceRemovedExtendedDataSettings0002) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ +#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ + +/* interface ID3D12DeviceRemovedExtendedData */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71") + ID3D12DeviceRemovedExtendedData : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput( + D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput( + D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DeviceRemovedExtendedDataVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DeviceRemovedExtendedData * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DeviceRemovedExtendedData * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DeviceRemovedExtendedData * This); + + HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )( + ID3D12DeviceRemovedExtendedData * This, + D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput); + + HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )( + ID3D12DeviceRemovedExtendedData * This, + D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput); + + END_INTERFACE + } ID3D12DeviceRemovedExtendedDataVtbl; + + interface ID3D12DeviceRemovedExtendedData + { + CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DeviceRemovedExtendedData_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DeviceRemovedExtendedData_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \ + ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) ) + +#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \ + ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0037 */ +/* [local] */ + +typedef +enum D3D12_BACKGROUND_PROCESSING_MODE + { + D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0, + D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) , + D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) , + D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 ) + } D3D12_BACKGROUND_PROCESSING_MODE; + +typedef +enum D3D12_MEASUREMENTS_ACTION + { + D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0, + D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) , + D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) , + D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 ) + } D3D12_MEASUREMENTS_ACTION; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0037_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0037_v0_0_s_ifspec; + +#ifndef __ID3D12Device6_INTERFACE_DEFINED__ +#define __ID3D12Device6_INTERFACE_DEFINED__ + +/* interface ID3D12Device6 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Device6; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc") + ID3D12Device6 : public ID3D12Device5 + { + public: + virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode( + D3D12_BACKGROUND_PROCESSING_MODE Mode, + D3D12_MEASUREMENTS_ACTION MeasurementsAction, + _In_opt_ HANDLE hEventToSignalUponCompletion, + _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Device6Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Device6 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Device6 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Device6 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Device6 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Device6 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Device6 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Device6 * This, + _In_z_ LPCWSTR Name); + + UINT ( STDMETHODCALLTYPE *GetNodeCount )( + ID3D12Device6 * This); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )( + ID3D12Device6 * This, + _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppCommandQueue); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )( + ID3D12Device6 * This, + _In_ D3D12_COMMAND_LIST_TYPE type, + REFIID riid, + _COM_Outptr_ void **ppCommandAllocator); + + HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )( + ID3D12Device6 * This, + _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )( + ID3D12Device6 * This, + _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList )( + ID3D12Device6 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ ID3D12CommandAllocator *pCommandAllocator, + _In_opt_ ID3D12PipelineState *pInitialState, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )( + ID3D12Device6 * This, + D3D12_FEATURE Feature, + _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData, + UINT FeatureSupportDataSize); + + HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )( + ID3D12Device6 * This, + _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )( + ID3D12Device6 * This, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); + + HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )( + ID3D12Device6 * This, + _In_ UINT nodeMask, + _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature, + _In_ SIZE_T blobLengthInBytes, + REFIID riid, + _COM_Outptr_ void **ppvRootSignature); + + void ( STDMETHODCALLTYPE *CreateConstantBufferView )( + ID3D12Device6 * This, + _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateShaderResourceView )( + ID3D12Device6 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )( + ID3D12Device6 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ ID3D12Resource *pCounterResource, + _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateRenderTargetView )( + ID3D12Device6 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateDepthStencilView )( + ID3D12Device6 * This, + _In_opt_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CreateSampler )( + ID3D12Device6 * This, + _In_ const D3D12_SAMPLER_DESC *pDesc, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); + + void ( STDMETHODCALLTYPE *CopyDescriptors )( + ID3D12Device6 * This, + _In_ UINT NumDestDescriptorRanges, + _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, + _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes, + _In_ UINT NumSrcDescriptorRanges, + _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts, + _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )( + ID3D12Device6 * This, + _In_ UINT NumDescriptors, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, + _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )( + ID3D12Device6 * This, + _In_ UINT visibleMask, + _In_ UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs); + + D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )( + ID3D12Device6 * This, + _In_ UINT nodeMask, + D3D12_HEAP_TYPE heapType); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )( + ID3D12Device6 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap )( + ID3D12Device6 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )( + ID3D12Device6 * This, + _In_ ID3D12Heap *pHeap, + UINT64 HeapOffset, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )( + ID3D12Device6 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )( + ID3D12Device6 * This, + _In_ ID3D12DeviceChild *pObject, + _In_opt_ const SECURITY_ATTRIBUTES *pAttributes, + DWORD Access, + _In_opt_ LPCWSTR Name, + _Out_ HANDLE *pHandle); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )( + ID3D12Device6 * This, + _In_ HANDLE NTHandle, + REFIID riid, + _COM_Outptr_opt_ void **ppvObj); + + HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )( + ID3D12Device6 * This, + _In_ LPCWSTR Name, + DWORD Access, + /* [annotation][out] */ + _Out_ HANDLE *pNTHandle); + + HRESULT ( STDMETHODCALLTYPE *MakeResident )( + ID3D12Device6 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *Evict )( + ID3D12Device6 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects); + + HRESULT ( STDMETHODCALLTYPE *CreateFence )( + ID3D12Device6 * This, + UINT64 InitialValue, + D3D12_FENCE_FLAGS Flags, + REFIID riid, + _COM_Outptr_ void **ppFence); + + HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )( + ID3D12Device6 * This); + + void ( STDMETHODCALLTYPE *GetCopyableFootprints )( + ID3D12Device6 * This, + _In_ const D3D12_RESOURCE_DESC *pResourceDesc, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 BaseOffset, + _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, + _Out_writes_opt_(NumSubresources) UINT *pNumRows, + _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes, + _Out_opt_ UINT64 *pTotalBytes); + + HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )( + ID3D12Device6 * This, + _In_ const D3D12_QUERY_HEAP_DESC *pDesc, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )( + ID3D12Device6 * This, + BOOL Enable); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )( + ID3D12Device6 * This, + _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc, + _In_opt_ ID3D12RootSignature *pRootSignature, + REFIID riid, + _COM_Outptr_opt_ void **ppvCommandSignature); + + void ( STDMETHODCALLTYPE *GetResourceTiling )( + ID3D12Device6 * This, + _In_ ID3D12Resource *pTiledResource, + _Out_opt_ UINT *pNumTilesForEntireResource, + _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc, + _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, + _Inout_opt_ UINT *pNumSubresourceTilings, + _In_ UINT FirstSubresourceTilingToGet, + _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips); + + LUID ( STDMETHODCALLTYPE *GetAdapterLuid )( + ID3D12Device6 * This); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )( + ID3D12Device6 * This, + _In_reads_(BlobLength) const void *pLibraryBlob, + SIZE_T BlobLength, + REFIID riid, + _COM_Outptr_ void **ppPipelineLibrary); + + HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )( + ID3D12Device6 * This, + _In_reads_(NumFences) ID3D12Fence *const *ppFences, + _In_reads_(NumFences) const UINT64 *pFenceValues, + UINT NumFences, + D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, + HANDLE hEvent); + + HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )( + ID3D12Device6 * This, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities); + + HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )( + ID3D12Device6 * This, + const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppPipelineState); + + HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )( + ID3D12Device6 * This, + _In_ const void *pAddress, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )( + ID3D12Device6 * This, + _In_ HANDLE hFileMapping, + REFIID riid, + _COM_Outptr_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )( + ID3D12Device6 * This, + D3D12_RESIDENCY_FLAGS Flags, + UINT NumObjects, + _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects, + _In_ ID3D12Fence *pFenceToSignal, + UINT64 FenceValueToSignal); + + HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )( + ID3D12Device6 * This, + _In_ UINT nodeMask, + _In_ D3D12_COMMAND_LIST_TYPE type, + _In_ D3D12_COMMAND_LIST_FLAGS flags, + REFIID riid, + _COM_Outptr_ void **ppCommandList); + + HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )( + ID3D12Device6 * This, + _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc, + _In_ REFIID riid, + _COM_Outptr_ void **ppSession); + + HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )( + ID3D12Device6 * This, + _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties, + D3D12_HEAP_FLAGS HeapFlags, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialResourceState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riidResource, + _COM_Outptr_opt_ void **ppvResource); + + HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )( + ID3D12Device6 * This, + _In_ const D3D12_HEAP_DESC *pDesc, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riid, + _COM_Outptr_opt_ void **ppvHeap); + + HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )( + ID3D12Device6 * This, + _In_ const D3D12_RESOURCE_DESC *pDesc, + D3D12_RESOURCE_STATES InitialState, + _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession, + REFIID riid, + _COM_Outptr_opt_ void **ppvResource); + + D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )( + ID3D12Device6 * This, + UINT visibleMask, + UINT numResourceDescs, + _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs, + _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1); + + HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )( + ID3D12Device6 * This, + _In_ ID3D12LifetimeOwner *pOwner, + REFIID riid, + _COM_Outptr_ void **ppvTracker); + + void ( STDMETHODCALLTYPE *RemoveDevice )( + ID3D12Device6 * This); + + HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )( + ID3D12Device6 * This, + _Inout_ UINT *pNumMetaCommands, + _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs); + + HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )( + ID3D12Device6 * This, + _In_ REFGUID CommandId, + _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage, + _Out_opt_ UINT *pTotalStructureSizeInBytes, + _Inout_ UINT *pParameterCount, + _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs); + + HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )( + ID3D12Device6 * This, + _In_ REFGUID CommandId, + _In_ UINT NodeMask, + _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData, + _In_ SIZE_T CreationParametersDataSizeInBytes, + REFIID riid, + _COM_Outptr_ void **ppMetaCommand); + + HRESULT ( STDMETHODCALLTYPE *CreateStateObject )( + ID3D12Device6 * This, + const D3D12_STATE_OBJECT_DESC *pDesc, + REFIID riid, + _COM_Outptr_ void **ppStateObject); + + void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )( + ID3D12Device6 * This, + _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc, + _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo); + + D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )( + ID3D12Device6 * This, + _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType, + _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck); + + HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )( + ID3D12Device6 * This, + D3D12_BACKGROUND_PROCESSING_MODE Mode, + D3D12_MEASUREMENTS_ACTION MeasurementsAction, + _In_opt_ HANDLE hEventToSignalUponCompletion, + _Out_opt_ BOOL *pbFurtherMeasurementsDesired); + + END_INTERFACE + } ID3D12Device6Vtbl; + + interface ID3D12Device6 + { + CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Device6_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Device6_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Device6_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Device6_GetNodeCount(This) \ + ( (This)->lpVtbl -> GetNodeCount(This) ) + +#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \ + ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) ) + +#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \ + ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) ) + +#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) ) + +#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) ) + +#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \ + ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) ) + +#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) ) + +#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \ + ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) ) + +#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \ + ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) ) + +#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) ) + +#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) ) + +#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) ) + +#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \ + ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) ) + +#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) ) + +#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \ + ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) ) + +#define ID3D12Device6_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) ) + +#define ID3D12Device6_GetCustomHeapProperties(This,nodeMask,heapType) \ + ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) ) + +#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) ) + +#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) ) + +#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \ + ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) ) + +#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \ + ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) ) + +#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \ + ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) ) + +#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) ) + +#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \ + ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) ) + +#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \ + ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) ) + +#define ID3D12Device6_GetDeviceRemovedReason(This) \ + ( (This)->lpVtbl -> GetDeviceRemovedReason(This) ) + +#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \ + ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) ) + +#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) ) + +#define ID3D12Device6_SetStablePowerState(This,Enable) \ + ( (This)->lpVtbl -> SetStablePowerState(This,Enable) ) + +#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \ + ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) ) + +#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \ + ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) ) + +#define ID3D12Device6_GetAdapterLuid(This) \ + ( (This)->lpVtbl -> GetAdapterLuid(This) ) + + +#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \ + ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) ) + +#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \ + ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) ) + +#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \ + ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) ) + + +#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \ + ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) ) + + +#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \ + ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) ) + +#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \ + ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) ) + +#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \ + ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) ) + + +#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \ + ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) ) + +#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \ + ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) ) + +#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \ + ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) ) + +#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \ + ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) ) + +#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \ + ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) ) + +#define ID3D12Device6_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \ + ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) ) + + +#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \ + ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) ) + +#define ID3D12Device6_RemoveDevice(This) \ + ( (This)->lpVtbl -> RemoveDevice(This) ) + +#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \ + ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) ) + +#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \ + ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) ) + +#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \ + ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) ) + +#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \ + ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) ) + +#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \ + ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) ) + +#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \ + ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) ) + + +#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \ + ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Resource1_INTERFACE_DEFINED__ +#define __ID3D12Resource1_INTERFACE_DEFINED__ + +/* interface ID3D12Resource1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Resource1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19") + ID3D12Resource1 : public ID3D12Resource + { + public: + virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession( + REFIID riid, + _COM_Outptr_opt_ void **ppProtectedSession) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Resource1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Resource1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Resource1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Resource1 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Resource1 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Resource1 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Resource1 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Resource1 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12Resource1 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + HRESULT ( STDMETHODCALLTYPE *Map )( + ID3D12Resource1 * This, + UINT Subresource, + _In_opt_ const D3D12_RANGE *pReadRange, + _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData); + + void ( STDMETHODCALLTYPE *Unmap )( + ID3D12Resource1 * This, + UINT Subresource, + _In_opt_ const D3D12_RANGE *pWrittenRange); + + D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )( + ID3D12Resource1 * This); + + D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )( + ID3D12Resource1 * This); + + HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )( + ID3D12Resource1 * This, + UINT DstSubresource, + _In_opt_ const D3D12_BOX *pDstBox, + _In_ const void *pSrcData, + UINT SrcRowPitch, + UINT SrcDepthPitch); + + HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )( + ID3D12Resource1 * This, + _Out_ void *pDstData, + UINT DstRowPitch, + UINT DstDepthPitch, + UINT SrcSubresource, + _In_opt_ const D3D12_BOX *pSrcBox); + + HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )( + ID3D12Resource1 * This, + _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties, + _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags); + + HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )( + ID3D12Resource1 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppProtectedSession); + + END_INTERFACE + } ID3D12Resource1Vtbl; + + interface ID3D12Resource1 + { + CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Resource1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Resource1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Resource1_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \ + ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) ) + +#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \ + ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) ) + +#define ID3D12Resource1_GetDesc(This) \ + ( (This)->lpVtbl -> GetDesc(This) ) + +#define ID3D12Resource1_GetGPUVirtualAddress(This) \ + ( (This)->lpVtbl -> GetGPUVirtualAddress(This) ) + +#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \ + ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) ) + +#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \ + ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) ) + +#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \ + ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) ) + + +#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \ + ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Heap1_INTERFACE_DEFINED__ +#define __ID3D12Heap1_INTERFACE_DEFINED__ + +/* interface ID3D12Heap1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Heap1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D") + ID3D12Heap1 : public ID3D12Heap + { + public: + virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession( + REFIID riid, + _COM_Outptr_opt_ void **ppProtectedSession) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Heap1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Heap1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Heap1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Heap1 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12Heap1 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12Heap1 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12Heap1 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12Heap1 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12Heap1 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )( + ID3D12Heap1 * This); + + HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )( + ID3D12Heap1 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppProtectedSession); + + END_INTERFACE + } ID3D12Heap1Vtbl; + + interface ID3D12Heap1 + { + CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Heap1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Heap1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12Heap1_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12Heap1_GetDesc(This) \ + ( (This)->lpVtbl -> GetDesc(This) ) + + +#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \ + ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ +#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ + +/* interface ID3D12GraphicsCommandList3 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12GraphicsCommandList3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D") + ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2 + { + public: + virtual void STDMETHODCALLTYPE SetProtectedResourceSession( + _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12GraphicsCommandList3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12GraphicsCommandList3 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12GraphicsCommandList3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12GraphicsCommandList3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12GraphicsCommandList3 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12GraphicsCommandList3 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12GraphicsCommandList3 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12GraphicsCommandList3 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12GraphicsCommandList3 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )( + ID3D12GraphicsCommandList3 * This); + + HRESULT ( STDMETHODCALLTYPE *Close )( + ID3D12GraphicsCommandList3 * This); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12CommandAllocator *pAllocator, + _In_opt_ ID3D12PipelineState *pInitialState); + + void ( STDMETHODCALLTYPE *ClearState )( + ID3D12GraphicsCommandList3 * This, + _In_opt_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *DrawInstanced )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT VertexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *DrawIndexedInstanced )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT IndexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartIndexLocation, + _In_ INT BaseVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *Dispatch )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT ThreadGroupCountX, + _In_ UINT ThreadGroupCountY, + _In_ UINT ThreadGroupCountZ); + + void ( STDMETHODCALLTYPE *CopyBufferRegion )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT64 NumBytes); + + void ( STDMETHODCALLTYPE *CopyTextureRegion )( + ID3D12GraphicsCommandList3 * This, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst, + UINT DstX, + UINT DstY, + UINT DstZ, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc, + _In_opt_ const D3D12_BOX *pSrcBox); + + void ( STDMETHODCALLTYPE *CopyResource )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12Resource *pDstResource, + _In_ ID3D12Resource *pSrcResource); + + void ( STDMETHODCALLTYPE *CopyTiles )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12Resource *pTiledResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize, + _In_ ID3D12Resource *pBuffer, + UINT64 BufferStartOffsetInBytes, + D3D12_TILE_COPY_FLAGS Flags); + + void ( STDMETHODCALLTYPE *ResolveSubresource )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_ DXGI_FORMAT Format); + + void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )( + ID3D12GraphicsCommandList3 * This, + _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); + + void ( STDMETHODCALLTYPE *RSSetViewports )( + ID3D12GraphicsCommandList3 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports, + _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports); + + void ( STDMETHODCALLTYPE *RSSetScissorRects )( + ID3D12GraphicsCommandList3 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects, + _In_reads_( NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *OMSetBlendFactor )( + ID3D12GraphicsCommandList3 * This, + _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]); + + void ( STDMETHODCALLTYPE *OMSetStencilRef )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT StencilRef); + + void ( STDMETHODCALLTYPE *SetPipelineState )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *ResourceBarrier )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT NumBarriers, + _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers); + + void ( STDMETHODCALLTYPE *ExecuteBundle )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12GraphicsCommandList *pCommandList); + + void ( STDMETHODCALLTYPE *SetDescriptorHeaps )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT NumDescriptorHeaps, + _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps); + + void ( STDMETHODCALLTYPE *SetComputeRootSignature )( + ID3D12GraphicsCommandList3 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )( + ID3D12GraphicsCommandList3 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *IASetIndexBuffer )( + ID3D12GraphicsCommandList3 * This, + _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView); + + void ( STDMETHODCALLTYPE *IASetVertexBuffers )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *SOSetTargets )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *OMSetRenderTargets )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT NumRenderTargetDescriptors, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, + _In_ BOOL RTsSingleHandleToDescriptorRange, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor); + + void ( STDMETHODCALLTYPE *ClearDepthStencilView )( + ID3D12GraphicsCommandList3 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, + _In_ D3D12_CLEAR_FLAGS ClearFlags, + _In_ FLOAT Depth, + _In_ UINT8 Stencil, + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearRenderTargetView )( + ID3D12GraphicsCommandList3 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, + _In_ const FLOAT ColorRGBA[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )( + ID3D12GraphicsCommandList3 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const UINT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )( + ID3D12GraphicsCommandList3 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const FLOAT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *DiscardResource )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DISCARD_REGION *pRegion); + + void ( STDMETHODCALLTYPE *BeginQuery )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *EndQuery )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *ResolveQueryData )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT StartIndex, + _In_ UINT NumQueries, + _In_ ID3D12Resource *pDestinationBuffer, + _In_ UINT64 AlignedDestinationBufferOffset); + + void ( STDMETHODCALLTYPE *SetPredication )( + ID3D12GraphicsCommandList3 * This, + _In_opt_ ID3D12Resource *pBuffer, + _In_ UINT64 AlignedBufferOffset, + _In_ D3D12_PREDICATION_OP Operation); + + void ( STDMETHODCALLTYPE *SetMarker )( + ID3D12GraphicsCommandList3 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *BeginEvent )( + ID3D12GraphicsCommandList3 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *EndEvent )( + ID3D12GraphicsCommandList3 * This); + + void ( STDMETHODCALLTYPE *ExecuteIndirect )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12CommandSignature *pCommandSignature, + _In_ UINT MaxCommandCount, + _In_ ID3D12Resource *pArgumentBuffer, + _In_ UINT64 ArgumentBufferOffset, + _In_opt_ ID3D12Resource *pCountBuffer, + _In_ UINT64 CountBufferOffset); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *OMSetDepthBounds )( + ID3D12GraphicsCommandList3 * This, + _In_ FLOAT Min, + _In_ FLOAT Max); + + void ( STDMETHODCALLTYPE *SetSamplePositions )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT NumSamplesPerPixel, + _In_ UINT NumPixels, + _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions); + + void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )( + ID3D12GraphicsCommandList3 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ UINT DstX, + _In_ UINT DstY, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_opt_ D3D12_RECT *pSrcRect, + _In_ DXGI_FORMAT Format, + _In_ D3D12_RESOLVE_MODE ResolveMode); + + void ( STDMETHODCALLTYPE *SetViewInstanceMask )( + ID3D12GraphicsCommandList3 * This, + _In_ UINT Mask); + + void ( STDMETHODCALLTYPE *WriteBufferImmediate )( + ID3D12GraphicsCommandList3 * This, + UINT Count, + _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, + _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes); + + void ( STDMETHODCALLTYPE *SetProtectedResourceSession )( + ID3D12GraphicsCommandList3 * This, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession); + + END_INTERFACE + } ID3D12GraphicsCommandList3Vtbl; + + interface ID3D12GraphicsCommandList3 + { + CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12GraphicsCommandList3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12GraphicsCommandList3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12GraphicsCommandList3_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12GraphicsCommandList3_GetType(This) \ + ( (This)->lpVtbl -> GetType(This) ) + + +#define ID3D12GraphicsCommandList3_Close(This) \ + ( (This)->lpVtbl -> Close(This) ) + +#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \ + ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) ) + +#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \ + ( (This)->lpVtbl -> ClearState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \ + ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) + +#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \ + ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) + +#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \ + ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) + +#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \ + ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) ) + +#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \ + ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) + +#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \ + ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) + +#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \ + ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) ) + +#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \ + ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) ) + +#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \ + ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \ + ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) ) + +#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \ + ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) ) + +#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \ + ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \ + ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) ) + +#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \ + ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) ) + +#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \ + ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) ) + +#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \ + ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) ) + +#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \ + ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) + +#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \ + ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) ) + +#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \ + ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) + +#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \ + ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) ) + +#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList3_EndEvent(This) \ + ( (This)->lpVtbl -> EndEvent(This) ) + +#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \ + ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) + + +#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \ + ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) ) + +#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \ + ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) ) + +#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \ + ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) + +#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \ + ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) ) + + +#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \ + ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) ) + + +#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \ + ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0041 */ +/* [local] */ + +typedef +enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE + { + D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0, + D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) , + D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) , + D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 ) + } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE; + +typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS + { + D3D12_CLEAR_VALUE ClearValue; + } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS; + +typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS + { + D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type; + union + { + D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear; + } ; + } D3D12_RENDER_PASS_BEGINNING_ACCESS; + +typedef +enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE + { + D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0, + D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) , + D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) , + D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 ) + } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE; + +typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS + { + UINT SrcSubresource; + UINT DstSubresource; + UINT DstX; + UINT DstY; + D3D12_RECT SrcRect; + } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS; + +typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS + { + ID3D12Resource *pSrcResource; + ID3D12Resource *pDstResource; + UINT SubresourceCount; + _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters; + DXGI_FORMAT Format; + D3D12_RESOLVE_MODE ResolveMode; + BOOL PreserveResolveSource; + } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS; + +typedef struct D3D12_RENDER_PASS_ENDING_ACCESS + { + D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type; + union + { + D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve; + } ; + } D3D12_RENDER_PASS_ENDING_ACCESS; + +typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC + { + D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor; + D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess; + D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess; + } D3D12_RENDER_PASS_RENDER_TARGET_DESC; + +typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC + { + D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor; + D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess; + D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess; + D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess; + D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess; + } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC; + +typedef +enum D3D12_RENDER_PASS_FLAGS + { + D3D12_RENDER_PASS_FLAG_NONE = 0, + D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1, + D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2, + D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4 + } D3D12_RENDER_PASS_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS ); + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_s_ifspec; + +#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__ +#define __ID3D12MetaCommand_INTERFACE_DEFINED__ + +/* interface ID3D12MetaCommand */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12MetaCommand; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570") + ID3D12MetaCommand : public ID3D12Pageable + { + public: + virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize( + _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage, + _In_ UINT ParameterIndex) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12MetaCommandVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12MetaCommand * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12MetaCommand * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12MetaCommand * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12MetaCommand * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12MetaCommand * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12MetaCommand * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12MetaCommand * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12MetaCommand * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )( + ID3D12MetaCommand * This, + _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage, + _In_ UINT ParameterIndex); + + END_INTERFACE + } ID3D12MetaCommandVtbl; + + interface ID3D12MetaCommand + { + CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12MetaCommand_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12MetaCommand_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12MetaCommand_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + + +#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \ + ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0042 */ +/* [local] */ + +typedef struct D3D12_DISPATCH_RAYS_DESC + { + D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord; + D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable; + D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable; + D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable; + UINT Width; + UINT Height; + UINT Depth; + } D3D12_DISPATCH_RAYS_DESC; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0042_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0042_v0_0_s_ifspec; + +#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ +#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ + +/* interface ID3D12GraphicsCommandList4 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12GraphicsCommandList4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874") + ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3 + { + public: + virtual void STDMETHODCALLTYPE BeginRenderPass( + _In_ UINT NumRenderTargets, + _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets, + _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil, + D3D12_RENDER_PASS_FLAGS Flags) = 0; + + virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0; + + virtual void STDMETHODCALLTYPE InitializeMetaCommand( + _In_ ID3D12MetaCommand *pMetaCommand, + _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData, + _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0; + + virtual void STDMETHODCALLTYPE ExecuteMetaCommand( + _In_ ID3D12MetaCommand *pMetaCommand, + _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData, + _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0; + + virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure( + _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc, + _In_ UINT NumPostbuildInfoDescs, + _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0; + + virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo( + _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc, + _In_ UINT NumSourceAccelerationStructures, + _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0; + + virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure( + _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData, + _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData, + _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0; + + virtual void STDMETHODCALLTYPE SetPipelineState1( + _In_ ID3D12StateObject *pStateObject) = 0; + + virtual void STDMETHODCALLTYPE DispatchRays( + _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12GraphicsCommandList4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12GraphicsCommandList4 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12GraphicsCommandList4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12GraphicsCommandList4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12GraphicsCommandList4 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12GraphicsCommandList4 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12GraphicsCommandList4 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12GraphicsCommandList4 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12GraphicsCommandList4 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )( + ID3D12GraphicsCommandList4 * This); + + HRESULT ( STDMETHODCALLTYPE *Close )( + ID3D12GraphicsCommandList4 * This); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12CommandAllocator *pAllocator, + _In_opt_ ID3D12PipelineState *pInitialState); + + void ( STDMETHODCALLTYPE *ClearState )( + ID3D12GraphicsCommandList4 * This, + _In_opt_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *DrawInstanced )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT VertexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *DrawIndexedInstanced )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT IndexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartIndexLocation, + _In_ INT BaseVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *Dispatch )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT ThreadGroupCountX, + _In_ UINT ThreadGroupCountY, + _In_ UINT ThreadGroupCountZ); + + void ( STDMETHODCALLTYPE *CopyBufferRegion )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT64 NumBytes); + + void ( STDMETHODCALLTYPE *CopyTextureRegion )( + ID3D12GraphicsCommandList4 * This, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst, + UINT DstX, + UINT DstY, + UINT DstZ, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc, + _In_opt_ const D3D12_BOX *pSrcBox); + + void ( STDMETHODCALLTYPE *CopyResource )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12Resource *pDstResource, + _In_ ID3D12Resource *pSrcResource); + + void ( STDMETHODCALLTYPE *CopyTiles )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12Resource *pTiledResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize, + _In_ ID3D12Resource *pBuffer, + UINT64 BufferStartOffsetInBytes, + D3D12_TILE_COPY_FLAGS Flags); + + void ( STDMETHODCALLTYPE *ResolveSubresource )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_ DXGI_FORMAT Format); + + void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )( + ID3D12GraphicsCommandList4 * This, + _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); + + void ( STDMETHODCALLTYPE *RSSetViewports )( + ID3D12GraphicsCommandList4 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports, + _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports); + + void ( STDMETHODCALLTYPE *RSSetScissorRects )( + ID3D12GraphicsCommandList4 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects, + _In_reads_( NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *OMSetBlendFactor )( + ID3D12GraphicsCommandList4 * This, + _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]); + + void ( STDMETHODCALLTYPE *OMSetStencilRef )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT StencilRef); + + void ( STDMETHODCALLTYPE *SetPipelineState )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *ResourceBarrier )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT NumBarriers, + _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers); + + void ( STDMETHODCALLTYPE *ExecuteBundle )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12GraphicsCommandList *pCommandList); + + void ( STDMETHODCALLTYPE *SetDescriptorHeaps )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT NumDescriptorHeaps, + _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps); + + void ( STDMETHODCALLTYPE *SetComputeRootSignature )( + ID3D12GraphicsCommandList4 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )( + ID3D12GraphicsCommandList4 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *IASetIndexBuffer )( + ID3D12GraphicsCommandList4 * This, + _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView); + + void ( STDMETHODCALLTYPE *IASetVertexBuffers )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *SOSetTargets )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *OMSetRenderTargets )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT NumRenderTargetDescriptors, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, + _In_ BOOL RTsSingleHandleToDescriptorRange, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor); + + void ( STDMETHODCALLTYPE *ClearDepthStencilView )( + ID3D12GraphicsCommandList4 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, + _In_ D3D12_CLEAR_FLAGS ClearFlags, + _In_ FLOAT Depth, + _In_ UINT8 Stencil, + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearRenderTargetView )( + ID3D12GraphicsCommandList4 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, + _In_ const FLOAT ColorRGBA[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )( + ID3D12GraphicsCommandList4 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const UINT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )( + ID3D12GraphicsCommandList4 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const FLOAT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *DiscardResource )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DISCARD_REGION *pRegion); + + void ( STDMETHODCALLTYPE *BeginQuery )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *EndQuery )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *ResolveQueryData )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT StartIndex, + _In_ UINT NumQueries, + _In_ ID3D12Resource *pDestinationBuffer, + _In_ UINT64 AlignedDestinationBufferOffset); + + void ( STDMETHODCALLTYPE *SetPredication )( + ID3D12GraphicsCommandList4 * This, + _In_opt_ ID3D12Resource *pBuffer, + _In_ UINT64 AlignedBufferOffset, + _In_ D3D12_PREDICATION_OP Operation); + + void ( STDMETHODCALLTYPE *SetMarker )( + ID3D12GraphicsCommandList4 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *BeginEvent )( + ID3D12GraphicsCommandList4 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *EndEvent )( + ID3D12GraphicsCommandList4 * This); + + void ( STDMETHODCALLTYPE *ExecuteIndirect )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12CommandSignature *pCommandSignature, + _In_ UINT MaxCommandCount, + _In_ ID3D12Resource *pArgumentBuffer, + _In_ UINT64 ArgumentBufferOffset, + _In_opt_ ID3D12Resource *pCountBuffer, + _In_ UINT64 CountBufferOffset); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *OMSetDepthBounds )( + ID3D12GraphicsCommandList4 * This, + _In_ FLOAT Min, + _In_ FLOAT Max); + + void ( STDMETHODCALLTYPE *SetSamplePositions )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT NumSamplesPerPixel, + _In_ UINT NumPixels, + _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions); + + void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ UINT DstX, + _In_ UINT DstY, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_opt_ D3D12_RECT *pSrcRect, + _In_ DXGI_FORMAT Format, + _In_ D3D12_RESOLVE_MODE ResolveMode); + + void ( STDMETHODCALLTYPE *SetViewInstanceMask )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT Mask); + + void ( STDMETHODCALLTYPE *WriteBufferImmediate )( + ID3D12GraphicsCommandList4 * This, + UINT Count, + _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, + _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes); + + void ( STDMETHODCALLTYPE *SetProtectedResourceSession )( + ID3D12GraphicsCommandList4 * This, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession); + + void ( STDMETHODCALLTYPE *BeginRenderPass )( + ID3D12GraphicsCommandList4 * This, + _In_ UINT NumRenderTargets, + _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets, + _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil, + D3D12_RENDER_PASS_FLAGS Flags); + + void ( STDMETHODCALLTYPE *EndRenderPass )( + ID3D12GraphicsCommandList4 * This); + + void ( STDMETHODCALLTYPE *InitializeMetaCommand )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12MetaCommand *pMetaCommand, + _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData, + _In_ SIZE_T InitializationParametersDataSizeInBytes); + + void ( STDMETHODCALLTYPE *ExecuteMetaCommand )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12MetaCommand *pMetaCommand, + _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData, + _In_ SIZE_T ExecutionParametersDataSizeInBytes); + + void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )( + ID3D12GraphicsCommandList4 * This, + _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc, + _In_ UINT NumPostbuildInfoDescs, + _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs); + + void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )( + ID3D12GraphicsCommandList4 * This, + _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc, + _In_ UINT NumSourceAccelerationStructures, + _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData); + + void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )( + ID3D12GraphicsCommandList4 * This, + _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData, + _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData, + _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode); + + void ( STDMETHODCALLTYPE *SetPipelineState1 )( + ID3D12GraphicsCommandList4 * This, + _In_ ID3D12StateObject *pStateObject); + + void ( STDMETHODCALLTYPE *DispatchRays )( + ID3D12GraphicsCommandList4 * This, + _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc); + + END_INTERFACE + } ID3D12GraphicsCommandList4Vtbl; + + interface ID3D12GraphicsCommandList4 + { + CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12GraphicsCommandList4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12GraphicsCommandList4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12GraphicsCommandList4_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12GraphicsCommandList4_GetType(This) \ + ( (This)->lpVtbl -> GetType(This) ) + + +#define ID3D12GraphicsCommandList4_Close(This) \ + ( (This)->lpVtbl -> Close(This) ) + +#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \ + ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) ) + +#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \ + ( (This)->lpVtbl -> ClearState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \ + ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) + +#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \ + ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) + +#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \ + ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) + +#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \ + ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) ) + +#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \ + ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) + +#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \ + ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) + +#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \ + ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) ) + +#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \ + ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) ) + +#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \ + ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \ + ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) ) + +#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \ + ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) ) + +#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \ + ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \ + ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) ) + +#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \ + ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) ) + +#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \ + ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) ) + +#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \ + ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) ) + +#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \ + ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) + +#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \ + ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) ) + +#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \ + ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) + +#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \ + ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) ) + +#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList4_EndEvent(This) \ + ( (This)->lpVtbl -> EndEvent(This) ) + +#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \ + ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) + + +#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \ + ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) ) + +#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \ + ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) ) + +#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \ + ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) + +#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \ + ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) ) + + +#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \ + ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) ) + + +#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \ + ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) ) + + +#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \ + ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) + +#define ID3D12GraphicsCommandList4_EndRenderPass(This) \ + ( (This)->lpVtbl -> EndRenderPass(This) ) + +#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \ + ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) + +#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \ + ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) + +#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \ + ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) + +#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \ + ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) + +#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \ + ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) + +#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \ + ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) ) + +#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \ + ( (This)->lpVtbl -> DispatchRays(This,pDesc) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Tools_INTERFACE_DEFINED__ +#define __ID3D12Tools_INTERFACE_DEFINED__ + +/* interface ID3D12Tools */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Tools; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5") + ID3D12Tools : public IUnknown + { + public: + virtual void STDMETHODCALLTYPE EnableShaderInstrumentation( + BOOL bEnable) = 0; + + virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12ToolsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Tools * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Tools * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Tools * This); + + void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )( + ID3D12Tools * This, + BOOL bEnable); + + BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )( + ID3D12Tools * This); + + END_INTERFACE + } ID3D12ToolsVtbl; + + interface ID3D12Tools + { + CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Tools_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Tools_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \ + ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) ) + +#define ID3D12Tools_ShaderInstrumentationEnabled(This) \ + ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0044 */ +/* [local] */ + +typedef struct D3D12_SUBRESOURCE_DATA + { + const void *pData; + LONG_PTR RowPitch; + LONG_PTR SlicePitch; + } D3D12_SUBRESOURCE_DATA; + +typedef struct D3D12_MEMCPY_DEST + { + void *pData; + SIZE_T RowPitch; + SIZE_T SlicePitch; + } D3D12_MEMCPY_DEST; + +#if !defined( D3D12_IGNORE_SDK_LAYERS ) +#include "d3d12sdklayers.h" +#endif + +/////////////////////////////////////////////////////////////////////////// +// D3D12CreateDevice +// ------------------ +// +// pAdapter +// If NULL, D3D12CreateDevice will choose the primary adapter. +// If non-NULL, D3D12CreateDevice will use the provided adapter. +// MinimumFeatureLevel +// The minimum feature level required for successful device creation. +// riid +// The interface IID of the device to be returned. Expected: ID3D12Device. +// ppDevice +// Pointer to returned interface. May be NULL. +// +// Return Values +// Any of those documented for +// CreateDXGIFactory1 +// IDXGIFactory::EnumAdapters +// D3D12CreateDevice +// +/////////////////////////////////////////////////////////////////////////// +typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, + D3D_FEATURE_LEVEL, + _In_ REFIID, _COM_Outptr_opt_ void** ); + +HRESULT WINAPI D3D12CreateDevice( + _In_opt_ IUnknown* pAdapter, + D3D_FEATURE_LEVEL MinimumFeatureLevel, + _In_ REFIID riid, // Expected: ID3D12Device + _COM_Outptr_opt_ void** ppDevice ); + + +typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** ); + +HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug ); + +// -------------------------------------------------------------------------------------------------------------------------------- +// D3D12EnableExperimentalFeatures +// +// Pass in a list of feature GUIDs to be enabled together. +// +// If a particular feature requires some configuration information on enablement, it will have +// a configuration struct that can be passed alongside the GUID. +// +// Some features might use an interface IID as the GUID. For these, once the feature is enabled via +// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface +// for manipulating the feature. This allows for control that might not cleanly be expressed by just +// the configuration struct that D3D12EnableExperimentalFeatures provides. +// +// If this method is called and a change to existing feature enablement is made, +// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one +// singleton device for a process. Removing the devices when configuration changes prevents +// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view. +// +// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on. +// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed +// in are known to be incompatible with each other, or other errors. +// Returns S_OK otherwise. +// +// -------------------------------------------------------------------------------------------------------------------------------- +HRESULT WINAPI D3D12EnableExperimentalFeatures( + UINT NumFeatures, + __in_ecount(NumFeatures) const IID* pIIDs, + __in_ecount_opt(NumFeatures) void* pConfigurationStructs, + __in_ecount_opt(NumFeatures) UINT* pConfigurationStructSizes); + +// -------------------------------------------------------------------------------------------------------------------------------- +// Experimental Feature: D3D12ExperimentalShaderModels +// +// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support, +// meaning shader models that haven't been finalized for use in retail. +// +// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array. +// +// -------------------------------------------------------------------------------------------------------------------------------- +static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */ + 0x76f5573e, + 0xf13a, + 0x40f5, + { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f } +}; +// -------------------------------------------------------------------------------------------------------------------------------- +// Experimental Feature: D3D12TiledResourceTier4 +// +// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support, +// meaning texture tile data-inheritance is allowed. +// +// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array. +// +// -------------------------------------------------------------------------------------------------------------------------------- +static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */ + 0xc9c4725f, + 0xa81a, + 0x4f56, + { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb } +}; +// -------------------------------------------------------------------------------------------------------------------------------- +// Experimental Feature: D3D12MetaCommand +// +// Use with D3D12EnableExperimentalFeatures to enable the D3D12 Meta Command. +// +// Enabling D3D12MetaCommand needs no configuration struct, pass NULL in the pConfigurationStructs array. +// +// -------------------------------------------------------------------------------------------------------------------------------- +static const UUID D3D12MetaCommand = { /* C734C97E-8077-48C8-9FDC-D9D1DD31DD77 */ + 0xc734c97e, + 0x8077, + 0x48c8, + { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 } +}; +// -------------------------------------------------------------------------------------------------------------------------------- +// Experimental Feature: D3D12ComputeOnlyDevices +// +// Use with D3D12EnableExperimentalFeatures to enable compute only devices (D3D_FEATURE_LEVEL_1_0_CORE). +// +// Enabling D3D12ComputeOnlyDevices needs no configuration struct, pass NULL in the pConfigurationStructs array. +// +// -------------------------------------------------------------------------------------------------------------------------------- +static const UUID D3D12ComputeOnlyDevices = { /* 50f7ab08-4b6d-4e14-89a5-5d16cd272594 */ + 0x50f7ab08, + 0x4b6d, + 0x4e14, + {0x89, 0xa5, 0x5d, 0x16, 0xcd, 0x27, 0x25, 0x94} +}; +typedef +enum D3D12_AXIS_SHADING_RATE + { + D3D12_AXIS_SHADING_RATE_1X = 0, + D3D12_AXIS_SHADING_RATE_2X = 0x1, + D3D12_AXIS_SHADING_RATE_4X = 0x2 + } D3D12_AXIS_SHADING_RATE; + +#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2 +#define D3D12_SHADING_RATE_VALID_MASK 3 +#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y)) +#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK) +#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK) +typedef +enum D3D12_SHADING_RATE + { + D3D12_SHADING_RATE_1X1 = 0, + D3D12_SHADING_RATE_1X2 = 0x1, + D3D12_SHADING_RATE_2X1 = 0x4, + D3D12_SHADING_RATE_2X2 = 0x5, + D3D12_SHADING_RATE_2X4 = 0x6, + D3D12_SHADING_RATE_4X2 = 0x9, + D3D12_SHADING_RATE_4X4 = 0xa + } D3D12_SHADING_RATE; + +typedef +enum D3D12_SHADING_RATE_COMBINER + { + D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0, + D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1, + D3D12_SHADING_RATE_COMBINER_MIN = 2, + D3D12_SHADING_RATE_COMBINER_MAX = 3, + D3D12_SHADING_RATE_COMBINER_SUM = 4 + } D3D12_SHADING_RATE_COMBINER; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0044_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0044_v0_0_s_ifspec; + +#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ +#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ + +/* interface ID3D12GraphicsCommandList5 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12GraphicsCommandList5; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea") + ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4 + { + public: + virtual void STDMETHODCALLTYPE RSSetShadingRate( + _In_ D3D12_SHADING_RATE baseShadingRate, + _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0; + + virtual void STDMETHODCALLTYPE RSSetShadingRateImage( + _In_opt_ ID3D12Resource *shadingRateImage) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12GraphicsCommandList5Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12GraphicsCommandList5 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12GraphicsCommandList5 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12GraphicsCommandList5 * This); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + ID3D12GraphicsCommandList5 * This, + _In_ REFGUID guid, + _Inout_ UINT *pDataSize, + _Out_writes_bytes_opt_( *pDataSize ) void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + ID3D12GraphicsCommandList5 * This, + _In_ REFGUID guid, + _In_ UINT DataSize, + _In_reads_bytes_opt_( DataSize ) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + ID3D12GraphicsCommandList5 * This, + _In_ REFGUID guid, + _In_opt_ const IUnknown *pData); + + HRESULT ( STDMETHODCALLTYPE *SetName )( + ID3D12GraphicsCommandList5 * This, + _In_z_ LPCWSTR Name); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + ID3D12GraphicsCommandList5 * This, + REFIID riid, + _COM_Outptr_opt_ void **ppvDevice); + + D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )( + ID3D12GraphicsCommandList5 * This); + + HRESULT ( STDMETHODCALLTYPE *Close )( + ID3D12GraphicsCommandList5 * This); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12CommandAllocator *pAllocator, + _In_opt_ ID3D12PipelineState *pInitialState); + + void ( STDMETHODCALLTYPE *ClearState )( + ID3D12GraphicsCommandList5 * This, + _In_opt_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *DrawInstanced )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT VertexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *DrawIndexedInstanced )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT IndexCountPerInstance, + _In_ UINT InstanceCount, + _In_ UINT StartIndexLocation, + _In_ INT BaseVertexLocation, + _In_ UINT StartInstanceLocation); + + void ( STDMETHODCALLTYPE *Dispatch )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT ThreadGroupCountX, + _In_ UINT ThreadGroupCountY, + _In_ UINT ThreadGroupCountZ); + + void ( STDMETHODCALLTYPE *CopyBufferRegion )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT64 NumBytes); + + void ( STDMETHODCALLTYPE *CopyTextureRegion )( + ID3D12GraphicsCommandList5 * This, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst, + UINT DstX, + UINT DstY, + UINT DstZ, + _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc, + _In_opt_ const D3D12_BOX *pSrcBox); + + void ( STDMETHODCALLTYPE *CopyResource )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12Resource *pDstResource, + _In_ ID3D12Resource *pSrcResource); + + void ( STDMETHODCALLTYPE *CopyTiles )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12Resource *pTiledResource, + _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, + _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize, + _In_ ID3D12Resource *pBuffer, + UINT64 BufferStartOffsetInBytes, + D3D12_TILE_COPY_FLAGS Flags); + + void ( STDMETHODCALLTYPE *ResolveSubresource )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_ DXGI_FORMAT Format); + + void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )( + ID3D12GraphicsCommandList5 * This, + _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); + + void ( STDMETHODCALLTYPE *RSSetViewports )( + ID3D12GraphicsCommandList5 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports, + _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports); + + void ( STDMETHODCALLTYPE *RSSetScissorRects )( + ID3D12GraphicsCommandList5 * This, + _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects, + _In_reads_( NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *OMSetBlendFactor )( + ID3D12GraphicsCommandList5 * This, + _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]); + + void ( STDMETHODCALLTYPE *OMSetStencilRef )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT StencilRef); + + void ( STDMETHODCALLTYPE *SetPipelineState )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12PipelineState *pPipelineState); + + void ( STDMETHODCALLTYPE *ResourceBarrier )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT NumBarriers, + _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers); + + void ( STDMETHODCALLTYPE *ExecuteBundle )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12GraphicsCommandList *pCommandList); + + void ( STDMETHODCALLTYPE *SetDescriptorHeaps )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT NumDescriptorHeaps, + _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps); + + void ( STDMETHODCALLTYPE *SetComputeRootSignature )( + ID3D12GraphicsCommandList5 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )( + ID3D12GraphicsCommandList5 * This, + _In_opt_ ID3D12RootSignature *pRootSignature); + + void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ UINT SrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ UINT Num32BitValuesToSet, + _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData, + _In_ UINT DestOffsetIn32BitValues); + + void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT RootParameterIndex, + _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); + + void ( STDMETHODCALLTYPE *IASetIndexBuffer )( + ID3D12GraphicsCommandList5 * This, + _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView); + + void ( STDMETHODCALLTYPE *IASetVertexBuffers )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *SOSetTargets )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT StartSlot, + _In_ UINT NumViews, + _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews); + + void ( STDMETHODCALLTYPE *OMSetRenderTargets )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT NumRenderTargetDescriptors, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, + _In_ BOOL RTsSingleHandleToDescriptorRange, + _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor); + + void ( STDMETHODCALLTYPE *ClearDepthStencilView )( + ID3D12GraphicsCommandList5 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, + _In_ D3D12_CLEAR_FLAGS ClearFlags, + _In_ FLOAT Depth, + _In_ UINT8 Stencil, + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearRenderTargetView )( + ID3D12GraphicsCommandList5 * This, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, + _In_ const FLOAT ColorRGBA[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )( + ID3D12GraphicsCommandList5 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const UINT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )( + ID3D12GraphicsCommandList5 * This, + _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, + _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, + _In_ ID3D12Resource *pResource, + _In_ const FLOAT Values[ 4 ], + _In_ UINT NumRects, + _In_reads_(NumRects) const D3D12_RECT *pRects); + + void ( STDMETHODCALLTYPE *DiscardResource )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12Resource *pResource, + _In_opt_ const D3D12_DISCARD_REGION *pRegion); + + void ( STDMETHODCALLTYPE *BeginQuery )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *EndQuery )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT Index); + + void ( STDMETHODCALLTYPE *ResolveQueryData )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12QueryHeap *pQueryHeap, + _In_ D3D12_QUERY_TYPE Type, + _In_ UINT StartIndex, + _In_ UINT NumQueries, + _In_ ID3D12Resource *pDestinationBuffer, + _In_ UINT64 AlignedDestinationBufferOffset); + + void ( STDMETHODCALLTYPE *SetPredication )( + ID3D12GraphicsCommandList5 * This, + _In_opt_ ID3D12Resource *pBuffer, + _In_ UINT64 AlignedBufferOffset, + _In_ D3D12_PREDICATION_OP Operation); + + void ( STDMETHODCALLTYPE *SetMarker )( + ID3D12GraphicsCommandList5 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *BeginEvent )( + ID3D12GraphicsCommandList5 * This, + UINT Metadata, + _In_reads_bytes_opt_(Size) const void *pData, + UINT Size); + + void ( STDMETHODCALLTYPE *EndEvent )( + ID3D12GraphicsCommandList5 * This); + + void ( STDMETHODCALLTYPE *ExecuteIndirect )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12CommandSignature *pCommandSignature, + _In_ UINT MaxCommandCount, + _In_ ID3D12Resource *pArgumentBuffer, + _In_ UINT64 ArgumentBufferOffset, + _In_opt_ ID3D12Resource *pCountBuffer, + _In_ UINT64 CountBufferOffset); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12Resource *pDstBuffer, + UINT64 DstOffset, + _In_ ID3D12Resource *pSrcBuffer, + UINT64 SrcOffset, + UINT Dependencies, + _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources, + _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); + + void ( STDMETHODCALLTYPE *OMSetDepthBounds )( + ID3D12GraphicsCommandList5 * This, + _In_ FLOAT Min, + _In_ FLOAT Max); + + void ( STDMETHODCALLTYPE *SetSamplePositions )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT NumSamplesPerPixel, + _In_ UINT NumPixels, + _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions); + + void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12Resource *pDstResource, + _In_ UINT DstSubresource, + _In_ UINT DstX, + _In_ UINT DstY, + _In_ ID3D12Resource *pSrcResource, + _In_ UINT SrcSubresource, + _In_opt_ D3D12_RECT *pSrcRect, + _In_ DXGI_FORMAT Format, + _In_ D3D12_RESOLVE_MODE ResolveMode); + + void ( STDMETHODCALLTYPE *SetViewInstanceMask )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT Mask); + + void ( STDMETHODCALLTYPE *WriteBufferImmediate )( + ID3D12GraphicsCommandList5 * This, + UINT Count, + _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, + _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes); + + void ( STDMETHODCALLTYPE *SetProtectedResourceSession )( + ID3D12GraphicsCommandList5 * This, + _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession); + + void ( STDMETHODCALLTYPE *BeginRenderPass )( + ID3D12GraphicsCommandList5 * This, + _In_ UINT NumRenderTargets, + _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets, + _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil, + D3D12_RENDER_PASS_FLAGS Flags); + + void ( STDMETHODCALLTYPE *EndRenderPass )( + ID3D12GraphicsCommandList5 * This); + + void ( STDMETHODCALLTYPE *InitializeMetaCommand )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12MetaCommand *pMetaCommand, + _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData, + _In_ SIZE_T InitializationParametersDataSizeInBytes); + + void ( STDMETHODCALLTYPE *ExecuteMetaCommand )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12MetaCommand *pMetaCommand, + _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData, + _In_ SIZE_T ExecutionParametersDataSizeInBytes); + + void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )( + ID3D12GraphicsCommandList5 * This, + _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc, + _In_ UINT NumPostbuildInfoDescs, + _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs); + + void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )( + ID3D12GraphicsCommandList5 * This, + _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc, + _In_ UINT NumSourceAccelerationStructures, + _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData); + + void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )( + ID3D12GraphicsCommandList5 * This, + _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData, + _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData, + _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode); + + void ( STDMETHODCALLTYPE *SetPipelineState1 )( + ID3D12GraphicsCommandList5 * This, + _In_ ID3D12StateObject *pStateObject); + + void ( STDMETHODCALLTYPE *DispatchRays )( + ID3D12GraphicsCommandList5 * This, + _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc); + + void ( STDMETHODCALLTYPE *RSSetShadingRate )( + ID3D12GraphicsCommandList5 * This, + _In_ D3D12_SHADING_RATE baseShadingRate, + _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners); + + void ( STDMETHODCALLTYPE *RSSetShadingRateImage )( + ID3D12GraphicsCommandList5 * This, + _In_opt_ ID3D12Resource *shadingRateImage); + + END_INTERFACE + } ID3D12GraphicsCommandList5Vtbl; + + interface ID3D12GraphicsCommandList5 + { + CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12GraphicsCommandList5_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12GraphicsCommandList5_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) ) + +#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) ) + +#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) ) + +#define ID3D12GraphicsCommandList5_SetName(This,Name) \ + ( (This)->lpVtbl -> SetName(This,Name) ) + + +#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) ) + + +#define ID3D12GraphicsCommandList5_GetType(This) \ + ( (This)->lpVtbl -> GetType(This) ) + + +#define ID3D12GraphicsCommandList5_Close(This) \ + ( (This)->lpVtbl -> Close(This) ) + +#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \ + ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) ) + +#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \ + ( (This)->lpVtbl -> ClearState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \ + ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) ) + +#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \ + ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) ) + +#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \ + ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) ) + +#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \ + ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) ) + +#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \ + ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) ) + +#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \ + ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) ) + +#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \ + ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) ) + +#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \ + ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) ) + +#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \ + ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) ) + +#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \ + ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \ + ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) ) + +#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \ + ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) ) + +#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \ + ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) ) + +#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \ + ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) ) + +#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \ + ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) ) + +#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \ + ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) ) + +#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \ + ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) ) + +#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \ + ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) ) + +#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \ + ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) ) + +#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \ + ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) ) + +#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \ + ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) ) + +#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \ + ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) ) + +#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \ + ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) ) + +#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \ + ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) ) + +#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \ + ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) ) + +#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \ + ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) ) + +#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \ + ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) ) + +#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \ + ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) ) + +#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \ + ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) ) + +#define ID3D12GraphicsCommandList5_EndEvent(This) \ + ( (This)->lpVtbl -> EndEvent(This) ) + +#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \ + ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) ) + + +#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \ + ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) ) + +#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \ + ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) ) + +#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \ + ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) ) + +#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \ + ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) ) + +#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \ + ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) ) + + +#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \ + ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) ) + + +#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \ + ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) ) + + +#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \ + ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) ) + +#define ID3D12GraphicsCommandList5_EndRenderPass(This) \ + ( (This)->lpVtbl -> EndRenderPass(This) ) + +#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \ + ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) ) + +#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \ + ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) ) + +#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \ + ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) ) + +#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \ + ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) ) + +#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \ + ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) ) + +#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \ + ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) ) + +#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \ + ( (This)->lpVtbl -> DispatchRays(This,pDesc) ) + + +#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \ + ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) ) + +#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \ + ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12_0000_0045 */ +/* [local] */ + +#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */ +#pragma endregion +DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8); +DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57); +DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14); +DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46); +DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0); +DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6); +DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3); +DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad); +DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24); +DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76); +DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a); +DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45); +DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51); +DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4); +DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1); +DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5); +DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55); +DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7); +DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28); +DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed); +DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7); +DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f); +DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3); +DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e); +DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28); +DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98); +DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B); +DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D); +DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5); +DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8); +DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f); +DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13); +DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d); +DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60); +DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d); +DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63); +DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71); +DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc); +DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19); +DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D); +DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D); +DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70); +DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74); +DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5); +DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea); + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0045_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0045_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/include/dxsdk/d3d12sdklayers.h b/include/dxsdk/d3d12sdklayers.h new file mode 100644 index 00000000..cb4f9cd0 --- /dev/null +++ b/include/dxsdk/d3d12sdklayers.h @@ -0,0 +1,3230 @@ +/*------------------------------------------------------------------------------------- + * + * Copyright (c) Microsoft Corporation + * + *-------------------------------------------------------------------------------------*/ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.01.0622 */ + + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 500 +#endif + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCSAL_H_VERSION__ +#define __REQUIRED_RPCSAL_H_VERSION__ 100 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif /* __RPCNDR_H_VERSION__ */ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __d3d12sdklayers_h__ +#define __d3d12sdklayers_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __ID3D12Debug_FWD_DEFINED__ +#define __ID3D12Debug_FWD_DEFINED__ +typedef interface ID3D12Debug ID3D12Debug; + +#endif /* __ID3D12Debug_FWD_DEFINED__ */ + + +#ifndef __ID3D12Debug1_FWD_DEFINED__ +#define __ID3D12Debug1_FWD_DEFINED__ +typedef interface ID3D12Debug1 ID3D12Debug1; + +#endif /* __ID3D12Debug1_FWD_DEFINED__ */ + + +#ifndef __ID3D12Debug2_FWD_DEFINED__ +#define __ID3D12Debug2_FWD_DEFINED__ +typedef interface ID3D12Debug2 ID3D12Debug2; + +#endif /* __ID3D12Debug2_FWD_DEFINED__ */ + + +#ifndef __ID3D12Debug3_FWD_DEFINED__ +#define __ID3D12Debug3_FWD_DEFINED__ +typedef interface ID3D12Debug3 ID3D12Debug3; + +#endif /* __ID3D12Debug3_FWD_DEFINED__ */ + + +#ifndef __ID3D12DebugDevice1_FWD_DEFINED__ +#define __ID3D12DebugDevice1_FWD_DEFINED__ +typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1; + +#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */ + + +#ifndef __ID3D12DebugDevice_FWD_DEFINED__ +#define __ID3D12DebugDevice_FWD_DEFINED__ +typedef interface ID3D12DebugDevice ID3D12DebugDevice; + +#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */ + + +#ifndef __ID3D12DebugDevice2_FWD_DEFINED__ +#define __ID3D12DebugDevice2_FWD_DEFINED__ +typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2; + +#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */ + + +#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__ +#define __ID3D12DebugCommandQueue_FWD_DEFINED__ +typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue; + +#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */ + + +#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__ +#define __ID3D12DebugCommandList1_FWD_DEFINED__ +typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1; + +#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */ + + +#ifndef __ID3D12DebugCommandList_FWD_DEFINED__ +#define __ID3D12DebugCommandList_FWD_DEFINED__ +typedef interface ID3D12DebugCommandList ID3D12DebugCommandList; + +#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */ + + +#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__ +#define __ID3D12DebugCommandList2_FWD_DEFINED__ +typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2; + +#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */ + + +#ifndef __ID3D12SharingContract_FWD_DEFINED__ +#define __ID3D12SharingContract_FWD_DEFINED__ +typedef interface ID3D12SharingContract ID3D12SharingContract; + +#endif /* __ID3D12SharingContract_FWD_DEFINED__ */ + + +#ifndef __ID3D12InfoQueue_FWD_DEFINED__ +#define __ID3D12InfoQueue_FWD_DEFINED__ +typedef interface ID3D12InfoQueue ID3D12InfoQueue; + +#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" +#include "d3d12.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */ +/* [local] */ + +#include +#pragma region App Family +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec; + +#ifndef __ID3D12Debug_INTERFACE_DEFINED__ +#define __ID3D12Debug_INTERFACE_DEFINED__ + +/* interface ID3D12Debug */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Debug; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0") + ID3D12Debug : public IUnknown + { + public: + virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DebugVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Debug * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Debug * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Debug * This); + + void ( STDMETHODCALLTYPE *EnableDebugLayer )( + ID3D12Debug * This); + + END_INTERFACE + } ID3D12DebugVtbl; + + interface ID3D12Debug + { + CONST_VTBL struct ID3D12DebugVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Debug_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Debug_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Debug_EnableDebugLayer(This) \ + ( (This)->lpVtbl -> EnableDebugLayer(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */ +/* [local] */ + +typedef +enum D3D12_GPU_BASED_VALIDATION_FLAGS + { + D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0, + D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1 + } D3D12_GPU_BASED_VALIDATION_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS) + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec; + +#ifndef __ID3D12Debug1_INTERFACE_DEFINED__ +#define __ID3D12Debug1_INTERFACE_DEFINED__ + +/* interface ID3D12Debug1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Debug1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304") + ID3D12Debug1 : public IUnknown + { + public: + virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0; + + virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation( + BOOL Enable) = 0; + + virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation( + BOOL Enable) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Debug1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Debug1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Debug1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Debug1 * This); + + void ( STDMETHODCALLTYPE *EnableDebugLayer )( + ID3D12Debug1 * This); + + void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )( + ID3D12Debug1 * This, + BOOL Enable); + + void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )( + ID3D12Debug1 * This, + BOOL Enable); + + END_INTERFACE + } ID3D12Debug1Vtbl; + + interface ID3D12Debug1 + { + CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Debug1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Debug1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Debug1_EnableDebugLayer(This) \ + ( (This)->lpVtbl -> EnableDebugLayer(This) ) + +#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \ + ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) ) + +#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \ + ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Debug2_INTERFACE_DEFINED__ +#define __ID3D12Debug2_INTERFACE_DEFINED__ + +/* interface ID3D12Debug2 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Debug2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374") + ID3D12Debug2 : public IUnknown + { + public: + virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags( + D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Debug2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Debug2 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Debug2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Debug2 * This); + + void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )( + ID3D12Debug2 * This, + D3D12_GPU_BASED_VALIDATION_FLAGS Flags); + + END_INTERFACE + } ID3D12Debug2Vtbl; + + interface ID3D12Debug2 + { + CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Debug2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Debug2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \ + ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12Debug3_INTERFACE_DEFINED__ +#define __ID3D12Debug3_INTERFACE_DEFINED__ + +/* interface ID3D12Debug3 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12Debug3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1") + ID3D12Debug3 : public ID3D12Debug + { + public: + virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation( + BOOL Enable) = 0; + + virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation( + BOOL Enable) = 0; + + virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags( + D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12Debug3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12Debug3 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12Debug3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12Debug3 * This); + + void ( STDMETHODCALLTYPE *EnableDebugLayer )( + ID3D12Debug3 * This); + + void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )( + ID3D12Debug3 * This, + BOOL Enable); + + void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )( + ID3D12Debug3 * This, + BOOL Enable); + + void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )( + ID3D12Debug3 * This, + D3D12_GPU_BASED_VALIDATION_FLAGS Flags); + + END_INTERFACE + } ID3D12Debug3Vtbl; + + interface ID3D12Debug3 + { + CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12Debug3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12Debug3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12Debug3_EnableDebugLayer(This) \ + ( (This)->lpVtbl -> EnableDebugLayer(This) ) + + +#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \ + ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) ) + +#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \ + ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) ) + +#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \ + ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12sdklayers_0000_0004 */ +/* [local] */ + +typedef +enum D3D12_RLDO_FLAGS + { + D3D12_RLDO_NONE = 0, + D3D12_RLDO_SUMMARY = 0x1, + D3D12_RLDO_DETAIL = 0x2, + D3D12_RLDO_IGNORE_INTERNAL = 0x4 + } D3D12_RLDO_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS) +typedef +enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE + { + D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0, + D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) , + D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) + } D3D12_DEBUG_DEVICE_PARAMETER_TYPE; + +typedef +enum D3D12_DEBUG_FEATURE + { + D3D12_DEBUG_FEATURE_NONE = 0, + D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1, + D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2, + D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4, + D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8 + } D3D12_DEBUG_FEATURE; + +DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE) +typedef +enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE + { + D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0, + D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) , + D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) , + D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) , + NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 ) + } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE; + +typedef +enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS + { + D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0, + D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1, + D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2, + D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4, + D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7 + } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS; + +DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS) +typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS + { + UINT MaxMessagesPerCommandList; + D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode; + D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags; + } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS; + +typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR + { + FLOAT SlowdownFactor; + } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0004_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0004_v0_0_s_ifspec; + +#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__ +#define __ID3D12DebugDevice1_INTERFACE_DEFINED__ + +/* interface ID3D12DebugDevice1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DebugDevice1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88") + ID3D12DebugDevice1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetDebugParameter( + D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, + _In_reads_bytes_(DataSize) const void *pData, + UINT DataSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDebugParameter( + D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, + _Out_writes_bytes_(DataSize) void *pData, + UINT DataSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects( + D3D12_RLDO_FLAGS Flags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DebugDevice1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DebugDevice1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DebugDevice1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DebugDevice1 * This); + + HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )( + ID3D12DebugDevice1 * This, + D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, + _In_reads_bytes_(DataSize) const void *pData, + UINT DataSize); + + HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )( + ID3D12DebugDevice1 * This, + D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, + _Out_writes_bytes_(DataSize) void *pData, + UINT DataSize); + + HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )( + ID3D12DebugDevice1 * This, + D3D12_RLDO_FLAGS Flags); + + END_INTERFACE + } ID3D12DebugDevice1Vtbl; + + interface ID3D12DebugDevice1 + { + CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DebugDevice1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DebugDevice1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \ + ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) ) + +#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \ + ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) ) + +#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \ + ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__ +#define __ID3D12DebugDevice_INTERFACE_DEFINED__ + +/* interface ID3D12DebugDevice */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DebugDevice; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e") + ID3D12DebugDevice : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFeatureMask( + D3D12_DEBUG_FEATURE Mask) = 0; + + virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects( + D3D12_RLDO_FLAGS Flags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DebugDeviceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DebugDevice * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DebugDevice * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DebugDevice * This); + + HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )( + ID3D12DebugDevice * This, + D3D12_DEBUG_FEATURE Mask); + + D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )( + ID3D12DebugDevice * This); + + HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )( + ID3D12DebugDevice * This, + D3D12_RLDO_FLAGS Flags); + + END_INTERFACE + } ID3D12DebugDeviceVtbl; + + interface ID3D12DebugDevice + { + CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DebugDevice_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DebugDevice_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \ + ( (This)->lpVtbl -> SetFeatureMask(This,Mask) ) + +#define ID3D12DebugDevice_GetFeatureMask(This) \ + ( (This)->lpVtbl -> GetFeatureMask(This) ) + +#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \ + ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__ +#define __ID3D12DebugDevice2_INTERFACE_DEFINED__ + +/* interface ID3D12DebugDevice2 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DebugDevice2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd") + ID3D12DebugDevice2 : public ID3D12DebugDevice + { + public: + virtual HRESULT STDMETHODCALLTYPE SetDebugParameter( + D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, + _In_reads_bytes_(DataSize) const void *pData, + UINT DataSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDebugParameter( + D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, + _Out_writes_bytes_(DataSize) void *pData, + UINT DataSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DebugDevice2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DebugDevice2 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DebugDevice2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DebugDevice2 * This); + + HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )( + ID3D12DebugDevice2 * This, + D3D12_DEBUG_FEATURE Mask); + + D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )( + ID3D12DebugDevice2 * This); + + HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )( + ID3D12DebugDevice2 * This, + D3D12_RLDO_FLAGS Flags); + + HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )( + ID3D12DebugDevice2 * This, + D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, + _In_reads_bytes_(DataSize) const void *pData, + UINT DataSize); + + HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )( + ID3D12DebugDevice2 * This, + D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, + _Out_writes_bytes_(DataSize) void *pData, + UINT DataSize); + + END_INTERFACE + } ID3D12DebugDevice2Vtbl; + + interface ID3D12DebugDevice2 + { + CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DebugDevice2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DebugDevice2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \ + ( (This)->lpVtbl -> SetFeatureMask(This,Mask) ) + +#define ID3D12DebugDevice2_GetFeatureMask(This) \ + ( (This)->lpVtbl -> GetFeatureMask(This) ) + +#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \ + ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) ) + + +#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \ + ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) ) + +#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \ + ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12sdklayers_0000_0007 */ +/* [local] */ + +DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95); + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_s_ifspec; + +#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ +#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ + +/* interface ID3D12DebugCommandQueue */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DebugCommandQueue; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a") + ID3D12DebugCommandQueue : public IUnknown + { + public: + virtual BOOL STDMETHODCALLTYPE AssertResourceState( + _In_ ID3D12Resource *pResource, + UINT Subresource, + UINT State) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DebugCommandQueueVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DebugCommandQueue * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DebugCommandQueue * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DebugCommandQueue * This); + + BOOL ( STDMETHODCALLTYPE *AssertResourceState )( + ID3D12DebugCommandQueue * This, + _In_ ID3D12Resource *pResource, + UINT Subresource, + UINT State); + + END_INTERFACE + } ID3D12DebugCommandQueueVtbl; + + interface ID3D12DebugCommandQueue + { + CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DebugCommandQueue_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DebugCommandQueue_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \ + ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12sdklayers_0000_0008 */ +/* [local] */ + +typedef +enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE + { + D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0 + } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE; + +typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS + { + D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode; + } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS; + + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0008_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0008_v0_0_s_ifspec; + +#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__ +#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__ + +/* interface ID3D12DebugCommandList1 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DebugCommandList1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37") + ID3D12DebugCommandList1 : public IUnknown + { + public: + virtual BOOL STDMETHODCALLTYPE AssertResourceState( + _In_ ID3D12Resource *pResource, + UINT Subresource, + UINT State) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDebugParameter( + D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, + _In_reads_bytes_(DataSize) const void *pData, + UINT DataSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDebugParameter( + D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, + _Out_writes_bytes_(DataSize) void *pData, + UINT DataSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DebugCommandList1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DebugCommandList1 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DebugCommandList1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DebugCommandList1 * This); + + BOOL ( STDMETHODCALLTYPE *AssertResourceState )( + ID3D12DebugCommandList1 * This, + _In_ ID3D12Resource *pResource, + UINT Subresource, + UINT State); + + HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )( + ID3D12DebugCommandList1 * This, + D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, + _In_reads_bytes_(DataSize) const void *pData, + UINT DataSize); + + HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )( + ID3D12DebugCommandList1 * This, + D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, + _Out_writes_bytes_(DataSize) void *pData, + UINT DataSize); + + END_INTERFACE + } ID3D12DebugCommandList1Vtbl; + + interface ID3D12DebugCommandList1 + { + CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DebugCommandList1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DebugCommandList1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \ + ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) ) + +#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \ + ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) ) + +#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \ + ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__ +#define __ID3D12DebugCommandList_INTERFACE_DEFINED__ + +/* interface ID3D12DebugCommandList */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DebugCommandList; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f") + ID3D12DebugCommandList : public IUnknown + { + public: + virtual BOOL STDMETHODCALLTYPE AssertResourceState( + _In_ ID3D12Resource *pResource, + UINT Subresource, + UINT State) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFeatureMask( + D3D12_DEBUG_FEATURE Mask) = 0; + + virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DebugCommandListVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DebugCommandList * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DebugCommandList * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DebugCommandList * This); + + BOOL ( STDMETHODCALLTYPE *AssertResourceState )( + ID3D12DebugCommandList * This, + _In_ ID3D12Resource *pResource, + UINT Subresource, + UINT State); + + HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )( + ID3D12DebugCommandList * This, + D3D12_DEBUG_FEATURE Mask); + + D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )( + ID3D12DebugCommandList * This); + + END_INTERFACE + } ID3D12DebugCommandListVtbl; + + interface ID3D12DebugCommandList + { + CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DebugCommandList_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DebugCommandList_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \ + ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) ) + +#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \ + ( (This)->lpVtbl -> SetFeatureMask(This,Mask) ) + +#define ID3D12DebugCommandList_GetFeatureMask(This) \ + ( (This)->lpVtbl -> GetFeatureMask(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__ +#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__ + +/* interface ID3D12DebugCommandList2 */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12DebugCommandList2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e") + ID3D12DebugCommandList2 : public ID3D12DebugCommandList + { + public: + virtual HRESULT STDMETHODCALLTYPE SetDebugParameter( + D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, + _In_reads_bytes_(DataSize) const void *pData, + UINT DataSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDebugParameter( + D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, + _Out_writes_bytes_(DataSize) void *pData, + UINT DataSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12DebugCommandList2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12DebugCommandList2 * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12DebugCommandList2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12DebugCommandList2 * This); + + BOOL ( STDMETHODCALLTYPE *AssertResourceState )( + ID3D12DebugCommandList2 * This, + _In_ ID3D12Resource *pResource, + UINT Subresource, + UINT State); + + HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )( + ID3D12DebugCommandList2 * This, + D3D12_DEBUG_FEATURE Mask); + + D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )( + ID3D12DebugCommandList2 * This); + + HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )( + ID3D12DebugCommandList2 * This, + D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, + _In_reads_bytes_(DataSize) const void *pData, + UINT DataSize); + + HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )( + ID3D12DebugCommandList2 * This, + D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, + _Out_writes_bytes_(DataSize) void *pData, + UINT DataSize); + + END_INTERFACE + } ID3D12DebugCommandList2Vtbl; + + interface ID3D12DebugCommandList2 + { + CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12DebugCommandList2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12DebugCommandList2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \ + ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) ) + +#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \ + ( (This)->lpVtbl -> SetFeatureMask(This,Mask) ) + +#define ID3D12DebugCommandList2_GetFeatureMask(This) \ + ( (This)->lpVtbl -> GetFeatureMask(This) ) + + +#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \ + ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) ) + +#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \ + ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */ + + +#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__ +#define __ID3D12SharingContract_INTERFACE_DEFINED__ + +/* interface ID3D12SharingContract */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12SharingContract; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef") + ID3D12SharingContract : public IUnknown + { + public: + virtual void STDMETHODCALLTYPE Present( + _In_ ID3D12Resource *pResource, + UINT Subresource, + _In_ HWND window) = 0; + + virtual void STDMETHODCALLTYPE SharedFenceSignal( + _In_ ID3D12Fence *pFence, + UINT64 FenceValue) = 0; + + virtual void STDMETHODCALLTYPE BeginCapturableWork( + _In_ REFGUID guid) = 0; + + virtual void STDMETHODCALLTYPE EndCapturableWork( + _In_ REFGUID guid) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12SharingContractVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12SharingContract * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12SharingContract * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12SharingContract * This); + + void ( STDMETHODCALLTYPE *Present )( + ID3D12SharingContract * This, + _In_ ID3D12Resource *pResource, + UINT Subresource, + _In_ HWND window); + + void ( STDMETHODCALLTYPE *SharedFenceSignal )( + ID3D12SharingContract * This, + _In_ ID3D12Fence *pFence, + UINT64 FenceValue); + + void ( STDMETHODCALLTYPE *BeginCapturableWork )( + ID3D12SharingContract * This, + _In_ REFGUID guid); + + void ( STDMETHODCALLTYPE *EndCapturableWork )( + ID3D12SharingContract * This, + _In_ REFGUID guid); + + END_INTERFACE + } ID3D12SharingContractVtbl; + + interface ID3D12SharingContract + { + CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12SharingContract_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12SharingContract_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \ + ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) ) + +#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \ + ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) ) + +#define ID3D12SharingContract_BeginCapturableWork(This,guid) \ + ( (This)->lpVtbl -> BeginCapturableWork(This,guid) ) + +#define ID3D12SharingContract_EndCapturableWork(This,guid) \ + ( (This)->lpVtbl -> EndCapturableWork(This,guid) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12sdklayers_0000_0012 */ +/* [local] */ + +typedef +enum D3D12_MESSAGE_CATEGORY + { + D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0, + D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) , + D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) , + D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) , + D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) , + D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) , + D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) , + D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) , + D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) , + D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) , + D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 ) + } D3D12_MESSAGE_CATEGORY; + +typedef +enum D3D12_MESSAGE_SEVERITY + { + D3D12_MESSAGE_SEVERITY_CORRUPTION = 0, + D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) , + D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) , + D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) , + D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 ) + } D3D12_MESSAGE_SEVERITY; + +typedef +enum D3D12_MESSAGE_ID + { + D3D12_MESSAGE_ID_UNKNOWN = 0, + D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = ( D3D12_MESSAGE_ID_UNKNOWN + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_THIS = ( D3D12_MESSAGE_ID_STRING_FROM_APPLICATION + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = ( D3D12_MESSAGE_ID_CORRUPTED_THIS + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 + 1 ) , + D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = ( D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 + 1 ) , + D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING + 1 ) , + D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = ( D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = ( D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA + 1 ) , + D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN = ( D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA + 1 ) , + D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS = ( D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN + 1 ) , + D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = ( D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = ( D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = ( D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC + 1 ) , + D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT + 1 ) , + D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = ( D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = ( D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX + 1 ) , + D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE + 1 ) , + D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = ( D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = ( D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE + 1 ) , + D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = ( D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = ( D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE + 1 ) , + D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = ( D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE + 1 ) , + D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = ( D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP + 1 ) , + D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC = ( D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = ( D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD + 1 ) , + D3D12_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD + 1 ) , + D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED = ( D3D12_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC + 1 ) , + D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED = ( D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT = ( D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR = ( D3D12_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT + 1 ) , + D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH = ( D3D12_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR + 1 ) , + D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH = ( D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH + 1 ) , + D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = ( D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH + 1 ) , + D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE = ( D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID + 1 ) , + D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE = ( D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE + 1 ) , + D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE = ( D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE + 1 ) , + D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE = ( D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE + 1 ) , + D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX = ( D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE = ( D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX + 1 ) , + D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID = ( D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID = ( D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID + 1 ) , + D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID = ( D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID + 1 ) , + D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID = ( D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID + 1 ) , + D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID = ( D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID + 1 ) , + D3D12_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE = ( D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID + 1 ) , + D3D12_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS = ( D3D12_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE + 1 ) , + D3D12_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED = ( D3D12_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN = ( D3D12_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED + 1 ) , + D3D12_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED = ( D3D12_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN + 1 ) , + D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE = ( D3D12_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED + 1 ) , + D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE + 1 ) , + D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS = ( D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED = ( D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN = ( D3D12_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED + 1 ) , + D3D12_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN + 1 ) , + D3D12_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED = ( D3D12_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE = ( D3D12_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED + 1 ) , + D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE + 1 ) , + D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS = ( D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED = ( D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN = ( D3D12_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED + 1 ) , + D3D12_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN + 1 ) , + D3D12_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED = ( D3D12_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE = ( D3D12_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED + 1 ) , + D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE + 1 ) , + D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS = ( D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED = ( D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN = ( D3D12_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED + 1 ) , + D3D12_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN + 1 ) , + D3D12_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED = ( D3D12_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED = ( D3D12_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED + 1 ) , + D3D12_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED = ( D3D12_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED + 1 ) , + D3D12_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS = ( D3D12_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED + 1 ) , + D3D12_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS + 1 ) , + D3D12_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN = ( D3D12_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE = ( D3D12_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN + 1 ) , + D3D12_MESSAGE_ID_REF_THREADING_MODE = ( D3D12_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE + 1 ) , + D3D12_MESSAGE_ID_REF_UMDRIVER_EXCEPTION = ( D3D12_MESSAGE_ID_REF_THREADING_MODE + 1 ) , + D3D12_MESSAGE_ID_REF_KMDRIVER_EXCEPTION = ( D3D12_MESSAGE_ID_REF_UMDRIVER_EXCEPTION + 1 ) , + D3D12_MESSAGE_ID_REF_HARDWARE_EXCEPTION = ( D3D12_MESSAGE_ID_REF_KMDRIVER_EXCEPTION + 1 ) , + D3D12_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE = ( D3D12_MESSAGE_ID_REF_HARDWARE_EXCEPTION + 1 ) , + D3D12_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER = ( D3D12_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE + 1 ) , + D3D12_MESSAGE_ID_REF_OUT_OF_MEMORY = ( D3D12_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER + 1 ) , + D3D12_MESSAGE_ID_REF_INFO = ( D3D12_MESSAGE_ID_REF_OUT_OF_MEMORY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW = ( D3D12_MESSAGE_ID_REF_INFO + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW = ( D3D12_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW = ( D3D12_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW = ( D3D12_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW = ( D3D12_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW = ( D3D12_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET = ( D3D12_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = ( D3D12_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX = ( D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE = ( D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK = ( D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE = ( D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = ( D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = ( D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INPUTLAYOUT_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_CONSTANT_BUFFER_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INPUTLAYOUT_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_CONSTANT_BUFFER_TOO_SMALL = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_CONSTANT_BUFFER_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SAMPLER_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_CONSTANT_BUFFER_TOO_SMALL + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SHADERRESOURCEVIEW_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SAMPLER_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VIEW_DIMENSION_MISMATCH = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SHADERRESOURCEVIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VIEW_DIMENSION_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_GS_INPUT_PRIMITIVE_MISMATCH = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_RETURN_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_GS_INPUT_PRIMITIVE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_POSITION_NOT_PRESENT = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_RETURN_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OUTPUT_STREAM_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_POSITION_NOT_PRESENT + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_BOUND_RESOURCE_MAPPED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OUTPUT_STREAM_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_BOUND_RESOURCE_MAPPED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_OFFSET_UNALIGNED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_OFFSET_UNALIGNED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SO_STRIDE_LARGER_THAN_BUFFER = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SO_STRIDE_LARGER_THAN_BUFFER + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING + 1 ) , + D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 + 1 ) , + D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = ( D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT + 1 ) , + D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = ( D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN = ( D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET = ( D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = ( D3D12_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC + 1 ) , + D3D12_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC + 1 ) , + D3D12_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW = ( D3D12_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS = ( D3D12_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY = ( D3D12_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = ( D3D12_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE = ( D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN + 1 ) , + D3D12_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE = ( D3D12_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = ( D3D12_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT + 1 ) , + D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = ( D3D12_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_LIVE_BUFFER = ( D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY + 1 ) , + D3D12_MESSAGE_ID_LIVE_TEXTURE1D = ( D3D12_MESSAGE_ID_LIVE_BUFFER + 1 ) , + D3D12_MESSAGE_ID_LIVE_TEXTURE2D = ( D3D12_MESSAGE_ID_LIVE_TEXTURE1D + 1 ) , + D3D12_MESSAGE_ID_LIVE_TEXTURE3D = ( D3D12_MESSAGE_ID_LIVE_TEXTURE2D + 1 ) , + D3D12_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW = ( D3D12_MESSAGE_ID_LIVE_TEXTURE3D + 1 ) , + D3D12_MESSAGE_ID_LIVE_RENDERTARGETVIEW = ( D3D12_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW + 1 ) , + D3D12_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW = ( D3D12_MESSAGE_ID_LIVE_RENDERTARGETVIEW + 1 ) , + D3D12_MESSAGE_ID_LIVE_VERTEXSHADER = ( D3D12_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW + 1 ) , + D3D12_MESSAGE_ID_LIVE_GEOMETRYSHADER = ( D3D12_MESSAGE_ID_LIVE_VERTEXSHADER + 1 ) , + D3D12_MESSAGE_ID_LIVE_PIXELSHADER = ( D3D12_MESSAGE_ID_LIVE_GEOMETRYSHADER + 1 ) , + D3D12_MESSAGE_ID_LIVE_INPUTLAYOUT = ( D3D12_MESSAGE_ID_LIVE_PIXELSHADER + 1 ) , + D3D12_MESSAGE_ID_LIVE_SAMPLER = ( D3D12_MESSAGE_ID_LIVE_INPUTLAYOUT + 1 ) , + D3D12_MESSAGE_ID_LIVE_BLENDSTATE = ( D3D12_MESSAGE_ID_LIVE_SAMPLER + 1 ) , + D3D12_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE = ( D3D12_MESSAGE_ID_LIVE_BLENDSTATE + 1 ) , + D3D12_MESSAGE_ID_LIVE_RASTERIZERSTATE = ( D3D12_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE + 1 ) , + D3D12_MESSAGE_ID_LIVE_QUERY = ( D3D12_MESSAGE_ID_LIVE_RASTERIZERSTATE + 1 ) , + D3D12_MESSAGE_ID_LIVE_PREDICATE = ( D3D12_MESSAGE_ID_LIVE_QUERY + 1 ) , + D3D12_MESSAGE_ID_LIVE_COUNTER = ( D3D12_MESSAGE_ID_LIVE_PREDICATE + 1 ) , + D3D12_MESSAGE_ID_LIVE_DEVICE = ( D3D12_MESSAGE_ID_LIVE_COUNTER + 1 ) , + D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = ( D3D12_MESSAGE_ID_LIVE_DEVICE + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = ( D3D12_MESSAGE_ID_LIVE_SWAPCHAIN + 1 ) , + D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = ( D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS + 1 ) , + D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = ( D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES + 1 ) , + D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES + 1 ) , + D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL = ( D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES + 1 ) , + D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL + 1 ) , + D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = ( D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = ( D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE + 1 ) , + D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = ( D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL = ( D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE + 1 ) , + D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL + 1 ) , + D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = ( D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = ( D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE + 1 ) , + D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = ( D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH = ( D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER = ( D3D12_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED = ( D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW = ( D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE = ( D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS = ( D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED = ( D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN = ( D3D12_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD = ( D3D12_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = ( D3D12_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS = ( D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE = ( D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = ( D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE + 1 ) , + D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL = ( D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = ( D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL + 1 ) , + D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = ( D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = ( D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY = ( D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE + 1 ) , + D3D12_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER = ( D3D12_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY = ( D3D12_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY = ( D3D12_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY = ( D3D12_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY = ( D3D12_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY = ( D3D12_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE = ( D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS = ( D3D12_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP = ( D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY = ( D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY = ( D3D12_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = ( D3D12_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED = ( D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW = ( D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED + 1 ) , + D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY = ( D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY = ( D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY + 1 ) , + D3D12_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED = ( D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW = ( D3D12_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO = ( D3D12_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET = ( D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET = ( D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET + 1 ) , + D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE = ( D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET + 1 ) , + D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE = ( D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE + 1 ) , + D3D12_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE + 1 ) , + D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT = ( D3D12_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED = ( D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_PIXEL_SHADER_WITHOUT_RTV_OR_DSV = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_SHADER_ABORT = ( D3D12_MESSAGE_ID_DEVICE_DRAW_PIXEL_SHADER_WITHOUT_RTV_OR_DSV + 1 ) , + D3D12_MESSAGE_ID_SHADER_MESSAGE = ( D3D12_MESSAGE_ID_SHADER_ABORT + 1 ) , + D3D12_MESSAGE_ID_SHADER_ERROR = ( D3D12_MESSAGE_ID_SHADER_MESSAGE + 1 ) , + D3D12_MESSAGE_ID_OFFERRESOURCES_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_SHADER_ERROR + 1 ) , + D3D12_MESSAGE_ID_ENQUEUESETEVENT_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_OFFERRESOURCES_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_ENQUEUESETEVENT_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_ENQUEUESETEVENT_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_ENQUEUESETEVENT_ACCESSDENIED_RETURN = ( D3D12_MESSAGE_ID_ENQUEUESETEVENT_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = ( D3D12_MESSAGE_ID_ENQUEUESETEVENT_ACCESSDENIED_RETURN + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_FORCED_SAMPLE_COUNT = ( D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT + 1 ) , + D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = ( D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_FORCED_SAMPLE_COUNT + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARRAYWITHDECODER = ( D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARRAYWITHDECODER = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARRAYWITHDECODER + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARRAYWITHDECODER = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARRAYWITHDECODER + 1 ) , + D3D12_MESSAGE_ID_DEVICE_LOCKEDOUT_INTERFACE = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARRAYWITHDECODER + 1 ) , + D3D12_MESSAGE_ID_OFFERRESOURCES_INVALIDPRIORITY = ( D3D12_MESSAGE_ID_DEVICE_LOCKEDOUT_INTERFACE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDVIEW = ( D3D12_MESSAGE_ID_OFFERRESOURCES_INVALIDPRIORITY + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDVIEW + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_SHADEREXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_SHADEREXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_SHADEREXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_SHADEREXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_SHADEREXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_SHADEREXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_SHADEREXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_SHADEREXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_SHADEREXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_SHADEREXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_SHADEREXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_SHADEREXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_SHADEREXTENSIONSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_MINPRECISION = ( D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_SHADEREXTENSIONSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_MINPRECISION + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_INVALIDOFFSET = ( D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_TOOMANYVIEWS = ( D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_INVALIDOFFSET + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_NOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_TOOMANYVIEWS + 1 ) , + D3D12_MESSAGE_ID_SWAPDEVICECONTEXTSTATE_NOTSUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_NOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_UPDATESUBRESOURCE_PREFERUPDATESUBRESOURCE1 = ( D3D12_MESSAGE_ID_SWAPDEVICECONTEXTSTATE_NOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_GETDC_INACCESSIBLE = ( D3D12_MESSAGE_ID_UPDATESUBRESOURCE_PREFERUPDATESUBRESOURCE1 + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDRECT = ( D3D12_MESSAGE_ID_GETDC_INACCESSIBLE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_SAMPLE_MASK_IGNORED_ON_FL9 = ( D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDRECT + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE1_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_DRAW_SAMPLE_MASK_IGNORED_ON_FL9 + 1 ) , + D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BY_NAME_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE1_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_ENQUEUESETEVENT_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BY_NAME_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_OFFERRELEASE_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_ENQUEUESETEVENT_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_OFFERRESOURCES_INACCESSIBLE = ( D3D12_MESSAGE_ID_OFFERRELEASE_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATEVIDEOPROCESSORINPUTVIEW_INVALIDMSAA = ( D3D12_MESSAGE_ID_OFFERRESOURCES_INACCESSIBLE + 1 ) , + D3D12_MESSAGE_ID_CREATEVIDEOPROCESSOROUTPUTVIEW_INVALIDMSAA = ( D3D12_MESSAGE_ID_CREATEVIDEOPROCESSORINPUTVIEW_INVALIDMSAA + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = ( D3D12_MESSAGE_ID_CREATEVIDEOPROCESSOROUTPUTVIEW_INVALIDMSAA + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = ( D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT + 1 ) , + D3D12_MESSAGE_ID_UPDATESUBRESOURCE_EMPTYDESTBOX = ( D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT + 1 ) , + D3D12_MESSAGE_ID_COPYSUBRESOURCEREGION_EMPTYSOURCEBOX = ( D3D12_MESSAGE_ID_UPDATESUBRESOURCE_EMPTYDESTBOX + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = ( D3D12_MESSAGE_ID_COPYSUBRESOURCEREGION_EMPTYSOURCEBOX + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_DEPTHSTENCILVIEW_NOT_SET = ( D3D12_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET = ( D3D12_MESSAGE_ID_DEVICE_DRAW_DEPTHSTENCILVIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET_DUE_TO_FLIP_PRESENT = ( D3D12_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET_DUE_TO_FLIP_PRESENT = ( D3D12_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET_DUE_TO_FLIP_PRESENT + 1 ) , + D3D12_MESSAGE_ID_GETDATAFORNEWHARDWAREKEY_NULLPARAM = ( D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET_DUE_TO_FLIP_PRESENT + 1 ) , + D3D12_MESSAGE_ID_CHECKCRYPTOSESSIONSTATUS_NULLPARAM = ( D3D12_MESSAGE_ID_GETDATAFORNEWHARDWAREKEY_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_SETEVENTONHARDWARECONTENTPROTECTIONTILT_NULLPARAM = ( D3D12_MESSAGE_ID_CHECKCRYPTOSESSIONSTATUS_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_GETVIDEODECODERCAPS_NULLPARAM = ( D3D12_MESSAGE_ID_SETEVENTONHARDWARECONTENTPROTECTIONTILT_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_GETVIDEODECODERCAPS_ZEROWIDTHHEIGHT = ( D3D12_MESSAGE_ID_GETVIDEODECODERCAPS_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_NULLPARAM = ( D3D12_MESSAGE_ID_GETVIDEODECODERCAPS_ZEROWIDTHHEIGHT + 1 ) , + D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_INVALIDCOLORSPACE = ( D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_ZEROWIDTHHEIGHT = ( D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_INVALIDCOLORSPACE + 1 ) , + D3D12_MESSAGE_ID_VIDEODECODERENABLEDOWNSAMPLING_NULLPARAM = ( D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_ZEROWIDTHHEIGHT + 1 ) , + D3D12_MESSAGE_ID_VIDEODECODERENABLEDOWNSAMPLING_UNSUPPORTED = ( D3D12_MESSAGE_ID_VIDEODECODERENABLEDOWNSAMPLING_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEODECODERUPDATEDOWNSAMPLING_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEODECODERENABLEDOWNSAMPLING_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_VIDEODECODERUPDATEDOWNSAMPLING_UNSUPPORTED = ( D3D12_MESSAGE_ID_VIDEODECODERUPDATEDOWNSAMPLING_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_CHECKVIDEOPROCESSORFORMATCONVERSION_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEODECODERUPDATEDOWNSAMPLING_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORSETOUTPUTCOLORSPACE1_NULLPARAM = ( D3D12_MESSAGE_ID_CHECKVIDEOPROCESSORFORMATCONVERSION_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETOUTPUTCOLORSPACE1_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORSETOUTPUTCOLORSPACE1_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMCOLORSPACE1_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETOUTPUTCOLORSPACE1_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMCOLORSPACE1_INVALIDSTREAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMCOLORSPACE1_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMCOLORSPACE1_INVALIDSTREAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_INVALIDSTREAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_UNSUPPORTED = ( D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_INVALIDSTREAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETSTREAMCOLORSPACE1_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETSTREAMMIRROR_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETSTREAMCOLORSPACE1_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETSTREAMMIRROR_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_INVALIDCOLORSPACE = ( D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_ZEROWIDTHHEIGHT = ( D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_INVALIDCOLORSPACE + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORSETOUTPUTSHADERUSAGE_NULLPARAM = ( D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_ZEROWIDTHHEIGHT + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETOUTPUTSHADERUSAGE_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORSETOUTPUTSHADERUSAGE_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_NULLPARAM = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETOUTPUTSHADERUSAGE_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDSTREAMCOUNT = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_NULLPARAM + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_TARGETRECT = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDSTREAMCOUNT + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDSOURCERECT = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_TARGETRECT + 1 ) , + D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDDESTRECT = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDSOURCERECT + 1 ) , + D3D12_MESSAGE_ID_CREATEBUFFER_INVALIDUSAGE = ( D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDDESTRECT + 1 ) , + D3D12_MESSAGE_ID_CREATETEXTURE1D_INVALIDUSAGE = ( D3D12_MESSAGE_ID_CREATEBUFFER_INVALIDUSAGE + 1 ) , + D3D12_MESSAGE_ID_CREATETEXTURE2D_INVALIDUSAGE = ( D3D12_MESSAGE_ID_CREATETEXTURE1D_INVALIDUSAGE + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_LEVEL9_STEPRATE_NOT_1 = ( D3D12_MESSAGE_ID_CREATETEXTURE2D_INVALIDUSAGE + 1 ) , + D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_LEVEL9_INSTANCING_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_LEVEL9_STEPRATE_NOT_1 + 1 ) , + D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = ( D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_LEVEL9_INSTANCING_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = ( D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER + 1 ) , + D3D12_MESSAGE_ID_COPYTILES_INVALID_PARAMETER = ( D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER + 1 ) , + D3D12_MESSAGE_ID_NULL_TILE_MAPPING_ACCESS_WARNING = ( D3D12_MESSAGE_ID_COPYTILES_INVALID_PARAMETER + 1 ) , + D3D12_MESSAGE_ID_NULL_TILE_MAPPING_ACCESS_ERROR = ( D3D12_MESSAGE_ID_NULL_TILE_MAPPING_ACCESS_WARNING + 1 ) , + D3D12_MESSAGE_ID_DIRTY_TILE_MAPPING_ACCESS = ( D3D12_MESSAGE_ID_NULL_TILE_MAPPING_ACCESS_ERROR + 1 ) , + D3D12_MESSAGE_ID_DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA = ( D3D12_MESSAGE_ID_DIRTY_TILE_MAPPING_ACCESS + 1 ) , + D3D12_MESSAGE_ID_TILE_MAPPINGS_IN_COVERED_AREA_DUPLICATED_OUTSIDE = ( D3D12_MESSAGE_ID_DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA + 1 ) , + D3D12_MESSAGE_ID_TILE_MAPPINGS_SHARED_BETWEEN_INCOMPATIBLE_RESOURCES = ( D3D12_MESSAGE_ID_TILE_MAPPINGS_IN_COVERED_AREA_DUPLICATED_OUTSIDE + 1 ) , + D3D12_MESSAGE_ID_TILE_MAPPINGS_SHARED_BETWEEN_INPUT_AND_OUTPUT = ( D3D12_MESSAGE_ID_TILE_MAPPINGS_SHARED_BETWEEN_INCOMPATIBLE_RESOURCES + 1 ) , + D3D12_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_INVALIDFLAGS = ( D3D12_MESSAGE_ID_TILE_MAPPINGS_SHARED_BETWEEN_INPUT_AND_OUTPUT + 1 ) , + D3D12_MESSAGE_ID_GETRESOURCETILING_NONTILED_RESOURCE = ( D3D12_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_NEED_TO_CALL_TILEDRESOURCEBARRIER = ( D3D12_MESSAGE_ID_GETRESOURCETILING_NONTILED_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = ( D3D12_MESSAGE_ID_NEED_TO_CALL_TILEDRESOURCEBARRIER + 1 ) , + D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = ( D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS + 1 ) , + D3D12_MESSAGE_ID_TILED_RESOURCE_TIER_1_BUFFER_TEXTURE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEDEVICE_WARNING + 1 ) , + D3D12_MESSAGE_ID_CREATE_CRYPTOSESSION = ( D3D12_MESSAGE_ID_TILED_RESOURCE_TIER_1_BUFFER_TEXTURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATE_AUTHENTICATEDCHANNEL = ( D3D12_MESSAGE_ID_CREATE_CRYPTOSESSION + 1 ) , + D3D12_MESSAGE_ID_LIVE_CRYPTOSESSION = ( D3D12_MESSAGE_ID_CREATE_AUTHENTICATEDCHANNEL + 1 ) , + D3D12_MESSAGE_ID_LIVE_AUTHENTICATEDCHANNEL = ( D3D12_MESSAGE_ID_LIVE_CRYPTOSESSION + 1 ) , + D3D12_MESSAGE_ID_DESTROY_CRYPTOSESSION = ( D3D12_MESSAGE_ID_LIVE_AUTHENTICATEDCHANNEL + 1 ) , + D3D12_MESSAGE_ID_DESTROY_AUTHENTICATEDCHANNEL = ( D3D12_MESSAGE_ID_DESTROY_CRYPTOSESSION + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALID_SUBRESOURCE = ( D3D12_MESSAGE_ID_DESTROY_AUTHENTICATEDCHANNEL + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALID_TYPE = ( D3D12_MESSAGE_ID_MAP_INVALID_SUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_MAP_UNSUPPORTED_TYPE = ( D3D12_MESSAGE_ID_MAP_INVALID_TYPE + 1 ) , + D3D12_MESSAGE_ID_UNMAP_INVALID_SUBRESOURCE = ( D3D12_MESSAGE_ID_MAP_UNSUPPORTED_TYPE + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = ( D3D12_MESSAGE_ID_UNMAP_INVALID_SUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG + 1 ) , + D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE + 1 ) , + D3D12_MESSAGE_ID_INEFFICIENT_PRESENT = ( D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE + 1 ) , + D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = ( D3D12_MESSAGE_ID_INEFFICIENT_PRESENT + 1 ) , + D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = ( D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION + 1 ) , + D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = ( D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = ( D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = ( D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET + 1 ) , + D3D12_MESSAGE_ID_QUERY_STATE_MISMATCH = ( D3D12_MESSAGE_ID_COMMAND_LIST_OPEN + 1 ) , + D3D12_MESSAGE_ID_INVALID_BUNDLE_API = ( D3D12_MESSAGE_ID_QUERY_STATE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = ( D3D12_MESSAGE_ID_INVALID_BUNDLE_API + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED_WITH_INVALID_RESOURCE = ( D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED + 1 ) , + D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = ( D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED_WITH_INVALID_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_INVALID_INDIRECT_ARGUMENT_BUFFER = ( D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE + 1 ) , + D3D12_MESSAGE_ID_COMPUTE_AND_GRAPHICS_PIPELINE = ( D3D12_MESSAGE_ID_INVALID_INDIRECT_ARGUMENT_BUFFER + 1 ) , + D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = ( D3D12_MESSAGE_ID_COMPUTE_AND_GRAPHICS_PIPELINE + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = ( D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC + 1 ) , + D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = ( D3D12_MESSAGE_ID_COMMAND_LIST_SYNC + 1 ) , + D3D12_MESSAGE_ID_CREATE_QUEUE_IMAGE_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID + 1 ) , + D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_IMAGE_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_CREATE_QUEUE_IMAGE_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = ( D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_IMAGE_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = ( D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = ( D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR + 1 ) , + D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = ( D3D12_MESSAGE_ID_CREATE_PIPELINESTATE + 1 ) , + D3D12_MESSAGE_ID_CREATE_IMAGECOMMANDLIST = ( D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 + 1 ) , + D3D12_MESSAGE_ID_CREATE_RESOURCE = ( D3D12_MESSAGE_ID_CREATE_IMAGECOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = ( D3D12_MESSAGE_ID_CREATE_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = ( D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP + 1 ) , + D3D12_MESSAGE_ID_CREATE_LIBRARY = ( D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE + 1 ) , + D3D12_MESSAGE_ID_CREATE_HEAP = ( D3D12_MESSAGE_ID_CREATE_LIBRARY + 1 ) , + D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = ( D3D12_MESSAGE_ID_CREATE_HEAP + 1 ) , + D3D12_MESSAGE_ID_CREATE_QUERYHEAP = ( D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE + 1 ) , + D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = ( D3D12_MESSAGE_ID_CREATE_QUERYHEAP + 1 ) , + D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = ( D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE + 1 ) , + D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = ( D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = ( D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR + 1 ) , + D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = ( D3D12_MESSAGE_ID_LIVE_PIPELINESTATE + 1 ) , + D3D12_MESSAGE_ID_LIVE_IMAGECOMMANDLIST = ( D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 + 1 ) , + D3D12_MESSAGE_ID_LIVE_RESOURCE = ( D3D12_MESSAGE_ID_LIVE_IMAGECOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = ( D3D12_MESSAGE_ID_LIVE_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = ( D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP + 1 ) , + D3D12_MESSAGE_ID_LIVE_LIBRARY = ( D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE + 1 ) , + D3D12_MESSAGE_ID_LIVE_HEAP = ( D3D12_MESSAGE_ID_LIVE_LIBRARY + 1 ) , + D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = ( D3D12_MESSAGE_ID_LIVE_HEAP + 1 ) , + D3D12_MESSAGE_ID_LIVE_QUERYHEAP = ( D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE + 1 ) , + D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = ( D3D12_MESSAGE_ID_LIVE_QUERYHEAP + 1 ) , + D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = ( D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE + 1 ) , + D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = ( D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = ( D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR + 1 ) , + D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = ( D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE + 1 ) , + D3D12_MESSAGE_ID_DESTROY_IMAGECOMMANDLIST = ( D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 + 1 ) , + D3D12_MESSAGE_ID_DESTROY_RESOURCE = ( D3D12_MESSAGE_ID_DESTROY_IMAGECOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = ( D3D12_MESSAGE_ID_DESTROY_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = ( D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP + 1 ) , + D3D12_MESSAGE_ID_DESTROY_LIBRARY = ( D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE + 1 ) , + D3D12_MESSAGE_ID_DESTROY_HEAP = ( D3D12_MESSAGE_ID_DESTROY_LIBRARY + 1 ) , + D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = ( D3D12_MESSAGE_ID_DESTROY_HEAP + 1 ) , + D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = ( D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE + 1 ) , + D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = ( D3D12_MESSAGE_ID_DESTROY_QUERYHEAP + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDHEAPTYPE = ( D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = ( D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDHEAPTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDMISCFLAGS = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = ( D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDMISCFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_LARGEALLOCATION = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_SMALLALLOCATION = ( D3D12_MESSAGE_ID_CREATERESOURCE_LARGEALLOCATION + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_CREATERESOURCE_SMALLALLOCATION + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = ( D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_HAS_PENDING_INITIAL_DATA = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE + 1 ) , + D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = ( D3D12_MESSAGE_ID_RESOURCE_HAS_PENDING_INITIAL_DATA + 1 ) , + D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = ( D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE + 1 ) , + D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = ( D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = ( D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = ( D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_RENDER_TARGET_NUMBER_MISMATCH_PIPELINE_STATE = ( D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = ( D3D12_MESSAGE_ID_RENDER_TARGET_NUMBER_MISMATCH_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = ( D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = ( D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = ( D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_RENDER_TARGET_NUMBER_MISMATCH_BUNDLE_PIPELINE_STATE = ( D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_BUNDLE_PIPELINE_STATE = ( D3D12_MESSAGE_ID_RENDER_TARGET_NUMBER_MISMATCH_BUNDLE_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_BUNDLE_PIPELINE_STATE = ( D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_BUNDLE_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_BUNDLE_PIPELINE_STATE = ( D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_BUNDLE_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_BUNDLE_PIPELINE_STATE = ( D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_BUNDLE_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = ( D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_BUNDLE_PIPELINE_STATE + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = ( D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = ( D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = ( D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = ( D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = ( D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = ( D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = ( D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = ( D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = ( D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = ( D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = ( D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = ( D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE + 1 ) , + D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = ( D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC + 1 ) , + D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = ( D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE + 1 ) , + D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_SYSTEMVALUE = ( D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE + 1 ) , + D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = ( D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_SYSTEMVALUE + 1 ) , + D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = ( D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_LARGE_OFFSET = ( D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC + 1 ) , + D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = ( D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_LARGE_OFFSET + 1 ) , + D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = ( D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE + 1 ) , + D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = ( D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = ( D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE + 1 ) , + D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = ( D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE + 1 ) , + D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = ( D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = ( D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE + 1 ) , + D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = ( D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE + 1 ) , + D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = ( D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND + 1 ) , + D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = ( D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED + 1 ) , + D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = ( D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = ( D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES + 1 ) , + D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = ( D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP + 1 ) , + D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = ( D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS + 1 ) , + D3D12_MESSAGE_ID_MAKERESIDENT_INVALIDOBJECT = ( D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY + 1 ) , + D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = ( D3D12_MESSAGE_ID_MAKERESIDENT_INVALIDOBJECT + 1 ) , + D3D12_MESSAGE_ID_EVICT_INVALIDOBJECT = ( D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY + 1 ) , + D3D12_MESSAGE_ID_HEAPS_UNSUPPORTED = ( D3D12_MESSAGE_ID_EVICT_INVALIDOBJECT + 1 ) , + D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = ( D3D12_MESSAGE_ID_HEAPS_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = ( D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID + 1 ) , + D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = ( D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID + 1 ) , + D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = ( D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID + 1 ) , + D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = ( D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID + 1 ) , + D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = ( D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID + 1 ) , + D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_LARGE_OFFSET = ( D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC + 1 ) , + D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = ( D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_LARGE_OFFSET + 1 ) , + D3D12_MESSAGE_ID_SET_INDEX_BUFFER_LARGE_OFFSET = ( D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC + 1 ) , + D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = ( D3D12_MESSAGE_ID_SET_INDEX_BUFFER_LARGE_OFFSET + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = ( D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = ( D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = ( D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC + 1 ) , + D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT + 1 ) , + D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = ( D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID + 1 ) , + D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = ( D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID + 1 ) , + D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = ( D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID + 1 ) , + D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = ( D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID + 1 ) , + D3D12_MESSAGE_ID_CREATEQUERY_HEAP_JPEG_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS + 1 ) , + D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = ( D3D12_MESSAGE_ID_CREATEQUERY_HEAP_JPEG_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = ( D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS + 1 ) , + D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = ( D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY + 1 ) , + D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = ( D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS + 1 ) , + D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS + 1 ) , + D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = ( D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = ( D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = ( D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT + 1 ) , + D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT + 1 ) , + D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = ( D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = ( D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET + 1 ) , + D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP + 1 ) , + D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = ( D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID + 1 ) , + D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = ( D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID + 1 ) , + D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = ( D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANEINDEX = ( D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION + 4 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANEINDEX = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_AMBIGUOUSVIDEOPLANEINDEX = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANEINDEX = ( D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_AMBIGUOUSVIDEOPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANEINDEX = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_AMBIGUOUSVIDEOPLANEINDEX = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANEINDEX = ( D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_AMBIGUOUSVIDEOPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANEINDEX = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_AMBIGUOUSVIDEOPLANEINDEX = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSCANDATAOFFSET = ( D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_AMBIGUOUSVIDEOPLANEINDEX + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_NOTSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSCANDATAOFFSET + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_DIMENSIONSTOOLARGE = ( D3D12_MESSAGE_ID_JPEGDECODE_NOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_INVALIDCOMPONENTS = ( D3D12_MESSAGE_ID_JPEGDECODE_DIMENSIONSTOOLARGE + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDCOMPONENTS = ( D3D12_MESSAGE_ID_JPEGDECODE_INVALIDCOMPONENTS + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_DESTINATIONNOT2D = ( D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDCOMPONENTS + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_TILEDRESOURCESUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_DESTINATIONNOT2D + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_GUARDRECTSUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_TILEDRESOURCESUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_FORMATUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_GUARDRECTSUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_JPEGDECODE_FORMATUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_INVALIDMIPLEVEL = ( D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_EMPTYDESTBOX = ( D3D12_MESSAGE_ID_JPEGDECODE_INVALIDMIPLEVEL + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXNOT2D = ( D3D12_MESSAGE_ID_JPEGDECODE_EMPTYDESTBOX + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXNOTSUB = ( D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXNOT2D + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXESINTERSECT = ( D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXNOTSUB + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_XSUBSAMPLEMISMATCH = ( D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXESINTERSECT + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_YSUBSAMPLEMISMATCH = ( D3D12_MESSAGE_ID_JPEGDECODE_XSUBSAMPLEMISMATCH + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_XSUBSAMPLEODD = ( D3D12_MESSAGE_ID_JPEGDECODE_YSUBSAMPLEMISMATCH + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_YSUBSAMPLEODD = ( D3D12_MESSAGE_ID_JPEGDECODE_XSUBSAMPLEODD + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_UPSCALEUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_YSUBSAMPLEODD + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_TIER4DOWNSCALETOLARGE = ( D3D12_MESSAGE_ID_JPEGDECODE_UPSCALEUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_TIER3DOWNSCALEUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_TIER4DOWNSCALETOLARGE + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_CHROMASIZEMISMATCH = ( D3D12_MESSAGE_ID_JPEGDECODE_TIER3DOWNSCALEUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_LUMACHROMASIZEMISMATCH = ( D3D12_MESSAGE_ID_JPEGDECODE_CHROMASIZEMISMATCH + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_INVALIDNUMDESTINATIONS = ( D3D12_MESSAGE_ID_JPEGDECODE_LUMACHROMASIZEMISMATCH + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_SUBBOXUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_INVALIDNUMDESTINATIONS + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_1DESTUNSUPPORTEDFORMAT = ( D3D12_MESSAGE_ID_JPEGDECODE_SUBBOXUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_3DESTUNSUPPORTEDFORMAT = ( D3D12_MESSAGE_ID_JPEGDECODE_1DESTUNSUPPORTEDFORMAT + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_SCALEUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_3DESTUNSUPPORTEDFORMAT + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSOURCESIZE = ( D3D12_MESSAGE_ID_JPEGDECODE_SCALEUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_INVALIDCOPYFLAGS = ( D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSOURCESIZE + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_HAZARD = ( D3D12_MESSAGE_ID_JPEGDECODE_INVALIDCOPYFLAGS + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDSRCBUFFERUSAGE = ( D3D12_MESSAGE_ID_JPEGDECODE_HAZARD + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDSRCBUFFERMISCFLAGS = ( D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDSRCBUFFERUSAGE + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDDSTTEXTUREUSAGE = ( D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDSRCBUFFERMISCFLAGS + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_BACKBUFFERNOTSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDDSTTEXTUREUSAGE + 1 ) , + D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDCOPYFLAGS = ( D3D12_MESSAGE_ID_JPEGDECODE_BACKBUFFERNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_NOTSUPPORTED = ( D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDCOPYFLAGS + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_INVALIDSCANDATAOFFSET = ( D3D12_MESSAGE_ID_JPEGENCODE_NOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_INVALIDCOMPONENTS = ( D3D12_MESSAGE_ID_JPEGENCODE_INVALIDSCANDATAOFFSET + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_SOURCENOT2D = ( D3D12_MESSAGE_ID_JPEGENCODE_INVALIDCOMPONENTS + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_TILEDRESOURCESUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGENCODE_SOURCENOT2D + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_GUARDRECTSUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGENCODE_TILEDRESOURCESUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_XSUBSAMPLEMISMATCH = ( D3D12_MESSAGE_ID_JPEGENCODE_GUARDRECTSUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_YSUBSAMPLEMISMATCH = ( D3D12_MESSAGE_ID_JPEGENCODE_XSUBSAMPLEMISMATCH + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDCOMPONENTS = ( D3D12_MESSAGE_ID_JPEGENCODE_YSUBSAMPLEMISMATCH + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_FORMATUNSUPPORTED = ( D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDCOMPONENTS + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_JPEGENCODE_FORMATUNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_INVALIDMIPLEVEL = ( D3D12_MESSAGE_ID_JPEGENCODE_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_DIMENSIONSTOOLARGE = ( D3D12_MESSAGE_ID_JPEGENCODE_INVALIDMIPLEVEL + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_HAZARD = ( D3D12_MESSAGE_ID_JPEGENCODE_DIMENSIONSTOOLARGE + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDDSTBUFFERUSAGE = ( D3D12_MESSAGE_ID_JPEGENCODE_HAZARD + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDDSTBUFFERMISCFLAGS = ( D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDDSTBUFFERUSAGE + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDSRCTEXTUREUSAGE = ( D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDDSTBUFFERMISCFLAGS + 1 ) , + D3D12_MESSAGE_ID_JPEGENCODE_BACKBUFFERNOTSUPPORTED = ( D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDSRCTEXTUREUSAGE + 1 ) , + D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_UNSUPPORTEDCONTEXTTYPEFORQUERY = ( D3D12_MESSAGE_ID_JPEGENCODE_BACKBUFFERNOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_FLUSH1_INVALIDCONTEXTTYPE = ( D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_UNSUPPORTEDCONTEXTTYPEFORQUERY + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = ( D3D12_MESSAGE_ID_FLUSH1_INVALIDCONTEXTTYPE + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = ( D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT + 1 ) , + D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = ( D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT + 1 ) , + D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALIDDEPTH = ( D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH + 1 ) , + D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = ( D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALIDDEPTH + 1 ) , + D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = ( D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALIDHEAP = ( D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE + 1 ) , + D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = ( D3D12_MESSAGE_ID_MAP_INVALIDHEAP + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP + 1 ) , + D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALIDRANGE = ( D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = ( D3D12_MESSAGE_ID_MAP_INVALIDRANGE + 1 ) , + D3D12_MESSAGE_ID_MAP_NULLRANGE = ( D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE + 1 ) , + D3D12_MESSAGE_ID_UNMAP_NULLRANGE = ( D3D12_MESSAGE_ID_MAP_NULLRANGE + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = ( D3D12_MESSAGE_ID_UNMAP_NULLRANGE + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = ( D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER + 1 ) , + D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = ( D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN + 1 ) , + D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = ( D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN + 1 ) , + D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = ( D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = ( D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH + 1 ) , + D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = ( D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = ( D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = ( D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST + 1 ) , + D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = ( D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION + 1 ) , + D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = ( D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS + 1 ) , + D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = ( D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC + 1 ) , + D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = ( D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION + 1 ) , + D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = ( D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = ( D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH + 1 ) , + D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = ( D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT + 1 ) , + D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER + 1 ) , + D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = ( D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = ( D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH + 1 ) , + D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED + 1 ) , + D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP + 1 ) , + D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = ( D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX + 1 ) , + D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = ( D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = ( D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX + 1 ) , + D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP + 1 ) , + D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = ( D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = ( D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX + 1 ) , + D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = ( D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = ( D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX + 1 ) , + D3D12_MESSAGE_ID_INVALID_NODE_INDEX = ( D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED + 1 ) , + D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = ( D3D12_MESSAGE_ID_INVALID_NODE_INDEX + 1 ) , + D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = ( D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = ( D3D12_MESSAGE_ID_NODE_MASK_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = ( D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = ( D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES + 1 ) , + D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = ( D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES + 1 ) , + D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = ( D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = ( D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE + 1 ) , + D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = ( D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS + 1 ) , + D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = ( D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE + 1 ) , + D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = ( D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = ( D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = ( D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT + 1 ) , + D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = ( D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = ( D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES + 1 ) , + D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = ( D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE + 1 ) , + D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = ( D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT + 1 ) , + D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = ( D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT + 1 ) , + D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = ( D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY + 1 ) , + D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = ( D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE + 1 ) , + D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = ( D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = ( D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE + 1 ) , + D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = ( D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = ( D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED + 1 ) , + D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT + 1 ) , + D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = ( D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS + 1 ) , + D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_NEEDED = ( D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED + 1 ) , + D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = ( D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_NEEDED + 1 ) , + D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = ( D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY + 1 ) , + D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = ( D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE + 1 ) , + D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = ( D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE + 1 ) , + D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = ( D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE + 1 ) , + D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = ( D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST + 1 ) , + D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = ( D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE + 1 ) , + D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = ( D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = ( D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC + 1 ) , + D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = ( D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = ( D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = ( D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = ( D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END + 1 ) , + D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = ( D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = ( D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = ( D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = ( D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = ( D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = ( D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = ( D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY + 1 ) , + D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = ( D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY + 1 ) , + D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = ( D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY + 1 ) , + D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = ( D3D12_MESSAGE_ID_STOREPIPELINE_NONAME + 1 ) , + D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = ( D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME + 1 ) , + D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = ( D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND + 1 ) , + D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = ( D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = ( D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY + 1 ) , + D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS + 1 ) , + D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = ( D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = ( D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATE_VIDEODECODER = ( D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = ( D3D12_MESSAGE_ID_CREATE_VIDEODECODER + 1 ) , + D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = ( D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM + 1 ) , + D3D12_MESSAGE_ID_LIVE_VIDEODECODER = ( D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = ( D3D12_MESSAGE_ID_LIVE_VIDEODECODER + 1 ) , + D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = ( D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM + 1 ) , + D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = ( D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = ( D3D12_MESSAGE_ID_DESTROY_VIDEODECODER + 1 ) , + D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = ( D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM + 1 ) , + D3D12_MESSAGE_ID_DEPRECATED_API = ( D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = ( D3D12_MESSAGE_ID_DEPRECATED_API + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = ( D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = ( D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = ( D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE + 1 ) , + D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = ( D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS + 1 ) , + D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = ( D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D + 1 ) , + D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = ( D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = ( D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE + 1 ) , + D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = ( D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE + 1 ) , + D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = ( D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE + 1 ) , + D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = ( D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = ( D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS + 1 ) , + D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = ( D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS + 1 ) , + D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = ( D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS + 1 ) , + D3D12_MESSAGE_ID_CREATE_PASS = ( D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY + 1 ) , + D3D12_MESSAGE_ID_DESTROY_PASS = ( D3D12_MESSAGE_ID_CREATE_PASS + 1 ) , + D3D12_MESSAGE_ID_LIVE_PASS = ( D3D12_MESSAGE_ID_DESTROY_PASS + 1 ) , + D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = ( D3D12_MESSAGE_ID_LIVE_PASS + 1 ) , + D3D12_MESSAGE_ID_BEGIN_EVENT = ( D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS + 1 ) , + D3D12_MESSAGE_ID_END_EVENT = ( D3D12_MESSAGE_ID_BEGIN_EVENT + 1 ) , + D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = ( D3D12_MESSAGE_ID_END_EVENT + 1 ) , + D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = ( D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = ( D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM + 1 ) , + D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = ( D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE + 1 ) , + D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = ( D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = ( D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = ( D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS + 1 ) , + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS + 1 ) , + D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = ( D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES + 1 ) , + D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = ( D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG + 1 ) , + D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = ( D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE + 1 ) , + D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = ( D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS + 1 ) , + D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = ( D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE + 1 ) , + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = ( D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET + 1 ) , + D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = ( D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH + 1 ) , + D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = ( D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE + 1 ) , + D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = ( D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED + 1 ) , + D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = ( D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS + 1 ) , + D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = ( D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT + 1 ) , + D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = ( D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = ( D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = ( D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = ( D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = ( D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = ( D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = ( D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = ( D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST + 1 ) , + D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = ( D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE + 1 ) , + D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = ( D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR + 1 ) , + D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = ( D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM + 1 ) , + D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = ( D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR + 1 ) , + D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = ( D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM + 1 ) , + D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = ( D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR + 1 ) , + D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = ( D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM + 1 ) , + D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = ( D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS + 1 ) , + D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068, + D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069, + D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070, + D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071, + D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072, + D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073, + D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074, + D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075, + D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076, + D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077, + D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078, + D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079, + D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080, + D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081, + D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082, + D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083, + D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084, + D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085, + D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086, + D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087, + D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088, + D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089, + D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090, + D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091, + D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092, + D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093, + D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094, + D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095, + D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096, + D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097, + D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098, + D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099, + D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100, + D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101, + D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102, + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103, + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104, + D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105, + D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106, + D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107, + D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108, + D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109, + D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110, + D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111, + D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112, + D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113, + D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114, + D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115, + D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116, + D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117, + D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118, + D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119, + D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120, + D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121, + D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122, + D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123, + D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124, + D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125, + D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126, + D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127, + D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128, + D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129, + D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130, + D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131, + D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132, + D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133, + D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134, + D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135, + D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136, + D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137, + D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138, + D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139, + D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140, + D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141, + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142, + D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151, + D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152, + D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153, + D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154, + D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155, + D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156, + D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157, + D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158, + D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159, + D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160, + D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161, + D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162, + D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163, + D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164, + D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165, + D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166, + D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167, + D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168, + D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169, + D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170, + D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171, + D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172, + D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173, + D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174, + D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175, + D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176, + D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177, + D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178, + D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179, + D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180, + D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181, + D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182, + D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183, + D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184, + D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185, + D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186, + D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187, + D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188, + D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189, + D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190, + D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191, + D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192, + D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193, + D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194, + D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195, + D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196, + D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197, + D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198, + D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199, + D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200, + D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201, + D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202, + D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203, + D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204, + D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205, + D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206, + D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207, + D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208, + D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209, + D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210, + D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211, + D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212, + D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213, + D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214, + D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215, + D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216, + D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217, + D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218, + D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219, + D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220, + D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221, + D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222, + D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223, + D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224, + D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225, + D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226, + D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227, + D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228, + D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229, + D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230, + D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231, + D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232, + D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233, + D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234, + D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235, + D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236, + D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237, + D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238, + D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239, + D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240, + D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241, + D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242, + D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243, + D3D12_MESSAGE_ID_D3D12_MESSAGES_END = ( D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE + 1 ) + } D3D12_MESSAGE_ID; + +static_assert(D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED == 1000, "Publicly released SDK D3D12_MESSAGE_ID enum values must not be changed. New enum values must be added to the end of the list."); +static_assert(D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT == 1067, "Publicly released SDK D3D12_MESSAGE_ID enum values must not be changed. New enum values must be added to the end of the list."); +typedef struct D3D12_MESSAGE + { + D3D12_MESSAGE_CATEGORY Category; + D3D12_MESSAGE_SEVERITY Severity; + D3D12_MESSAGE_ID ID; + _Field_size_(DescriptionByteLength) const char *pDescription; + SIZE_T DescriptionByteLength; + } D3D12_MESSAGE; + +typedef struct D3D12_INFO_QUEUE_FILTER_DESC + { + UINT NumCategories; + _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList; + UINT NumSeverities; + _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList; + UINT NumIDs; + _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList; + } D3D12_INFO_QUEUE_FILTER_DESC; + +typedef struct D3D12_INFO_QUEUE_FILTER + { + D3D12_INFO_QUEUE_FILTER_DESC AllowList; + D3D12_INFO_QUEUE_FILTER_DESC DenyList; + } D3D12_INFO_QUEUE_FILTER; + +#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024 + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_s_ifspec; + +#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__ +#define __ID3D12InfoQueue_INTERFACE_DEFINED__ + +/* interface ID3D12InfoQueue */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D12InfoQueue; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458") + ID3D12InfoQueue : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit( + _In_ UINT64 MessageCountLimit) = 0; + + virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMessage( + _In_ UINT64 MessageIndex, + _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage, + _Inout_ SIZE_T *pMessageByteLength) = 0; + + virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0; + + virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0; + + virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0; + + virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0; + + virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0; + + virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries( + _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStorageFilter( + _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter, + _Inout_ SIZE_T *pFilterByteLength) = 0; + + virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PushStorageFilter( + _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0; + + virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0; + + virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries( + _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter( + _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter, + _Inout_ SIZE_T *pFilterByteLength) = 0; + + virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter( + _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0; + + virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0; + + virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddMessage( + _In_ D3D12_MESSAGE_CATEGORY Category, + _In_ D3D12_MESSAGE_SEVERITY Severity, + _In_ D3D12_MESSAGE_ID ID, + _In_ LPCSTR pDescription) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage( + _In_ D3D12_MESSAGE_SEVERITY Severity, + _In_ LPCSTR pDescription) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory( + _In_ D3D12_MESSAGE_CATEGORY Category, + _In_ BOOL bEnable) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity( + _In_ D3D12_MESSAGE_SEVERITY Severity, + _In_ BOOL bEnable) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBreakOnID( + _In_ D3D12_MESSAGE_ID ID, + _In_ BOOL bEnable) = 0; + + virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory( + _In_ D3D12_MESSAGE_CATEGORY Category) = 0; + + virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity( + _In_ D3D12_MESSAGE_SEVERITY Severity) = 0; + + virtual BOOL STDMETHODCALLTYPE GetBreakOnID( + _In_ D3D12_MESSAGE_ID ID) = 0; + + virtual void STDMETHODCALLTYPE SetMuteDebugOutput( + _In_ BOOL bMute) = 0; + + virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D12InfoQueueVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D12InfoQueue * This, + REFIID riid, + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D12InfoQueue * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )( + ID3D12InfoQueue * This, + _In_ UINT64 MessageCountLimit); + + void ( STDMETHODCALLTYPE *ClearStoredMessages )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *GetMessage )( + ID3D12InfoQueue * This, + _In_ UINT64 MessageIndex, + _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage, + _Inout_ SIZE_T *pMessageByteLength); + + UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )( + ID3D12InfoQueue * This); + + UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )( + ID3D12InfoQueue * This); + + UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )( + ID3D12InfoQueue * This); + + UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )( + ID3D12InfoQueue * This); + + UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )( + ID3D12InfoQueue * This); + + UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )( + ID3D12InfoQueue * This, + _In_ D3D12_INFO_QUEUE_FILTER *pFilter); + + HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )( + ID3D12InfoQueue * This, + _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter, + _Inout_ SIZE_T *pFilterByteLength); + + void ( STDMETHODCALLTYPE *ClearStorageFilter )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )( + ID3D12InfoQueue * This, + _In_ D3D12_INFO_QUEUE_FILTER *pFilter); + + void ( STDMETHODCALLTYPE *PopStorageFilter )( + ID3D12InfoQueue * This); + + UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )( + ID3D12InfoQueue * This, + _In_ D3D12_INFO_QUEUE_FILTER *pFilter); + + HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )( + ID3D12InfoQueue * This, + _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter, + _Inout_ SIZE_T *pFilterByteLength); + + void ( STDMETHODCALLTYPE *ClearRetrievalFilter )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )( + ID3D12InfoQueue * This, + _In_ D3D12_INFO_QUEUE_FILTER *pFilter); + + void ( STDMETHODCALLTYPE *PopRetrievalFilter )( + ID3D12InfoQueue * This); + + UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )( + ID3D12InfoQueue * This); + + HRESULT ( STDMETHODCALLTYPE *AddMessage )( + ID3D12InfoQueue * This, + _In_ D3D12_MESSAGE_CATEGORY Category, + _In_ D3D12_MESSAGE_SEVERITY Severity, + _In_ D3D12_MESSAGE_ID ID, + _In_ LPCSTR pDescription); + + HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )( + ID3D12InfoQueue * This, + _In_ D3D12_MESSAGE_SEVERITY Severity, + _In_ LPCSTR pDescription); + + HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )( + ID3D12InfoQueue * This, + _In_ D3D12_MESSAGE_CATEGORY Category, + _In_ BOOL bEnable); + + HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )( + ID3D12InfoQueue * This, + _In_ D3D12_MESSAGE_SEVERITY Severity, + _In_ BOOL bEnable); + + HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )( + ID3D12InfoQueue * This, + _In_ D3D12_MESSAGE_ID ID, + _In_ BOOL bEnable); + + BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )( + ID3D12InfoQueue * This, + _In_ D3D12_MESSAGE_CATEGORY Category); + + BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )( + ID3D12InfoQueue * This, + _In_ D3D12_MESSAGE_SEVERITY Severity); + + BOOL ( STDMETHODCALLTYPE *GetBreakOnID )( + ID3D12InfoQueue * This, + _In_ D3D12_MESSAGE_ID ID); + + void ( STDMETHODCALLTYPE *SetMuteDebugOutput )( + ID3D12InfoQueue * This, + _In_ BOOL bMute); + + BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )( + ID3D12InfoQueue * This); + + END_INTERFACE + } ID3D12InfoQueueVtbl; + + interface ID3D12InfoQueue + { + CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D12InfoQueue_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D12InfoQueue_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \ + ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) ) + +#define ID3D12InfoQueue_ClearStoredMessages(This) \ + ( (This)->lpVtbl -> ClearStoredMessages(This) ) + +#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \ + ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) ) + +#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \ + ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) ) + +#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \ + ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) ) + +#define ID3D12InfoQueue_GetNumStoredMessages(This) \ + ( (This)->lpVtbl -> GetNumStoredMessages(This) ) + +#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \ + ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) ) + +#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \ + ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) ) + +#define ID3D12InfoQueue_GetMessageCountLimit(This) \ + ( (This)->lpVtbl -> GetMessageCountLimit(This) ) + +#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \ + ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) ) + +#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \ + ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) ) + +#define ID3D12InfoQueue_ClearStorageFilter(This) \ + ( (This)->lpVtbl -> ClearStorageFilter(This) ) + +#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \ + ( (This)->lpVtbl -> PushEmptyStorageFilter(This) ) + +#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \ + ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) ) + +#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \ + ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) ) + +#define ID3D12InfoQueue_PopStorageFilter(This) \ + ( (This)->lpVtbl -> PopStorageFilter(This) ) + +#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \ + ( (This)->lpVtbl -> GetStorageFilterStackSize(This) ) + +#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \ + ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) ) + +#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \ + ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) ) + +#define ID3D12InfoQueue_ClearRetrievalFilter(This) \ + ( (This)->lpVtbl -> ClearRetrievalFilter(This) ) + +#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \ + ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) ) + +#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \ + ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) ) + +#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \ + ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) ) + +#define ID3D12InfoQueue_PopRetrievalFilter(This) \ + ( (This)->lpVtbl -> PopRetrievalFilter(This) ) + +#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \ + ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) ) + +#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \ + ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) ) + +#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \ + ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) ) + +#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \ + ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) ) + +#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \ + ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) ) + +#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \ + ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) ) + +#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \ + ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) ) + +#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \ + ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) ) + +#define ID3D12InfoQueue_GetBreakOnID(This,ID) \ + ( (This)->lpVtbl -> GetBreakOnID(This,ID) ) + +#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \ + ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) ) + +#define ID3D12InfoQueue_GetMuteDebugOutput(This) \ + ( (This)->lpVtbl -> GetMuteDebugOutput(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3d12sdklayers_0000_0013 */ +/* [local] */ + +#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */ +#pragma endregion +DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0); +DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04); +DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74); +DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1); +DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88); +DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e); +DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd); +DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a); +DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37); +DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f); +DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e); +DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef); +DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58); + + +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0013_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0013_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/include/dxsdk/d3d12shader.h b/include/dxsdk/d3d12shader.h new file mode 100644 index 00000000..fbeb7633 --- /dev/null +++ b/include/dxsdk/d3d12shader.h @@ -0,0 +1,459 @@ +////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// File: D3D12Shader.h +// Content: D3D12 Shader Types and APIs +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef __D3D12SHADER_H__ +#define __D3D12SHADER_H__ + +#include "d3dcommon.h" + +typedef enum D3D12_SHADER_VERSION_TYPE +{ + D3D12_SHVER_PIXEL_SHADER = 0, + D3D12_SHVER_VERTEX_SHADER = 1, + D3D12_SHVER_GEOMETRY_SHADER = 2, + + // D3D11 Shaders + D3D12_SHVER_HULL_SHADER = 3, + D3D12_SHVER_DOMAIN_SHADER = 4, + D3D12_SHVER_COMPUTE_SHADER = 5, + + D3D12_SHVER_RESERVED0 = 0xFFF0, +} D3D12_SHADER_VERSION_TYPE; + +#define D3D12_SHVER_GET_TYPE(_Version) \ + (((_Version) >> 16) & 0xffff) +#define D3D12_SHVER_GET_MAJOR(_Version) \ + (((_Version) >> 4) & 0xf) +#define D3D12_SHVER_GET_MINOR(_Version) \ + (((_Version) >> 0) & 0xf) + +// Slot ID for library function return +#define D3D_RETURN_PARAMETER_INDEX (-1) + +typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE; + +typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE; + + +typedef struct _D3D12_SIGNATURE_PARAMETER_DESC +{ + LPCSTR SemanticName; // Name of the semantic + UINT SemanticIndex; // Index of the semantic + UINT Register; // Number of member variables + D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable + D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.) + BYTE Mask; // Mask to indicate which components of the register + // are used (combination of D3D10_COMPONENT_MASK values) + BYTE ReadWriteMask; // Mask to indicate whether a given component is + // never written (if this is an output signature) or + // always read (if this is an input signature). + // (combination of D3D_MASK_* values) + UINT Stream; // Stream index + D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision +} D3D12_SIGNATURE_PARAMETER_DESC; + +typedef struct _D3D12_SHADER_BUFFER_DESC +{ + LPCSTR Name; // Name of the constant buffer + D3D_CBUFFER_TYPE Type; // Indicates type of buffer content + UINT Variables; // Number of member variables + UINT Size; // Size of CB (in bytes) + UINT uFlags; // Buffer description flags +} D3D12_SHADER_BUFFER_DESC; + +typedef struct _D3D12_SHADER_VARIABLE_DESC +{ + LPCSTR Name; // Name of the variable + UINT StartOffset; // Offset in constant buffer's backing store + UINT Size; // Size of variable (in bytes) + UINT uFlags; // Variable flags + LPVOID DefaultValue; // Raw pointer to default value + UINT StartTexture; // First texture index (or -1 if no textures used) + UINT TextureSize; // Number of texture slots possibly used. + UINT StartSampler; // First sampler index (or -1 if no textures used) + UINT SamplerSize; // Number of sampler slots possibly used. +} D3D12_SHADER_VARIABLE_DESC; + +typedef struct _D3D12_SHADER_TYPE_DESC +{ + D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.) + D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.) + UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable) + UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable) + UINT Elements; // Number of elements (0 if not an array) + UINT Members; // Number of members (0 if not a structure) + UINT Offset; // Offset from the start of structure (0 if not a structure member) + LPCSTR Name; // Name of type, can be NULL +} D3D12_SHADER_TYPE_DESC; + +typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN; + +typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING; + +typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE; + +typedef struct _D3D12_SHADER_DESC +{ + UINT Version; // Shader version + LPCSTR Creator; // Creator string + UINT Flags; // Shader compilation/parse flags + + UINT ConstantBuffers; // Number of constant buffers + UINT BoundResources; // Number of bound resources + UINT InputParameters; // Number of parameters in the input signature + UINT OutputParameters; // Number of parameters in the output signature + + UINT InstructionCount; // Number of emitted instructions + UINT TempRegisterCount; // Number of temporary registers used + UINT TempArrayCount; // Number of temporary arrays used + UINT DefCount; // Number of constant defines + UINT DclCount; // Number of declarations (input + output) + UINT TextureNormalInstructions; // Number of non-categorized texture instructions + UINT TextureLoadInstructions; // Number of texture load instructions + UINT TextureCompInstructions; // Number of texture comparison instructions + UINT TextureBiasInstructions; // Number of texture bias instructions + UINT TextureGradientInstructions; // Number of texture gradient instructions + UINT FloatInstructionCount; // Number of floating point arithmetic instructions used + UINT IntInstructionCount; // Number of signed integer arithmetic instructions used + UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used + UINT StaticFlowControlCount; // Number of static flow control instructions used + UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used + UINT MacroInstructionCount; // Number of macro instructions used + UINT ArrayInstructionCount; // Number of array instructions used + UINT CutInstructionCount; // Number of cut instructions used + UINT EmitInstructionCount; // Number of emit instructions used + D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology + UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count + D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive + UINT PatchConstantParameters; // Number of parameters in the patch constant signature + UINT cGSInstanceCount; // Number of Geometry shader instances + UINT cControlPoints; // Number of control points in the HS->DS stage + D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator + D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator + D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline) + // instruction counts + UINT cBarrierInstructions; // Number of barrier instructions in a compute shader + UINT cInterlockedInstructions; // Number of interlocked instructions + UINT cTextureStoreInstructions; // Number of texture writes +} D3D12_SHADER_DESC; + +typedef struct _D3D12_SHADER_INPUT_BIND_DESC +{ + LPCSTR Name; // Name of the resource + D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.) + UINT BindPoint; // Starting bind point + UINT BindCount; // Number of contiguous bind points (for arrays) + + UINT uFlags; // Input binding flags + D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture) + D3D_SRV_DIMENSION Dimension; // Dimension (if texture) + UINT NumSamples; // Number of samples (0 if not MS texture) + UINT Space; // Register space + UINT uID; // Range ID in the bytecode +} D3D12_SHADER_INPUT_BIND_DESC; + +#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001 +#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002 +#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004 +#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008 +#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010 +#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020 +#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040 +#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080 +#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100 +#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200 +#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400 +#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800 +#define D3D_SHADER_REQUIRES_ROVS 0x00001000 +#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000 + + +typedef struct _D3D12_LIBRARY_DESC +{ + LPCSTR Creator; // The name of the originator of the library. + UINT Flags; // Compilation flags. + UINT FunctionCount; // Number of functions exported from the library. +} D3D12_LIBRARY_DESC; + +typedef struct _D3D12_FUNCTION_DESC +{ + UINT Version; // Shader version + LPCSTR Creator; // Creator string + UINT Flags; // Shader compilation/parse flags + + UINT ConstantBuffers; // Number of constant buffers + UINT BoundResources; // Number of bound resources + + UINT InstructionCount; // Number of emitted instructions + UINT TempRegisterCount; // Number of temporary registers used + UINT TempArrayCount; // Number of temporary arrays used + UINT DefCount; // Number of constant defines + UINT DclCount; // Number of declarations (input + output) + UINT TextureNormalInstructions; // Number of non-categorized texture instructions + UINT TextureLoadInstructions; // Number of texture load instructions + UINT TextureCompInstructions; // Number of texture comparison instructions + UINT TextureBiasInstructions; // Number of texture bias instructions + UINT TextureGradientInstructions; // Number of texture gradient instructions + UINT FloatInstructionCount; // Number of floating point arithmetic instructions used + UINT IntInstructionCount; // Number of signed integer arithmetic instructions used + UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used + UINT StaticFlowControlCount; // Number of static flow control instructions used + UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used + UINT MacroInstructionCount; // Number of macro instructions used + UINT ArrayInstructionCount; // Number of array instructions used + UINT MovInstructionCount; // Number of mov instructions used + UINT MovcInstructionCount; // Number of movc instructions used + UINT ConversionInstructionCount; // Number of type conversion instructions used + UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used + D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code + UINT64 RequiredFeatureFlags; // Required feature flags + + LPCSTR Name; // Function name + INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return) + BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine + BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob + BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob +} D3D12_FUNCTION_DESC; + +typedef struct _D3D12_PARAMETER_DESC +{ + LPCSTR Name; // Parameter name. + LPCSTR SemanticName; // Parameter semantic name (+index). + D3D_SHADER_VARIABLE_TYPE Type; // Element type. + D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix. + UINT Rows; // Rows are for matrix parameters. + UINT Columns; // Components or Columns in matrix. + D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode. + D3D_PARAMETER_FLAGS Flags; // Parameter modifiers. + + UINT FirstInRegister; // The first input register for this parameter. + UINT FirstInComponent; // The first input register component for this parameter. + UINT FirstOutRegister; // The first output register for this parameter. + UINT FirstOutComponent; // The first output register component for this parameter. +} D3D12_PARAMETER_DESC; + + +////////////////////////////////////////////////////////////////////////////// +// Interfaces //////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType; +typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE; + +typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable; +typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE; + +typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer; +typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER; + +typedef interface ID3D12ShaderReflection ID3D12ShaderReflection; +typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION; + +typedef interface ID3D12LibraryReflection ID3D12LibraryReflection; +typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION; + +typedef interface ID3D12FunctionReflection ID3D12FunctionReflection; +typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION; + +typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection; +typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION; + + +// {E913C351-783D-48CA-A1D1-4F306284AD56} +interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType; +DEFINE_GUID(IID_ID3D12ShaderReflectionType, +0xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56); + +#undef INTERFACE +#define INTERFACE ID3D12ShaderReflectionType + +DECLARE_INTERFACE(ID3D12ShaderReflectionType) +{ + STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE; + + STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE; + STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE; + STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE; + + STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE; + STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE; + STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE; + STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE; + STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE; + STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE; + STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE; +}; + +// {8337A8A6-A216-444A-B2F4-314733A73AEA} +interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable; +DEFINE_GUID(IID_ID3D12ShaderReflectionVariable, +0x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea); + +#undef INTERFACE +#define INTERFACE ID3D12ShaderReflectionVariable + +DECLARE_INTERFACE(ID3D12ShaderReflectionVariable) +{ + STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE; + + STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE; + STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE; + + STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE; +}; + +// {C59598B4-48B3-4869-B9B1-B1618B14A8B7} +interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer; +DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer, +0xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7); + +#undef INTERFACE +#define INTERFACE ID3D12ShaderReflectionConstantBuffer + +DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer) +{ + STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE; + + STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE; + STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE; +}; + +// The ID3D12ShaderReflection IID may change from SDK version to SDK version +// if the reflection API changes. This prevents new code with the new API +// from working with an old binary. Recompiling with the new header +// will pick up the new IID. + +// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E} +interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection; +DEFINE_GUID(IID_ID3D12ShaderReflection, +0x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e); + +#undef INTERFACE +#define INTERFACE ID3D12ShaderReflection + +DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, + _Out_ LPVOID *ppv) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE; + + STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE; + STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE; + + STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex, + _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE; + + STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex, + _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE; + STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex, + _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE; + STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex, + _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE; + + STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE; + + STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name, + _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE; + + STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE; + STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE; + STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE; + STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE; + + STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE; + STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE; + + STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE; + STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE; + + STDMETHOD_(UINT, GetThreadGroupSize)(THIS_ + _Out_opt_ UINT* pSizeX, + _Out_opt_ UINT* pSizeY, + _Out_opt_ UINT* pSizeZ) PURE; + + STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE; +}; + +// {8E349D19-54DB-4A56-9DC9-119D87BDB804} +interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection; +DEFINE_GUID(IID_ID3D12LibraryReflection, +0x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4); + +#undef INTERFACE +#define INTERFACE ID3D12LibraryReflection + +DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE; + + STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE; +}; + +// {1108795C-2772-4BA9-B2A8-D464DC7E2799} +interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection; +DEFINE_GUID(IID_ID3D12FunctionReflection, +0x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99); + +#undef INTERFACE +#define INTERFACE ID3D12FunctionReflection + +DECLARE_INTERFACE(ID3D12FunctionReflection) +{ + STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE; + + STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE; + STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE; + + STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex, + _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE; + + STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE; + + STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name, + _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE; + + // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value. + STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE; +}; + +// {EC25F42D-7006-4F2B-B33E-02CC3375733F} +interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection; +DEFINE_GUID(IID_ID3D12FunctionParameterReflection, +0xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f); + +#undef INTERFACE +#define INTERFACE ID3D12FunctionParameterReflection + +DECLARE_INTERFACE(ID3D12FunctionParameterReflection) +{ + STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE; +}; + + +////////////////////////////////////////////////////////////////////////////// +// APIs ////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif //__D3D12SHADER_H__ + diff --git a/include/dxsdk/d3dcommon.h b/include/dxsdk/d3dcommon.h new file mode 100644 index 00000000..2db8805d --- /dev/null +++ b/include/dxsdk/d3dcommon.h @@ -0,0 +1,1009 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.01.0622 */ +/* @@MIDL_FILE_HEADING( ) */ + + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 500 +#endif + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCSAL_H_VERSION__ +#define __REQUIRED_RPCSAL_H_VERSION__ 100 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif /* __RPCNDR_H_VERSION__ */ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __d3dcommon_h__ +#define __d3dcommon_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __ID3D10Blob_FWD_DEFINED__ +#define __ID3D10Blob_FWD_DEFINED__ +typedef interface ID3D10Blob ID3D10Blob; + +#endif /* __ID3D10Blob_FWD_DEFINED__ */ + + +#ifndef __ID3DDestructionNotifier_FWD_DEFINED__ +#define __ID3DDestructionNotifier_FWD_DEFINED__ +typedef interface ID3DDestructionNotifier ID3DDestructionNotifier; + +#endif /* __ID3DDestructionNotifier_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +/* interface __MIDL_itf_d3dcommon_0000_0000 */ +/* [local] */ + +typedef +enum D3D_DRIVER_TYPE + { + D3D_DRIVER_TYPE_UNKNOWN = 0, + D3D_DRIVER_TYPE_HARDWARE = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) , + D3D_DRIVER_TYPE_REFERENCE = ( D3D_DRIVER_TYPE_HARDWARE + 1 ) , + D3D_DRIVER_TYPE_NULL = ( D3D_DRIVER_TYPE_REFERENCE + 1 ) , + D3D_DRIVER_TYPE_SOFTWARE = ( D3D_DRIVER_TYPE_NULL + 1 ) , + D3D_DRIVER_TYPE_WARP = ( D3D_DRIVER_TYPE_SOFTWARE + 1 ) + } D3D_DRIVER_TYPE; + +typedef +enum D3D_FEATURE_LEVEL + { + D3D_FEATURE_LEVEL_1_0_CORE = 0x1000, + D3D_FEATURE_LEVEL_9_1 = 0x9100, + D3D_FEATURE_LEVEL_9_2 = 0x9200, + D3D_FEATURE_LEVEL_9_3 = 0x9300, + D3D_FEATURE_LEVEL_10_0 = 0xa000, + D3D_FEATURE_LEVEL_10_1 = 0xa100, + D3D_FEATURE_LEVEL_11_0 = 0xb000, + D3D_FEATURE_LEVEL_11_1 = 0xb100, + D3D_FEATURE_LEVEL_12_0 = 0xc000, + D3D_FEATURE_LEVEL_12_1 = 0xc100 + } D3D_FEATURE_LEVEL; + +#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048 +#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096 +#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048 +#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096 +#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512 +#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096 +#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256 +#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2 +#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535 +#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575 +#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1 +#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4 +#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128 +#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048 +#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192 +typedef +enum D3D_PRIMITIVE_TOPOLOGY + { + D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0, + D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1, + D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2, + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3, + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4, + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5, + D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10, + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11, + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12, + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13, + D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33, + D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34, + D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35, + D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36, + D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37, + D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38, + D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39, + D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40, + D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41, + D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42, + D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43, + D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44, + D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45, + D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46, + D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47, + D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48, + D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49, + D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50, + D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51, + D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52, + D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53, + D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54, + D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55, + D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56, + D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57, + D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58, + D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59, + D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60, + D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61, + D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62, + D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63, + D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64, + D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED, + D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST, + D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST, + D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP, + D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST, + D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP, + D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ, + D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ, + D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ, + D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ, + D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED, + D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST, + D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST, + D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP, + D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST, + D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP, + D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ, + D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ, + D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ, + D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ, + D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST, + D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST + } D3D_PRIMITIVE_TOPOLOGY; + +typedef +enum D3D_PRIMITIVE + { + D3D_PRIMITIVE_UNDEFINED = 0, + D3D_PRIMITIVE_POINT = 1, + D3D_PRIMITIVE_LINE = 2, + D3D_PRIMITIVE_TRIANGLE = 3, + D3D_PRIMITIVE_LINE_ADJ = 6, + D3D_PRIMITIVE_TRIANGLE_ADJ = 7, + D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8, + D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9, + D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10, + D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11, + D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12, + D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13, + D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14, + D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15, + D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16, + D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17, + D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18, + D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19, + D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20, + D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21, + D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22, + D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23, + D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24, + D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25, + D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26, + D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27, + D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28, + D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29, + D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30, + D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31, + D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32, + D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33, + D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34, + D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35, + D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36, + D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37, + D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38, + D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39, + D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED, + D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT, + D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE, + D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE, + D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ, + D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ, + D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED, + D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT, + D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE, + D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE, + D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ, + D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ, + D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH, + D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH + } D3D_PRIMITIVE; + +typedef +enum D3D_SRV_DIMENSION + { + D3D_SRV_DIMENSION_UNKNOWN = 0, + D3D_SRV_DIMENSION_BUFFER = 1, + D3D_SRV_DIMENSION_TEXTURE1D = 2, + D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3, + D3D_SRV_DIMENSION_TEXTURE2D = 4, + D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5, + D3D_SRV_DIMENSION_TEXTURE2DMS = 6, + D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7, + D3D_SRV_DIMENSION_TEXTURE3D = 8, + D3D_SRV_DIMENSION_TEXTURECUBE = 9, + D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10, + D3D_SRV_DIMENSION_BUFFEREX = 11, + D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN, + D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER, + D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D, + D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY, + D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D, + D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY, + D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS, + D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY, + D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D, + D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE, + D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN, + D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER, + D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D, + D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY, + D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D, + D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY, + D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS, + D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY, + D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D, + D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE, + D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY, + D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN, + D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER, + D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D, + D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY, + D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D, + D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY, + D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS, + D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY, + D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D, + D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE, + D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY, + D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX + } D3D_SRV_DIMENSION; + +typedef struct _D3D_SHADER_MACRO + { + LPCSTR Name; + LPCSTR Definition; + } D3D_SHADER_MACRO; + +typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO; + +DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2); + + +extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec; + +#ifndef __ID3D10Blob_INTERFACE_DEFINED__ +#define __ID3D10Blob_INTERFACE_DEFINED__ + +/* interface ID3D10Blob */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3D10Blob; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102") + ID3D10Blob : public IUnknown + { + public: + virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0; + + virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3D10BlobVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3D10Blob * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3D10Blob * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3D10Blob * This); + + LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )( + ID3D10Blob * This); + + SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )( + ID3D10Blob * This); + + END_INTERFACE + } ID3D10BlobVtbl; + + interface ID3D10Blob + { + CONST_VTBL struct ID3D10BlobVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3D10Blob_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3D10Blob_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3D10Blob_GetBufferPointer(This) \ + ( (This)->lpVtbl -> GetBufferPointer(This) ) + +#define ID3D10Blob_GetBufferSize(This) \ + ( (This)->lpVtbl -> GetBufferSize(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3dcommon_0000_0001 */ +/* [local] */ + +typedef interface ID3D10Blob* LPD3D10BLOB; +typedef ID3D10Blob ID3DBlob; + +typedef ID3DBlob* LPD3DBLOB; +#define IID_ID3DBlob IID_ID3D10Blob +typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )( + void *pData); + + + +extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec; + +#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__ +#define __ID3DDestructionNotifier_INTERFACE_DEFINED__ + +/* interface ID3DDestructionNotifier */ +/* [unique][local][object][uuid] */ + + +EXTERN_C const IID IID_ID3DDestructionNotifier; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3") + ID3DDestructionNotifier : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback( + /* [annotation] */ + _In_ PFN_DESTRUCTION_CALLBACK callbackFn, + /* [annotation] */ + _In_ void *pData, + /* [annotation] */ + _Out_ UINT *pCallbackID) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback( + /* [annotation] */ + _In_ UINT callbackID) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ID3DDestructionNotifierVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ID3DDestructionNotifier * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ID3DDestructionNotifier * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ID3DDestructionNotifier * This); + + HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )( + ID3DDestructionNotifier * This, + /* [annotation] */ + _In_ PFN_DESTRUCTION_CALLBACK callbackFn, + /* [annotation] */ + _In_ void *pData, + /* [annotation] */ + _Out_ UINT *pCallbackID); + + HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )( + ID3DDestructionNotifier * This, + /* [annotation] */ + _In_ UINT callbackID); + + END_INTERFACE + } ID3DDestructionNotifierVtbl; + + interface ID3DDestructionNotifier + { + CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ID3DDestructionNotifier_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ID3DDestructionNotifier_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \ + ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) ) + +#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \ + ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_d3dcommon_0000_0002 */ +/* [local] */ + +typedef +enum _D3D_INCLUDE_TYPE + { + D3D_INCLUDE_LOCAL = 0, + D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) , + D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL, + D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM, + D3D_INCLUDE_FORCE_DWORD = 0x7fffffff + } D3D_INCLUDE_TYPE; + +typedef interface ID3DInclude ID3DInclude; +#undef INTERFACE +#define INTERFACE ID3DInclude +DECLARE_INTERFACE(ID3DInclude) +{ + STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE; + STDMETHOD(Close)(THIS_ LPCVOID pData) PURE; +}; +typedef ID3DInclude* LPD3DINCLUDE; +typedef +enum _D3D_SHADER_VARIABLE_CLASS + { + D3D_SVC_SCALAR = 0, + D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) , + D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) , + D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) , + D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) , + D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) , + D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) , + D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) , + D3D10_SVC_SCALAR = D3D_SVC_SCALAR, + D3D10_SVC_VECTOR = D3D_SVC_VECTOR, + D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS, + D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS, + D3D10_SVC_OBJECT = D3D_SVC_OBJECT, + D3D10_SVC_STRUCT = D3D_SVC_STRUCT, + D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS, + D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER, + D3D_SVC_FORCE_DWORD = 0x7fffffff + } D3D_SHADER_VARIABLE_CLASS; + +typedef +enum _D3D_SHADER_VARIABLE_FLAGS + { + D3D_SVF_USERPACKED = 1, + D3D_SVF_USED = 2, + D3D_SVF_INTERFACE_POINTER = 4, + D3D_SVF_INTERFACE_PARAMETER = 8, + D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED, + D3D10_SVF_USED = D3D_SVF_USED, + D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER, + D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER, + D3D_SVF_FORCE_DWORD = 0x7fffffff + } D3D_SHADER_VARIABLE_FLAGS; + +typedef +enum _D3D_SHADER_VARIABLE_TYPE + { + D3D_SVT_VOID = 0, + D3D_SVT_BOOL = 1, + D3D_SVT_INT = 2, + D3D_SVT_FLOAT = 3, + D3D_SVT_STRING = 4, + D3D_SVT_TEXTURE = 5, + D3D_SVT_TEXTURE1D = 6, + D3D_SVT_TEXTURE2D = 7, + D3D_SVT_TEXTURE3D = 8, + D3D_SVT_TEXTURECUBE = 9, + D3D_SVT_SAMPLER = 10, + D3D_SVT_SAMPLER1D = 11, + D3D_SVT_SAMPLER2D = 12, + D3D_SVT_SAMPLER3D = 13, + D3D_SVT_SAMPLERCUBE = 14, + D3D_SVT_PIXELSHADER = 15, + D3D_SVT_VERTEXSHADER = 16, + D3D_SVT_PIXELFRAGMENT = 17, + D3D_SVT_VERTEXFRAGMENT = 18, + D3D_SVT_UINT = 19, + D3D_SVT_UINT8 = 20, + D3D_SVT_GEOMETRYSHADER = 21, + D3D_SVT_RASTERIZER = 22, + D3D_SVT_DEPTHSTENCIL = 23, + D3D_SVT_BLEND = 24, + D3D_SVT_BUFFER = 25, + D3D_SVT_CBUFFER = 26, + D3D_SVT_TBUFFER = 27, + D3D_SVT_TEXTURE1DARRAY = 28, + D3D_SVT_TEXTURE2DARRAY = 29, + D3D_SVT_RENDERTARGETVIEW = 30, + D3D_SVT_DEPTHSTENCILVIEW = 31, + D3D_SVT_TEXTURE2DMS = 32, + D3D_SVT_TEXTURE2DMSARRAY = 33, + D3D_SVT_TEXTURECUBEARRAY = 34, + D3D_SVT_HULLSHADER = 35, + D3D_SVT_DOMAINSHADER = 36, + D3D_SVT_INTERFACE_POINTER = 37, + D3D_SVT_COMPUTESHADER = 38, + D3D_SVT_DOUBLE = 39, + D3D_SVT_RWTEXTURE1D = 40, + D3D_SVT_RWTEXTURE1DARRAY = 41, + D3D_SVT_RWTEXTURE2D = 42, + D3D_SVT_RWTEXTURE2DARRAY = 43, + D3D_SVT_RWTEXTURE3D = 44, + D3D_SVT_RWBUFFER = 45, + D3D_SVT_BYTEADDRESS_BUFFER = 46, + D3D_SVT_RWBYTEADDRESS_BUFFER = 47, + D3D_SVT_STRUCTURED_BUFFER = 48, + D3D_SVT_RWSTRUCTURED_BUFFER = 49, + D3D_SVT_APPEND_STRUCTURED_BUFFER = 50, + D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51, + D3D_SVT_MIN8FLOAT = 52, + D3D_SVT_MIN10FLOAT = 53, + D3D_SVT_MIN16FLOAT = 54, + D3D_SVT_MIN12INT = 55, + D3D_SVT_MIN16INT = 56, + D3D_SVT_MIN16UINT = 57, + D3D10_SVT_VOID = D3D_SVT_VOID, + D3D10_SVT_BOOL = D3D_SVT_BOOL, + D3D10_SVT_INT = D3D_SVT_INT, + D3D10_SVT_FLOAT = D3D_SVT_FLOAT, + D3D10_SVT_STRING = D3D_SVT_STRING, + D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE, + D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D, + D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D, + D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D, + D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE, + D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER, + D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D, + D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D, + D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D, + D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE, + D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER, + D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER, + D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT, + D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT, + D3D10_SVT_UINT = D3D_SVT_UINT, + D3D10_SVT_UINT8 = D3D_SVT_UINT8, + D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER, + D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER, + D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL, + D3D10_SVT_BLEND = D3D_SVT_BLEND, + D3D10_SVT_BUFFER = D3D_SVT_BUFFER, + D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER, + D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER, + D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY, + D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY, + D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW, + D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW, + D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS, + D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY, + D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY, + D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER, + D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER, + D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER, + D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER, + D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE, + D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D, + D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY, + D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D, + D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY, + D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D, + D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER, + D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER, + D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER, + D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER, + D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER, + D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER, + D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER, + D3D_SVT_FORCE_DWORD = 0x7fffffff + } D3D_SHADER_VARIABLE_TYPE; + +typedef +enum _D3D_SHADER_INPUT_FLAGS + { + D3D_SIF_USERPACKED = 0x1, + D3D_SIF_COMPARISON_SAMPLER = 0x2, + D3D_SIF_TEXTURE_COMPONENT_0 = 0x4, + D3D_SIF_TEXTURE_COMPONENT_1 = 0x8, + D3D_SIF_TEXTURE_COMPONENTS = 0xc, + D3D_SIF_UNUSED = 0x10, + D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED, + D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER, + D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0, + D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1, + D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS, + D3D_SIF_FORCE_DWORD = 0x7fffffff + } D3D_SHADER_INPUT_FLAGS; + +typedef +enum _D3D_SHADER_INPUT_TYPE + { + D3D_SIT_CBUFFER = 0, + D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) , + D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) , + D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) , + D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) , + D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) , + D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) , + D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) , + D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) , + D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) , + D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) , + D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) , + D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER, + D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER, + D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE, + D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER, + D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED, + D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED, + D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED, + D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS, + D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS, + D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED, + D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED, + D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + } D3D_SHADER_INPUT_TYPE; + +typedef +enum _D3D_SHADER_CBUFFER_FLAGS + { + D3D_CBF_USERPACKED = 1, + D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED, + D3D_CBF_FORCE_DWORD = 0x7fffffff + } D3D_SHADER_CBUFFER_FLAGS; + +typedef +enum _D3D_CBUFFER_TYPE + { + D3D_CT_CBUFFER = 0, + D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) , + D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) , + D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) , + D3D10_CT_CBUFFER = D3D_CT_CBUFFER, + D3D10_CT_TBUFFER = D3D_CT_TBUFFER, + D3D11_CT_CBUFFER = D3D_CT_CBUFFER, + D3D11_CT_TBUFFER = D3D_CT_TBUFFER, + D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS, + D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO + } D3D_CBUFFER_TYPE; + +typedef +enum D3D_NAME + { + D3D_NAME_UNDEFINED = 0, + D3D_NAME_POSITION = 1, + D3D_NAME_CLIP_DISTANCE = 2, + D3D_NAME_CULL_DISTANCE = 3, + D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4, + D3D_NAME_VIEWPORT_ARRAY_INDEX = 5, + D3D_NAME_VERTEX_ID = 6, + D3D_NAME_PRIMITIVE_ID = 7, + D3D_NAME_INSTANCE_ID = 8, + D3D_NAME_IS_FRONT_FACE = 9, + D3D_NAME_SAMPLE_INDEX = 10, + D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11, + D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12, + D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13, + D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14, + D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15, + D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16, + D3D_NAME_BARYCENTRICS = 23, + D3D_NAME_SHADINGRATE = 24, + D3D_NAME_TARGET = 64, + D3D_NAME_DEPTH = 65, + D3D_NAME_COVERAGE = 66, + D3D_NAME_DEPTH_GREATER_EQUAL = 67, + D3D_NAME_DEPTH_LESS_EQUAL = 68, + D3D_NAME_STENCIL_REF = 69, + D3D_NAME_INNER_COVERAGE = 70, + D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED, + D3D10_NAME_POSITION = D3D_NAME_POSITION, + D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE, + D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE, + D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX, + D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX, + D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID, + D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID, + D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID, + D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE, + D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX, + D3D10_NAME_TARGET = D3D_NAME_TARGET, + D3D10_NAME_DEPTH = D3D_NAME_DEPTH, + D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE, + D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR, + D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR, + D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR, + D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR, + D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR, + D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR, + D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL, + D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL, + D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF, + D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE, + D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS, + D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE + } D3D_NAME; + +typedef +enum D3D_RESOURCE_RETURN_TYPE + { + D3D_RETURN_TYPE_UNORM = 1, + D3D_RETURN_TYPE_SNORM = 2, + D3D_RETURN_TYPE_SINT = 3, + D3D_RETURN_TYPE_UINT = 4, + D3D_RETURN_TYPE_FLOAT = 5, + D3D_RETURN_TYPE_MIXED = 6, + D3D_RETURN_TYPE_DOUBLE = 7, + D3D_RETURN_TYPE_CONTINUED = 8, + D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM, + D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM, + D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT, + D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT, + D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT, + D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED, + D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM, + D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM, + D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT, + D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT, + D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT, + D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED, + D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE, + D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED + } D3D_RESOURCE_RETURN_TYPE; + +typedef +enum D3D_REGISTER_COMPONENT_TYPE + { + D3D_REGISTER_COMPONENT_UNKNOWN = 0, + D3D_REGISTER_COMPONENT_UINT32 = 1, + D3D_REGISTER_COMPONENT_SINT32 = 2, + D3D_REGISTER_COMPONENT_FLOAT32 = 3, + D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN, + D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32, + D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32, + D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32 + } D3D_REGISTER_COMPONENT_TYPE; + +typedef +enum D3D_TESSELLATOR_DOMAIN + { + D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0, + D3D_TESSELLATOR_DOMAIN_ISOLINE = 1, + D3D_TESSELLATOR_DOMAIN_TRI = 2, + D3D_TESSELLATOR_DOMAIN_QUAD = 3, + D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED, + D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE, + D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI, + D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD + } D3D_TESSELLATOR_DOMAIN; + +typedef +enum D3D_TESSELLATOR_PARTITIONING + { + D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0, + D3D_TESSELLATOR_PARTITIONING_INTEGER = 1, + D3D_TESSELLATOR_PARTITIONING_POW2 = 2, + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3, + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4, + D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED, + D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER, + D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2, + D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD, + D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN + } D3D_TESSELLATOR_PARTITIONING; + +typedef +enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE + { + D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0, + D3D_TESSELLATOR_OUTPUT_POINT = 1, + D3D_TESSELLATOR_OUTPUT_LINE = 2, + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3, + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4, + D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED, + D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT, + D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE, + D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW, + D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW + } D3D_TESSELLATOR_OUTPUT_PRIMITIVE; + +typedef +enum D3D_MIN_PRECISION + { + D3D_MIN_PRECISION_DEFAULT = 0, + D3D_MIN_PRECISION_FLOAT_16 = 1, + D3D_MIN_PRECISION_FLOAT_2_8 = 2, + D3D_MIN_PRECISION_RESERVED = 3, + D3D_MIN_PRECISION_SINT_16 = 4, + D3D_MIN_PRECISION_UINT_16 = 5, + D3D_MIN_PRECISION_ANY_16 = 0xf0, + D3D_MIN_PRECISION_ANY_10 = 0xf1 + } D3D_MIN_PRECISION; + +typedef +enum D3D_INTERPOLATION_MODE + { + D3D_INTERPOLATION_UNDEFINED = 0, + D3D_INTERPOLATION_CONSTANT = 1, + D3D_INTERPOLATION_LINEAR = 2, + D3D_INTERPOLATION_LINEAR_CENTROID = 3, + D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4, + D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5, + D3D_INTERPOLATION_LINEAR_SAMPLE = 6, + D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7 + } D3D_INTERPOLATION_MODE; + +typedef +enum _D3D_PARAMETER_FLAGS + { + D3D_PF_NONE = 0, + D3D_PF_IN = 0x1, + D3D_PF_OUT = 0x2, + D3D_PF_FORCE_DWORD = 0x7fffffff + } D3D_PARAMETER_FLAGS; + +DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00); +DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41); +DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2); +#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName) +#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName) +#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName) +#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName) +#define D3D_COMPONENT_MASK_X 1 +#define D3D_COMPONENT_MASK_Y 2 +#define D3D_COMPONENT_MASK_Z 4 +#define D3D_COMPONENT_MASK_W 8 +DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c); +DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28); + + +extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/include/dxsdk/d3dcompiler.h b/include/dxsdk/d3dcompiler.h new file mode 100644 index 00000000..58767216 --- /dev/null +++ b/include/dxsdk/d3dcompiler.h @@ -0,0 +1,586 @@ +////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// File: D3DCompiler.h +// Content: D3D Compilation Types and APIs +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef __D3DCOMPILER_H__ +#define __D3DCOMPILER_H__ + +#include + +// Current name of the DLL shipped in the same SDK as this header. + + + +#define D3DCOMPILER_DLL_W L"d3dcompiler_47.dll" +#define D3DCOMPILER_DLL_A "d3dcompiler_47.dll" + +// Current HLSL compiler version. + +#define D3D_COMPILER_VERSION 47 + +#ifdef UNICODE + #define D3DCOMPILER_DLL D3DCOMPILER_DLL_W +#else + #define D3DCOMPILER_DLL D3DCOMPILER_DLL_A +#endif + +#include "d3d11shader.h" +#include "d3d12shader.h" + +////////////////////////////////////////////////////////////////////////////// +// APIs ////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + + +#pragma region Application Family +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) + +//---------------------------------------------------------------------------- +// D3DReadFileToBlob: +// ----------------- +// Simple helper routine to read a file on disk into memory +// for passing to other routines in this API. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DReadFileToBlob(_In_ LPCWSTR pFileName, + _Out_ ID3DBlob** ppContents); + +//---------------------------------------------------------------------------- +// D3DWriteBlobToFile: +// ------------------ +// Simple helper routine to write a memory blob to a file on disk. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DWriteBlobToFile(_In_ ID3DBlob* pBlob, + _In_ LPCWSTR pFileName, + _In_ BOOL bOverwrite); + +//---------------------------------------------------------------------------- +// D3DCOMPILE flags: +// ----------------- +// D3DCOMPILE_DEBUG +// Insert debug file/line/type/symbol information. +// +// D3DCOMPILE_SKIP_VALIDATION +// Do not validate the generated code against known capabilities and +// constraints. This option is only recommended when compiling shaders +// you KNOW will work. (ie. have compiled before without this option.) +// Shaders are always validated by D3D before they are set to the device. +// +// D3DCOMPILE_SKIP_OPTIMIZATION +// Instructs the compiler to skip optimization steps during code generation. +// Unless you are trying to isolate a problem in your code using this option +// is not recommended. +// +// D3DCOMPILE_PACK_MATRIX_ROW_MAJOR +// Unless explicitly specified, matrices will be packed in row-major order +// on input and output from the shader. +// +// D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR +// Unless explicitly specified, matrices will be packed in column-major +// order on input and output from the shader. This is generally more +// efficient, since it allows vector-matrix multiplication to be performed +// using a series of dot-products. +// +// D3DCOMPILE_PARTIAL_PRECISION +// Force all computations in resulting shader to occur at partial precision. +// This may result in faster evaluation of shaders on some hardware. +// +// D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT +// Force compiler to compile against the next highest available software +// target for vertex shaders. This flag also turns optimizations off, +// and debugging on. +// +// D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT +// Force compiler to compile against the next highest available software +// target for pixel shaders. This flag also turns optimizations off, +// and debugging on. +// +// D3DCOMPILE_NO_PRESHADER +// Disables Preshaders. Using this flag will cause the compiler to not +// pull out static expression for evaluation on the host cpu +// +// D3DCOMPILE_AVOID_FLOW_CONTROL +// Hint compiler to avoid flow-control constructs where possible. +// +// D3DCOMPILE_PREFER_FLOW_CONTROL +// Hint compiler to prefer flow-control constructs where possible. +// +// D3DCOMPILE_ENABLE_STRICTNESS +// By default, the HLSL/Effect compilers are not strict on deprecated syntax. +// Specifying this flag enables the strict mode. Deprecated syntax may be +// removed in a future release, and enabling syntax is a good way to make +// sure your shaders comply to the latest spec. +// +// D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY +// This enables older shaders to compile to 4_0 targets. +// +// D3DCOMPILE_DEBUG_NAME_FOR_SOURCE +// This enables a debug name to be generated based on source information. +// It requires D3DCOMPILE_DEBUG to be set, and is exclusive with +// D3DCOMPILE_DEBUG_NAME_FOR_BINARY. +// +// D3DCOMPILE_DEBUG_NAME_FOR_BINARY +// This enables a debug name to be generated based on compiled information. +// It requires D3DCOMPILE_DEBUG to be set, and is exclusive with +// D3DCOMPILE_DEBUG_NAME_FOR_SOURCE. +// +//---------------------------------------------------------------------------- + +#define D3DCOMPILE_DEBUG (1 << 0) +#define D3DCOMPILE_SKIP_VALIDATION (1 << 1) +#define D3DCOMPILE_SKIP_OPTIMIZATION (1 << 2) +#define D3DCOMPILE_PACK_MATRIX_ROW_MAJOR (1 << 3) +#define D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR (1 << 4) +#define D3DCOMPILE_PARTIAL_PRECISION (1 << 5) +#define D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT (1 << 6) +#define D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT (1 << 7) +#define D3DCOMPILE_NO_PRESHADER (1 << 8) +#define D3DCOMPILE_AVOID_FLOW_CONTROL (1 << 9) +#define D3DCOMPILE_PREFER_FLOW_CONTROL (1 << 10) +#define D3DCOMPILE_ENABLE_STRICTNESS (1 << 11) +#define D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY (1 << 12) +#define D3DCOMPILE_IEEE_STRICTNESS (1 << 13) +#define D3DCOMPILE_OPTIMIZATION_LEVEL0 (1 << 14) +#define D3DCOMPILE_OPTIMIZATION_LEVEL1 0 +#define D3DCOMPILE_OPTIMIZATION_LEVEL2 ((1 << 14) | (1 << 15)) +#define D3DCOMPILE_OPTIMIZATION_LEVEL3 (1 << 15) +#define D3DCOMPILE_RESERVED16 (1 << 16) +#define D3DCOMPILE_RESERVED17 (1 << 17) +#define D3DCOMPILE_WARNINGS_ARE_ERRORS (1 << 18) +#define D3DCOMPILE_RESOURCES_MAY_ALIAS (1 << 19) +#define D3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLES (1 << 20) +#define D3DCOMPILE_ALL_RESOURCES_BOUND (1 << 21) +#define D3DCOMPILE_DEBUG_NAME_FOR_SOURCE (1 << 22) +#define D3DCOMPILE_DEBUG_NAME_FOR_BINARY (1 << 23) + +//---------------------------------------------------------------------------- +// D3DCOMPILE_EFFECT flags: +// ------------------------------------- +// These flags are passed in when creating an effect, and affect +// either compilation behavior or runtime effect behavior +// +// D3DCOMPILE_EFFECT_CHILD_EFFECT +// Compile this .fx file to a child effect. Child effects have no +// initializers for any shared values as these are initialied in the +// master effect (pool). +// +// D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS +// By default, performance mode is enabled. Performance mode +// disallows mutable state objects by preventing non-literal +// expressions from appearing in state object definitions. +// Specifying this flag will disable the mode and allow for mutable +// state objects. +// +//---------------------------------------------------------------------------- + +#define D3DCOMPILE_EFFECT_CHILD_EFFECT (1 << 0) +#define D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS (1 << 1) + +//---------------------------------------------------------------------------- +// D3DCOMPILE Flags2: +// ----------------- +// Root signature flags. (passed in Flags2) +#define D3DCOMPILE_FLAGS2_FORCE_ROOT_SIGNATURE_LATEST 0 +#define D3DCOMPILE_FLAGS2_FORCE_ROOT_SIGNATURE_1_0 (1 << 4) +#define D3DCOMPILE_FLAGS2_FORCE_ROOT_SIGNATURE_1_1 (1 << 5) + +//---------------------------------------------------------------------------- +// D3DCompile: +// ---------- +// Compile source text into bytecode appropriate for the given target. +//---------------------------------------------------------------------------- + +// D3D_COMPILE_STANDARD_FILE_INCLUDE can be passed for pInclude in any +// API and indicates that a simple default include handler should be +// used. The include handler will include files relative to the +// current directory and files relative to the directory of the initial source +// file. When used with APIs like D3DCompile pSourceName must be a +// file name and the initial relative directory will be derived from it. +#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1) + +HRESULT WINAPI +D3DCompile(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_opt_ LPCSTR pSourceName, + _In_reads_opt_(_Inexpressible_(pDefines->Name != NULL)) CONST D3D_SHADER_MACRO* pDefines, + _In_opt_ ID3DInclude* pInclude, + _In_opt_ LPCSTR pEntrypoint, + _In_ LPCSTR pTarget, + _In_ UINT Flags1, + _In_ UINT Flags2, + _Out_ ID3DBlob** ppCode, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorMsgs); + +typedef HRESULT (WINAPI *pD3DCompile) + (LPCVOID pSrcData, + SIZE_T SrcDataSize, + LPCSTR pFileName, + CONST D3D_SHADER_MACRO* pDefines, + ID3DInclude* pInclude, + LPCSTR pEntrypoint, + LPCSTR pTarget, + UINT Flags1, + UINT Flags2, + ID3DBlob** ppCode, + ID3DBlob** ppErrorMsgs); + +#define D3DCOMPILE_SECDATA_MERGE_UAV_SLOTS 0x00000001 +#define D3DCOMPILE_SECDATA_PRESERVE_TEMPLATE_SLOTS 0x00000002 +#define D3DCOMPILE_SECDATA_REQUIRE_TEMPLATE_MATCH 0x00000004 + +HRESULT WINAPI +D3DCompile2(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_opt_ LPCSTR pSourceName, + _In_reads_opt_(_Inexpressible_(pDefines->Name != NULL)) CONST D3D_SHADER_MACRO* pDefines, + _In_opt_ ID3DInclude* pInclude, + _In_ LPCSTR pEntrypoint, + _In_ LPCSTR pTarget, + _In_ UINT Flags1, + _In_ UINT Flags2, + _In_ UINT SecondaryDataFlags, + _In_reads_bytes_opt_(SecondaryDataSize) LPCVOID pSecondaryData, + _In_ SIZE_T SecondaryDataSize, + _Out_ ID3DBlob** ppCode, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorMsgs); + +HRESULT WINAPI +D3DCompileFromFile(_In_ LPCWSTR pFileName, + _In_reads_opt_(_Inexpressible_(pDefines->Name != NULL)) CONST D3D_SHADER_MACRO* pDefines, + _In_opt_ ID3DInclude* pInclude, + _In_ LPCSTR pEntrypoint, + _In_ LPCSTR pTarget, + _In_ UINT Flags1, + _In_ UINT Flags2, + _Out_ ID3DBlob** ppCode, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorMsgs); + +//---------------------------------------------------------------------------- +// D3DPreprocess: +// ------------- +// Process source text with the compiler's preprocessor and return +// the resulting text. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DPreprocess(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_opt_ LPCSTR pSourceName, + _In_opt_ CONST D3D_SHADER_MACRO* pDefines, + _In_opt_ ID3DInclude* pInclude, + _Out_ ID3DBlob** ppCodeText, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorMsgs); + +typedef HRESULT (WINAPI *pD3DPreprocess) + (LPCVOID pSrcData, + SIZE_T SrcDataSize, + LPCSTR pFileName, + CONST D3D_SHADER_MACRO* pDefines, + ID3DInclude* pInclude, + ID3DBlob** ppCodeText, + ID3DBlob** ppErrorMsgs); + +//---------------------------------------------------------------------------- +// D3DGetDebugInfo: +// ----------------------- +// Gets shader debug info. Debug info is generated by D3DCompile and is +// embedded in the body of the shader. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DGetDebugInfo(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _Out_ ID3DBlob** ppDebugInfo); + +//---------------------------------------------------------------------------- +// D3DReflect: +// ---------- +// Shader code contains metadata that can be inspected via the +// reflection APIs. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DReflect(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_ REFIID pInterface, + _Out_ void** ppReflector); + +//---------------------------------------------------------------------------- +// D3DReflectLibrary: +// ---------- +// Library code contains metadata that can be inspected via the library +// reflection APIs. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DReflectLibrary(__in_bcount(SrcDataSize) LPCVOID pSrcData, + __in SIZE_T SrcDataSize, + __in REFIID riid, + __out LPVOID * ppReflector); + +//---------------------------------------------------------------------------- +// D3DDisassemble: +// ---------------------- +// Takes a binary shader and returns a buffer containing text assembly. +//---------------------------------------------------------------------------- + +#define D3D_DISASM_ENABLE_COLOR_CODE 0x00000001 +#define D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS 0x00000002 +#define D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING 0x00000004 +#define D3D_DISASM_ENABLE_INSTRUCTION_CYCLE 0x00000008 +#define D3D_DISASM_DISABLE_DEBUG_INFO 0x00000010 +#define D3D_DISASM_ENABLE_INSTRUCTION_OFFSET 0x00000020 +#define D3D_DISASM_INSTRUCTION_ONLY 0x00000040 +#define D3D_DISASM_PRINT_HEX_LITERALS 0x00000080 + +HRESULT WINAPI +D3DDisassemble(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_ UINT Flags, + _In_opt_ LPCSTR szComments, + _Out_ ID3DBlob** ppDisassembly); + +typedef HRESULT (WINAPI *pD3DDisassemble) + (_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_ UINT Flags, + _In_opt_ LPCSTR szComments, + _Out_ ID3DBlob** ppDisassembly); + +HRESULT WINAPI +D3DDisassembleRegion(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_ UINT Flags, + _In_opt_ LPCSTR szComments, + _In_ SIZE_T StartByteOffset, + _In_ SIZE_T NumInsts, + _Out_opt_ SIZE_T* pFinishByteOffset, + _Out_ ID3DBlob** ppDisassembly); + +//---------------------------------------------------------------------------- +// Shader linking and Function Linking Graph (FLG) APIs +//---------------------------------------------------------------------------- +HRESULT WINAPI +D3DCreateLinker(__out interface ID3D11Linker ** ppLinker); + +HRESULT WINAPI +D3DLoadModule(_In_ LPCVOID pSrcData, + _In_ SIZE_T cbSrcDataSize, + _Out_ interface ID3D11Module ** ppModule); + +HRESULT WINAPI +D3DCreateFunctionLinkingGraph(_In_ UINT uFlags, + _Out_ interface ID3D11FunctionLinkingGraph ** ppFunctionLinkingGraph); + +//---------------------------------------------------------------------------- +// D3DGetTraceInstructionOffsets: +// ----------------------- +// Determines byte offsets for instructions within a shader blob. +// This information is useful for going between trace instruction +// indices and byte offsets that are used in debug information. +//---------------------------------------------------------------------------- + +#define D3D_GET_INST_OFFSETS_INCLUDE_NON_EXECUTABLE 0x00000001 + +HRESULT WINAPI +D3DGetTraceInstructionOffsets(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_ UINT Flags, + _In_ SIZE_T StartInstIndex, + _In_ SIZE_T NumInsts, + _Out_writes_to_opt_(NumInsts, min(NumInsts, *pTotalInsts)) SIZE_T* pOffsets, + _Out_opt_ SIZE_T* pTotalInsts); + +//---------------------------------------------------------------------------- +// D3DGetInputSignatureBlob: +// ----------------------- +// Retrieve the input signature from a compilation result. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DGetInputSignatureBlob(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _Out_ ID3DBlob** ppSignatureBlob); + +//---------------------------------------------------------------------------- +// D3DGetOutputSignatureBlob: +// ----------------------- +// Retrieve the output signature from a compilation result. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DGetOutputSignatureBlob(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _Out_ ID3DBlob** ppSignatureBlob); + +//---------------------------------------------------------------------------- +// D3DGetInputAndOutputSignatureBlob: +// ----------------------- +// Retrieve the input and output signatures from a compilation result. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DGetInputAndOutputSignatureBlob(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _Out_ ID3DBlob** ppSignatureBlob); + +//---------------------------------------------------------------------------- +// D3DStripShader: +// ----------------------- +// Removes unwanted blobs from a compilation result +//---------------------------------------------------------------------------- + +typedef enum D3DCOMPILER_STRIP_FLAGS +{ + D3DCOMPILER_STRIP_REFLECTION_DATA = 0x00000001, + D3DCOMPILER_STRIP_DEBUG_INFO = 0x00000002, + D3DCOMPILER_STRIP_TEST_BLOBS = 0x00000004, + D3DCOMPILER_STRIP_PRIVATE_DATA = 0x00000008, + D3DCOMPILER_STRIP_ROOT_SIGNATURE = 0x00000010, + D3DCOMPILER_STRIP_FORCE_DWORD = 0x7fffffff, +} D3DCOMPILER_STRIP_FLAGS; + +HRESULT WINAPI +D3DStripShader(_In_reads_bytes_(BytecodeLength) LPCVOID pShaderBytecode, + _In_ SIZE_T BytecodeLength, + _In_ UINT uStripFlags, + _Out_ ID3DBlob** ppStrippedBlob); + +//---------------------------------------------------------------------------- +// D3DGetBlobPart: +// ----------------------- +// Extracts information from a compilation result. +//---------------------------------------------------------------------------- + +typedef enum D3D_BLOB_PART +{ + D3D_BLOB_INPUT_SIGNATURE_BLOB, + D3D_BLOB_OUTPUT_SIGNATURE_BLOB, + D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB, + D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB, + D3D_BLOB_ALL_SIGNATURE_BLOB, + D3D_BLOB_DEBUG_INFO, + D3D_BLOB_LEGACY_SHADER, + D3D_BLOB_XNA_PREPASS_SHADER, + D3D_BLOB_XNA_SHADER, + D3D_BLOB_PDB, + D3D_BLOB_PRIVATE_DATA, + D3D_BLOB_ROOT_SIGNATURE, + D3D_BLOB_DEBUG_NAME, + + // Test parts are only produced by special compiler versions and so + // are usually not present in shaders. + D3D_BLOB_TEST_ALTERNATE_SHADER = 0x8000, + D3D_BLOB_TEST_COMPILE_DETAILS, + D3D_BLOB_TEST_COMPILE_PERF, + D3D_BLOB_TEST_COMPILE_REPORT, +} D3D_BLOB_PART; + +HRESULT WINAPI +D3DGetBlobPart(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_ D3D_BLOB_PART Part, + _In_ UINT Flags, + _Out_ ID3DBlob** ppPart); + +//---------------------------------------------------------------------------- +// D3DSetBlobPart: +// ----------------------- +// Update information in a compilation result. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DSetBlobPart(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_ D3D_BLOB_PART Part, + _In_ UINT Flags, + _In_reads_bytes_(PartSize) LPCVOID pPart, + _In_ SIZE_T PartSize, + _Out_ ID3DBlob** ppNewShader); + +//---------------------------------------------------------------------------- +// D3DCreateBlob: +// ----------------------- +// Create an ID3DBlob instance. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DCreateBlob(_In_ SIZE_T Size, + _Out_ ID3DBlob** ppBlob); + +//---------------------------------------------------------------------------- +// D3DCompressShaders: +// ----------------------- +// Compresses a set of shaders into a more compact form. +//---------------------------------------------------------------------------- + +typedef struct _D3D_SHADER_DATA +{ + LPCVOID pBytecode; + SIZE_T BytecodeLength; +} D3D_SHADER_DATA; + +#define D3D_COMPRESS_SHADER_KEEP_ALL_PARTS 0x00000001 + +HRESULT WINAPI +D3DCompressShaders(_In_ UINT uNumShaders, + _In_reads_(uNumShaders) D3D_SHADER_DATA* pShaderData, + _In_ UINT uFlags, + _Out_ ID3DBlob** ppCompressedData); + +//---------------------------------------------------------------------------- +// D3DDecompressShaders: +// ----------------------- +// Decompresses one or more shaders from a compressed set. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DDecompressShaders(_In_reads_bytes_(SrcDataSize) LPCVOID pSrcData, + _In_ SIZE_T SrcDataSize, + _In_ UINT uNumShaders, + _In_ UINT uStartIndex, + _In_reads_opt_(uNumShaders) UINT* pIndices, + _In_ UINT uFlags, + _Out_writes_(uNumShaders) ID3DBlob** ppShaders, + _Out_opt_ UINT* pTotalShaders); + +#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */ +#pragma endregion + + +#pragma region Desktop Family +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + +//---------------------------------------------------------------------------- +// D3DDisassemble10Effect: +// ----------------------- +// Takes a D3D10 effect interface and returns a +// buffer containing text assembly. +//---------------------------------------------------------------------------- + +HRESULT WINAPI +D3DDisassemble10Effect(_In_ interface ID3D10Effect *pEffect, + _In_ UINT Flags, + _Out_ ID3DBlob** ppDisassembly); + +#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ +#pragma endregion + + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif // #ifndef __D3DCOMPILER_H__ diff --git a/include/dxsdk/d3dx12.h b/include/dxsdk/d3dx12.h new file mode 100644 index 00000000..3aafbd25 --- /dev/null +++ b/include/dxsdk/d3dx12.h @@ -0,0 +1,3440 @@ +//********************************************************* +// +// Copyright (c) Microsoft. All rights reserved. +// This code is licensed under the MIT License (MIT). +// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF +// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY +// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR +// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. +// +//********************************************************* + +#ifndef __D3DX12_H__ +#define __D3DX12_H__ + +#include "d3d12.h" + +#if defined( __cplusplus ) + +struct CD3DX12_DEFAULT {}; +extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT; + +//------------------------------------------------------------------------------------------------ +inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) +{ + return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width && + l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth; +} + +//------------------------------------------------------------------------------------------------ +inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RECT : public D3D12_RECT +{ + CD3DX12_RECT() = default; + explicit CD3DX12_RECT( const D3D12_RECT& o ) : + D3D12_RECT( o ) + {} + explicit CD3DX12_RECT( + LONG Left, + LONG Top, + LONG Right, + LONG Bottom ) + { + left = Left; + top = Top; + right = Right; + bottom = Bottom; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT +{ + CD3DX12_VIEWPORT() = default; + explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) : + D3D12_VIEWPORT( o ) + {} + explicit CD3DX12_VIEWPORT( + FLOAT topLeftX, + FLOAT topLeftY, + FLOAT width, + FLOAT height, + FLOAT minDepth = D3D12_MIN_DEPTH, + FLOAT maxDepth = D3D12_MAX_DEPTH ) + { + TopLeftX = topLeftX; + TopLeftY = topLeftY; + Width = width; + Height = height; + MinDepth = minDepth; + MaxDepth = maxDepth; + } + explicit CD3DX12_VIEWPORT( + _In_ ID3D12Resource* pResource, + UINT mipSlice = 0, + FLOAT topLeftX = 0.0f, + FLOAT topLeftY = 0.0f, + FLOAT minDepth = D3D12_MIN_DEPTH, + FLOAT maxDepth = D3D12_MAX_DEPTH ) + { + auto Desc = pResource->GetDesc(); + const UINT64 SubresourceWidth = Desc.Width >> mipSlice; + const UINT64 SubresourceHeight = Desc.Height >> mipSlice; + switch (Desc.Dimension) + { + case D3D12_RESOURCE_DIMENSION_BUFFER: + TopLeftX = topLeftX; + TopLeftY = 0.0f; + Width = Desc.Width - topLeftX; + Height = 1.0f; + break; + case D3D12_RESOURCE_DIMENSION_TEXTURE1D: + TopLeftX = topLeftX; + TopLeftY = 0.0f; + Width = (SubresourceWidth ? SubresourceWidth : 1.0f) - topLeftX; + Height = 1.0f; + break; + case D3D12_RESOURCE_DIMENSION_TEXTURE2D: + case D3D12_RESOURCE_DIMENSION_TEXTURE3D: + TopLeftX = topLeftX; + TopLeftY = topLeftY; + Width = (SubresourceWidth ? SubresourceWidth : 1.0f) - topLeftX; + Height = (SubresourceHeight ? SubresourceHeight: 1.0f) - topLeftY; + break; + default: break; + } + + MinDepth = minDepth; + MaxDepth = maxDepth; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_BOX : public D3D12_BOX +{ + CD3DX12_BOX() = default; + explicit CD3DX12_BOX( const D3D12_BOX& o ) : + D3D12_BOX( o ) + {} + explicit CD3DX12_BOX( + LONG Left, + LONG Right ) + { + left = static_cast(Left); + top = 0; + front = 0; + right = static_cast(Right); + bottom = 1; + back = 1; + } + explicit CD3DX12_BOX( + LONG Left, + LONG Top, + LONG Right, + LONG Bottom ) + { + left = static_cast(Left); + top = static_cast(Top); + front = 0; + right = static_cast(Right); + bottom = static_cast(Bottom); + back = 1; + } + explicit CD3DX12_BOX( + LONG Left, + LONG Top, + LONG Front, + LONG Right, + LONG Bottom, + LONG Back ) + { + left = static_cast(Left); + top = static_cast(Top); + front = static_cast(Front); + right = static_cast(Right); + bottom = static_cast(Bottom); + back = static_cast(Back); + } +}; +inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) +{ + return l.left == r.left && l.top == r.top && l.front == r.front && + l.right == r.right && l.bottom == r.bottom && l.back == r.back; +} +inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC +{ + CD3DX12_DEPTH_STENCIL_DESC() = default; + explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) : + D3D12_DEPTH_STENCIL_DESC( o ) + {} + explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) + { + DepthEnable = TRUE; + DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL; + DepthFunc = D3D12_COMPARISON_FUNC_LESS; + StencilEnable = FALSE; + StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK; + StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK; + const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp = + { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS }; + FrontFace = defaultStencilOp; + BackFace = defaultStencilOp; + } + explicit CD3DX12_DEPTH_STENCIL_DESC( + BOOL depthEnable, + D3D12_DEPTH_WRITE_MASK depthWriteMask, + D3D12_COMPARISON_FUNC depthFunc, + BOOL stencilEnable, + UINT8 stencilReadMask, + UINT8 stencilWriteMask, + D3D12_STENCIL_OP frontStencilFailOp, + D3D12_STENCIL_OP frontStencilDepthFailOp, + D3D12_STENCIL_OP frontStencilPassOp, + D3D12_COMPARISON_FUNC frontStencilFunc, + D3D12_STENCIL_OP backStencilFailOp, + D3D12_STENCIL_OP backStencilDepthFailOp, + D3D12_STENCIL_OP backStencilPassOp, + D3D12_COMPARISON_FUNC backStencilFunc ) + { + DepthEnable = depthEnable; + DepthWriteMask = depthWriteMask; + DepthFunc = depthFunc; + StencilEnable = stencilEnable; + StencilReadMask = stencilReadMask; + StencilWriteMask = stencilWriteMask; + FrontFace.StencilFailOp = frontStencilFailOp; + FrontFace.StencilDepthFailOp = frontStencilDepthFailOp; + FrontFace.StencilPassOp = frontStencilPassOp; + FrontFace.StencilFunc = frontStencilFunc; + BackFace.StencilFailOp = backStencilFailOp; + BackFace.StencilDepthFailOp = backStencilDepthFailOp; + BackFace.StencilPassOp = backStencilPassOp; + BackFace.StencilFunc = backStencilFunc; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1 +{ + CD3DX12_DEPTH_STENCIL_DESC1() = default; + explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) : + D3D12_DEPTH_STENCIL_DESC1( o ) + {} + explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) + { + DepthEnable = o.DepthEnable; + DepthWriteMask = o.DepthWriteMask; + DepthFunc = o.DepthFunc; + StencilEnable = o.StencilEnable; + StencilReadMask = o.StencilReadMask; + StencilWriteMask = o.StencilWriteMask; + FrontFace.StencilFailOp = o.FrontFace.StencilFailOp; + FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp; + FrontFace.StencilPassOp = o.FrontFace.StencilPassOp; + FrontFace.StencilFunc = o.FrontFace.StencilFunc; + BackFace.StencilFailOp = o.BackFace.StencilFailOp; + BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp; + BackFace.StencilPassOp = o.BackFace.StencilPassOp; + BackFace.StencilFunc = o.BackFace.StencilFunc; + DepthBoundsTestEnable = FALSE; + } + explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) + { + DepthEnable = TRUE; + DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL; + DepthFunc = D3D12_COMPARISON_FUNC_LESS; + StencilEnable = FALSE; + StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK; + StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK; + const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp = + { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS }; + FrontFace = defaultStencilOp; + BackFace = defaultStencilOp; + DepthBoundsTestEnable = FALSE; + } + explicit CD3DX12_DEPTH_STENCIL_DESC1( + BOOL depthEnable, + D3D12_DEPTH_WRITE_MASK depthWriteMask, + D3D12_COMPARISON_FUNC depthFunc, + BOOL stencilEnable, + UINT8 stencilReadMask, + UINT8 stencilWriteMask, + D3D12_STENCIL_OP frontStencilFailOp, + D3D12_STENCIL_OP frontStencilDepthFailOp, + D3D12_STENCIL_OP frontStencilPassOp, + D3D12_COMPARISON_FUNC frontStencilFunc, + D3D12_STENCIL_OP backStencilFailOp, + D3D12_STENCIL_OP backStencilDepthFailOp, + D3D12_STENCIL_OP backStencilPassOp, + D3D12_COMPARISON_FUNC backStencilFunc, + BOOL depthBoundsTestEnable ) + { + DepthEnable = depthEnable; + DepthWriteMask = depthWriteMask; + DepthFunc = depthFunc; + StencilEnable = stencilEnable; + StencilReadMask = stencilReadMask; + StencilWriteMask = stencilWriteMask; + FrontFace.StencilFailOp = frontStencilFailOp; + FrontFace.StencilDepthFailOp = frontStencilDepthFailOp; + FrontFace.StencilPassOp = frontStencilPassOp; + FrontFace.StencilFunc = frontStencilFunc; + BackFace.StencilFailOp = backStencilFailOp; + BackFace.StencilDepthFailOp = backStencilDepthFailOp; + BackFace.StencilPassOp = backStencilPassOp; + BackFace.StencilFunc = backStencilFunc; + DepthBoundsTestEnable = depthBoundsTestEnable; + } + operator D3D12_DEPTH_STENCIL_DESC() const + { + D3D12_DEPTH_STENCIL_DESC D; + D.DepthEnable = DepthEnable; + D.DepthWriteMask = DepthWriteMask; + D.DepthFunc = DepthFunc; + D.StencilEnable = StencilEnable; + D.StencilReadMask = StencilReadMask; + D.StencilWriteMask = StencilWriteMask; + D.FrontFace.StencilFailOp = FrontFace.StencilFailOp; + D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp; + D.FrontFace.StencilPassOp = FrontFace.StencilPassOp; + D.FrontFace.StencilFunc = FrontFace.StencilFunc; + D.BackFace.StencilFailOp = BackFace.StencilFailOp; + D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp; + D.BackFace.StencilPassOp = BackFace.StencilPassOp; + D.BackFace.StencilFunc = BackFace.StencilFunc; + return D; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC +{ + CD3DX12_BLEND_DESC() = default; + explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) : + D3D12_BLEND_DESC( o ) + {} + explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) + { + AlphaToCoverageEnable = FALSE; + IndependentBlendEnable = FALSE; + const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc = + { + FALSE,FALSE, + D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD, + D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD, + D3D12_LOGIC_OP_NOOP, + D3D12_COLOR_WRITE_ENABLE_ALL, + }; + for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i) + RenderTarget[ i ] = defaultRenderTargetBlendDesc; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC +{ + CD3DX12_RASTERIZER_DESC() = default; + explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) : + D3D12_RASTERIZER_DESC( o ) + {} + explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) + { + FillMode = D3D12_FILL_MODE_SOLID; + CullMode = D3D12_CULL_MODE_BACK; + FrontCounterClockwise = FALSE; + DepthBias = D3D12_DEFAULT_DEPTH_BIAS; + DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP; + SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS; + DepthClipEnable = TRUE; + MultisampleEnable = FALSE; + AntialiasedLineEnable = FALSE; + ForcedSampleCount = 0; + ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF; + } + explicit CD3DX12_RASTERIZER_DESC( + D3D12_FILL_MODE fillMode, + D3D12_CULL_MODE cullMode, + BOOL frontCounterClockwise, + INT depthBias, + FLOAT depthBiasClamp, + FLOAT slopeScaledDepthBias, + BOOL depthClipEnable, + BOOL multisampleEnable, + BOOL antialiasedLineEnable, + UINT forcedSampleCount, + D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) + { + FillMode = fillMode; + CullMode = cullMode; + FrontCounterClockwise = frontCounterClockwise; + DepthBias = depthBias; + DepthBiasClamp = depthBiasClamp; + SlopeScaledDepthBias = slopeScaledDepthBias; + DepthClipEnable = depthClipEnable; + MultisampleEnable = multisampleEnable; + AntialiasedLineEnable = antialiasedLineEnable; + ForcedSampleCount = forcedSampleCount; + ConservativeRaster = conservativeRaster; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO +{ + CD3DX12_RESOURCE_ALLOCATION_INFO() = default; + explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) : + D3D12_RESOURCE_ALLOCATION_INFO( o ) + {} + CD3DX12_RESOURCE_ALLOCATION_INFO( + UINT64 size, + UINT64 alignment ) + { + SizeInBytes = size; + Alignment = alignment; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES +{ + CD3DX12_HEAP_PROPERTIES() = default; + explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) : + D3D12_HEAP_PROPERTIES(o) + {} + CD3DX12_HEAP_PROPERTIES( + D3D12_CPU_PAGE_PROPERTY cpuPageProperty, + D3D12_MEMORY_POOL memoryPoolPreference, + UINT creationNodeMask = 1, + UINT nodeMask = 1 ) + { + Type = D3D12_HEAP_TYPE_CUSTOM; + CPUPageProperty = cpuPageProperty; + MemoryPoolPreference = memoryPoolPreference; + CreationNodeMask = creationNodeMask; + VisibleNodeMask = nodeMask; + } + explicit CD3DX12_HEAP_PROPERTIES( + D3D12_HEAP_TYPE type, + UINT creationNodeMask = 1, + UINT nodeMask = 1 ) + { + Type = type; + CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + CreationNodeMask = creationNodeMask; + VisibleNodeMask = nodeMask; + } + bool IsCPUAccessible() const + { + return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK || (Type == D3D12_HEAP_TYPE_CUSTOM && + (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK)); + } +}; +inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) +{ + return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty && + l.MemoryPoolPreference == r.MemoryPoolPreference && + l.CreationNodeMask == r.CreationNodeMask && + l.VisibleNodeMask == r.VisibleNodeMask; +} +inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC +{ + CD3DX12_HEAP_DESC() = default; + explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) : + D3D12_HEAP_DESC(o) + {} + CD3DX12_HEAP_DESC( + UINT64 size, + D3D12_HEAP_PROPERTIES properties, + UINT64 alignment = 0, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = size; + Properties = properties; + Alignment = alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + UINT64 size, + D3D12_HEAP_TYPE type, + UINT64 alignment = 0, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = size; + Properties = CD3DX12_HEAP_PROPERTIES( type ); + Alignment = alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + UINT64 size, + D3D12_CPU_PAGE_PROPERTY cpuPageProperty, + D3D12_MEMORY_POOL memoryPoolPreference, + UINT64 alignment = 0, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = size; + Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference ); + Alignment = alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo, + D3D12_HEAP_PROPERTIES properties, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = resAllocInfo.SizeInBytes; + Properties = properties; + Alignment = resAllocInfo.Alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo, + D3D12_HEAP_TYPE type, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = resAllocInfo.SizeInBytes; + Properties = CD3DX12_HEAP_PROPERTIES( type ); + Alignment = resAllocInfo.Alignment; + Flags = flags; + } + CD3DX12_HEAP_DESC( + const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo, + D3D12_CPU_PAGE_PROPERTY cpuPageProperty, + D3D12_MEMORY_POOL memoryPoolPreference, + D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) + { + SizeInBytes = resAllocInfo.SizeInBytes; + Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference ); + Alignment = resAllocInfo.Alignment; + Flags = flags; + } + bool IsCPUAccessible() const + { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); } +}; +inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) +{ + return l.SizeInBytes == r.SizeInBytes && + l.Properties == r.Properties && + l.Alignment == r.Alignment && + l.Flags == r.Flags; +} +inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE +{ + CD3DX12_CLEAR_VALUE() = default; + explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) : + D3D12_CLEAR_VALUE(o) + {} + CD3DX12_CLEAR_VALUE( + DXGI_FORMAT format, + const FLOAT color[4] ) + { + Format = format; + memcpy( Color, color, sizeof( Color ) ); + } + CD3DX12_CLEAR_VALUE( + DXGI_FORMAT format, + FLOAT depth, + UINT8 stencil ) + { + Format = format; + memset( &Color, 0, sizeof( Color ) ); + /* Use memcpy to preserve NAN values */ + memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) ); + DepthStencil.Stencil = stencil; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RANGE : public D3D12_RANGE +{ + CD3DX12_RANGE() = default; + explicit CD3DX12_RANGE(const D3D12_RANGE &o) : + D3D12_RANGE(o) + {} + CD3DX12_RANGE( + SIZE_T begin, + SIZE_T end ) + { + Begin = begin; + End = end; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64 +{ + CD3DX12_RANGE_UINT64() = default; + explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) : + D3D12_RANGE_UINT64(o) + {} + CD3DX12_RANGE_UINT64( + UINT64 begin, + UINT64 end ) + { + Begin = begin; + End = end; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64 +{ + CD3DX12_SUBRESOURCE_RANGE_UINT64() = default; + explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) : + D3D12_SUBRESOURCE_RANGE_UINT64(o) + {} + CD3DX12_SUBRESOURCE_RANGE_UINT64( + UINT subresource, + const D3D12_RANGE_UINT64& range ) + { + Subresource = subresource; + Range = range; + } + CD3DX12_SUBRESOURCE_RANGE_UINT64( + UINT subresource, + UINT64 begin, + UINT64 end ) + { + Subresource = subresource; + Range.Begin = begin; + Range.End = end; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE +{ + CD3DX12_SHADER_BYTECODE() = default; + explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) : + D3D12_SHADER_BYTECODE(o) + {} + CD3DX12_SHADER_BYTECODE( + _In_ ID3DBlob* pShaderBlob ) + { + pShaderBytecode = pShaderBlob->GetBufferPointer(); + BytecodeLength = pShaderBlob->GetBufferSize(); + } + CD3DX12_SHADER_BYTECODE( + const void* _pShaderBytecode, + SIZE_T bytecodeLength ) + { + pShaderBytecode = _pShaderBytecode; + BytecodeLength = bytecodeLength; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE +{ + CD3DX12_TILED_RESOURCE_COORDINATE() = default; + explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) : + D3D12_TILED_RESOURCE_COORDINATE(o) + {} + CD3DX12_TILED_RESOURCE_COORDINATE( + UINT x, + UINT y, + UINT z, + UINT subresource ) + { + X = x; + Y = y; + Z = z; + Subresource = subresource; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE +{ + CD3DX12_TILE_REGION_SIZE() = default; + explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) : + D3D12_TILE_REGION_SIZE(o) + {} + CD3DX12_TILE_REGION_SIZE( + UINT numTiles, + BOOL useBox, + UINT width, + UINT16 height, + UINT16 depth ) + { + NumTiles = numTiles; + UseBox = useBox; + Width = width; + Height = height; + Depth = depth; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING +{ + CD3DX12_SUBRESOURCE_TILING() = default; + explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) : + D3D12_SUBRESOURCE_TILING(o) + {} + CD3DX12_SUBRESOURCE_TILING( + UINT widthInTiles, + UINT16 heightInTiles, + UINT16 depthInTiles, + UINT startTileIndexInOverallResource ) + { + WidthInTiles = widthInTiles; + HeightInTiles = heightInTiles; + DepthInTiles = depthInTiles; + StartTileIndexInOverallResource = startTileIndexInOverallResource; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE +{ + CD3DX12_TILE_SHAPE() = default; + explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) : + D3D12_TILE_SHAPE(o) + {} + CD3DX12_TILE_SHAPE( + UINT widthInTexels, + UINT heightInTexels, + UINT depthInTexels ) + { + WidthInTexels = widthInTexels; + HeightInTexels = heightInTexels; + DepthInTexels = depthInTexels; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER +{ + CD3DX12_RESOURCE_BARRIER() = default; + explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) : + D3D12_RESOURCE_BARRIER(o) + {} + static inline CD3DX12_RESOURCE_BARRIER Transition( + _In_ ID3D12Resource* pResource, + D3D12_RESOURCE_STATES stateBefore, + D3D12_RESOURCE_STATES stateAfter, + UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES, + D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) + { + CD3DX12_RESOURCE_BARRIER result = {}; + D3D12_RESOURCE_BARRIER &barrier = result; + result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + result.Flags = flags; + barrier.Transition.pResource = pResource; + barrier.Transition.StateBefore = stateBefore; + barrier.Transition.StateAfter = stateAfter; + barrier.Transition.Subresource = subresource; + return result; + } + static inline CD3DX12_RESOURCE_BARRIER Aliasing( + _In_ ID3D12Resource* pResourceBefore, + _In_ ID3D12Resource* pResourceAfter) + { + CD3DX12_RESOURCE_BARRIER result = {}; + D3D12_RESOURCE_BARRIER &barrier = result; + result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING; + barrier.Aliasing.pResourceBefore = pResourceBefore; + barrier.Aliasing.pResourceAfter = pResourceAfter; + return result; + } + static inline CD3DX12_RESOURCE_BARRIER UAV( + _In_ ID3D12Resource* pResource) + { + CD3DX12_RESOURCE_BARRIER result = {}; + D3D12_RESOURCE_BARRIER &barrier = result; + result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV; + barrier.UAV.pResource = pResource; + return result; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO +{ + CD3DX12_PACKED_MIP_INFO() = default; + explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) : + D3D12_PACKED_MIP_INFO(o) + {} + CD3DX12_PACKED_MIP_INFO( + UINT8 numStandardMips, + UINT8 numPackedMips, + UINT numTilesForPackedMips, + UINT startTileIndexInOverallResource ) + { + NumStandardMips = numStandardMips; + NumPackedMips = numPackedMips; + NumTilesForPackedMips = numTilesForPackedMips; + StartTileIndexInOverallResource = startTileIndexInOverallResource; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT +{ + CD3DX12_SUBRESOURCE_FOOTPRINT() = default; + explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) : + D3D12_SUBRESOURCE_FOOTPRINT(o) + {} + CD3DX12_SUBRESOURCE_FOOTPRINT( + DXGI_FORMAT format, + UINT width, + UINT height, + UINT depth, + UINT rowPitch ) + { + Format = format; + Width = width; + Height = height; + Depth = depth; + RowPitch = rowPitch; + } + explicit CD3DX12_SUBRESOURCE_FOOTPRINT( + const D3D12_RESOURCE_DESC& resDesc, + UINT rowPitch ) + { + Format = resDesc.Format; + Width = UINT( resDesc.Width ); + Height = resDesc.Height; + Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1); + RowPitch = rowPitch; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION +{ + CD3DX12_TEXTURE_COPY_LOCATION() = default; + explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) : + D3D12_TEXTURE_COPY_LOCATION(o) + {} + CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) + { + pResource = pRes; + Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX; + PlacedFootprint = {}; + } + CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) + { + pResource = pRes; + Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT; + PlacedFootprint = Footprint; + } + CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) + { + pResource = pRes; + Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX; + PlacedFootprint = {}; + SubresourceIndex = Sub; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE +{ + CD3DX12_DESCRIPTOR_RANGE() = default; + explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) : + D3D12_DESCRIPTOR_RANGE(o) + {} + CD3DX12_DESCRIPTOR_RANGE( + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart); + } + + inline void Init( + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart); + } + + static inline void Init( + _Out_ D3D12_DESCRIPTOR_RANGE &range, + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + range.RangeType = rangeType; + range.NumDescriptors = numDescriptors; + range.BaseShaderRegister = baseShaderRegister; + range.RegisterSpace = registerSpace; + range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE +{ + CD3DX12_ROOT_DESCRIPTOR_TABLE() = default; + explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) : + D3D12_ROOT_DESCRIPTOR_TABLE(o) + {} + CD3DX12_ROOT_DESCRIPTOR_TABLE( + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) + { + Init(numDescriptorRanges, _pDescriptorRanges); + } + + inline void Init( + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) + { + Init(*this, numDescriptorRanges, _pDescriptorRanges); + } + + static inline void Init( + _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable, + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) + { + rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges; + rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS +{ + CD3DX12_ROOT_CONSTANTS() = default; + explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) : + D3D12_ROOT_CONSTANTS(o) + {} + CD3DX12_ROOT_CONSTANTS( + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0) + { + Init(num32BitValues, shaderRegister, registerSpace); + } + + inline void Init( + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0) + { + Init(*this, num32BitValues, shaderRegister, registerSpace); + } + + static inline void Init( + _Out_ D3D12_ROOT_CONSTANTS &rootConstants, + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0) + { + rootConstants.Num32BitValues = num32BitValues; + rootConstants.ShaderRegister = shaderRegister; + rootConstants.RegisterSpace = registerSpace; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR +{ + CD3DX12_ROOT_DESCRIPTOR() = default; + explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) : + D3D12_ROOT_DESCRIPTOR(o) + {} + CD3DX12_ROOT_DESCRIPTOR( + UINT shaderRegister, + UINT registerSpace = 0) + { + Init(shaderRegister, registerSpace); + } + + inline void Init( + UINT shaderRegister, + UINT registerSpace = 0) + { + Init(*this, shaderRegister, registerSpace); + } + + static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) + { + table.ShaderRegister = shaderRegister; + table.RegisterSpace = registerSpace; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER +{ + CD3DX12_ROOT_PARAMETER() = default; + explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) : + D3D12_ROOT_PARAMETER(o) + {} + + static inline void InitAsDescriptorTable( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT numDescriptorRanges, + _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges); + } + + static inline void InitAsConstants( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace); + } + + static inline void InitAsConstantBufferView( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace); + } + + static inline void InitAsShaderResourceView( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace); + } + + static inline void InitAsUnorderedAccessView( + _Out_ D3D12_ROOT_PARAMETER &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace); + } + + inline void InitAsDescriptorTable( + UINT numDescriptorRanges, + _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility); + } + + inline void InitAsConstants( + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility); + } + + inline void InitAsConstantBufferView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility); + } + + inline void InitAsShaderResourceView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility); + } + + inline void InitAsUnorderedAccessView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility); + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC +{ + CD3DX12_STATIC_SAMPLER_DESC() = default; + explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) : + D3D12_STATIC_SAMPLER_DESC(o) + {} + CD3DX12_STATIC_SAMPLER_DESC( + UINT shaderRegister, + D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC, + D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + FLOAT mipLODBias = 0, + UINT maxAnisotropy = 16, + D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL, + D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, + FLOAT minLOD = 0.f, + FLOAT maxLOD = D3D12_FLOAT32_MAX, + D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL, + UINT registerSpace = 0) + { + Init( + shaderRegister, + filter, + addressU, + addressV, + addressW, + mipLODBias, + maxAnisotropy, + comparisonFunc, + borderColor, + minLOD, + maxLOD, + shaderVisibility, + registerSpace); + } + + static inline void Init( + _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc, + UINT shaderRegister, + D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC, + D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + FLOAT mipLODBias = 0, + UINT maxAnisotropy = 16, + D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL, + D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, + FLOAT minLOD = 0.f, + FLOAT maxLOD = D3D12_FLOAT32_MAX, + D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL, + UINT registerSpace = 0) + { + samplerDesc.ShaderRegister = shaderRegister; + samplerDesc.Filter = filter; + samplerDesc.AddressU = addressU; + samplerDesc.AddressV = addressV; + samplerDesc.AddressW = addressW; + samplerDesc.MipLODBias = mipLODBias; + samplerDesc.MaxAnisotropy = maxAnisotropy; + samplerDesc.ComparisonFunc = comparisonFunc; + samplerDesc.BorderColor = borderColor; + samplerDesc.MinLOD = minLOD; + samplerDesc.MaxLOD = maxLOD; + samplerDesc.ShaderVisibility = shaderVisibility; + samplerDesc.RegisterSpace = registerSpace; + } + inline void Init( + UINT shaderRegister, + D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC, + D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + FLOAT mipLODBias = 0, + UINT maxAnisotropy = 16, + D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL, + D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, + FLOAT minLOD = 0.f, + FLOAT maxLOD = D3D12_FLOAT32_MAX, + D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL, + UINT registerSpace = 0) + { + Init( + *this, + shaderRegister, + filter, + addressU, + addressV, + addressW, + mipLODBias, + maxAnisotropy, + comparisonFunc, + borderColor, + minLOD, + maxLOD, + shaderVisibility, + registerSpace); + } + +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC +{ + CD3DX12_ROOT_SIGNATURE_DESC() = default; + explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) : + D3D12_ROOT_SIGNATURE_DESC(o) + {} + CD3DX12_ROOT_SIGNATURE_DESC( + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags); + } + CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) + { + Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE); + } + + inline void Init( + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags); + } + + static inline void Init( + _Out_ D3D12_ROOT_SIGNATURE_DESC &desc, + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + desc.NumParameters = numParameters; + desc.pParameters = _pParameters; + desc.NumStaticSamplers = numStaticSamplers; + desc.pStaticSamplers = _pStaticSamplers; + desc.Flags = flags; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1 +{ + CD3DX12_DESCRIPTOR_RANGE1() = default; + explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) : + D3D12_DESCRIPTOR_RANGE1(o) + {} + CD3DX12_DESCRIPTOR_RANGE1( + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart); + } + + inline void Init( + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart); + } + + static inline void Init( + _Out_ D3D12_DESCRIPTOR_RANGE1 &range, + D3D12_DESCRIPTOR_RANGE_TYPE rangeType, + UINT numDescriptors, + UINT baseShaderRegister, + UINT registerSpace = 0, + D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE, + UINT offsetInDescriptorsFromTableStart = + D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) + { + range.RangeType = rangeType; + range.NumDescriptors = numDescriptors; + range.BaseShaderRegister = baseShaderRegister; + range.RegisterSpace = registerSpace; + range.Flags = flags; + range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1 +{ + CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default; + explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) : + D3D12_ROOT_DESCRIPTOR_TABLE1(o) + {} + CD3DX12_ROOT_DESCRIPTOR_TABLE1( + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) + { + Init(numDescriptorRanges, _pDescriptorRanges); + } + + inline void Init( + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) + { + Init(*this, numDescriptorRanges, _pDescriptorRanges); + } + + static inline void Init( + _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable, + UINT numDescriptorRanges, + _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) + { + rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges; + rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1 +{ + CD3DX12_ROOT_DESCRIPTOR1() = default; + explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) : + D3D12_ROOT_DESCRIPTOR1(o) + {} + CD3DX12_ROOT_DESCRIPTOR1( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) + { + Init(shaderRegister, registerSpace, flags); + } + + inline void Init( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) + { + Init(*this, shaderRegister, registerSpace, flags); + } + + static inline void Init( + _Out_ D3D12_ROOT_DESCRIPTOR1 &table, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) + { + table.ShaderRegister = shaderRegister; + table.RegisterSpace = registerSpace; + table.Flags = flags; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1 +{ + CD3DX12_ROOT_PARAMETER1() = default; + explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) : + D3D12_ROOT_PARAMETER1(o) + {} + + static inline void InitAsDescriptorTable( + _Out_ D3D12_ROOT_PARAMETER1 &rootParam, + UINT numDescriptorRanges, + _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges); + } + + static inline void InitAsConstants( + _Out_ D3D12_ROOT_PARAMETER1 &rootParam, + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace); + } + + static inline void InitAsConstantBufferView( + _Out_ D3D12_ROOT_PARAMETER1 &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags); + } + + static inline void InitAsShaderResourceView( + _Out_ D3D12_ROOT_PARAMETER1 &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags); + } + + static inline void InitAsUnorderedAccessView( + _Out_ D3D12_ROOT_PARAMETER1 &rootParam, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV; + rootParam.ShaderVisibility = visibility; + CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags); + } + + inline void InitAsDescriptorTable( + UINT numDescriptorRanges, + _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility); + } + + inline void InitAsConstants( + UINT num32BitValues, + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility); + } + + inline void InitAsConstantBufferView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility); + } + + inline void InitAsShaderResourceView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility); + } + + inline void InitAsUnorderedAccessView( + UINT shaderRegister, + UINT registerSpace = 0, + D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE, + D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) + { + InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility); + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC +{ + CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default; + explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) : + D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o) + {} + explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) + { + Version = D3D_ROOT_SIGNATURE_VERSION_1_0; + Desc_1_0 = o; + } + explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) + { + Version = D3D_ROOT_SIGNATURE_VERSION_1_1; + Desc_1_1 = o; + } + CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC( + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags); + } + CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC( + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags); + } + CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) + { + Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE); + } + + inline void Init_1_0( + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags); + } + + static inline void Init_1_0( + _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc, + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0; + desc.Desc_1_0.NumParameters = numParameters; + desc.Desc_1_0.pParameters = _pParameters; + desc.Desc_1_0.NumStaticSamplers = numStaticSamplers; + desc.Desc_1_0.pStaticSamplers = _pStaticSamplers; + desc.Desc_1_0.Flags = flags; + } + + inline void Init_1_1( + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags); + } + + static inline void Init_1_1( + _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc, + UINT numParameters, + _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters, + UINT numStaticSamplers = 0, + _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr, + D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) + { + desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1; + desc.Desc_1_1.NumParameters = numParameters; + desc.Desc_1_1.pParameters = _pParameters; + desc.Desc_1_1.NumStaticSamplers = numStaticSamplers; + desc.Desc_1_1.pStaticSamplers = _pStaticSamplers; + desc.Desc_1_1.Flags = flags; + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE +{ + CD3DX12_CPU_DESCRIPTOR_HANDLE() = default; + explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) : + D3D12_CPU_DESCRIPTOR_HANDLE(o) + {} + CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) { ptr = 0; } + CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) + { + InitOffsetted(other, offsetScaledByIncrementSize); + } + CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize); + } + CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) + { + ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize)); + return *this; + } + CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) + { + ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize)); + return *this; + } + bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const + { + return (ptr == other.ptr); + } + bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const + { + return (ptr != other.ptr); + } + CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) + { + ptr = other.ptr; + return *this; + } + + inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) + { + InitOffsetted(*this, base, offsetScaledByIncrementSize); + } + + inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize); + } + + static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) + { + handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize)); + } + + static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize)); + } +}; + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE +{ + CD3DX12_GPU_DESCRIPTOR_HANDLE() = default; + explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) : + D3D12_GPU_DESCRIPTOR_HANDLE(o) + {} + CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) { ptr = 0; } + CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) + { + InitOffsetted(other, offsetScaledByIncrementSize); + } + CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize); + } + CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) + { + ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize)); + return *this; + } + CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) + { + ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize)); + return *this; + } + inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const + { + return (ptr == other.ptr); + } + inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const + { + return (ptr != other.ptr); + } + CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) + { + ptr = other.ptr; + return *this; + } + + inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) + { + InitOffsetted(*this, base, offsetScaledByIncrementSize); + } + + inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize); + } + + static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) + { + handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize)); + } + + static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) + { + handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize)); + } +}; + +//------------------------------------------------------------------------------------------------ +inline UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) +{ + return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize; +} + +//------------------------------------------------------------------------------------------------ +template +inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) +{ + MipSlice = static_cast(Subresource % MipLevels); + ArraySlice = static_cast((Subresource / MipLevels) % ArraySize); + PlaneSlice = static_cast(Subresource / (MipLevels * ArraySize)); +} + +//------------------------------------------------------------------------------------------------ +inline UINT8 D3D12GetFormatPlaneCount( + _In_ ID3D12Device* pDevice, + DXGI_FORMAT Format + ) +{ + D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 }; + if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo)))) + { + return 0; + } + return formatInfo.PlaneCount; +} + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC +{ + CD3DX12_RESOURCE_DESC() = default; + explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) : + D3D12_RESOURCE_DESC( o ) + {} + CD3DX12_RESOURCE_DESC( + D3D12_RESOURCE_DIMENSION dimension, + UINT64 alignment, + UINT64 width, + UINT height, + UINT16 depthOrArraySize, + UINT16 mipLevels, + DXGI_FORMAT format, + UINT sampleCount, + UINT sampleQuality, + D3D12_TEXTURE_LAYOUT layout, + D3D12_RESOURCE_FLAGS flags ) + { + Dimension = dimension; + Alignment = alignment; + Width = width; + Height = height; + DepthOrArraySize = depthOrArraySize; + MipLevels = mipLevels; + Format = format; + SampleDesc.Count = sampleCount; + SampleDesc.Quality = sampleQuality; + Layout = layout; + Flags = flags; + } + static inline CD3DX12_RESOURCE_DESC Buffer( + const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes, + 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags ); + } + static inline CD3DX12_RESOURCE_DESC Buffer( + UINT64 width, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE, + UINT64 alignment = 0 ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1, + DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags ); + } + static inline CD3DX12_RESOURCE_DESC Tex1D( + DXGI_FORMAT format, + UINT64 width, + UINT16 arraySize = 1, + UINT16 mipLevels = 0, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE, + D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN, + UINT64 alignment = 0 ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize, + mipLevels, format, 1, 0, layout, flags ); + } + static inline CD3DX12_RESOURCE_DESC Tex2D( + DXGI_FORMAT format, + UINT64 width, + UINT height, + UINT16 arraySize = 1, + UINT16 mipLevels = 0, + UINT sampleCount = 1, + UINT sampleQuality = 0, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE, + D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN, + UINT64 alignment = 0 ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize, + mipLevels, format, sampleCount, sampleQuality, layout, flags ); + } + static inline CD3DX12_RESOURCE_DESC Tex3D( + DXGI_FORMAT format, + UINT64 width, + UINT height, + UINT16 depth, + UINT16 mipLevels = 0, + D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE, + D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN, + UINT64 alignment = 0 ) + { + return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth, + mipLevels, format, 1, 0, layout, flags ); + } + inline UINT16 Depth() const + { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); } + inline UINT16 ArraySize() const + { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); } + inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const + { return D3D12GetFormatPlaneCount(pDevice, Format); } + inline UINT Subresources(_In_ ID3D12Device* pDevice) const + { return MipLevels * ArraySize() * PlaneCount(pDevice); } + inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) + { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); } +}; +inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) +{ + return l.Dimension == r.Dimension && + l.Alignment == r.Alignment && + l.Width == r.Width && + l.Height == r.Height && + l.DepthOrArraySize == r.DepthOrArraySize && + l.MipLevels == r.MipLevels && + l.Format == r.Format && + l.SampleDesc.Count == r.SampleDesc.Count && + l.SampleDesc.Quality == r.SampleDesc.Quality && + l.Layout == r.Layout && + l.Flags == r.Flags; +} +inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) +{ return !( l == r ); } + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC +{ + CD3DX12_VIEW_INSTANCING_DESC() = default; + explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) : + D3D12_VIEW_INSTANCING_DESC( o ) + {} + explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) + { + ViewInstanceCount = 0; + pViewInstanceLocations = nullptr; + Flags = D3D12_VIEW_INSTANCING_FLAG_NONE; + } + explicit CD3DX12_VIEW_INSTANCING_DESC( + UINT InViewInstanceCount, + const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations, + D3D12_VIEW_INSTANCING_FLAGS InFlags) + { + ViewInstanceCount = InViewInstanceCount; + pViewInstanceLocations = InViewInstanceLocations; + Flags = InFlags; + } +}; + +//------------------------------------------------------------------------------------------------ +// Row-by-row memcpy +inline void MemcpySubresource( + _In_ const D3D12_MEMCPY_DEST* pDest, + _In_ const D3D12_SUBRESOURCE_DATA* pSrc, + SIZE_T RowSizeInBytes, + UINT NumRows, + UINT NumSlices) +{ + for (UINT z = 0; z < NumSlices; ++z) + { + auto pDestSlice = reinterpret_cast(pDest->pData) + pDest->SlicePitch * z; + auto pSrcSlice = reinterpret_cast(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z); + for (UINT y = 0; y < NumRows; ++y) + { + memcpy(pDestSlice + pDest->RowPitch * y, + pSrcSlice + pSrc->RowPitch * LONG_PTR(y), + RowSizeInBytes); + } + } +} + +//------------------------------------------------------------------------------------------------ +// Returns required size of a buffer to be used for data upload +inline UINT64 GetRequiredIntermediateSize( + _In_ ID3D12Resource* pDestinationResource, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) +{ + auto Desc = pDestinationResource->GetDesc(); + UINT64 RequiredSize = 0; + + ID3D12Device* pDevice = nullptr; + pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast(&pDevice)); + pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize); + pDevice->Release(); + + return RequiredSize; +} + +//------------------------------------------------------------------------------------------------ +// All arrays must be populated (e.g. by calling GetCopyableFootprints) +inline UINT64 UpdateSubresources( + _In_ ID3D12GraphicsCommandList* pCmdList, + _In_ ID3D12Resource* pDestinationResource, + _In_ ID3D12Resource* pIntermediate, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + UINT64 RequiredSize, + _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts, + _In_reads_(NumSubresources) const UINT* pNumRows, + _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes, + _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) +{ + // Minor validation + auto IntermediateDesc = pIntermediate->GetDesc(); + auto DestinationDesc = pDestinationResource->GetDesc(); + if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER || + IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset || + RequiredSize > SIZE_T(-1) || + (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER && + (FirstSubresource != 0 || NumSubresources != 1))) + { + return 0; + } + + BYTE* pData; + HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast(&pData)); + if (FAILED(hr)) + { + return 0; + } + + for (UINT i = 0; i < NumSubresources; ++i) + { + if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0; + D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) }; + MemcpySubresource(&DestData, &pSrcData[i], static_cast(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth); + } + pIntermediate->Unmap(0, nullptr); + + if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER) + { + pCmdList->CopyBufferRegion( + pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width); + } + else + { + for (UINT i = 0; i < NumSubresources; ++i) + { + CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource); + CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]); + pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr); + } + } + return RequiredSize; +} + +//------------------------------------------------------------------------------------------------ +// Heap-allocating UpdateSubresources implementation +inline UINT64 UpdateSubresources( + _In_ ID3D12GraphicsCommandList* pCmdList, + _In_ ID3D12Resource* pDestinationResource, + _In_ ID3D12Resource* pIntermediate, + UINT64 IntermediateOffset, + _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, + _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources, + _In_reads_(NumSubresources) D3D12_SUBRESOURCE_DATA* pSrcData) +{ + UINT64 RequiredSize = 0; + UINT64 MemToAlloc = static_cast(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources; + if (MemToAlloc > SIZE_MAX) + { + return 0; + } + void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast(MemToAlloc)); + if (pMem == nullptr) + { + return 0; + } + auto pLayouts = reinterpret_cast(pMem); + UINT64* pRowSizesInBytes = reinterpret_cast(pLayouts + NumSubresources); + UINT* pNumRows = reinterpret_cast(pRowSizesInBytes + NumSubresources); + + auto Desc = pDestinationResource->GetDesc(); + ID3D12Device* pDevice = nullptr; + pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast(&pDevice)); + pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize); + pDevice->Release(); + + UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData); + HeapFree(GetProcessHeap(), 0, pMem); + return Result; +} + +//------------------------------------------------------------------------------------------------ +// Stack-allocating UpdateSubresources implementation +template +inline UINT64 UpdateSubresources( + _In_ ID3D12GraphicsCommandList* pCmdList, + _In_ ID3D12Resource* pDestinationResource, + _In_ ID3D12Resource* pIntermediate, + UINT64 IntermediateOffset, + _In_range_(0, MaxSubresources) UINT FirstSubresource, + _In_range_(1, MaxSubresources - FirstSubresource) UINT NumSubresources, + _In_reads_(NumSubresources) D3D12_SUBRESOURCE_DATA* pSrcData) +{ + UINT64 RequiredSize = 0; + D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources]; + UINT NumRows[MaxSubresources]; + UINT64 RowSizesInBytes[MaxSubresources]; + + auto Desc = pDestinationResource->GetDesc(); + ID3D12Device* pDevice = nullptr; + pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast(&pDevice)); + pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize); + pDevice->Release(); + + return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData); +} + +//------------------------------------------------------------------------------------------------ +inline bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) +{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; } + +//------------------------------------------------------------------------------------------------ +template +inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) +{ + // This cast is useful for passing strongly typed command list pointers into + // ExecuteCommandLists. + // This cast is valid as long as the const-ness is respected. D3D12 APIs do + // respect the const-ness of their arguments. + return reinterpret_cast(pp); +} + +//------------------------------------------------------------------------------------------------ +// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update. +// To help enable root signature 1.1 features when they are available and not require maintaining +// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when +// 1.1 is not supported. +inline HRESULT D3DX12SerializeVersionedRootSignature( + _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc, + D3D_ROOT_SIGNATURE_VERSION MaxVersion, + _Outptr_ ID3DBlob** ppBlob, + _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) +{ + if (ppErrorBlob != nullptr) + { + *ppErrorBlob = nullptr; + } + + switch (MaxVersion) + { + case D3D_ROOT_SIGNATURE_VERSION_1_0: + switch (pRootSignatureDesc->Version) + { + case D3D_ROOT_SIGNATURE_VERSION_1_0: + return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob); + + case D3D_ROOT_SIGNATURE_VERSION_1_1: + { + HRESULT hr = S_OK; + const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1; + + const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters; + void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr; + if (ParametersSize > 0 && pParameters == nullptr) + { + hr = E_OUTOFMEMORY; + } + auto pParameters_1_0 = reinterpret_cast(pParameters); + + if (SUCCEEDED(hr)) + { + for (UINT n = 0; n < desc_1_1.NumParameters; n++) + { + __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters); + pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType; + pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility; + + switch (desc_1_1.pParameters[n].ParameterType) + { + case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS: + pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues; + pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace; + pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister; + break; + + case D3D12_ROOT_PARAMETER_TYPE_CBV: + case D3D12_ROOT_PARAMETER_TYPE_SRV: + case D3D12_ROOT_PARAMETER_TYPE_UAV: + pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace; + pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister; + break; + + case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE: + const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable; + + const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges; + void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr; + if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr) + { + hr = E_OUTOFMEMORY; + } + auto pDescriptorRanges_1_0 = reinterpret_cast(pDescriptorRanges); + + if (SUCCEEDED(hr)) + { + for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++) + { + __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges); + pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister; + pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors; + pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart; + pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType; + pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace; + } + } + + D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable; + table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges; + table_1_0.pDescriptorRanges = pDescriptorRanges_1_0; + } + } + } + + if (SUCCEEDED(hr)) + { + CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, desc_1_1.pStaticSamplers, desc_1_1.Flags); + hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob); + } + + if (pParameters) + { + for (UINT n = 0; n < desc_1_1.NumParameters; n++) + { + if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE) + { + HeapFree(GetProcessHeap(), 0, reinterpret_cast(const_cast(pParameters_1_0[n].DescriptorTable.pDescriptorRanges))); + } + } + HeapFree(GetProcessHeap(), 0, pParameters); + } + return hr; + } + } + break; + + case D3D_ROOT_SIGNATURE_VERSION_1_1: + return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob); + } + + return E_INVALIDARG; +} + +//------------------------------------------------------------------------------------------------ +struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY +{ + CD3DX12_RT_FORMAT_ARRAY() = default; + explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) + : D3D12_RT_FORMAT_ARRAY(o) + {} + explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) + { + NumRenderTargets = NumFormats; + memcpy(RTFormats, pFormats, sizeof(RTFormats)); + // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats) + } +}; + +//------------------------------------------------------------------------------------------------ +// Pipeline State Stream Helpers +//------------------------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------------------------ +// Stream Subobjects, i.e. elements of a stream + +struct DefaultSampleMask { operator UINT() { return UINT_MAX; } }; +struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() { return DXGI_SAMPLE_DESC{1, 0}; } }; + +#pragma warning(push) +#pragma warning(disable : 4324) +template +class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT +{ +private: + D3D12_PIPELINE_STATE_SUBOBJECT_TYPE _Type; + InnerStructType _Inner; +public: + CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : _Type(Type), _Inner(DefaultArg()) {} + CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) : _Type(Type), _Inner(i) {} + CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) { _Inner = i; return *this; } + operator InnerStructType const&() const { return _Inner; } + operator InnerStructType&() { return _Inner; } + InnerStructType* operator&() { return &_Inner; } + InnerStructType const* operator&() const { return &_Inner; } +}; +#pragma warning(pop) +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INDEX_BUFFER_STRIP_CUT_VALUE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE> CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO; +typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING; + +//------------------------------------------------------------------------------------------------ +// Stream Parser Helpers + +struct ID3DX12PipelineParserCallbacks +{ + // Subobject Callbacks + virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {} + virtual void NodeMaskCb(UINT) {} + virtual void RootSignatureCb(ID3D12RootSignature*) {} + virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {} + virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {} + virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {} + virtual void VSCb(const D3D12_SHADER_BYTECODE&) {} + virtual void GSCb(const D3D12_SHADER_BYTECODE&) {} + virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {} + virtual void HSCb(const D3D12_SHADER_BYTECODE&) {} + virtual void DSCb(const D3D12_SHADER_BYTECODE&) {} + virtual void PSCb(const D3D12_SHADER_BYTECODE&) {} + virtual void CSCb(const D3D12_SHADER_BYTECODE&) {} + virtual void BlendStateCb(const D3D12_BLEND_DESC&) {} + virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {} + virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {} + virtual void DSVFormatCb(DXGI_FORMAT) {} + virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {} + virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {} + virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {} + virtual void SampleMaskCb(UINT) {} + virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {} + virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {} + + // Error Callbacks + virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {} + virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {} + virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {} + + virtual ~ID3DX12PipelineParserCallbacks() = default; +}; + +// CD3DX12_PIPELINE_STATE_STREAM1 Works on RS3+ (where there is a new view instancing subobject). +// Use CD3DX12_PIPELINE_STATE_STREAM for RS2+ support. +struct CD3DX12_PIPELINE_STATE_STREAM1 +{ + CD3DX12_PIPELINE_STATE_STREAM1() = default; + CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) + : Flags(Desc.Flags) + , NodeMask(Desc.NodeMask) + , pRootSignature(Desc.pRootSignature) + , InputLayout(Desc.InputLayout) + , IBStripCutValue(Desc.IBStripCutValue) + , PrimitiveTopologyType(Desc.PrimitiveTopologyType) + , VS(Desc.VS) + , GS(Desc.GS) + , StreamOutput(Desc.StreamOutput) + , HS(Desc.HS) + , DS(Desc.DS) + , PS(Desc.PS) + , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState)) + , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState)) + , DSVFormat(Desc.DSVFormat) + , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState)) + , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets)) + , SampleDesc(Desc.SampleDesc) + , SampleMask(Desc.SampleMask) + , CachedPSO(Desc.CachedPSO) + , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT())) + {} + CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) + : Flags(Desc.Flags) + , NodeMask(Desc.NodeMask) + , pRootSignature(Desc.pRootSignature) + , CS(CD3DX12_SHADER_BYTECODE(Desc.CS)) + , CachedPSO(Desc.CachedPSO) + { + static_cast(DepthStencilState).DepthEnable = false; + } + CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags; + CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask; + CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature; + CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout; + CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue; + CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType; + CD3DX12_PIPELINE_STATE_STREAM_VS VS; + CD3DX12_PIPELINE_STATE_STREAM_GS GS; + CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput; + CD3DX12_PIPELINE_STATE_STREAM_HS HS; + CD3DX12_PIPELINE_STATE_STREAM_DS DS; + CD3DX12_PIPELINE_STATE_STREAM_PS PS; + CD3DX12_PIPELINE_STATE_STREAM_CS CS; + CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState; + CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState; + CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat; + CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState; + CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats; + CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc; + CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask; + CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO; + CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc; + D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const + { + D3D12_GRAPHICS_PIPELINE_STATE_DESC D; + D.Flags = this->Flags; + D.NodeMask = this->NodeMask; + D.pRootSignature = this->pRootSignature; + D.InputLayout = this->InputLayout; + D.IBStripCutValue = this->IBStripCutValue; + D.PrimitiveTopologyType = this->PrimitiveTopologyType; + D.VS = this->VS; + D.GS = this->GS; + D.StreamOutput = this->StreamOutput; + D.HS = this->HS; + D.DS = this->DS; + D.PS = this->PS; + D.BlendState = this->BlendState; + D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState)); + D.DSVFormat = this->DSVFormat; + D.RasterizerState = this->RasterizerState; + D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets; + memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats)); + D.SampleDesc = this->SampleDesc; + D.SampleMask = this->SampleMask; + D.CachedPSO = this->CachedPSO; + return D; + } + D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const + { + D3D12_COMPUTE_PIPELINE_STATE_DESC D; + D.Flags = this->Flags; + D.NodeMask = this->NodeMask; + D.pRootSignature = this->pRootSignature; + D.CS = this->CS; + D.CachedPSO = this->CachedPSO; + return D; + } +}; + +// CD3DX12_PIPELINE_STATE_STREAM works on RS2+ but does not support new subobject(s) added in RS3+. +// See CD3DX12_PIPELINE_STATE_STREAM1 for instance. +struct CD3DX12_PIPELINE_STATE_STREAM +{ + CD3DX12_PIPELINE_STATE_STREAM() = default; + CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) + : Flags(Desc.Flags) + , NodeMask(Desc.NodeMask) + , pRootSignature(Desc.pRootSignature) + , InputLayout(Desc.InputLayout) + , IBStripCutValue(Desc.IBStripCutValue) + , PrimitiveTopologyType(Desc.PrimitiveTopologyType) + , VS(Desc.VS) + , GS(Desc.GS) + , StreamOutput(Desc.StreamOutput) + , HS(Desc.HS) + , DS(Desc.DS) + , PS(Desc.PS) + , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState)) + , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState)) + , DSVFormat(Desc.DSVFormat) + , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState)) + , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets)) + , SampleDesc(Desc.SampleDesc) + , SampleMask(Desc.SampleMask) + , CachedPSO(Desc.CachedPSO) + {} + CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) + : Flags(Desc.Flags) + , NodeMask(Desc.NodeMask) + , pRootSignature(Desc.pRootSignature) + , CS(CD3DX12_SHADER_BYTECODE(Desc.CS)) + , CachedPSO(Desc.CachedPSO) + {} + CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags; + CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask; + CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature; + CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout; + CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue; + CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType; + CD3DX12_PIPELINE_STATE_STREAM_VS VS; + CD3DX12_PIPELINE_STATE_STREAM_GS GS; + CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput; + CD3DX12_PIPELINE_STATE_STREAM_HS HS; + CD3DX12_PIPELINE_STATE_STREAM_DS DS; + CD3DX12_PIPELINE_STATE_STREAM_PS PS; + CD3DX12_PIPELINE_STATE_STREAM_CS CS; + CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState; + CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState; + CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat; + CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState; + CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats; + CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc; + CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask; + CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO; + D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const + { + D3D12_GRAPHICS_PIPELINE_STATE_DESC D; + D.Flags = this->Flags; + D.NodeMask = this->NodeMask; + D.pRootSignature = this->pRootSignature; + D.InputLayout = this->InputLayout; + D.IBStripCutValue = this->IBStripCutValue; + D.PrimitiveTopologyType = this->PrimitiveTopologyType; + D.VS = this->VS; + D.GS = this->GS; + D.StreamOutput = this->StreamOutput; + D.HS = this->HS; + D.DS = this->DS; + D.PS = this->PS; + D.BlendState = this->BlendState; + D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState)); + D.DSVFormat = this->DSVFormat; + D.RasterizerState = this->RasterizerState; + D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets; + memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats)); + D.SampleDesc = this->SampleDesc; + D.SampleMask = this->SampleMask; + D.CachedPSO = this->CachedPSO; + return D; + } + D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const + { + D3D12_COMPUTE_PIPELINE_STATE_DESC D; + D.Flags = this->Flags; + D.NodeMask = this->NodeMask; + D.pRootSignature = this->pRootSignature; + D.CS = this->CS; + D.CachedPSO = this->CachedPSO; + return D; + } +}; + +struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks +{ + CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream; + CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept + : SeenDSS(false) + { + // Adjust defaults to account for absent members. + PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; + + // Depth disabled if no DSV format specified. + static_cast(PipelineStream.DepthStencilState).DepthEnable = false; + } + + // ID3DX12PipelineParserCallbacks + void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;} + void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;} + void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;} + void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;} + void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;} + void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;} + void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;} + void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;} + void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;} + void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;} + void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;} + void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;} + void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;} + void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);} + void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override + { + PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState); + SeenDSS = true; + } + void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override + { + PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState); + SeenDSS = true; + } + void DSVFormatCb(DXGI_FORMAT DSVFormat) override + { + PipelineStream.DSVFormat = DSVFormat; + if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN) + { + // Re-enable depth for the default state. + static_cast(PipelineStream.DepthStencilState).DepthEnable = true; + } + } + void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);} + void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;} + void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;} + void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;} + void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);} + void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;} + +private: + bool SeenDSS; +}; + +inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) +{ + switch (SubobjectType) + { + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1: + return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL; + default: + return SubobjectType; + } +} + +inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks) +{ + if (pCallbacks == nullptr) + { + return E_INVALIDARG; + } + + if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr) + { + pCallbacks->ErrorBadInputParameter(1); // first parameter issue + return E_INVALIDARG; + } + + bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {}; + for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject) + { + BYTE* pStream = static_cast(Desc.pPipelineStateSubobjectStream)+CurOffset; + auto SubobjectType = *reinterpret_cast(pStream); + if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID) + { + pCallbacks->ErrorUnknownSubobject(SubobjectType); + return E_INVALIDARG; + } + if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)]) + { + pCallbacks->ErrorDuplicateSubobject(SubobjectType); + return E_INVALIDARG; // disallow subobject duplicates in a stream + } + SubobjectSeen[SubobjectType] = true; + switch (SubobjectType) + { + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE: + pCallbacks->RootSignatureCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS: + pCallbacks->VSCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS: + pCallbacks->PSCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS: + pCallbacks->DSCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS: + pCallbacks->HSCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS: + pCallbacks->GSCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS: + pCallbacks->CSCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT: + pCallbacks->StreamOutputCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND: + pCallbacks->BlendStateCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK: + pCallbacks->SampleMaskCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER: + pCallbacks->RasterizerStateCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL: + pCallbacks->DepthStencilStateCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1: + pCallbacks->DepthStencilState1Cb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT: + pCallbacks->InputLayoutCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE: + pCallbacks->IBStripCutValueCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY: + pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS: + pCallbacks->RTVFormatsCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT: + pCallbacks->DSVFormatCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC: + pCallbacks->SampleDescCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK: + pCallbacks->NodeMaskCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO: + pCallbacks->CachedPSOCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS: + pCallbacks->FlagsCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags); + break; + case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING: + pCallbacks->ViewInstancingCb(*reinterpret_cast(pStream)); + SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc); + break; + default: + pCallbacks->ErrorUnknownSubobject(SubobjectType); + return E_INVALIDARG; + break; + } + } + + return S_OK; +} + +//------------------------------------------------------------------------------------------------ +inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) +{ + if (a.Format != b.Format) return false; + if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT + || a.Format == DXGI_FORMAT_D16_UNORM + || a.Format == DXGI_FORMAT_D32_FLOAT + || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT) + { + return (a.DepthStencil.Depth == b.DepthStencil.Depth) && + (a.DepthStencil.Stencil == b.DepthStencil.Stencil); + } else { + return (a.Color[0] == b.Color[0]) && + (a.Color[1] == b.Color[1]) && + (a.Color[2] == b.Color[2]) && + (a.Color[3] == b.Color[3]); + } +} +inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) +{ + return a.ClearValue == b.ClearValue; +} +inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) +{ + if (a.pSrcResource != b.pSrcResource) return false; + if (a.pDstResource != b.pDstResource) return false; + if (a.SubresourceCount != b.SubresourceCount) return false; + if (a.Format != b.Format) return false; + if (a.ResolveMode != b.ResolveMode) return false; + if (a.PreserveResolveSource != b.PreserveResolveSource) return false; + return true; +} +inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) +{ + if (a.Type != b.Type) return false; + if (a.Type == D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR && !(a.Clear == b.Clear)) return false; + return true; +} +inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS &a, const D3D12_RENDER_PASS_ENDING_ACCESS &b) +{ + if (a.Type != b.Type) return false; + if (a.Type == D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE && !(a.Resolve == b.Resolve)) return false; + return true; +} +inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) +{ + if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false; + if (!(a.BeginningAccess == b.BeginningAccess)) return false; + if (!(a.EndingAccess == b.EndingAccess)) return false; + return true; +} +inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) +{ + if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false; + if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false; + if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false; + if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false; + if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false; + return true; +} + + +#ifndef D3DX12_NO_STATE_OBJECT_HELPERS + +//================================================================================================ +// D3DX12 State Object Creation Helpers +// +// Helper classes for creating new style state objects out of an arbitrary set of subobjects. +// Uses STL +// +// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see it's public methods). +// One of its methods is CreateSubobject(), which has a comment showing a couple of options for +// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT +// etc.). The subobject helpers each have methods specific to the subobject for configuring it's +// contents. +// +//================================================================================================ +#include +#include +#include +#include +#include + +//------------------------------------------------------------------------------------------------ +class CD3DX12_STATE_OBJECT_DESC +{ +public: + CD3DX12_STATE_OBJECT_DESC() + { + Init(D3D12_STATE_OBJECT_TYPE_COLLECTION); + } + CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) + { + Init(Type); + } + void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) { m_Desc.Type = Type; } + operator const D3D12_STATE_OBJECT_DESC&() + { + // Do final preparation work + m_RepointedAssociations.clear(); + m_SubobjectArray.clear(); + m_SubobjectArray.reserve(m_Desc.NumSubobjects); + // Flatten subobjects into an array (each flattened subobject still has a + // member that's a pointer to it's desc that's not flattened) + for (auto Iter = m_SubobjectList.begin(); + Iter != m_SubobjectList.end(); Iter++) + { + m_SubobjectArray.push_back(*Iter); + // Store new location in array so we can redirect pointers contained in subobjects + Iter->pSubobjectArrayLocation = &m_SubobjectArray.back(); + } + // For subobjects with pointer fields, create a new copy of those subobject definitions + // with fixed pointers + for (UINT i = 0; i < m_Desc.NumSubobjects; i++) + { + if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION) + { + auto pOriginalSubobjectAssociation = + reinterpret_cast(m_SubobjectArray[i].pDesc); + D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation; + auto pWrapper = + static_cast(pOriginalSubobjectAssociation->pSubobjectToAssociate); + Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation; + m_RepointedAssociations.push_back(Repointed); + m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back(); + } + } + // Below: using ugly way to get pointer in case .data() is not defined + m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr; + return m_Desc; + } + operator const D3D12_STATE_OBJECT_DESC*() + { + // Cast calls the above final preparation work + return &static_cast(*this); + } + + // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT) + // whose lifetime is owned by this class. + // e.g. + // + // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION); + // auto Lib0 = Collection1.CreateSubobject(); + // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]); + // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be + // // data/engine driven + // etc. + // + // Alternatively, users can instantiate sububject helpers explicitly, such as via local + // variables instead, passing the state object desc that should point to it into the helper + // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)). + // In this alternative scenario, the user must keep the subobject alive as long as the state + // object it is associated with is alive, else it's pointer references will be stale. + // e.g. + // + // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE); + // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2); + // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports + // // - meaning all exports in the libraries + // // are exported + // etc. + + template + T* CreateSubobject() + { + T* pSubobject = new T(*this); + m_OwnedSubobjectHelpers.emplace_back(pSubobject); + return pSubobject; + } + +private: + D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc) + { + SUBOBJECT_WRAPPER Subobject; + Subobject.pSubobjectArrayLocation = nullptr; + Subobject.Type = Type; + Subobject.pDesc = pDesc; + m_SubobjectList.push_back(Subobject); + m_Desc.NumSubobjects++; + return &m_SubobjectList.back(); + } + void Init(D3D12_STATE_OBJECT_TYPE Type) + { + SetStateObjectType(Type); + m_Desc.pSubobjects = nullptr; + m_Desc.NumSubobjects = 0; + m_SubobjectList.clear(); + m_SubobjectArray.clear(); + m_RepointedAssociations.clear(); + } + typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT + { + D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array + // for repointing pointers in subobjects + } SUBOBJECT_WRAPPER; + D3D12_STATE_OBJECT_DESC m_Desc; + std::list m_SubobjectList; // Pointers to list nodes handed out so + // these can be edited live + std::vector m_SubobjectArray; // Built at the end, copying list contents + + std::list + m_RepointedAssociations; // subobject type that contains pointers to other subobjects, + // repointed to flattened array + + class StringContainer + { + public: + LPCWSTR LocalCopy(LPCWSTR string, bool bSingleString = false) + { + if (string) + { + if (bSingleString) + { + m_Strings.clear(); + m_Strings.push_back(string); + } + else + { + m_Strings.push_back(string); + } + return m_Strings.back().c_str(); + } + else + { + return nullptr; + } + } + void clear() { m_Strings.clear(); } + private: + std::list m_Strings; + }; + + class SUBOBJECT_HELPER_BASE + { + public: + SUBOBJECT_HELPER_BASE() { Init(); } + virtual ~SUBOBJECT_HELPER_BASE() {} + virtual D3D12_STATE_SUBOBJECT_TYPE Type() const = 0; + void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data()); + } + protected: + virtual void* Data() = 0; + void Init() { m_pSubobject = nullptr; } + D3D12_STATE_SUBOBJECT* m_pSubobject; + }; + +#if(__cplusplus >= 201103L) + std::list> m_OwnedSubobjectHelpers; +#else + class OWNED_HELPER + { + public: + OWNED_HELPER(const SUBOBJECT_HELPER_BASE* pHelper) { m_pHelper = pHelper; } + ~OWNED_HELPER() { delete m_pHelper; } + const SUBOBJECT_HELPER_BASE* m_pHelper; + }; + + std::list m_OwnedSubobjectHelpers; +#endif + + friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT; + friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT; + friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT; + friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION; + friend class CD3DX12_HIT_GROUP_SUBOBJECT; + friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT; + friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT; + friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT; + friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT; + friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT; + friend class CD3DX12_NODE_MASK_SUBOBJECT; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_DXIL_LIBRARY_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_DXIL_LIBRARY_SUBOBJECT() + { + Init(); + } + CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetDXILLibrary(D3D12_SHADER_BYTECODE*pCode) + { + static const D3D12_SHADER_BYTECODE Default = {}; + m_Desc.DXILLibrary = pCode ? *pCode : Default; + } + void DefineExport( + LPCWSTR Name, + LPCWSTR ExportToRename = nullptr, + D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE) + { + D3D12_EXPORT_DESC Export; + Export.Name = m_Strings.LocalCopy(Name); + Export.ExportToRename = m_Strings.LocalCopy(ExportToRename); + Export.Flags = Flags; + m_Exports.push_back(Export); + m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined + m_Desc.NumExports = static_cast(m_Exports.size()); + } + template + void DefineExports(LPCWSTR(&Exports)[N]) + { + for (UINT i = 0; i < N; i++) + { + DefineExport(Exports[i]); + } + } + void DefineExports(LPCWSTR* Exports, UINT N) + { + for (UINT i = 0; i < N; i++) + { + DefineExport(Exports[i]); + } + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_DXIL_LIBRARY_DESC&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + m_Strings.clear(); + m_Exports.clear(); + } + void* Data() { return &m_Desc; } + D3D12_DXIL_LIBRARY_DESC m_Desc; + CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings; + std::vector m_Exports; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_EXISTING_COLLECTION_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_EXISTING_COLLECTION_SUBOBJECT() + { + Init(); + } + CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetExistingCollection(ID3D12StateObject*pExistingCollection) + { + m_Desc.pExistingCollection = pExistingCollection; + m_CollectionRef = pExistingCollection; + } + void DefineExport( + LPCWSTR Name, + LPCWSTR ExportToRename = nullptr, + D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE) + { + D3D12_EXPORT_DESC Export; + Export.Name = m_Strings.LocalCopy(Name); + Export.ExportToRename = m_Strings.LocalCopy(ExportToRename); + Export.Flags = Flags; + m_Exports.push_back(Export); + m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined + m_Desc.NumExports = static_cast(m_Exports.size()); + } + template + void DefineExports(LPCWSTR(&Exports)[N]) + { + for (UINT i = 0; i < N; i++) + { + DefineExport(Exports[i]); + } + } + void DefineExports(LPCWSTR* Exports, UINT N) + { + for (UINT i = 0; i < N; i++) + { + DefineExport(Exports[i]); + } + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_EXISTING_COLLECTION_DESC&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + m_CollectionRef = nullptr; + m_Strings.clear(); + m_Exports.clear(); + } + void* Data() { return &m_Desc; } + D3D12_EXISTING_COLLECTION_DESC m_Desc; + Microsoft::WRL::ComPtr m_CollectionRef; + CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings; + std::vector m_Exports; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() + { + Init(); + } + CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) + { + m_Desc.pSubobjectToAssociate = &SubobjectToAssociate; + } + void AddExport(LPCWSTR Export) + { + m_Desc.NumExports++; + m_Exports.push_back(m_Strings.LocalCopy(Export)); + m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined + } + template + void AddExports(LPCWSTR (&Exports)[N]) + { + for (UINT i = 0; i < N; i++) + { + AddExport(Exports[i]); + } + } + void AddExports(LPCWSTR* Exports, UINT N) + { + for (UINT i = 0; i < N; i++) + { + AddExport(Exports[i]); + } + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + m_Strings.clear(); + m_Exports.clear(); + } + void* Data() { return &m_Desc; } + D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc; + CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings; + std::vector m_Exports; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() + { + Init(); + } + CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate) + { + m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true); + } + void AddExport(LPCWSTR Export) + { + m_Desc.NumExports++; + m_Exports.push_back(m_Strings.LocalCopy(Export)); + m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined + } + template + void AddExports(LPCWSTR (&Exports)[N]) + { + for (UINT i = 0; i < N; i++) + { + AddExport(Exports[i]); + } + } + void AddExports(LPCWSTR* Exports, UINT N) + { + for (UINT i = 0; i < N; i++) + { + AddExport(Exports[i]); + } + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + m_Strings.clear(); + m_SubobjectName.clear(); + m_Exports.clear(); + } + void* Data() { return &m_Desc; } + D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc; + CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings; + CD3DX12_STATE_OBJECT_DESC::StringContainer m_SubobjectName; + std::vector m_Exports; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_HIT_GROUP_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_HIT_GROUP_SUBOBJECT() + { + Init(); + } + CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetHitGroupExport(LPCWSTR exportName) + { + m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true); + } + void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) { m_Desc.Type = Type; } + void SetAnyHitShaderImport(LPCWSTR importName) + { + m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true); + } + void SetClosestHitShaderImport(LPCWSTR importName) + { + m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true); + } + void SetIntersectionShaderImport(LPCWSTR importName) + { + m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true); + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_HIT_GROUP_DESC&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + for (UINT i = 0; i < m_NumStrings; i++) + { + m_Strings[i].clear(); + } + } + void* Data() { return &m_Desc; } + D3D12_HIT_GROUP_DESC m_Desc; + static const UINT m_NumStrings = 4; + CD3DX12_STATE_OBJECT_DESC::StringContainer + m_Strings[m_NumStrings]; // one string for every entrypoint name +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() + { + Init(); + } + CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) + { + m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes; + m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes; + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_RAYTRACING_SHADER_CONFIG&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + } + void* Data() { return &m_Desc; } + D3D12_RAYTRACING_SHADER_CONFIG m_Desc; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() + { + Init(); + } + CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void Config(UINT MaxTraceRecursionDepth) + { + m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth; + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + } + void* Data() { return &m_Desc; } + D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() + { + Init(); + } + CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetRootSignature(ID3D12RootSignature* pRootSig) + { + m_pRootSig = pRootSig; + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator ID3D12RootSignature*() const { return m_pRootSig.Get(); } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_pRootSig = nullptr; + } + void* Data() { return m_pRootSig.GetAddressOf(); } + Microsoft::WRL::ComPtr m_pRootSig; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() + { + Init(); + } + CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetRootSignature(ID3D12RootSignature* pRootSig) + { + m_pRootSig = pRootSig; + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator ID3D12RootSignature*() const { return m_pRootSig.Get(); } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_pRootSig = nullptr; + } + void* Data() { return m_pRootSig.GetAddressOf(); } + Microsoft::WRL::ComPtr m_pRootSig; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() + { + Init(); + } + CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) + { + m_Desc.Flags = Flags; + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_STATE_OBJECT_CONFIG&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + } + void* Data() { return &m_Desc; } + D3D12_STATE_OBJECT_CONFIG m_Desc; +}; + +//------------------------------------------------------------------------------------------------ +class CD3DX12_NODE_MASK_SUBOBJECT + : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE +{ +public: + CD3DX12_NODE_MASK_SUBOBJECT() + { + Init(); + } + CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject) + { + Init(); + AddToStateObject(ContainingStateObject); + } + void SetNodeMask(UINT NodeMask) + { + m_Desc.NodeMask = NodeMask; + } + D3D12_STATE_SUBOBJECT_TYPE Type() const + { + return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK; + } + operator const D3D12_STATE_SUBOBJECT&() const { return *m_pSubobject; } + operator const D3D12_NODE_MASK&() const { return m_Desc; } +private: + void Init() + { + SUBOBJECT_HELPER_BASE::Init(); + m_Desc = {}; + } + void* Data() { return &m_Desc; } + D3D12_NODE_MASK m_Desc; +}; + +#endif // #ifndef D3DX12_NO_STATE_OBJECT_HELPERS + +#endif // defined( __cplusplus ) + +#endif //__D3DX12_H__ diff --git a/include/dxsdk/dxgi.h b/include/dxsdk/dxgi.h new file mode 100644 index 00000000..d8c8ce9d --- /dev/null +++ b/include/dxsdk/dxgi.h @@ -0,0 +1,2958 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.01.0622 */ +/* @@MIDL_FILE_HEADING( ) */ + + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 500 +#endif + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCSAL_H_VERSION__ +#define __REQUIRED_RPCSAL_H_VERSION__ 100 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif /* __RPCNDR_H_VERSION__ */ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __dxgi_h__ +#define __dxgi_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IDXGIObject_FWD_DEFINED__ +#define __IDXGIObject_FWD_DEFINED__ +typedef interface IDXGIObject IDXGIObject; + +#endif /* __IDXGIObject_FWD_DEFINED__ */ + + +#ifndef __IDXGIDeviceSubObject_FWD_DEFINED__ +#define __IDXGIDeviceSubObject_FWD_DEFINED__ +typedef interface IDXGIDeviceSubObject IDXGIDeviceSubObject; + +#endif /* __IDXGIDeviceSubObject_FWD_DEFINED__ */ + + +#ifndef __IDXGIResource_FWD_DEFINED__ +#define __IDXGIResource_FWD_DEFINED__ +typedef interface IDXGIResource IDXGIResource; + +#endif /* __IDXGIResource_FWD_DEFINED__ */ + + +#ifndef __IDXGIKeyedMutex_FWD_DEFINED__ +#define __IDXGIKeyedMutex_FWD_DEFINED__ +typedef interface IDXGIKeyedMutex IDXGIKeyedMutex; + +#endif /* __IDXGIKeyedMutex_FWD_DEFINED__ */ + + +#ifndef __IDXGISurface_FWD_DEFINED__ +#define __IDXGISurface_FWD_DEFINED__ +typedef interface IDXGISurface IDXGISurface; + +#endif /* __IDXGISurface_FWD_DEFINED__ */ + + +#ifndef __IDXGISurface1_FWD_DEFINED__ +#define __IDXGISurface1_FWD_DEFINED__ +typedef interface IDXGISurface1 IDXGISurface1; + +#endif /* __IDXGISurface1_FWD_DEFINED__ */ + + +#ifndef __IDXGIAdapter_FWD_DEFINED__ +#define __IDXGIAdapter_FWD_DEFINED__ +typedef interface IDXGIAdapter IDXGIAdapter; + +#endif /* __IDXGIAdapter_FWD_DEFINED__ */ + + +#ifndef __IDXGIOutput_FWD_DEFINED__ +#define __IDXGIOutput_FWD_DEFINED__ +typedef interface IDXGIOutput IDXGIOutput; + +#endif /* __IDXGIOutput_FWD_DEFINED__ */ + + +#ifndef __IDXGISwapChain_FWD_DEFINED__ +#define __IDXGISwapChain_FWD_DEFINED__ +typedef interface IDXGISwapChain IDXGISwapChain; + +#endif /* __IDXGISwapChain_FWD_DEFINED__ */ + + +#ifndef __IDXGIFactory_FWD_DEFINED__ +#define __IDXGIFactory_FWD_DEFINED__ +typedef interface IDXGIFactory IDXGIFactory; + +#endif /* __IDXGIFactory_FWD_DEFINED__ */ + + +#ifndef __IDXGIDevice_FWD_DEFINED__ +#define __IDXGIDevice_FWD_DEFINED__ +typedef interface IDXGIDevice IDXGIDevice; + +#endif /* __IDXGIDevice_FWD_DEFINED__ */ + + +#ifndef __IDXGIFactory1_FWD_DEFINED__ +#define __IDXGIFactory1_FWD_DEFINED__ +typedef interface IDXGIFactory1 IDXGIFactory1; + +#endif /* __IDXGIFactory1_FWD_DEFINED__ */ + + +#ifndef __IDXGIAdapter1_FWD_DEFINED__ +#define __IDXGIAdapter1_FWD_DEFINED__ +typedef interface IDXGIAdapter1 IDXGIAdapter1; + +#endif /* __IDXGIAdapter1_FWD_DEFINED__ */ + + +#ifndef __IDXGIDevice1_FWD_DEFINED__ +#define __IDXGIDevice1_FWD_DEFINED__ +typedef interface IDXGIDevice1 IDXGIDevice1; + +#endif /* __IDXGIDevice1_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" +#include "dxgicommon.h" +#include "dxgitype.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +/* interface __MIDL_itf_dxgi_0000_0000 */ +/* [local] */ + +#include +#define DXGI_CPU_ACCESS_NONE ( 0 ) +#define DXGI_CPU_ACCESS_DYNAMIC ( 1 ) +#define DXGI_CPU_ACCESS_READ_WRITE ( 2 ) +#define DXGI_CPU_ACCESS_SCRATCH ( 3 ) +#define DXGI_CPU_ACCESS_FIELD 15 +#define DXGI_USAGE_SHADER_INPUT 0x00000010UL +#define DXGI_USAGE_RENDER_TARGET_OUTPUT 0x00000020UL +#define DXGI_USAGE_BACK_BUFFER 0x00000040UL +#define DXGI_USAGE_SHARED 0x00000080UL +#define DXGI_USAGE_READ_ONLY 0x00000100UL +#define DXGI_USAGE_DISCARD_ON_PRESENT 0x00000200UL +#define DXGI_USAGE_UNORDERED_ACCESS 0x00000400UL +typedef UINT DXGI_USAGE; + +typedef struct DXGI_FRAME_STATISTICS + { + UINT PresentCount; + UINT PresentRefreshCount; + UINT SyncRefreshCount; + LARGE_INTEGER SyncQPCTime; + LARGE_INTEGER SyncGPUTime; + } DXGI_FRAME_STATISTICS; + +typedef struct DXGI_MAPPED_RECT + { + INT Pitch; + BYTE *pBits; + } DXGI_MAPPED_RECT; + +#ifdef __midl +#ifndef LUID_DEFINED +#define LUID_DEFINED 1 +typedef struct _LUID + { + DWORD LowPart; + LONG HighPart; + } LUID; + +typedef struct _LUID *PLUID; + +#endif +#endif +typedef struct DXGI_ADAPTER_DESC + { + WCHAR Description[ 128 ]; + UINT VendorId; + UINT DeviceId; + UINT SubSysId; + UINT Revision; + SIZE_T DedicatedVideoMemory; + SIZE_T DedicatedSystemMemory; + SIZE_T SharedSystemMemory; + LUID AdapterLuid; + } DXGI_ADAPTER_DESC; + +#if !defined(HMONITOR_DECLARED) && !defined(HMONITOR) && (WINVER < 0x0500) +#define HMONITOR_DECLARED +#if 0 +typedef HANDLE HMONITOR; + +#endif +DECLARE_HANDLE(HMONITOR); +#endif +typedef struct DXGI_OUTPUT_DESC + { + WCHAR DeviceName[ 32 ]; + RECT DesktopCoordinates; + BOOL AttachedToDesktop; + DXGI_MODE_ROTATION Rotation; + HMONITOR Monitor; + } DXGI_OUTPUT_DESC; + +typedef struct DXGI_SHARED_RESOURCE + { + HANDLE Handle; + } DXGI_SHARED_RESOURCE; + +#define DXGI_RESOURCE_PRIORITY_MINIMUM ( 0x28000000 ) + +#define DXGI_RESOURCE_PRIORITY_LOW ( 0x50000000 ) + +#define DXGI_RESOURCE_PRIORITY_NORMAL ( 0x78000000 ) + +#define DXGI_RESOURCE_PRIORITY_HIGH ( 0xa0000000 ) + +#define DXGI_RESOURCE_PRIORITY_MAXIMUM ( 0xc8000000 ) + +typedef +enum DXGI_RESIDENCY + { + DXGI_RESIDENCY_FULLY_RESIDENT = 1, + DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2, + DXGI_RESIDENCY_EVICTED_TO_DISK = 3 + } DXGI_RESIDENCY; + +typedef struct DXGI_SURFACE_DESC + { + UINT Width; + UINT Height; + DXGI_FORMAT Format; + DXGI_SAMPLE_DESC SampleDesc; + } DXGI_SURFACE_DESC; + +typedef +enum DXGI_SWAP_EFFECT + { + DXGI_SWAP_EFFECT_DISCARD = 0, + DXGI_SWAP_EFFECT_SEQUENTIAL = 1, + DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3, + DXGI_SWAP_EFFECT_FLIP_DISCARD = 4 + } DXGI_SWAP_EFFECT; + +typedef +enum DXGI_SWAP_CHAIN_FLAG + { + DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1, + DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 2, + DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 4, + DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT = 8, + DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 16, + DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 32, + DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 64, + DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER = 128, + DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO = 256, + DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO = 512, + DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED = 1024, + DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING = 2048, + DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS = 4096 + } DXGI_SWAP_CHAIN_FLAG; + +typedef struct DXGI_SWAP_CHAIN_DESC + { + DXGI_MODE_DESC BufferDesc; + DXGI_SAMPLE_DESC SampleDesc; + DXGI_USAGE BufferUsage; + UINT BufferCount; + HWND OutputWindow; + BOOL Windowed; + DXGI_SWAP_EFFECT SwapEffect; + UINT Flags; + } DXGI_SWAP_CHAIN_DESC; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0000_v0_0_s_ifspec; + +#ifndef __IDXGIObject_INTERFACE_DEFINED__ +#define __IDXGIObject_INTERFACE_DEFINED__ + +/* interface IDXGIObject */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIObject; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("aec22fb8-76f3-4639-9be0-28eb43a67a2e") + IDXGIObject : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetPrivateData( + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface( + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPrivateData( + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetParent( + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIObjectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIObject * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIObject * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIObject * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIObject * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIObject * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIObject * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIObject * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + END_INTERFACE + } IDXGIObjectVtbl; + + interface IDXGIObject + { + CONST_VTBL struct IDXGIObjectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIObject_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIObject_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIObject_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIObject_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIObject_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIObject_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIObject_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIObject_INTERFACE_DEFINED__ */ + + +#ifndef __IDXGIDeviceSubObject_INTERFACE_DEFINED__ +#define __IDXGIDeviceSubObject_INTERFACE_DEFINED__ + +/* interface IDXGIDeviceSubObject */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIDeviceSubObject; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3d3e0379-f9de-4d58-bb6c-18d62992f1a6") + IDXGIDeviceSubObject : public IDXGIObject + { + public: + virtual HRESULT STDMETHODCALLTYPE GetDevice( + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppDevice) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIDeviceSubObjectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIDeviceSubObject * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIDeviceSubObject * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIDeviceSubObject * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIDeviceSubObject * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIDeviceSubObject * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIDeviceSubObject * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIDeviceSubObject * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + IDXGIDeviceSubObject * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppDevice); + + END_INTERFACE + } IDXGIDeviceSubObjectVtbl; + + interface IDXGIDeviceSubObject + { + CONST_VTBL struct IDXGIDeviceSubObjectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIDeviceSubObject_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIDeviceSubObject_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIDeviceSubObject_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIDeviceSubObject_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIDeviceSubObject_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIDeviceSubObject_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIDeviceSubObject_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIDeviceSubObject_GetDevice(This,riid,ppDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIDeviceSubObject_INTERFACE_DEFINED__ */ + + +#ifndef __IDXGIResource_INTERFACE_DEFINED__ +#define __IDXGIResource_INTERFACE_DEFINED__ + +/* interface IDXGIResource */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIResource; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("035f3ab4-482e-4e50-b41f-8a7f8bd8960b") + IDXGIResource : public IDXGIDeviceSubObject + { + public: + virtual HRESULT STDMETHODCALLTYPE GetSharedHandle( + /* [annotation][out] */ + _Out_ HANDLE *pSharedHandle) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetUsage( + /* [out] */ DXGI_USAGE *pUsage) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetEvictionPriority( + /* [in] */ UINT EvictionPriority) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetEvictionPriority( + /* [annotation][retval][out] */ + _Out_ UINT *pEvictionPriority) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIResourceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIResource * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIResource * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIResource * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIResource * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIResource * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIResource * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIResource * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + IDXGIResource * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppDevice); + + HRESULT ( STDMETHODCALLTYPE *GetSharedHandle )( + IDXGIResource * This, + /* [annotation][out] */ + _Out_ HANDLE *pSharedHandle); + + HRESULT ( STDMETHODCALLTYPE *GetUsage )( + IDXGIResource * This, + /* [out] */ DXGI_USAGE *pUsage); + + HRESULT ( STDMETHODCALLTYPE *SetEvictionPriority )( + IDXGIResource * This, + /* [in] */ UINT EvictionPriority); + + HRESULT ( STDMETHODCALLTYPE *GetEvictionPriority )( + IDXGIResource * This, + /* [annotation][retval][out] */ + _Out_ UINT *pEvictionPriority); + + END_INTERFACE + } IDXGIResourceVtbl; + + interface IDXGIResource + { + CONST_VTBL struct IDXGIResourceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIResource_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIResource_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIResource_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIResource_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIResource_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIResource_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIResource_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIResource_GetDevice(This,riid,ppDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) ) + + +#define IDXGIResource_GetSharedHandle(This,pSharedHandle) \ + ( (This)->lpVtbl -> GetSharedHandle(This,pSharedHandle) ) + +#define IDXGIResource_GetUsage(This,pUsage) \ + ( (This)->lpVtbl -> GetUsage(This,pUsage) ) + +#define IDXGIResource_SetEvictionPriority(This,EvictionPriority) \ + ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) ) + +#define IDXGIResource_GetEvictionPriority(This,pEvictionPriority) \ + ( (This)->lpVtbl -> GetEvictionPriority(This,pEvictionPriority) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIResource_INTERFACE_DEFINED__ */ + + +#ifndef __IDXGIKeyedMutex_INTERFACE_DEFINED__ +#define __IDXGIKeyedMutex_INTERFACE_DEFINED__ + +/* interface IDXGIKeyedMutex */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIKeyedMutex; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9d8e1289-d7b3-465f-8126-250e349af85d") + IDXGIKeyedMutex : public IDXGIDeviceSubObject + { + public: + virtual HRESULT STDMETHODCALLTYPE AcquireSync( + /* [in] */ UINT64 Key, + /* [in] */ DWORD dwMilliseconds) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseSync( + /* [in] */ UINT64 Key) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIKeyedMutexVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIKeyedMutex * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIKeyedMutex * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIKeyedMutex * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIKeyedMutex * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIKeyedMutex * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIKeyedMutex * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIKeyedMutex * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + IDXGIKeyedMutex * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppDevice); + + HRESULT ( STDMETHODCALLTYPE *AcquireSync )( + IDXGIKeyedMutex * This, + /* [in] */ UINT64 Key, + /* [in] */ DWORD dwMilliseconds); + + HRESULT ( STDMETHODCALLTYPE *ReleaseSync )( + IDXGIKeyedMutex * This, + /* [in] */ UINT64 Key); + + END_INTERFACE + } IDXGIKeyedMutexVtbl; + + interface IDXGIKeyedMutex + { + CONST_VTBL struct IDXGIKeyedMutexVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIKeyedMutex_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIKeyedMutex_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIKeyedMutex_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIKeyedMutex_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIKeyedMutex_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIKeyedMutex_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIKeyedMutex_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIKeyedMutex_GetDevice(This,riid,ppDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) ) + + +#define IDXGIKeyedMutex_AcquireSync(This,Key,dwMilliseconds) \ + ( (This)->lpVtbl -> AcquireSync(This,Key,dwMilliseconds) ) + +#define IDXGIKeyedMutex_ReleaseSync(This,Key) \ + ( (This)->lpVtbl -> ReleaseSync(This,Key) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIKeyedMutex_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi_0000_0004 */ +/* [local] */ + +#define DXGI_MAP_READ ( 1UL ) + +#define DXGI_MAP_WRITE ( 2UL ) + +#define DXGI_MAP_DISCARD ( 4UL ) + + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0004_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0004_v0_0_s_ifspec; + +#ifndef __IDXGISurface_INTERFACE_DEFINED__ +#define __IDXGISurface_INTERFACE_DEFINED__ + +/* interface IDXGISurface */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGISurface; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("cafcb56c-6ac3-4889-bf47-9e23bbd260ec") + IDXGISurface : public IDXGIDeviceSubObject + { + public: + virtual HRESULT STDMETHODCALLTYPE GetDesc( + /* [annotation][out] */ + _Out_ DXGI_SURFACE_DESC *pDesc) = 0; + + virtual HRESULT STDMETHODCALLTYPE Map( + /* [annotation][out] */ + _Out_ DXGI_MAPPED_RECT *pLockedRect, + /* [in] */ UINT MapFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE Unmap( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGISurfaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGISurface * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGISurface * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGISurface * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGISurface * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGISurface * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGISurface * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGISurface * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + IDXGISurface * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppDevice); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGISurface * This, + /* [annotation][out] */ + _Out_ DXGI_SURFACE_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *Map )( + IDXGISurface * This, + /* [annotation][out] */ + _Out_ DXGI_MAPPED_RECT *pLockedRect, + /* [in] */ UINT MapFlags); + + HRESULT ( STDMETHODCALLTYPE *Unmap )( + IDXGISurface * This); + + END_INTERFACE + } IDXGISurfaceVtbl; + + interface IDXGISurface + { + CONST_VTBL struct IDXGISurfaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGISurface_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGISurface_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGISurface_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGISurface_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGISurface_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGISurface_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGISurface_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGISurface_GetDevice(This,riid,ppDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) ) + + +#define IDXGISurface_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGISurface_Map(This,pLockedRect,MapFlags) \ + ( (This)->lpVtbl -> Map(This,pLockedRect,MapFlags) ) + +#define IDXGISurface_Unmap(This) \ + ( (This)->lpVtbl -> Unmap(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGISurface_INTERFACE_DEFINED__ */ + + +#ifndef __IDXGISurface1_INTERFACE_DEFINED__ +#define __IDXGISurface1_INTERFACE_DEFINED__ + +/* interface IDXGISurface1 */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGISurface1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4AE63092-6327-4c1b-80AE-BFE12EA32B86") + IDXGISurface1 : public IDXGISurface + { + public: + virtual HRESULT STDMETHODCALLTYPE GetDC( + /* [in] */ BOOL Discard, + /* [annotation][out] */ + _Out_ HDC *phdc) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseDC( + /* [annotation][in] */ + _In_opt_ RECT *pDirtyRect) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGISurface1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGISurface1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGISurface1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGISurface1 * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGISurface1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGISurface1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGISurface1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGISurface1 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + IDXGISurface1 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppDevice); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGISurface1 * This, + /* [annotation][out] */ + _Out_ DXGI_SURFACE_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *Map )( + IDXGISurface1 * This, + /* [annotation][out] */ + _Out_ DXGI_MAPPED_RECT *pLockedRect, + /* [in] */ UINT MapFlags); + + HRESULT ( STDMETHODCALLTYPE *Unmap )( + IDXGISurface1 * This); + + HRESULT ( STDMETHODCALLTYPE *GetDC )( + IDXGISurface1 * This, + /* [in] */ BOOL Discard, + /* [annotation][out] */ + _Out_ HDC *phdc); + + HRESULT ( STDMETHODCALLTYPE *ReleaseDC )( + IDXGISurface1 * This, + /* [annotation][in] */ + _In_opt_ RECT *pDirtyRect); + + END_INTERFACE + } IDXGISurface1Vtbl; + + interface IDXGISurface1 + { + CONST_VTBL struct IDXGISurface1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGISurface1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGISurface1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGISurface1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGISurface1_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGISurface1_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGISurface1_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGISurface1_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGISurface1_GetDevice(This,riid,ppDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) ) + + +#define IDXGISurface1_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGISurface1_Map(This,pLockedRect,MapFlags) \ + ( (This)->lpVtbl -> Map(This,pLockedRect,MapFlags) ) + +#define IDXGISurface1_Unmap(This) \ + ( (This)->lpVtbl -> Unmap(This) ) + + +#define IDXGISurface1_GetDC(This,Discard,phdc) \ + ( (This)->lpVtbl -> GetDC(This,Discard,phdc) ) + +#define IDXGISurface1_ReleaseDC(This,pDirtyRect) \ + ( (This)->lpVtbl -> ReleaseDC(This,pDirtyRect) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGISurface1_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi_0000_0006 */ +/* [local] */ + + + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0006_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0006_v0_0_s_ifspec; + +#ifndef __IDXGIAdapter_INTERFACE_DEFINED__ +#define __IDXGIAdapter_INTERFACE_DEFINED__ + +/* interface IDXGIAdapter */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIAdapter; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2411e7e1-12ac-4ccf-bd14-9798e8534dc0") + IDXGIAdapter : public IDXGIObject + { + public: + virtual HRESULT STDMETHODCALLTYPE EnumOutputs( + /* [in] */ UINT Output, + /* [annotation][out][in] */ + _COM_Outptr_ IDXGIOutput **ppOutput) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDesc( + /* [annotation][out] */ + _Out_ DXGI_ADAPTER_DESC *pDesc) = 0; + + virtual HRESULT STDMETHODCALLTYPE CheckInterfaceSupport( + /* [annotation][in] */ + _In_ REFGUID InterfaceName, + /* [annotation][out] */ + _Out_ LARGE_INTEGER *pUMDVersion) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIAdapterVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIAdapter * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIAdapter * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIAdapter * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIAdapter * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIAdapter * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIAdapter * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIAdapter * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *EnumOutputs )( + IDXGIAdapter * This, + /* [in] */ UINT Output, + /* [annotation][out][in] */ + _COM_Outptr_ IDXGIOutput **ppOutput); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGIAdapter * This, + /* [annotation][out] */ + _Out_ DXGI_ADAPTER_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )( + IDXGIAdapter * This, + /* [annotation][in] */ + _In_ REFGUID InterfaceName, + /* [annotation][out] */ + _Out_ LARGE_INTEGER *pUMDVersion); + + END_INTERFACE + } IDXGIAdapterVtbl; + + interface IDXGIAdapter + { + CONST_VTBL struct IDXGIAdapterVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIAdapter_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIAdapter_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIAdapter_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIAdapter_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIAdapter_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIAdapter_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIAdapter_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIAdapter_EnumOutputs(This,Output,ppOutput) \ + ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) ) + +#define IDXGIAdapter_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGIAdapter_CheckInterfaceSupport(This,InterfaceName,pUMDVersion) \ + ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIAdapter_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi_0000_0007 */ +/* [local] */ + +#define DXGI_ENUM_MODES_INTERLACED ( 1UL ) + +#define DXGI_ENUM_MODES_SCALING ( 2UL ) + + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0007_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0007_v0_0_s_ifspec; + +#ifndef __IDXGIOutput_INTERFACE_DEFINED__ +#define __IDXGIOutput_INTERFACE_DEFINED__ + +/* interface IDXGIOutput */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIOutput; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ae02eedb-c735-4690-8d52-5a8dc20213aa") + IDXGIOutput : public IDXGIObject + { + public: + virtual HRESULT STDMETHODCALLTYPE GetDesc( + /* [annotation][out] */ + _Out_ DXGI_OUTPUT_DESC *pDesc) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList( + /* [in] */ DXGI_FORMAT EnumFormat, + /* [in] */ UINT Flags, + /* [annotation][out][in] */ + _Inout_ UINT *pNumModes, + /* [annotation][out] */ + _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc) = 0; + + virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode( + /* [annotation][in] */ + _In_ const DXGI_MODE_DESC *pModeToMatch, + /* [annotation][out] */ + _Out_ DXGI_MODE_DESC *pClosestMatch, + /* [annotation][in] */ + _In_opt_ IUnknown *pConcernedDevice) = 0; + + virtual HRESULT STDMETHODCALLTYPE WaitForVBlank( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE TakeOwnership( + /* [annotation][in] */ + _In_ IUnknown *pDevice, + BOOL Exclusive) = 0; + + virtual void STDMETHODCALLTYPE ReleaseOwnership( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetGammaControlCapabilities( + /* [annotation][out] */ + _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetGammaControl( + /* [annotation][in] */ + _In_ const DXGI_GAMMA_CONTROL *pArray) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetGammaControl( + /* [annotation][out] */ + _Out_ DXGI_GAMMA_CONTROL *pArray) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDisplaySurface( + /* [annotation][in] */ + _In_ IDXGISurface *pScanoutSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData( + /* [annotation][in] */ + _In_ IDXGISurface *pDestination) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics( + /* [annotation][out] */ + _Out_ DXGI_FRAME_STATISTICS *pStats) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIOutputVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIOutput * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIOutput * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIOutput * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGIOutput * This, + /* [annotation][out] */ + _Out_ DXGI_OUTPUT_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )( + IDXGIOutput * This, + /* [in] */ DXGI_FORMAT EnumFormat, + /* [in] */ UINT Flags, + /* [annotation][out][in] */ + _Inout_ UINT *pNumModes, + /* [annotation][out] */ + _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ const DXGI_MODE_DESC *pModeToMatch, + /* [annotation][out] */ + _Out_ DXGI_MODE_DESC *pClosestMatch, + /* [annotation][in] */ + _In_opt_ IUnknown *pConcernedDevice); + + HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )( + IDXGIOutput * This); + + HRESULT ( STDMETHODCALLTYPE *TakeOwnership )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + BOOL Exclusive); + + void ( STDMETHODCALLTYPE *ReleaseOwnership )( + IDXGIOutput * This); + + HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )( + IDXGIOutput * This, + /* [annotation][out] */ + _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps); + + HRESULT ( STDMETHODCALLTYPE *SetGammaControl )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ const DXGI_GAMMA_CONTROL *pArray); + + HRESULT ( STDMETHODCALLTYPE *GetGammaControl )( + IDXGIOutput * This, + /* [annotation][out] */ + _Out_ DXGI_GAMMA_CONTROL *pArray); + + HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ IDXGISurface *pScanoutSurface); + + HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )( + IDXGIOutput * This, + /* [annotation][in] */ + _In_ IDXGISurface *pDestination); + + HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )( + IDXGIOutput * This, + /* [annotation][out] */ + _Out_ DXGI_FRAME_STATISTICS *pStats); + + END_INTERFACE + } IDXGIOutputVtbl; + + interface IDXGIOutput + { + CONST_VTBL struct IDXGIOutputVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIOutput_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIOutput_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIOutput_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIOutput_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIOutput_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIOutput_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIOutput_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIOutput_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGIOutput_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) \ + ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) ) + +#define IDXGIOutput_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) \ + ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) ) + +#define IDXGIOutput_WaitForVBlank(This) \ + ( (This)->lpVtbl -> WaitForVBlank(This) ) + +#define IDXGIOutput_TakeOwnership(This,pDevice,Exclusive) \ + ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) ) + +#define IDXGIOutput_ReleaseOwnership(This) \ + ( (This)->lpVtbl -> ReleaseOwnership(This) ) + +#define IDXGIOutput_GetGammaControlCapabilities(This,pGammaCaps) \ + ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) ) + +#define IDXGIOutput_SetGammaControl(This,pArray) \ + ( (This)->lpVtbl -> SetGammaControl(This,pArray) ) + +#define IDXGIOutput_GetGammaControl(This,pArray) \ + ( (This)->lpVtbl -> GetGammaControl(This,pArray) ) + +#define IDXGIOutput_SetDisplaySurface(This,pScanoutSurface) \ + ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) ) + +#define IDXGIOutput_GetDisplaySurfaceData(This,pDestination) \ + ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) ) + +#define IDXGIOutput_GetFrameStatistics(This,pStats) \ + ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIOutput_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi_0000_0008 */ +/* [local] */ + +#define DXGI_MAX_SWAP_CHAIN_BUFFERS ( 16 ) +#define DXGI_PRESENT_TEST 0x00000001UL +#define DXGI_PRESENT_DO_NOT_SEQUENCE 0x00000002UL +#define DXGI_PRESENT_RESTART 0x00000004UL +#define DXGI_PRESENT_DO_NOT_WAIT 0x00000008UL +#define DXGI_PRESENT_STEREO_PREFER_RIGHT 0x00000010UL +#define DXGI_PRESENT_STEREO_TEMPORARY_MONO 0x00000020UL +#define DXGI_PRESENT_RESTRICT_TO_OUTPUT 0x00000040UL +#define DXGI_PRESENT_USE_DURATION 0x00000100UL +#define DXGI_PRESENT_ALLOW_TEARING 0x00000200UL + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0008_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0008_v0_0_s_ifspec; + +#ifndef __IDXGISwapChain_INTERFACE_DEFINED__ +#define __IDXGISwapChain_INTERFACE_DEFINED__ + +/* interface IDXGISwapChain */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGISwapChain; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("310d36a0-d2e7-4c0a-aa04-6a9d23b8886a") + IDXGISwapChain : public IDXGIDeviceSubObject + { + public: + virtual HRESULT STDMETHODCALLTYPE Present( + /* [in] */ UINT SyncInterval, + /* [in] */ UINT Flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBuffer( + /* [in] */ UINT Buffer, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][out][in] */ + _COM_Outptr_ void **ppSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFullscreenState( + /* [in] */ BOOL Fullscreen, + /* [annotation][in] */ + _In_opt_ IDXGIOutput *pTarget) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFullscreenState( + /* [annotation][out] */ + _Out_opt_ BOOL *pFullscreen, + /* [annotation][out] */ + _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDesc( + /* [annotation][out] */ + _Out_ DXGI_SWAP_CHAIN_DESC *pDesc) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResizeBuffers( + /* [in] */ UINT BufferCount, + /* [in] */ UINT Width, + /* [in] */ UINT Height, + /* [in] */ DXGI_FORMAT NewFormat, + /* [in] */ UINT SwapChainFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResizeTarget( + /* [annotation][in] */ + _In_ const DXGI_MODE_DESC *pNewTargetParameters) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetContainingOutput( + /* [annotation][out] */ + _COM_Outptr_ IDXGIOutput **ppOutput) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics( + /* [annotation][out] */ + _Out_ DXGI_FRAME_STATISTICS *pStats) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLastPresentCount( + /* [annotation][out] */ + _Out_ UINT *pLastPresentCount) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGISwapChainVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGISwapChain * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGISwapChain * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGISwapChain * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGISwapChain * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGISwapChain * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGISwapChain * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGISwapChain * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + IDXGISwapChain * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppDevice); + + HRESULT ( STDMETHODCALLTYPE *Present )( + IDXGISwapChain * This, + /* [in] */ UINT SyncInterval, + /* [in] */ UINT Flags); + + HRESULT ( STDMETHODCALLTYPE *GetBuffer )( + IDXGISwapChain * This, + /* [in] */ UINT Buffer, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][out][in] */ + _COM_Outptr_ void **ppSurface); + + HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )( + IDXGISwapChain * This, + /* [in] */ BOOL Fullscreen, + /* [annotation][in] */ + _In_opt_ IDXGIOutput *pTarget); + + HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )( + IDXGISwapChain * This, + /* [annotation][out] */ + _Out_opt_ BOOL *pFullscreen, + /* [annotation][out] */ + _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGISwapChain * This, + /* [annotation][out] */ + _Out_ DXGI_SWAP_CHAIN_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *ResizeBuffers )( + IDXGISwapChain * This, + /* [in] */ UINT BufferCount, + /* [in] */ UINT Width, + /* [in] */ UINT Height, + /* [in] */ DXGI_FORMAT NewFormat, + /* [in] */ UINT SwapChainFlags); + + HRESULT ( STDMETHODCALLTYPE *ResizeTarget )( + IDXGISwapChain * This, + /* [annotation][in] */ + _In_ const DXGI_MODE_DESC *pNewTargetParameters); + + HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )( + IDXGISwapChain * This, + /* [annotation][out] */ + _COM_Outptr_ IDXGIOutput **ppOutput); + + HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )( + IDXGISwapChain * This, + /* [annotation][out] */ + _Out_ DXGI_FRAME_STATISTICS *pStats); + + HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )( + IDXGISwapChain * This, + /* [annotation][out] */ + _Out_ UINT *pLastPresentCount); + + END_INTERFACE + } IDXGISwapChainVtbl; + + interface IDXGISwapChain + { + CONST_VTBL struct IDXGISwapChainVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGISwapChain_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGISwapChain_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGISwapChain_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGISwapChain_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGISwapChain_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGISwapChain_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGISwapChain_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGISwapChain_GetDevice(This,riid,ppDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) ) + + +#define IDXGISwapChain_Present(This,SyncInterval,Flags) \ + ( (This)->lpVtbl -> Present(This,SyncInterval,Flags) ) + +#define IDXGISwapChain_GetBuffer(This,Buffer,riid,ppSurface) \ + ( (This)->lpVtbl -> GetBuffer(This,Buffer,riid,ppSurface) ) + +#define IDXGISwapChain_SetFullscreenState(This,Fullscreen,pTarget) \ + ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) ) + +#define IDXGISwapChain_GetFullscreenState(This,pFullscreen,ppTarget) \ + ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) ) + +#define IDXGISwapChain_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGISwapChain_ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) \ + ( (This)->lpVtbl -> ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) ) + +#define IDXGISwapChain_ResizeTarget(This,pNewTargetParameters) \ + ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) ) + +#define IDXGISwapChain_GetContainingOutput(This,ppOutput) \ + ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) ) + +#define IDXGISwapChain_GetFrameStatistics(This,pStats) \ + ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) ) + +#define IDXGISwapChain_GetLastPresentCount(This,pLastPresentCount) \ + ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGISwapChain_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi_0000_0009 */ +/* [local] */ + +#define DXGI_MWA_NO_WINDOW_CHANGES ( 1 << 0 ) +#define DXGI_MWA_NO_ALT_ENTER ( 1 << 1 ) +#define DXGI_MWA_NO_PRINT_SCREEN ( 1 << 2 ) +#define DXGI_MWA_VALID ( 0x7 ) + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0009_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0009_v0_0_s_ifspec; + +#ifndef __IDXGIFactory_INTERFACE_DEFINED__ +#define __IDXGIFactory_INTERFACE_DEFINED__ + +/* interface IDXGIFactory */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIFactory; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7b7166ec-21c7-44ae-b21a-c9ae321ae369") + IDXGIFactory : public IDXGIObject + { + public: + virtual HRESULT STDMETHODCALLTYPE EnumAdapters( + /* [in] */ UINT Adapter, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **ppAdapter) = 0; + + virtual HRESULT STDMETHODCALLTYPE MakeWindowAssociation( + HWND WindowHandle, + UINT Flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetWindowAssociation( + /* [annotation][out] */ + _Out_ HWND *pWindowHandle) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSwapChain( + /* [annotation][in] */ + _In_ IUnknown *pDevice, + /* [annotation][in] */ + _In_ DXGI_SWAP_CHAIN_DESC *pDesc, + /* [annotation][out] */ + _COM_Outptr_ IDXGISwapChain **ppSwapChain) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSoftwareAdapter( + /* [in] */ HMODULE Module, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **ppAdapter) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIFactoryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIFactory * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIFactory * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIFactory * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIFactory * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIFactory * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIFactory * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIFactory * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *EnumAdapters )( + IDXGIFactory * This, + /* [in] */ UINT Adapter, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **ppAdapter); + + HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )( + IDXGIFactory * This, + HWND WindowHandle, + UINT Flags); + + HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )( + IDXGIFactory * This, + /* [annotation][out] */ + _Out_ HWND *pWindowHandle); + + HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )( + IDXGIFactory * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + /* [annotation][in] */ + _In_ DXGI_SWAP_CHAIN_DESC *pDesc, + /* [annotation][out] */ + _COM_Outptr_ IDXGISwapChain **ppSwapChain); + + HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )( + IDXGIFactory * This, + /* [in] */ HMODULE Module, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **ppAdapter); + + END_INTERFACE + } IDXGIFactoryVtbl; + + interface IDXGIFactory + { + CONST_VTBL struct IDXGIFactoryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIFactory_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIFactory_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIFactory_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIFactory_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIFactory_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIFactory_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIFactory_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIFactory_EnumAdapters(This,Adapter,ppAdapter) \ + ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) ) + +#define IDXGIFactory_MakeWindowAssociation(This,WindowHandle,Flags) \ + ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) ) + +#define IDXGIFactory_GetWindowAssociation(This,pWindowHandle) \ + ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) ) + +#define IDXGIFactory_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \ + ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) ) + +#define IDXGIFactory_CreateSoftwareAdapter(This,Module,ppAdapter) \ + ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIFactory_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi_0000_0010 */ +/* [local] */ + +#pragma region Desktop Family +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +HRESULT WINAPI CreateDXGIFactory(REFIID riid, _COM_Outptr_ void **ppFactory); +#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ +#pragma endregion +HRESULT WINAPI CreateDXGIFactory1(REFIID riid, _COM_Outptr_ void **ppFactory); + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0010_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0010_v0_0_s_ifspec; + +#ifndef __IDXGIDevice_INTERFACE_DEFINED__ +#define __IDXGIDevice_INTERFACE_DEFINED__ + +/* interface IDXGIDevice */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIDevice; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("54ec77fa-1377-44e6-8c32-88fd5f44c84c") + IDXGIDevice : public IDXGIObject + { + public: + virtual HRESULT STDMETHODCALLTYPE GetAdapter( + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **pAdapter) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSurface( + /* [annotation][in] */ + _In_ const DXGI_SURFACE_DESC *pDesc, + /* [in] */ UINT NumSurfaces, + /* [in] */ DXGI_USAGE Usage, + /* [annotation][in] */ + _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource, + /* [annotation][out] */ + _COM_Outptr_ IDXGISurface **ppSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE QueryResourceResidency( + /* [annotation][size_is][in] */ + _In_reads_(NumResources) IUnknown *const *ppResources, + /* [annotation][size_is][out] */ + _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus, + /* [in] */ UINT NumResources) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetGPUThreadPriority( + /* [in] */ INT Priority) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetGPUThreadPriority( + /* [annotation][retval][out] */ + _Out_ INT *pPriority) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIDeviceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIDevice * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIDevice * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIDevice * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIDevice * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIDevice * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIDevice * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIDevice * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetAdapter )( + IDXGIDevice * This, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **pAdapter); + + HRESULT ( STDMETHODCALLTYPE *CreateSurface )( + IDXGIDevice * This, + /* [annotation][in] */ + _In_ const DXGI_SURFACE_DESC *pDesc, + /* [in] */ UINT NumSurfaces, + /* [in] */ DXGI_USAGE Usage, + /* [annotation][in] */ + _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource, + /* [annotation][out] */ + _COM_Outptr_ IDXGISurface **ppSurface); + + HRESULT ( STDMETHODCALLTYPE *QueryResourceResidency )( + IDXGIDevice * This, + /* [annotation][size_is][in] */ + _In_reads_(NumResources) IUnknown *const *ppResources, + /* [annotation][size_is][out] */ + _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus, + /* [in] */ UINT NumResources); + + HRESULT ( STDMETHODCALLTYPE *SetGPUThreadPriority )( + IDXGIDevice * This, + /* [in] */ INT Priority); + + HRESULT ( STDMETHODCALLTYPE *GetGPUThreadPriority )( + IDXGIDevice * This, + /* [annotation][retval][out] */ + _Out_ INT *pPriority); + + END_INTERFACE + } IDXGIDeviceVtbl; + + interface IDXGIDevice + { + CONST_VTBL struct IDXGIDeviceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIDevice_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIDevice_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIDevice_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIDevice_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIDevice_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIDevice_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIDevice_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIDevice_GetAdapter(This,pAdapter) \ + ( (This)->lpVtbl -> GetAdapter(This,pAdapter) ) + +#define IDXGIDevice_CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) \ + ( (This)->lpVtbl -> CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) ) + +#define IDXGIDevice_QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) \ + ( (This)->lpVtbl -> QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) ) + +#define IDXGIDevice_SetGPUThreadPriority(This,Priority) \ + ( (This)->lpVtbl -> SetGPUThreadPriority(This,Priority) ) + +#define IDXGIDevice_GetGPUThreadPriority(This,pPriority) \ + ( (This)->lpVtbl -> GetGPUThreadPriority(This,pPriority) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIDevice_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi_0000_0011 */ +/* [local] */ + +typedef +enum DXGI_ADAPTER_FLAG + { + DXGI_ADAPTER_FLAG_NONE = 0, + DXGI_ADAPTER_FLAG_REMOTE = 1, + DXGI_ADAPTER_FLAG_SOFTWARE = 2, + DXGI_ADAPTER_FLAG_FORCE_DWORD = 0xffffffff + } DXGI_ADAPTER_FLAG; + +typedef struct DXGI_ADAPTER_DESC1 + { + WCHAR Description[ 128 ]; + UINT VendorId; + UINT DeviceId; + UINT SubSysId; + UINT Revision; + SIZE_T DedicatedVideoMemory; + SIZE_T DedicatedSystemMemory; + SIZE_T SharedSystemMemory; + LUID AdapterLuid; + UINT Flags; + } DXGI_ADAPTER_DESC1; + +typedef struct DXGI_DISPLAY_COLOR_SPACE + { + FLOAT PrimaryCoordinates[ 8 ][ 2 ]; + FLOAT WhitePoints[ 16 ][ 2 ]; + } DXGI_DISPLAY_COLOR_SPACE; + + + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0011_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0011_v0_0_s_ifspec; + +#ifndef __IDXGIFactory1_INTERFACE_DEFINED__ +#define __IDXGIFactory1_INTERFACE_DEFINED__ + +/* interface IDXGIFactory1 */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIFactory1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("770aae78-f26f-4dba-a829-253c83d1b387") + IDXGIFactory1 : public IDXGIFactory + { + public: + virtual HRESULT STDMETHODCALLTYPE EnumAdapters1( + /* [in] */ UINT Adapter, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter1 **ppAdapter) = 0; + + virtual BOOL STDMETHODCALLTYPE IsCurrent( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIFactory1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIFactory1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIFactory1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIFactory1 * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIFactory1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIFactory1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIFactory1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIFactory1 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *EnumAdapters )( + IDXGIFactory1 * This, + /* [in] */ UINT Adapter, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **ppAdapter); + + HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )( + IDXGIFactory1 * This, + HWND WindowHandle, + UINT Flags); + + HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )( + IDXGIFactory1 * This, + /* [annotation][out] */ + _Out_ HWND *pWindowHandle); + + HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )( + IDXGIFactory1 * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + /* [annotation][in] */ + _In_ DXGI_SWAP_CHAIN_DESC *pDesc, + /* [annotation][out] */ + _COM_Outptr_ IDXGISwapChain **ppSwapChain); + + HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )( + IDXGIFactory1 * This, + /* [in] */ HMODULE Module, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **ppAdapter); + + HRESULT ( STDMETHODCALLTYPE *EnumAdapters1 )( + IDXGIFactory1 * This, + /* [in] */ UINT Adapter, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter1 **ppAdapter); + + BOOL ( STDMETHODCALLTYPE *IsCurrent )( + IDXGIFactory1 * This); + + END_INTERFACE + } IDXGIFactory1Vtbl; + + interface IDXGIFactory1 + { + CONST_VTBL struct IDXGIFactory1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIFactory1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIFactory1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIFactory1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIFactory1_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIFactory1_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIFactory1_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIFactory1_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIFactory1_EnumAdapters(This,Adapter,ppAdapter) \ + ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) ) + +#define IDXGIFactory1_MakeWindowAssociation(This,WindowHandle,Flags) \ + ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) ) + +#define IDXGIFactory1_GetWindowAssociation(This,pWindowHandle) \ + ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) ) + +#define IDXGIFactory1_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \ + ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) ) + +#define IDXGIFactory1_CreateSoftwareAdapter(This,Module,ppAdapter) \ + ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) ) + + +#define IDXGIFactory1_EnumAdapters1(This,Adapter,ppAdapter) \ + ( (This)->lpVtbl -> EnumAdapters1(This,Adapter,ppAdapter) ) + +#define IDXGIFactory1_IsCurrent(This) \ + ( (This)->lpVtbl -> IsCurrent(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIFactory1_INTERFACE_DEFINED__ */ + + +#ifndef __IDXGIAdapter1_INTERFACE_DEFINED__ +#define __IDXGIAdapter1_INTERFACE_DEFINED__ + +/* interface IDXGIAdapter1 */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIAdapter1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("29038f61-3839-4626-91fd-086879011a05") + IDXGIAdapter1 : public IDXGIAdapter + { + public: + virtual HRESULT STDMETHODCALLTYPE GetDesc1( + /* [annotation][out] */ + _Out_ DXGI_ADAPTER_DESC1 *pDesc) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIAdapter1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIAdapter1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIAdapter1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIAdapter1 * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIAdapter1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIAdapter1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIAdapter1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIAdapter1 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *EnumOutputs )( + IDXGIAdapter1 * This, + /* [in] */ UINT Output, + /* [annotation][out][in] */ + _COM_Outptr_ IDXGIOutput **ppOutput); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGIAdapter1 * This, + /* [annotation][out] */ + _Out_ DXGI_ADAPTER_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )( + IDXGIAdapter1 * This, + /* [annotation][in] */ + _In_ REFGUID InterfaceName, + /* [annotation][out] */ + _Out_ LARGE_INTEGER *pUMDVersion); + + HRESULT ( STDMETHODCALLTYPE *GetDesc1 )( + IDXGIAdapter1 * This, + /* [annotation][out] */ + _Out_ DXGI_ADAPTER_DESC1 *pDesc); + + END_INTERFACE + } IDXGIAdapter1Vtbl; + + interface IDXGIAdapter1 + { + CONST_VTBL struct IDXGIAdapter1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIAdapter1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIAdapter1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIAdapter1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIAdapter1_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIAdapter1_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIAdapter1_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIAdapter1_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIAdapter1_EnumOutputs(This,Output,ppOutput) \ + ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) ) + +#define IDXGIAdapter1_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGIAdapter1_CheckInterfaceSupport(This,InterfaceName,pUMDVersion) \ + ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) ) + + +#define IDXGIAdapter1_GetDesc1(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc1(This,pDesc) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIAdapter1_INTERFACE_DEFINED__ */ + + +#ifndef __IDXGIDevice1_INTERFACE_DEFINED__ +#define __IDXGIDevice1_INTERFACE_DEFINED__ + +/* interface IDXGIDevice1 */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIDevice1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("77db970f-6276-48ba-ba28-070143b4392c") + IDXGIDevice1 : public IDXGIDevice + { + public: + virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency( + /* [in] */ UINT MaxLatency) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency( + /* [annotation][out] */ + _Out_ UINT *pMaxLatency) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIDevice1Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIDevice1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIDevice1 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIDevice1 * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIDevice1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIDevice1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIDevice1 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIDevice1 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetAdapter )( + IDXGIDevice1 * This, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **pAdapter); + + HRESULT ( STDMETHODCALLTYPE *CreateSurface )( + IDXGIDevice1 * This, + /* [annotation][in] */ + _In_ const DXGI_SURFACE_DESC *pDesc, + /* [in] */ UINT NumSurfaces, + /* [in] */ DXGI_USAGE Usage, + /* [annotation][in] */ + _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource, + /* [annotation][out] */ + _COM_Outptr_ IDXGISurface **ppSurface); + + HRESULT ( STDMETHODCALLTYPE *QueryResourceResidency )( + IDXGIDevice1 * This, + /* [annotation][size_is][in] */ + _In_reads_(NumResources) IUnknown *const *ppResources, + /* [annotation][size_is][out] */ + _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus, + /* [in] */ UINT NumResources); + + HRESULT ( STDMETHODCALLTYPE *SetGPUThreadPriority )( + IDXGIDevice1 * This, + /* [in] */ INT Priority); + + HRESULT ( STDMETHODCALLTYPE *GetGPUThreadPriority )( + IDXGIDevice1 * This, + /* [annotation][retval][out] */ + _Out_ INT *pPriority); + + HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )( + IDXGIDevice1 * This, + /* [in] */ UINT MaxLatency); + + HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )( + IDXGIDevice1 * This, + /* [annotation][out] */ + _Out_ UINT *pMaxLatency); + + END_INTERFACE + } IDXGIDevice1Vtbl; + + interface IDXGIDevice1 + { + CONST_VTBL struct IDXGIDevice1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIDevice1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIDevice1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIDevice1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIDevice1_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIDevice1_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIDevice1_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIDevice1_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIDevice1_GetAdapter(This,pAdapter) \ + ( (This)->lpVtbl -> GetAdapter(This,pAdapter) ) + +#define IDXGIDevice1_CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) \ + ( (This)->lpVtbl -> CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) ) + +#define IDXGIDevice1_QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) \ + ( (This)->lpVtbl -> QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) ) + +#define IDXGIDevice1_SetGPUThreadPriority(This,Priority) \ + ( (This)->lpVtbl -> SetGPUThreadPriority(This,Priority) ) + +#define IDXGIDevice1_GetGPUThreadPriority(This,pPriority) \ + ( (This)->lpVtbl -> GetGPUThreadPriority(This,pPriority) ) + + +#define IDXGIDevice1_SetMaximumFrameLatency(This,MaxLatency) \ + ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) ) + +#define IDXGIDevice1_GetMaximumFrameLatency(This,pMaxLatency) \ + ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIDevice1_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi_0000_0014 */ +/* [local] */ + +#ifdef __cplusplus +#endif /*__cplusplus*/ +DEFINE_GUID(IID_IDXGIObject,0xaec22fb8,0x76f3,0x4639,0x9b,0xe0,0x28,0xeb,0x43,0xa6,0x7a,0x2e); +DEFINE_GUID(IID_IDXGIDeviceSubObject,0x3d3e0379,0xf9de,0x4d58,0xbb,0x6c,0x18,0xd6,0x29,0x92,0xf1,0xa6); +DEFINE_GUID(IID_IDXGIResource,0x035f3ab4,0x482e,0x4e50,0xb4,0x1f,0x8a,0x7f,0x8b,0xd8,0x96,0x0b); +DEFINE_GUID(IID_IDXGIKeyedMutex,0x9d8e1289,0xd7b3,0x465f,0x81,0x26,0x25,0x0e,0x34,0x9a,0xf8,0x5d); +DEFINE_GUID(IID_IDXGISurface,0xcafcb56c,0x6ac3,0x4889,0xbf,0x47,0x9e,0x23,0xbb,0xd2,0x60,0xec); +DEFINE_GUID(IID_IDXGISurface1,0x4AE63092,0x6327,0x4c1b,0x80,0xAE,0xBF,0xE1,0x2E,0xA3,0x2B,0x86); +DEFINE_GUID(IID_IDXGIAdapter,0x2411e7e1,0x12ac,0x4ccf,0xbd,0x14,0x97,0x98,0xe8,0x53,0x4d,0xc0); +DEFINE_GUID(IID_IDXGIOutput,0xae02eedb,0xc735,0x4690,0x8d,0x52,0x5a,0x8d,0xc2,0x02,0x13,0xaa); +DEFINE_GUID(IID_IDXGISwapChain,0x310d36a0,0xd2e7,0x4c0a,0xaa,0x04,0x6a,0x9d,0x23,0xb8,0x88,0x6a); +DEFINE_GUID(IID_IDXGIFactory,0x7b7166ec,0x21c7,0x44ae,0xb2,0x1a,0xc9,0xae,0x32,0x1a,0xe3,0x69); +DEFINE_GUID(IID_IDXGIDevice,0x54ec77fa,0x1377,0x44e6,0x8c,0x32,0x88,0xfd,0x5f,0x44,0xc8,0x4c); +DEFINE_GUID(IID_IDXGIFactory1,0x770aae78,0xf26f,0x4dba,0xa8,0x29,0x25,0x3c,0x83,0xd1,0xb3,0x87); +DEFINE_GUID(IID_IDXGIAdapter1,0x29038f61,0x3839,0x4626,0x91,0xfd,0x08,0x68,0x79,0x01,0x1a,0x05); +DEFINE_GUID(IID_IDXGIDevice1,0x77db970f,0x6276,0x48ba,0xba,0x28,0x07,0x01,0x43,0xb4,0x39,0x2c); + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0014_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0014_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/include/dxsdk/dxgi1_4.h b/include/dxsdk/dxgi1_4.h new file mode 100644 index 00000000..ce48d9c7 --- /dev/null +++ b/include/dxsdk/dxgi1_4.h @@ -0,0 +1,1494 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.01.0622 */ +/* @@MIDL_FILE_HEADING( ) */ + + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 500 +#endif + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCSAL_H_VERSION__ +#define __REQUIRED_RPCSAL_H_VERSION__ 100 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif /* __RPCNDR_H_VERSION__ */ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __dxgi1_4_h__ +#define __dxgi1_4_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IDXGISwapChain3_FWD_DEFINED__ +#define __IDXGISwapChain3_FWD_DEFINED__ +typedef interface IDXGISwapChain3 IDXGISwapChain3; + +#endif /* __IDXGISwapChain3_FWD_DEFINED__ */ + + +#ifndef __IDXGIOutput4_FWD_DEFINED__ +#define __IDXGIOutput4_FWD_DEFINED__ +typedef interface IDXGIOutput4 IDXGIOutput4; + +#endif /* __IDXGIOutput4_FWD_DEFINED__ */ + + +#ifndef __IDXGIFactory4_FWD_DEFINED__ +#define __IDXGIFactory4_FWD_DEFINED__ +typedef interface IDXGIFactory4 IDXGIFactory4; + +#endif /* __IDXGIFactory4_FWD_DEFINED__ */ + + +#ifndef __IDXGIAdapter3_FWD_DEFINED__ +#define __IDXGIAdapter3_FWD_DEFINED__ +typedef interface IDXGIAdapter3 IDXGIAdapter3; + +#endif /* __IDXGIAdapter3_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "dxgi1_3.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +/* interface __MIDL_itf_dxgi1_4_0000_0000 */ +/* [local] */ + +#include +#pragma region App Family +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) +typedef +enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG + { + DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1, + DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT = 0x2 + } DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0000_v0_0_s_ifspec; + +#ifndef __IDXGISwapChain3_INTERFACE_DEFINED__ +#define __IDXGISwapChain3_INTERFACE_DEFINED__ + +/* interface IDXGISwapChain3 */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGISwapChain3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("94d99bdb-f1f8-4ab0-b236-7da0170edab1") + IDXGISwapChain3 : public IDXGISwapChain2 + { + public: + virtual UINT STDMETHODCALLTYPE GetCurrentBackBufferIndex( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE CheckColorSpaceSupport( + /* [annotation][in] */ + _In_ DXGI_COLOR_SPACE_TYPE ColorSpace, + /* [annotation][out] */ + _Out_ UINT *pColorSpaceSupport) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetColorSpace1( + /* [annotation][in] */ + _In_ DXGI_COLOR_SPACE_TYPE ColorSpace) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResizeBuffers1( + /* [annotation][in] */ + _In_ UINT BufferCount, + /* [annotation][in] */ + _In_ UINT Width, + /* [annotation][in] */ + _In_ UINT Height, + /* [annotation][in] */ + _In_ DXGI_FORMAT Format, + /* [annotation][in] */ + _In_ UINT SwapChainFlags, + /* [annotation][in] */ + _In_reads_(BufferCount) const UINT *pCreationNodeMask, + /* [annotation][in] */ + _In_reads_(BufferCount) IUnknown *const *ppPresentQueue) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGISwapChain3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGISwapChain3 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGISwapChain3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGISwapChain3 * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppDevice); + + HRESULT ( STDMETHODCALLTYPE *Present )( + IDXGISwapChain3 * This, + /* [in] */ UINT SyncInterval, + /* [in] */ UINT Flags); + + HRESULT ( STDMETHODCALLTYPE *GetBuffer )( + IDXGISwapChain3 * This, + /* [in] */ UINT Buffer, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][out][in] */ + _COM_Outptr_ void **ppSurface); + + HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )( + IDXGISwapChain3 * This, + /* [in] */ BOOL Fullscreen, + /* [annotation][in] */ + _In_opt_ IDXGIOutput *pTarget); + + HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_opt_ BOOL *pFullscreen, + /* [annotation][out] */ + _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ DXGI_SWAP_CHAIN_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *ResizeBuffers )( + IDXGISwapChain3 * This, + /* [in] */ UINT BufferCount, + /* [in] */ UINT Width, + /* [in] */ UINT Height, + /* [in] */ DXGI_FORMAT NewFormat, + /* [in] */ UINT SwapChainFlags); + + HRESULT ( STDMETHODCALLTYPE *ResizeTarget )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ const DXGI_MODE_DESC *pNewTargetParameters); + + HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _COM_Outptr_ IDXGIOutput **ppOutput); + + HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ DXGI_FRAME_STATISTICS *pStats); + + HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ UINT *pLastPresentCount); + + HRESULT ( STDMETHODCALLTYPE *GetDesc1 )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ DXGI_SWAP_CHAIN_DESC1 *pDesc); + + HRESULT ( STDMETHODCALLTYPE *GetFullscreenDesc )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *GetHwnd )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ HWND *pHwnd); + + HRESULT ( STDMETHODCALLTYPE *GetCoreWindow )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ REFIID refiid, + /* [annotation][out] */ + _COM_Outptr_ void **ppUnk); + + HRESULT ( STDMETHODCALLTYPE *Present1 )( + IDXGISwapChain3 * This, + /* [in] */ UINT SyncInterval, + /* [in] */ UINT PresentFlags, + /* [annotation][in] */ + _In_ const DXGI_PRESENT_PARAMETERS *pPresentParameters); + + BOOL ( STDMETHODCALLTYPE *IsTemporaryMonoSupported )( + IDXGISwapChain3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetRestrictToOutput )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ IDXGIOutput **ppRestrictToOutput); + + HRESULT ( STDMETHODCALLTYPE *SetBackgroundColor )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ const DXGI_RGBA *pColor); + + HRESULT ( STDMETHODCALLTYPE *GetBackgroundColor )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ DXGI_RGBA *pColor); + + HRESULT ( STDMETHODCALLTYPE *SetRotation )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ DXGI_MODE_ROTATION Rotation); + + HRESULT ( STDMETHODCALLTYPE *GetRotation )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ DXGI_MODE_ROTATION *pRotation); + + HRESULT ( STDMETHODCALLTYPE *SetSourceSize )( + IDXGISwapChain3 * This, + UINT Width, + UINT Height); + + HRESULT ( STDMETHODCALLTYPE *GetSourceSize )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ UINT *pWidth, + /* [annotation][out] */ + _Out_ UINT *pHeight); + + HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )( + IDXGISwapChain3 * This, + UINT MaxLatency); + + HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ UINT *pMaxLatency); + + HANDLE ( STDMETHODCALLTYPE *GetFrameLatencyWaitableObject )( + IDXGISwapChain3 * This); + + HRESULT ( STDMETHODCALLTYPE *SetMatrixTransform )( + IDXGISwapChain3 * This, + const DXGI_MATRIX_3X2_F *pMatrix); + + HRESULT ( STDMETHODCALLTYPE *GetMatrixTransform )( + IDXGISwapChain3 * This, + /* [annotation][out] */ + _Out_ DXGI_MATRIX_3X2_F *pMatrix); + + UINT ( STDMETHODCALLTYPE *GetCurrentBackBufferIndex )( + IDXGISwapChain3 * This); + + HRESULT ( STDMETHODCALLTYPE *CheckColorSpaceSupport )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ DXGI_COLOR_SPACE_TYPE ColorSpace, + /* [annotation][out] */ + _Out_ UINT *pColorSpaceSupport); + + HRESULT ( STDMETHODCALLTYPE *SetColorSpace1 )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ DXGI_COLOR_SPACE_TYPE ColorSpace); + + HRESULT ( STDMETHODCALLTYPE *ResizeBuffers1 )( + IDXGISwapChain3 * This, + /* [annotation][in] */ + _In_ UINT BufferCount, + /* [annotation][in] */ + _In_ UINT Width, + /* [annotation][in] */ + _In_ UINT Height, + /* [annotation][in] */ + _In_ DXGI_FORMAT Format, + /* [annotation][in] */ + _In_ UINT SwapChainFlags, + /* [annotation][in] */ + _In_reads_(BufferCount) const UINT *pCreationNodeMask, + /* [annotation][in] */ + _In_reads_(BufferCount) IUnknown *const *ppPresentQueue); + + END_INTERFACE + } IDXGISwapChain3Vtbl; + + interface IDXGISwapChain3 + { + CONST_VTBL struct IDXGISwapChain3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGISwapChain3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGISwapChain3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGISwapChain3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGISwapChain3_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGISwapChain3_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGISwapChain3_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGISwapChain3_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGISwapChain3_GetDevice(This,riid,ppDevice) \ + ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) ) + + +#define IDXGISwapChain3_Present(This,SyncInterval,Flags) \ + ( (This)->lpVtbl -> Present(This,SyncInterval,Flags) ) + +#define IDXGISwapChain3_GetBuffer(This,Buffer,riid,ppSurface) \ + ( (This)->lpVtbl -> GetBuffer(This,Buffer,riid,ppSurface) ) + +#define IDXGISwapChain3_SetFullscreenState(This,Fullscreen,pTarget) \ + ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) ) + +#define IDXGISwapChain3_GetFullscreenState(This,pFullscreen,ppTarget) \ + ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) ) + +#define IDXGISwapChain3_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGISwapChain3_ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) \ + ( (This)->lpVtbl -> ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) ) + +#define IDXGISwapChain3_ResizeTarget(This,pNewTargetParameters) \ + ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) ) + +#define IDXGISwapChain3_GetContainingOutput(This,ppOutput) \ + ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) ) + +#define IDXGISwapChain3_GetFrameStatistics(This,pStats) \ + ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) ) + +#define IDXGISwapChain3_GetLastPresentCount(This,pLastPresentCount) \ + ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) ) + + +#define IDXGISwapChain3_GetDesc1(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc1(This,pDesc) ) + +#define IDXGISwapChain3_GetFullscreenDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetFullscreenDesc(This,pDesc) ) + +#define IDXGISwapChain3_GetHwnd(This,pHwnd) \ + ( (This)->lpVtbl -> GetHwnd(This,pHwnd) ) + +#define IDXGISwapChain3_GetCoreWindow(This,refiid,ppUnk) \ + ( (This)->lpVtbl -> GetCoreWindow(This,refiid,ppUnk) ) + +#define IDXGISwapChain3_Present1(This,SyncInterval,PresentFlags,pPresentParameters) \ + ( (This)->lpVtbl -> Present1(This,SyncInterval,PresentFlags,pPresentParameters) ) + +#define IDXGISwapChain3_IsTemporaryMonoSupported(This) \ + ( (This)->lpVtbl -> IsTemporaryMonoSupported(This) ) + +#define IDXGISwapChain3_GetRestrictToOutput(This,ppRestrictToOutput) \ + ( (This)->lpVtbl -> GetRestrictToOutput(This,ppRestrictToOutput) ) + +#define IDXGISwapChain3_SetBackgroundColor(This,pColor) \ + ( (This)->lpVtbl -> SetBackgroundColor(This,pColor) ) + +#define IDXGISwapChain3_GetBackgroundColor(This,pColor) \ + ( (This)->lpVtbl -> GetBackgroundColor(This,pColor) ) + +#define IDXGISwapChain3_SetRotation(This,Rotation) \ + ( (This)->lpVtbl -> SetRotation(This,Rotation) ) + +#define IDXGISwapChain3_GetRotation(This,pRotation) \ + ( (This)->lpVtbl -> GetRotation(This,pRotation) ) + + +#define IDXGISwapChain3_SetSourceSize(This,Width,Height) \ + ( (This)->lpVtbl -> SetSourceSize(This,Width,Height) ) + +#define IDXGISwapChain3_GetSourceSize(This,pWidth,pHeight) \ + ( (This)->lpVtbl -> GetSourceSize(This,pWidth,pHeight) ) + +#define IDXGISwapChain3_SetMaximumFrameLatency(This,MaxLatency) \ + ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) ) + +#define IDXGISwapChain3_GetMaximumFrameLatency(This,pMaxLatency) \ + ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) ) + +#define IDXGISwapChain3_GetFrameLatencyWaitableObject(This) \ + ( (This)->lpVtbl -> GetFrameLatencyWaitableObject(This) ) + +#define IDXGISwapChain3_SetMatrixTransform(This,pMatrix) \ + ( (This)->lpVtbl -> SetMatrixTransform(This,pMatrix) ) + +#define IDXGISwapChain3_GetMatrixTransform(This,pMatrix) \ + ( (This)->lpVtbl -> GetMatrixTransform(This,pMatrix) ) + + +#define IDXGISwapChain3_GetCurrentBackBufferIndex(This) \ + ( (This)->lpVtbl -> GetCurrentBackBufferIndex(This) ) + +#define IDXGISwapChain3_CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) \ + ( (This)->lpVtbl -> CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) ) + +#define IDXGISwapChain3_SetColorSpace1(This,ColorSpace) \ + ( (This)->lpVtbl -> SetColorSpace1(This,ColorSpace) ) + +#define IDXGISwapChain3_ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) \ + ( (This)->lpVtbl -> ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGISwapChain3_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi1_4_0000_0001 */ +/* [local] */ + +typedef +enum DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG + { + DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1 + } DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0001_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0001_v0_0_s_ifspec; + +#ifndef __IDXGIOutput4_INTERFACE_DEFINED__ +#define __IDXGIOutput4_INTERFACE_DEFINED__ + +/* interface IDXGIOutput4 */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIOutput4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("dc7dca35-2196-414d-9F53-617884032a60") + IDXGIOutput4 : public IDXGIOutput3 + { + public: + virtual HRESULT STDMETHODCALLTYPE CheckOverlayColorSpaceSupport( + /* [annotation][in] */ + _In_ DXGI_FORMAT Format, + /* [annotation][in] */ + _In_ DXGI_COLOR_SPACE_TYPE ColorSpace, + /* [annotation][in] */ + _In_ IUnknown *pConcernedDevice, + /* [annotation][out] */ + _Out_ UINT *pFlags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIOutput4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIOutput4 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIOutput4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIOutput4 * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGIOutput4 * This, + /* [annotation][out] */ + _Out_ DXGI_OUTPUT_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )( + IDXGIOutput4 * This, + /* [in] */ DXGI_FORMAT EnumFormat, + /* [in] */ UINT Flags, + /* [annotation][out][in] */ + _Inout_ UINT *pNumModes, + /* [annotation][out] */ + _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ const DXGI_MODE_DESC *pModeToMatch, + /* [annotation][out] */ + _Out_ DXGI_MODE_DESC *pClosestMatch, + /* [annotation][in] */ + _In_opt_ IUnknown *pConcernedDevice); + + HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )( + IDXGIOutput4 * This); + + HRESULT ( STDMETHODCALLTYPE *TakeOwnership )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + BOOL Exclusive); + + void ( STDMETHODCALLTYPE *ReleaseOwnership )( + IDXGIOutput4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )( + IDXGIOutput4 * This, + /* [annotation][out] */ + _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps); + + HRESULT ( STDMETHODCALLTYPE *SetGammaControl )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ const DXGI_GAMMA_CONTROL *pArray); + + HRESULT ( STDMETHODCALLTYPE *GetGammaControl )( + IDXGIOutput4 * This, + /* [annotation][out] */ + _Out_ DXGI_GAMMA_CONTROL *pArray); + + HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ IDXGISurface *pScanoutSurface); + + HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ IDXGISurface *pDestination); + + HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )( + IDXGIOutput4 * This, + /* [annotation][out] */ + _Out_ DXGI_FRAME_STATISTICS *pStats); + + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList1 )( + IDXGIOutput4 * This, + /* [in] */ DXGI_FORMAT EnumFormat, + /* [in] */ UINT Flags, + /* [annotation][out][in] */ + _Inout_ UINT *pNumModes, + /* [annotation][out] */ + _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC1 *pDesc); + + HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode1 )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ const DXGI_MODE_DESC1 *pModeToMatch, + /* [annotation][out] */ + _Out_ DXGI_MODE_DESC1 *pClosestMatch, + /* [annotation][in] */ + _In_opt_ IUnknown *pConcernedDevice); + + HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData1 )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ IDXGIResource *pDestination); + + HRESULT ( STDMETHODCALLTYPE *DuplicateOutput )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + /* [annotation][out] */ + _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication); + + BOOL ( STDMETHODCALLTYPE *SupportsOverlays )( + IDXGIOutput4 * This); + + HRESULT ( STDMETHODCALLTYPE *CheckOverlaySupport )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ DXGI_FORMAT EnumFormat, + /* [annotation][out] */ + _In_ IUnknown *pConcernedDevice, + /* [annotation][out] */ + _Out_ UINT *pFlags); + + HRESULT ( STDMETHODCALLTYPE *CheckOverlayColorSpaceSupport )( + IDXGIOutput4 * This, + /* [annotation][in] */ + _In_ DXGI_FORMAT Format, + /* [annotation][in] */ + _In_ DXGI_COLOR_SPACE_TYPE ColorSpace, + /* [annotation][in] */ + _In_ IUnknown *pConcernedDevice, + /* [annotation][out] */ + _Out_ UINT *pFlags); + + END_INTERFACE + } IDXGIOutput4Vtbl; + + interface IDXGIOutput4 + { + CONST_VTBL struct IDXGIOutput4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIOutput4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIOutput4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIOutput4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIOutput4_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIOutput4_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIOutput4_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIOutput4_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIOutput4_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGIOutput4_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) \ + ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) ) + +#define IDXGIOutput4_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) \ + ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) ) + +#define IDXGIOutput4_WaitForVBlank(This) \ + ( (This)->lpVtbl -> WaitForVBlank(This) ) + +#define IDXGIOutput4_TakeOwnership(This,pDevice,Exclusive) \ + ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) ) + +#define IDXGIOutput4_ReleaseOwnership(This) \ + ( (This)->lpVtbl -> ReleaseOwnership(This) ) + +#define IDXGIOutput4_GetGammaControlCapabilities(This,pGammaCaps) \ + ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) ) + +#define IDXGIOutput4_SetGammaControl(This,pArray) \ + ( (This)->lpVtbl -> SetGammaControl(This,pArray) ) + +#define IDXGIOutput4_GetGammaControl(This,pArray) \ + ( (This)->lpVtbl -> GetGammaControl(This,pArray) ) + +#define IDXGIOutput4_SetDisplaySurface(This,pScanoutSurface) \ + ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) ) + +#define IDXGIOutput4_GetDisplaySurfaceData(This,pDestination) \ + ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) ) + +#define IDXGIOutput4_GetFrameStatistics(This,pStats) \ + ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) ) + + +#define IDXGIOutput4_GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) \ + ( (This)->lpVtbl -> GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) ) + +#define IDXGIOutput4_FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) \ + ( (This)->lpVtbl -> FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) ) + +#define IDXGIOutput4_GetDisplaySurfaceData1(This,pDestination) \ + ( (This)->lpVtbl -> GetDisplaySurfaceData1(This,pDestination) ) + +#define IDXGIOutput4_DuplicateOutput(This,pDevice,ppOutputDuplication) \ + ( (This)->lpVtbl -> DuplicateOutput(This,pDevice,ppOutputDuplication) ) + + +#define IDXGIOutput4_SupportsOverlays(This) \ + ( (This)->lpVtbl -> SupportsOverlays(This) ) + + +#define IDXGIOutput4_CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) \ + ( (This)->lpVtbl -> CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) ) + + +#define IDXGIOutput4_CheckOverlayColorSpaceSupport(This,Format,ColorSpace,pConcernedDevice,pFlags) \ + ( (This)->lpVtbl -> CheckOverlayColorSpaceSupport(This,Format,ColorSpace,pConcernedDevice,pFlags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIOutput4_INTERFACE_DEFINED__ */ + + +#ifndef __IDXGIFactory4_INTERFACE_DEFINED__ +#define __IDXGIFactory4_INTERFACE_DEFINED__ + +/* interface IDXGIFactory4 */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIFactory4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1bc6ea02-ef36-464f-bf0c-21ca39e5168a") + IDXGIFactory4 : public IDXGIFactory3 + { + public: + virtual HRESULT STDMETHODCALLTYPE EnumAdapterByLuid( + /* [annotation] */ + _In_ LUID AdapterLuid, + /* [annotation] */ + _In_ REFIID riid, + /* [annotation] */ + _COM_Outptr_ void **ppvAdapter) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumWarpAdapter( + /* [annotation] */ + _In_ REFIID riid, + /* [annotation] */ + _COM_Outptr_ void **ppvAdapter) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIFactory4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIFactory4 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIFactory4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIFactory4 * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *EnumAdapters )( + IDXGIFactory4 * This, + /* [in] */ UINT Adapter, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **ppAdapter); + + HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )( + IDXGIFactory4 * This, + HWND WindowHandle, + UINT Flags); + + HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )( + IDXGIFactory4 * This, + /* [annotation][out] */ + _Out_ HWND *pWindowHandle); + + HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + /* [annotation][in] */ + _In_ DXGI_SWAP_CHAIN_DESC *pDesc, + /* [annotation][out] */ + _COM_Outptr_ IDXGISwapChain **ppSwapChain); + + HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )( + IDXGIFactory4 * This, + /* [in] */ HMODULE Module, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter **ppAdapter); + + HRESULT ( STDMETHODCALLTYPE *EnumAdapters1 )( + IDXGIFactory4 * This, + /* [in] */ UINT Adapter, + /* [annotation][out] */ + _COM_Outptr_ IDXGIAdapter1 **ppAdapter); + + BOOL ( STDMETHODCALLTYPE *IsCurrent )( + IDXGIFactory4 * This); + + BOOL ( STDMETHODCALLTYPE *IsWindowedStereoEnabled )( + IDXGIFactory4 * This); + + HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForHwnd )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + /* [annotation][in] */ + _In_ HWND hWnd, + /* [annotation][in] */ + _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc, + /* [annotation][in] */ + _In_opt_ const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc, + /* [annotation][in] */ + _In_opt_ IDXGIOutput *pRestrictToOutput, + /* [annotation][out] */ + _COM_Outptr_ IDXGISwapChain1 **ppSwapChain); + + HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForCoreWindow )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + /* [annotation][in] */ + _In_ IUnknown *pWindow, + /* [annotation][in] */ + _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc, + /* [annotation][in] */ + _In_opt_ IDXGIOutput *pRestrictToOutput, + /* [annotation][out] */ + _COM_Outptr_ IDXGISwapChain1 **ppSwapChain); + + HRESULT ( STDMETHODCALLTYPE *GetSharedResourceAdapterLuid )( + IDXGIFactory4 * This, + /* [annotation] */ + _In_ HANDLE hResource, + /* [annotation] */ + _Out_ LUID *pLuid); + + HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusWindow )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ HWND WindowHandle, + /* [annotation][in] */ + _In_ UINT wMsg, + /* [annotation][out] */ + _Out_ DWORD *pdwCookie); + + HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusEvent )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ HANDLE hEvent, + /* [annotation][out] */ + _Out_ DWORD *pdwCookie); + + void ( STDMETHODCALLTYPE *UnregisterStereoStatus )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ DWORD dwCookie); + + HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusWindow )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ HWND WindowHandle, + /* [annotation][in] */ + _In_ UINT wMsg, + /* [annotation][out] */ + _Out_ DWORD *pdwCookie); + + HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusEvent )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ HANDLE hEvent, + /* [annotation][out] */ + _Out_ DWORD *pdwCookie); + + void ( STDMETHODCALLTYPE *UnregisterOcclusionStatus )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ DWORD dwCookie); + + HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForComposition )( + IDXGIFactory4 * This, + /* [annotation][in] */ + _In_ IUnknown *pDevice, + /* [annotation][in] */ + _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc, + /* [annotation][in] */ + _In_opt_ IDXGIOutput *pRestrictToOutput, + /* [annotation][out] */ + _COM_Outptr_ IDXGISwapChain1 **ppSwapChain); + + UINT ( STDMETHODCALLTYPE *GetCreationFlags )( + IDXGIFactory4 * This); + + HRESULT ( STDMETHODCALLTYPE *EnumAdapterByLuid )( + IDXGIFactory4 * This, + /* [annotation] */ + _In_ LUID AdapterLuid, + /* [annotation] */ + _In_ REFIID riid, + /* [annotation] */ + _COM_Outptr_ void **ppvAdapter); + + HRESULT ( STDMETHODCALLTYPE *EnumWarpAdapter )( + IDXGIFactory4 * This, + /* [annotation] */ + _In_ REFIID riid, + /* [annotation] */ + _COM_Outptr_ void **ppvAdapter); + + END_INTERFACE + } IDXGIFactory4Vtbl; + + interface IDXGIFactory4 + { + CONST_VTBL struct IDXGIFactory4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIFactory4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIFactory4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIFactory4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIFactory4_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIFactory4_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIFactory4_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIFactory4_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIFactory4_EnumAdapters(This,Adapter,ppAdapter) \ + ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) ) + +#define IDXGIFactory4_MakeWindowAssociation(This,WindowHandle,Flags) \ + ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) ) + +#define IDXGIFactory4_GetWindowAssociation(This,pWindowHandle) \ + ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) ) + +#define IDXGIFactory4_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \ + ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) ) + +#define IDXGIFactory4_CreateSoftwareAdapter(This,Module,ppAdapter) \ + ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) ) + + +#define IDXGIFactory4_EnumAdapters1(This,Adapter,ppAdapter) \ + ( (This)->lpVtbl -> EnumAdapters1(This,Adapter,ppAdapter) ) + +#define IDXGIFactory4_IsCurrent(This) \ + ( (This)->lpVtbl -> IsCurrent(This) ) + + +#define IDXGIFactory4_IsWindowedStereoEnabled(This) \ + ( (This)->lpVtbl -> IsWindowedStereoEnabled(This) ) + +#define IDXGIFactory4_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) \ + ( (This)->lpVtbl -> CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) ) + +#define IDXGIFactory4_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) \ + ( (This)->lpVtbl -> CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) ) + +#define IDXGIFactory4_GetSharedResourceAdapterLuid(This,hResource,pLuid) \ + ( (This)->lpVtbl -> GetSharedResourceAdapterLuid(This,hResource,pLuid) ) + +#define IDXGIFactory4_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) \ + ( (This)->lpVtbl -> RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) ) + +#define IDXGIFactory4_RegisterStereoStatusEvent(This,hEvent,pdwCookie) \ + ( (This)->lpVtbl -> RegisterStereoStatusEvent(This,hEvent,pdwCookie) ) + +#define IDXGIFactory4_UnregisterStereoStatus(This,dwCookie) \ + ( (This)->lpVtbl -> UnregisterStereoStatus(This,dwCookie) ) + +#define IDXGIFactory4_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) \ + ( (This)->lpVtbl -> RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) ) + +#define IDXGIFactory4_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) \ + ( (This)->lpVtbl -> RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) ) + +#define IDXGIFactory4_UnregisterOcclusionStatus(This,dwCookie) \ + ( (This)->lpVtbl -> UnregisterOcclusionStatus(This,dwCookie) ) + +#define IDXGIFactory4_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) \ + ( (This)->lpVtbl -> CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) ) + + +#define IDXGIFactory4_GetCreationFlags(This) \ + ( (This)->lpVtbl -> GetCreationFlags(This) ) + + +#define IDXGIFactory4_EnumAdapterByLuid(This,AdapterLuid,riid,ppvAdapter) \ + ( (This)->lpVtbl -> EnumAdapterByLuid(This,AdapterLuid,riid,ppvAdapter) ) + +#define IDXGIFactory4_EnumWarpAdapter(This,riid,ppvAdapter) \ + ( (This)->lpVtbl -> EnumWarpAdapter(This,riid,ppvAdapter) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIFactory4_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi1_4_0000_0003 */ +/* [local] */ + +typedef +enum DXGI_MEMORY_SEGMENT_GROUP + { + DXGI_MEMORY_SEGMENT_GROUP_LOCAL = 0, + DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL = 1 + } DXGI_MEMORY_SEGMENT_GROUP; + +typedef struct DXGI_QUERY_VIDEO_MEMORY_INFO + { + UINT64 Budget; + UINT64 CurrentUsage; + UINT64 AvailableForReservation; + UINT64 CurrentReservation; + } DXGI_QUERY_VIDEO_MEMORY_INFO; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0003_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0003_v0_0_s_ifspec; + +#ifndef __IDXGIAdapter3_INTERFACE_DEFINED__ +#define __IDXGIAdapter3_INTERFACE_DEFINED__ + +/* interface IDXGIAdapter3 */ +/* [unique][local][uuid][object] */ + + +EXTERN_C const IID IID_IDXGIAdapter3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("645967A4-1392-4310-A798-8053CE3E93FD") + IDXGIAdapter3 : public IDXGIAdapter2 + { + public: + virtual HRESULT STDMETHODCALLTYPE RegisterHardwareContentProtectionTeardownStatusEvent( + /* [annotation][in] */ + _In_ HANDLE hEvent, + /* [annotation][out] */ + _Out_ DWORD *pdwCookie) = 0; + + virtual void STDMETHODCALLTYPE UnregisterHardwareContentProtectionTeardownStatus( + /* [annotation][in] */ + _In_ DWORD dwCookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE QueryVideoMemoryInfo( + /* [annotation][in] */ + _In_ UINT NodeIndex, + /* [annotation][in] */ + _In_ DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, + /* [annotation][out] */ + _Out_ DXGI_QUERY_VIDEO_MEMORY_INFO *pVideoMemoryInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoMemoryReservation( + /* [annotation][in] */ + _In_ UINT NodeIndex, + /* [annotation][in] */ + _In_ DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, + /* [annotation][in] */ + _In_ UINT64 Reservation) = 0; + + virtual HRESULT STDMETHODCALLTYPE RegisterVideoMemoryBudgetChangeNotificationEvent( + /* [annotation][in] */ + _In_ HANDLE hEvent, + /* [annotation][out] */ + _Out_ DWORD *pdwCookie) = 0; + + virtual void STDMETHODCALLTYPE UnregisterVideoMemoryBudgetChangeNotification( + /* [annotation][in] */ + _In_ DWORD dwCookie) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDXGIAdapter3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGIAdapter3 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGIAdapter3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGIAdapter3 * This); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateData )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [in] */ UINT DataSize, + /* [annotation][in] */ + _In_reads_bytes_(DataSize) const void *pData); + + HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][in] */ + _In_opt_ const IUnknown *pUnknown); + + HRESULT ( STDMETHODCALLTYPE *GetPrivateData )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ REFGUID Name, + /* [annotation][out][in] */ + _Inout_ UINT *pDataSize, + /* [annotation][out] */ + _Out_writes_bytes_(*pDataSize) void *pData); + + HRESULT ( STDMETHODCALLTYPE *GetParent )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][retval][out] */ + _COM_Outptr_ void **ppParent); + + HRESULT ( STDMETHODCALLTYPE *EnumOutputs )( + IDXGIAdapter3 * This, + /* [in] */ UINT Output, + /* [annotation][out][in] */ + _COM_Outptr_ IDXGIOutput **ppOutput); + + HRESULT ( STDMETHODCALLTYPE *GetDesc )( + IDXGIAdapter3 * This, + /* [annotation][out] */ + _Out_ DXGI_ADAPTER_DESC *pDesc); + + HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ REFGUID InterfaceName, + /* [annotation][out] */ + _Out_ LARGE_INTEGER *pUMDVersion); + + HRESULT ( STDMETHODCALLTYPE *GetDesc1 )( + IDXGIAdapter3 * This, + /* [annotation][out] */ + _Out_ DXGI_ADAPTER_DESC1 *pDesc); + + HRESULT ( STDMETHODCALLTYPE *GetDesc2 )( + IDXGIAdapter3 * This, + /* [annotation][out] */ + _Out_ DXGI_ADAPTER_DESC2 *pDesc); + + HRESULT ( STDMETHODCALLTYPE *RegisterHardwareContentProtectionTeardownStatusEvent )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ HANDLE hEvent, + /* [annotation][out] */ + _Out_ DWORD *pdwCookie); + + void ( STDMETHODCALLTYPE *UnregisterHardwareContentProtectionTeardownStatus )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ DWORD dwCookie); + + HRESULT ( STDMETHODCALLTYPE *QueryVideoMemoryInfo )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ UINT NodeIndex, + /* [annotation][in] */ + _In_ DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, + /* [annotation][out] */ + _Out_ DXGI_QUERY_VIDEO_MEMORY_INFO *pVideoMemoryInfo); + + HRESULT ( STDMETHODCALLTYPE *SetVideoMemoryReservation )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ UINT NodeIndex, + /* [annotation][in] */ + _In_ DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, + /* [annotation][in] */ + _In_ UINT64 Reservation); + + HRESULT ( STDMETHODCALLTYPE *RegisterVideoMemoryBudgetChangeNotificationEvent )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ HANDLE hEvent, + /* [annotation][out] */ + _Out_ DWORD *pdwCookie); + + void ( STDMETHODCALLTYPE *UnregisterVideoMemoryBudgetChangeNotification )( + IDXGIAdapter3 * This, + /* [annotation][in] */ + _In_ DWORD dwCookie); + + END_INTERFACE + } IDXGIAdapter3Vtbl; + + interface IDXGIAdapter3 + { + CONST_VTBL struct IDXGIAdapter3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGIAdapter3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDXGIAdapter3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDXGIAdapter3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDXGIAdapter3_SetPrivateData(This,Name,DataSize,pData) \ + ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) ) + +#define IDXGIAdapter3_SetPrivateDataInterface(This,Name,pUnknown) \ + ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) ) + +#define IDXGIAdapter3_GetPrivateData(This,Name,pDataSize,pData) \ + ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) ) + +#define IDXGIAdapter3_GetParent(This,riid,ppParent) \ + ( (This)->lpVtbl -> GetParent(This,riid,ppParent) ) + + +#define IDXGIAdapter3_EnumOutputs(This,Output,ppOutput) \ + ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) ) + +#define IDXGIAdapter3_GetDesc(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc(This,pDesc) ) + +#define IDXGIAdapter3_CheckInterfaceSupport(This,InterfaceName,pUMDVersion) \ + ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) ) + + +#define IDXGIAdapter3_GetDesc1(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc1(This,pDesc) ) + + +#define IDXGIAdapter3_GetDesc2(This,pDesc) \ + ( (This)->lpVtbl -> GetDesc2(This,pDesc) ) + + +#define IDXGIAdapter3_RegisterHardwareContentProtectionTeardownStatusEvent(This,hEvent,pdwCookie) \ + ( (This)->lpVtbl -> RegisterHardwareContentProtectionTeardownStatusEvent(This,hEvent,pdwCookie) ) + +#define IDXGIAdapter3_UnregisterHardwareContentProtectionTeardownStatus(This,dwCookie) \ + ( (This)->lpVtbl -> UnregisterHardwareContentProtectionTeardownStatus(This,dwCookie) ) + +#define IDXGIAdapter3_QueryVideoMemoryInfo(This,NodeIndex,MemorySegmentGroup,pVideoMemoryInfo) \ + ( (This)->lpVtbl -> QueryVideoMemoryInfo(This,NodeIndex,MemorySegmentGroup,pVideoMemoryInfo) ) + +#define IDXGIAdapter3_SetVideoMemoryReservation(This,NodeIndex,MemorySegmentGroup,Reservation) \ + ( (This)->lpVtbl -> SetVideoMemoryReservation(This,NodeIndex,MemorySegmentGroup,Reservation) ) + +#define IDXGIAdapter3_RegisterVideoMemoryBudgetChangeNotificationEvent(This,hEvent,pdwCookie) \ + ( (This)->lpVtbl -> RegisterVideoMemoryBudgetChangeNotificationEvent(This,hEvent,pdwCookie) ) + +#define IDXGIAdapter3_UnregisterVideoMemoryBudgetChangeNotification(This,dwCookie) \ + ( (This)->lpVtbl -> UnregisterVideoMemoryBudgetChangeNotification(This,dwCookie) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDXGIAdapter3_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxgi1_4_0000_0004 */ +/* [local] */ + +#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */ +#pragma endregion +DEFINE_GUID(IID_IDXGISwapChain3,0x94d99bdb,0xf1f8,0x4ab0,0xb2,0x36,0x7d,0xa0,0x17,0x0e,0xda,0xb1); +DEFINE_GUID(IID_IDXGIOutput4,0xdc7dca35,0x2196,0x414d,0x9F,0x53,0x61,0x78,0x84,0x03,0x2a,0x60); +DEFINE_GUID(IID_IDXGIFactory4,0x1bc6ea02,0xef36,0x464f,0xbf,0x0c,0x21,0xca,0x39,0xe5,0x16,0x8a); +DEFINE_GUID(IID_IDXGIAdapter3,0x645967A4,0x1392,0x4310,0xA7,0x98,0x80,0x53,0xCE,0x3E,0x93,0xFD); + + +extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0004_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0004_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/src/pc/gfx/gfx_direct3d12.cpp b/src/pc/gfx/gfx_direct3d12.cpp index 90f3cd08..e01ce720 100644 --- a/src/pc/gfx/gfx_direct3d12.cpp +++ b/src/pc/gfx/gfx_direct3d12.cpp @@ -23,10 +23,10 @@ #include #include -#include "dxsdk/dxgi.h" -#include "dxsdk/dxgi1_4.h" -#include "dxsdk/d3d12.h" -#include "dxsdk/d3dcompiler.h" +#include +#include +#include +#include #include "dxsdk/d3dx12.h" @@ -36,8 +36,10 @@ #include extern "C" { +#include "../cliopts.h" #include "../configfile.h" #include "../platform.h" +#include "../pc_main.h" } #include "gfx_cc.h" @@ -790,11 +792,19 @@ static void onkeyup(WPARAM w_param, LPARAM l_param) { LRESULT CALLBACK gfx_d3d12_dxgi_wnd_proc(HWND h_wnd, UINT message, WPARAM w_param, LPARAM l_param) { switch (message) { + case WM_MOVE: { + const int x = (short)LOWORD(l_param); + const int y = (short)HIWORD(l_param); + configWindow.x = (x < 0) ? 0 : x; + configWindow.y = (y < 0) ? 0 : y; + break; + } case WM_SIZE: gfx_d3d12_dxgi_on_resize(); break; case WM_DESTROY: - exit(0); + game_exit(); + break; case WM_PAINT: if (d3d.run_one_game_iter != nullptr) d3d.run_one_game_iter(); From 3557e895fea5cdb9d963a03917246fa165c1e400 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 11 Jun 2020 06:12:03 +0300 Subject: [PATCH 133/166] add apply button to display settings --- include/text_options_strings.h.in | 2 ++ src/game/options_menu.c | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 20b36f5c..194ddbbb 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -52,6 +52,7 @@ #define TEXT_RESET_WINDOW _("RESET WINDOW") #define TEXT_OPT_HUD _("HUD") #define TEXT_OPT_THREEPOINT _("THREE POINT") +#define TEXT_OPT_APPLY _("APPLY") #define TEXT_BIND_A _("A BUTTON") #define TEXT_BIND_B _("B BUTTON") @@ -111,6 +112,7 @@ #define TEXT_RESET_WINDOW _("Reset Window") #define TEXT_OPT_HUD _("HUD") #define TEXT_OPT_THREEPOINT _("Three-point") +#define TEXT_OPT_APPLY _("Apply") #define TEXT_BIND_A _("A Button") #define TEXT_BIND_B _("B Button") diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 6b2c5bf8..5700700d 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -81,6 +81,7 @@ static const u8 optsVideoStr[][32] = { { TEXT_OPT_DOUBLE }, { TEXT_OPT_HUD }, { TEXT_OPT_THREEPOINT }, + { TEXT_OPT_APPLY }, }; static const u8 optsAudioStr[][32] = { @@ -206,6 +207,10 @@ static void optvideo_reset_window(UNUSED struct Option *self, s32 arg) { } } +static void optvideo_apply(UNUSED struct Option *self, s32 arg) { + if (!arg) configWindow.settings_changed = true; +} + /* submenu option lists */ #ifdef BETTERCAMERA @@ -247,8 +252,9 @@ static struct Option optsVideo[] = { DEF_OPT_TOGGLE( optsVideoStr[0], &configWindow.fullscreen ), DEF_OPT_CHOICE( optsVideoStr[5], &configWindow.vsync, vsyncChoices ), DEF_OPT_CHOICE( optsVideoStr[1], &configFiltering, filterChoices ), - DEF_OPT_BUTTON( optsVideoStr[4], optvideo_reset_window ), DEF_OPT_TOGGLE( optsVideoStr[7], &configHUD ), + DEF_OPT_BUTTON( optsVideoStr[4], optvideo_reset_window ), + DEF_OPT_BUTTON( optsVideoStr[9], optvideo_apply ), }; static struct Option optsAudio[] = { From 8788cfa3adfef16501ca4179ee088e8ba57af27a Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 11 Jun 2020 06:17:14 +0300 Subject: [PATCH 134/166] d3d11 renderer now uses the configWindow values d3d12 renderer still doesn't because I can't test it --- src/pc/configfile.c | 12 +--- src/pc/gfx/gfx_direct3d11.cpp | 89 +++++++++++++++++++++++------ src/pc/gfx/gfx_sdl2.c | 27 +++++---- src/pc/gfx/gfx_window_manager_api.h | 3 + src/pc/pc_main.c | 5 ++ 5 files changed, 99 insertions(+), 37 deletions(-) diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 1af4bfb5..f778ab76 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -6,17 +6,11 @@ #include #include -#ifdef WAPI_SDL2 -# include -# define WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED -#else -# define WINDOWPOS_CENTERED 0 -#endif - #include "platform.h" #include "configfile.h" #include "cliopts.h" #include "gfx/gfx_screen_config.h" +#include "gfx/gfx_window_manager_api.h" #include "controller/controller_api.h" #include "fs/fs.h" @@ -45,8 +39,8 @@ struct ConfigOption { // Video/audio stuff ConfigWindow configWindow = { - .x = WINDOWPOS_CENTERED, - .y = WINDOWPOS_CENTERED, + .x = WAPI_WIN_CENTERPOS, + .y = WAPI_WIN_CENTERPOS, .w = DESIRED_SCREEN_WIDTH, .h = DESIRED_SCREEN_HEIGHT, .vsync = 1, diff --git a/src/pc/gfx/gfx_direct3d11.cpp b/src/pc/gfx/gfx_direct3d11.cpp index b81bbec6..b6fbaf5e 100644 --- a/src/pc/gfx/gfx_direct3d11.cpp +++ b/src/pc/gfx/gfx_direct3d11.cpp @@ -15,8 +15,10 @@ #include extern "C" { +#include "../cliopts.h" #include "../configfile.h" #include "../platform.h" +#include "../pc_main.h" } #ifndef _LANGUAGE_C @@ -142,8 +144,11 @@ static uint8_t sync_interval; static RECT last_window_rect; static bool is_full_screen, last_maximized_state; -static void toggle_borderless_window_full_screen() { +static void toggle_borderless_window_full_screen(void) { if (is_full_screen) { + // set this right away so the fucking wndproc doesn't bother with anything stupid + is_full_screen = false; + RECT r = last_window_rect; // Set in window mode with the last saved position and size @@ -156,9 +161,10 @@ static void toggle_borderless_window_full_screen() { SetWindowPos(h_wnd, NULL, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_FRAMECHANGED); ShowWindow(h_wnd, SW_RESTORE); } - - is_full_screen = false; } else { + // set this right away so the fucking wndproc doesn't bother with anything stupid + is_full_screen = true; + // Save if window is maximized or not WINDOWPLACEMENT window_placement; window_placement.length = sizeof(WINDOWPLACEMENT); @@ -167,6 +173,10 @@ static void toggle_borderless_window_full_screen() { // Save window position and size if the window is not maximized GetWindowRect(h_wnd, &last_window_rect); + configWindow.x = last_window_rect.left; + configWindow.y = last_window_rect.top; + configWindow.w = last_window_rect.right - last_window_rect.left; + configWindow.h = last_window_rect.bottom - last_window_rect.top; // Get in which monitor the window is HMONITOR h_monitor = MonitorFromWindow(h_wnd, MONITOR_DEFAULTTONEAREST); @@ -180,8 +190,6 @@ static void toggle_borderless_window_full_screen() { // Set borderless full screen to that monitor SetWindowLongPtr(h_wnd, GWL_STYLE, WS_VISIBLE | WS_POPUP); SetWindowPos(h_wnd, HWND_TOP, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_FRAMECHANGED); - - is_full_screen = true; } } @@ -250,6 +258,20 @@ static void create_render_target_views(uint32_t width, uint32_t height) { d3d.current_height = height; } +static void update_screen_settings(void) { + if (configWindow.fullscreen != is_full_screen) + toggle_borderless_window_full_screen(); + if (!is_full_screen) { + const int screen_width = GetSystemMetrics(SM_CXSCREEN); + const int screen_height = GetSystemMetrics(SM_CYSCREEN); + const int xpos = (configWindow.x == WAPI_WIN_CENTERPOS) ? (screen_width - configWindow.w) * 0.5 : configWindow.x; + const int ypos = (configWindow.y == WAPI_WIN_CENTERPOS) ? (screen_height - configWindow.h) * 0.5 : configWindow.y; + RECT wr = { xpos, ypos, xpos + (int)configWindow.w, ypos + (int)configWindow.h }; + AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE); + SetWindowPos(h_wnd, NULL, wr.left, wr.top, wr.right - wr.left, wr.bottom - wr.top, SWP_NOACTIVATE | SWP_NOZORDER); + } +} + static void calculate_sync_interval() { const POINT ptZero = { 0, 0 }; HMONITOR h_monitor = MonitorFromPoint(ptZero, MONITOR_DEFAULTTOPRIMARY); @@ -278,10 +300,24 @@ static void calculate_sync_interval() { LRESULT CALLBACK gfx_d3d11_dxgi_wnd_proc(HWND h_wnd, UINT message, WPARAM w_param, LPARAM l_param) { switch (message) { + case WM_MOVE: + if (!is_full_screen) { + const int x = (short)LOWORD(l_param); + const int y = (short)HIWORD(l_param); + configWindow.x = (x < 0) ? 0 : x; + configWindow.y = (y < 0) ? 0 : y; + } + break; case WM_SIZE: { RECT rect; GetClientRect(h_wnd, &rect); - create_render_target_views(rect.right - rect.left, rect.bottom - rect.top); + const int w = rect.right - rect.left; + const int h = rect.bottom - rect.top; + if (!is_full_screen) { + configWindow.w = w; + configWindow.h = h; + } + create_render_target_views(w, h); break; } case WM_EXITSIZEMOVE: { @@ -304,7 +340,7 @@ LRESULT CALLBACK gfx_d3d11_dxgi_wnd_proc(HWND h_wnd, UINT message, WPARAM w_para #if DEBUG_D3D d3d.debug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL); #endif - exit(0); + game_exit(); break; } case WM_ACTIVATEAPP: { @@ -333,11 +369,29 @@ LRESULT CALLBACK gfx_d3d11_dxgi_wnd_proc(HWND h_wnd, UINT message, WPARAM w_para } break; } - default: { - return DefWindowProcW(h_wnd, message, w_param, l_param); - } + default: + break; } - return 0; + + // check if we should change size or fullscreen state + + if (configWindow.reset) { + last_maximized_state = false; + configWindow.reset = false; + configWindow.x = WAPI_WIN_CENTERPOS; + configWindow.y = WAPI_WIN_CENTERPOS; + configWindow.w = DESIRED_SCREEN_WIDTH; + configWindow.h = DESIRED_SCREEN_HEIGHT; + configWindow.fullscreen = false; + configWindow.settings_changed = true; + } + + if (configWindow.settings_changed) { + configWindow.settings_changed = false; + update_screen_settings(); + } + + return DefWindowProcW(h_wnd, message, w_param, l_param); } static void gfx_d3d11_dxgi_init(const char *window_title) { @@ -375,12 +429,12 @@ static void gfx_d3d11_dxgi_init(const char *window_title) { is_full_screen = false; - // Center window + // Center window if the current position in the config is set to auto, otherwise use that position int screen_width = GetSystemMetrics(SM_CXSCREEN); int screen_height = GetSystemMetrics(SM_CYSCREEN); - int xPos = (screen_width - wr.right) * 0.5; - int yPos = (screen_height - wr.bottom) * 0.5; + int xPos = (configWindow.x == WAPI_WIN_CENTERPOS) ? (screen_width - wr.right) * 0.5 : configWindow.x; + int yPos = (configWindow.y == WAPI_WIN_CENTERPOS) ? (screen_height - wr.bottom) * 0.5 : configWindow.y; SetWindowPos(h_wnd, 0, xPos, yPos, 0, 0, SWP_NOZORDER | SWP_NOSIZE); // Check if a lower latency flip model can be used @@ -586,9 +640,12 @@ static void gfx_d3d11_dxgi_init(const char *window_title) { calculate_sync_interval(); - // Show the window + // Reshape the window according to the config values - ShowWindow(h_wnd, SW_SHOW); + update_screen_settings(); + + if (!is_full_screen) + ShowWindow(h_wnd, SW_SHOW); } static void gfx_d3d11_dxgi_shutdown(void) { diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index 94020e62..081019db 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -121,12 +121,12 @@ static void gfx_sdl_set_fullscreen() { } } -static void gfx_sdl_reset_dimension_and_pos() { +static void gfx_sdl_reset_dimension_and_pos(void) { if (configWindow.exiting_fullscreen) { configWindow.exiting_fullscreen = false; } else if (configWindow.reset) { - configWindow.x = SDL_WINDOWPOS_CENTERED; - configWindow.y = SDL_WINDOWPOS_CENTERED; + configWindow.x = WAPI_WIN_CENTERPOS; + configWindow.y = WAPI_WIN_CENTERPOS; configWindow.w = DESIRED_SCREEN_WIDTH; configWindow.h = DESIRED_SCREEN_HEIGHT; configWindow.reset = false; @@ -139,9 +139,11 @@ static void gfx_sdl_reset_dimension_and_pos() { return; } - configWindow.settings_changed = false; + int xpos = (configWindow.x = WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.x; + int ypos = (configWindow.y = WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.y; + SDL_SetWindowSize(wnd, configWindow.w, configWindow.h); - SDL_SetWindowPosition(wnd, configWindow.x, configWindow.y); + SDL_SetWindowPosition(wnd, xpos, ypos); SDL_GL_SetSwapInterval(configWindow.vsync); // in case vsync changed } @@ -160,14 +162,12 @@ static void gfx_sdl_init(const char *window_title) { //SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); //SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4); - if (gCLIOpts.FullScreen == 1) - configWindow.fullscreen = true; - else if (gCLIOpts.FullScreen == 2) - configWindow.fullscreen = false; + int xpos = (configWindow.x = WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.x; + int ypos = (configWindow.y = WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.y; wnd = SDL_CreateWindow( window_title, - configWindow.x, configWindow.y, configWindow.w, configWindow.h, + xpos, ypos, configWindow.w, configWindow.h, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE ); ctx = SDL_GL_CreateContext(wnd); @@ -269,8 +269,11 @@ static void gfx_sdl_handle_events(void) { } } - gfx_sdl_reset_dimension_and_pos(); - gfx_sdl_set_fullscreen(); + if (configWindow.settings_changed) { + gfx_sdl_reset_dimension_and_pos(); + gfx_sdl_set_fullscreen(); + configWindow.settings_changed = false; + } } static void gfx_sdl_set_keyboard_callbacks(kb_callback_t on_key_down, kb_callback_t on_key_up, void (*on_all_keys_up)(void)) { diff --git a/src/pc/gfx/gfx_window_manager_api.h b/src/pc/gfx/gfx_window_manager_api.h index 44260a97..67ce5d1a 100644 --- a/src/pc/gfx/gfx_window_manager_api.h +++ b/src/pc/gfx/gfx_window_manager_api.h @@ -4,6 +4,9 @@ #include #include +// special value for window position that signifies centered position +#define WAPI_WIN_CENTERPOS 0xFFFFFFFF + typedef bool (*kb_callback_t)(int code); struct GfxWindowManagerAPI { diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 2020464c..c74624e4 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -165,6 +165,11 @@ void main_func(void) { configfile_load(configfile_name()); + if (gCLIOpts.FullScreen == 1) + configWindow.fullscreen = true; + else if (gCLIOpts.FullScreen == 2) + configWindow.fullscreen = false; + #if defined(WAPI_SDL1) || defined(WAPI_SDL2) wm_api = &gfx_sdl; #elif defined(WAPI_DXGI) From 36bdb54d5e5a3717bfcfac8310571de71d427eab Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 11 Jun 2020 06:33:43 +0300 Subject: [PATCH 135/166] remove precision specifiers from the three-point shader gives better compatibility on desktop GL probably shouldn't be used on GLES anyway --- src/pc/gfx/gfx_opengl.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 9c0a0525..0996b850 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -310,22 +310,22 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad if (used_textures[0] || used_textures[1]) { if (configFiltering == 2) { append_line(fs_buf, &fs_len, "#define TEX_OFFSET(off) texture2D(tex, texCoord - (off)/texSize)"); - append_line(fs_buf, &fs_len, "lowp vec4 filter3point(in sampler2D tex, in mediump vec2 texCoord, in mediump vec2 texSize) {"); - append_line(fs_buf, &fs_len, " mediump vec2 offset = fract(texCoord*texSize - vec2(0.5));"); + append_line(fs_buf, &fs_len, "vec4 filter3point(in sampler2D tex, in vec2 texCoord, in vec2 texSize) {"); + append_line(fs_buf, &fs_len, " vec2 offset = fract(texCoord*texSize - vec2(0.5));"); append_line(fs_buf, &fs_len, " offset -= step(1.0, offset.x + offset.y);"); - append_line(fs_buf, &fs_len, " lowp vec4 c0 = TEX_OFFSET(offset);"); - append_line(fs_buf, &fs_len, " lowp vec4 c1 = TEX_OFFSET(vec2(offset.x - sign(offset.x), offset.y));"); - append_line(fs_buf, &fs_len, " lowp vec4 c2 = TEX_OFFSET(vec2(offset.x, offset.y - sign(offset.y)));"); + append_line(fs_buf, &fs_len, " vec4 c0 = TEX_OFFSET(offset);"); + append_line(fs_buf, &fs_len, " vec4 c1 = TEX_OFFSET(vec2(offset.x - sign(offset.x), offset.y));"); + append_line(fs_buf, &fs_len, " vec4 c2 = TEX_OFFSET(vec2(offset.x, offset.y - sign(offset.y)));"); append_line(fs_buf, &fs_len, " return c0 + abs(offset.x)*(c1-c0) + abs(offset.y)*(c2-c0);"); append_line(fs_buf, &fs_len, "}"); - append_line(fs_buf, &fs_len, "lowp vec4 sampleTex(in sampler2D tex, in mediump vec2 uv, in mediump vec2 texSize, in bool filter) {"); + append_line(fs_buf, &fs_len, "vec4 sampleTex(in sampler2D tex, in vec2 uv, in vec2 texSize, in bool filter) {"); append_line(fs_buf, &fs_len, "if (filter)"); append_line(fs_buf, &fs_len, "return filter3point(tex, uv, texSize);"); append_line(fs_buf, &fs_len, "else"); append_line(fs_buf, &fs_len, "return texture2D(tex, uv);"); append_line(fs_buf, &fs_len, "}"); } else { - append_line(fs_buf, &fs_len, "lowp vec4 sampleTex(in sampler2D tex, in mediump vec2 uv, in mediump vec2 texSize, in bool filter) {"); + append_line(fs_buf, &fs_len, "vec4 sampleTex(in sampler2D tex, in vec2 uv, in vec2 texSize, in bool filter) {"); append_line(fs_buf, &fs_len, "return texture2D(tex, uv);"); append_line(fs_buf, &fs_len, "}"); } From aa5dfaa7c23847e5bb66482e6eba16551e89b10e Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 12 Jun 2020 00:23:47 +0300 Subject: [PATCH 136/166] 'properly' disable noise effect scaling --- src/pc/gfx/gfx_direct3d11.cpp | 6 +++--- src/pc/gfx/gfx_opengl.c | 19 ++++++------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/pc/gfx/gfx_direct3d11.cpp b/src/pc/gfx/gfx_direct3d11.cpp index b6fbaf5e..0d0428bd 100644 --- a/src/pc/gfx/gfx_direct3d11.cpp +++ b/src/pc/gfx/gfx_direct3d11.cpp @@ -1307,9 +1307,9 @@ static void gfx_d3d11_start_frame(void) { // No high values, as noise starts to look ugly d3d.per_frame_cb_data.noise_frame = 0; } - float aspect_ratio = (float) d3d.current_width / (float) d3d.current_height; - d3d.per_frame_cb_data.noise_scale_x = 120 * aspect_ratio; // 120 = N64 height resolution (240) / 2 - d3d.per_frame_cb_data.noise_scale_y = 120; + + d3d.per_frame_cb_data.noise_scale_x = (float) d3d.current_width; + d3d.per_frame_cb_data.noise_scale_y = (float) d3d.current_height; D3D11_MAPPED_SUBRESOURCE ms; ZeroMemory(&ms, sizeof(D3D11_MAPPED_SUBRESOURCE)); diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 0996b850..736fbd03 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -42,7 +42,7 @@ struct ShaderProgram { bool used_textures[2]; uint8_t num_floats; GLint attrib_locations[7]; - GLint uniform_locations[6]; + GLint uniform_locations[5]; uint8_t attrib_sizes[7]; uint8_t num_attribs; bool used_noise; @@ -67,7 +67,6 @@ static struct GLTexture *opengl_tex[2]; static int opengl_curtex = 0; static uint32_t frame_count; -static uint32_t current_height; static bool gfx_opengl_z_is_from_0_to_1(void) { return false; @@ -85,10 +84,8 @@ static void gfx_opengl_vertex_array_set_attribs(struct ShaderProgram *prg) { } static inline void gfx_opengl_set_shader_uniforms(struct ShaderProgram *prg) { - if (prg->used_noise) { - glUniform1i(prg->uniform_locations[4], frame_count); - glUniform1i(prg->uniform_locations[5], current_height); - } + if (prg->used_noise) + glUniform1f(prg->uniform_locations[4], (float)frame_count); } static inline void gfx_opengl_set_texture_uniforms(struct ShaderProgram *prg, const int tile) { @@ -332,8 +329,7 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad } if (opt_alpha && opt_noise) { - append_line(fs_buf, &fs_len, "uniform int frame_count;"); - append_line(fs_buf, &fs_len, "uniform int window_height;"); + append_line(fs_buf, &fs_len, "uniform float frame_count;"); append_line(fs_buf, &fs_len, "float random(in vec3 value) {"); append_line(fs_buf, &fs_len, " float random = dot(sin(value), vec3(12.9898, 78.233, 37.719));"); @@ -374,9 +370,8 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad } } - if (opt_alpha && opt_noise) { - append_line(fs_buf, &fs_len, "texel.a *= floor(random(vec3(floor(gl_FragCoord.xy * float(window_height)), float(frame_count))) + 0.5);"); - } + if (opt_alpha && opt_noise) + append_line(fs_buf, &fs_len, "texel.a *= floor(random(floor(vec3(gl_FragCoord.xy, frame_count))) + 0.5);"); if (opt_alpha) { append_line(fs_buf, &fs_len, "gl_FragColor = texel;"); @@ -483,7 +478,6 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad if (opt_alpha && opt_noise) { prg->uniform_locations[4] = glGetUniformLocation(shader_program, "frame_count"); - prg->uniform_locations[5] = glGetUniformLocation(shader_program, "window_height"); prg->used_noise = true; } else { prg->used_noise = false; @@ -579,7 +573,6 @@ static void gfx_opengl_set_zmode_decal(bool zmode_decal) { static void gfx_opengl_set_viewport(int x, int y, int width, int height) { glViewport(x, y, width, height); - current_height = height; } static void gfx_opengl_set_scissor(int x, int y, int width, int height) { From 49dc1e34953aa031e83b84a965aff7a4cd819a7d Mon Sep 17 00:00:00 2001 From: NoHomoBoi <36680385+KiritoDv@users.noreply.github.com> Date: Thu, 11 Jun 2020 22:39:13 -0500 Subject: [PATCH 137/166] Added music volume config --- include/text_options_strings.h.in | 1 + src/audio/external.c | 18 +++++++++++++++++- src/audio/external.h | 1 + src/game/options_menu.c | 2 ++ src/pc/configfile.c | 2 ++ src/pc/configfile.h | 1 + src/pc/pc_main.c | 15 +++++++++------ 7 files changed, 33 insertions(+), 7 deletions(-) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 2941bde1..9dbce068 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -105,6 +105,7 @@ #define TEXT_OPT_NEAREST _("Nearest") #define TEXT_OPT_LINEAR _("Linear") #define TEXT_OPT_MVOLUME _("Master Volume") +#define TEXT_OPT_TMUSIC _("Music Volume") #define TEXT_OPT_VSYNC _("Vertical Sync") #define TEXT_OPT_DOUBLE _("Double") #define TEXT_RESET_WINDOW _("Reset Window") diff --git a/src/audio/external.c b/src/audio/external.c index a059c0b5..4c37f8ad 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -15,6 +15,7 @@ #include "seq_ids.h" #include "dialog_ids.h" #include "level_table.h" +#include "pc/configfile.h" #ifdef VERSION_EU #define EU_FLOAT(x) x ## f @@ -2061,6 +2062,20 @@ void play_dialog_sound(u8 dialogID) { #endif } +void setBackgroundMusicVolume(f32 volume){ + bool needsToUpdate = false; + for(int i = 0; i < 16; i++){ + f32 currentVolume = gSequencePlayers[SEQ_PLAYER_LEVEL].channels[i]->volume; + if(volume != currentVolume){ + gSequencePlayers[SEQ_PLAYER_LEVEL].channels[i]->volume = volume; + needsToUpdate = true; + } + } + if(needsToUpdate){ + update_game_sound(); + } +} + void play_music(u8 player, u16 seqArgs, u16 fadeTimer) { u8 seqId = seqArgs & 0xff; u8 priority = seqArgs >> 8; @@ -2069,11 +2084,12 @@ void play_music(u8 player, u16 seqArgs, u16 fadeTimer) { // Except for the background music player, we don't support queued // sequences. Just play them immediately, stopping any old sequence. + if (player != 0) { play_sequence(player, seqId, fadeTimer); return; } - + // Abort if the queue is already full. if (sBackgroundMusicQueueSize == MAX_BG_MUSIC_QUEUE_SIZE) { return; diff --git a/src/audio/external.h b/src/audio/external.h index 2a8d0e6d..2cc97b1f 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -37,6 +37,7 @@ void sound_banks_disable(u8 player, u16 bankMask); void sound_banks_enable(u8 player, u16 bankMask); void func_80320A4C(u8 bankIndex, u8 arg1); void play_dialog_sound(u8 dialogID); +void setBackgroundMusicVolume(f32 volume); void play_music(u8 player, u16 seqArgs, u16 fadeTimer); void stop_background_music(u16 seqId); void fadeout_background_music(u16 arg0, u16 fadeOut); diff --git a/src/game/options_menu.c b/src/game/options_menu.c index d37b6afe..c0a0c847 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -84,6 +84,7 @@ static const u8 optsVideoStr[][32] = { static const u8 optsAudioStr[][32] = { { TEXT_OPT_MVOLUME }, + { TEXT_OPT_TMUSIC }, }; static const u8 optsCheatsStr[][64] = { @@ -251,6 +252,7 @@ static struct Option optsVideo[] = { static struct Option optsAudio[] = { DEF_OPT_SCROLL( optsAudioStr[0], &configMasterVolume, 0, MAX_VOLUME, 1 ), + DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, 100, 1), }; static struct Option optsCheats[] = { diff --git a/src/pc/configfile.c b/src/pc/configfile.c index db420112..46e1ca5b 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -57,6 +57,7 @@ ConfigWindow configWindow = { }; unsigned int configFiltering = 1; // 0=force nearest, 1=linear, (TODO) 2=three-point unsigned int configMasterVolume = MAX_VOLUME; // 0 - MAX_VOLUME +unsigned int configMusicVolume = 100; // Keyboard mappings (VK_ values, by default keyboard/gamepad/mouse) unsigned int configKeyA[MAX_BINDS] = { 0x0026, 0x1000, 0x1103 }; @@ -105,6 +106,7 @@ static const struct ConfigOption options[] = { {.name = "vsync", .type = CONFIG_TYPE_UINT, .uintValue = &configWindow.vsync}, {.name = "texture_filtering", .type = CONFIG_TYPE_UINT, .uintValue = &configFiltering}, {.name = "master_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, + {.name = "music_enabled", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, {.name = "key_a", .type = CONFIG_TYPE_BIND, .uintValue = configKeyA}, {.name = "key_b", .type = CONFIG_TYPE_BIND, .uintValue = configKeyB}, {.name = "key_start", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStart}, diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 48d65379..0c2960f8 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -21,6 +21,7 @@ typedef struct { extern ConfigWindow configWindow; extern unsigned int configFiltering; extern unsigned int configMasterVolume; +extern unsigned int configMusicVolume; extern unsigned int configKeyA[]; extern unsigned int configKeyB[]; extern unsigned int configKeyStart[]; diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index dc85b17e..3cab9eb8 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -67,11 +67,12 @@ void send_display_list(struct SPTask *spTask) { #define printf -void produce_one_frame(void) { +void produce_one_frame(void) { + gfx_start_frame(); game_loop_one_iteration(); - thread6_rumble_loop(NULL); - + thread6_rumble_loop(NULL); + int samples_left = audio_api->buffered(); u32 num_audio_samples = samples_left < audio_api->get_desired_buffered() ? 544 : 528; //printf("Audio samples: %d %u\n", samples_left, num_audio_samples); @@ -83,15 +84,17 @@ void produce_one_frame(void) { u32 num_audio_samples = audio_cnt < 2 ? 528 : 544;*/ create_next_audio_buffer(audio_buffer + i * (num_audio_samples * 2), num_audio_samples); } - //printf("Audio samples before submitting: %d\n", audio_api->buffered()); + //printf("Audio samples before submitting: %d\n", audio_api->buffered()); + + setBackgroundMusicVolume(configMusicVolume / 100.0); // scale by master volume (0-127) const s32 mod = (s32)configMasterVolume; for (u32 i = 0; i < num_audio_samples * 4; ++i) - audio_buffer[i] = ((s32)audio_buffer[i] * mod) >> VOLUME_SHIFT; + audio_buffer[i] = ((s32)audio_buffer[i] * mod) >> VOLUME_SHIFT; audio_api->play((u8*)audio_buffer, 2 * num_audio_samples * 4); - + gfx_end_frame(); } From a632ee21ff44ee64b2c7ade5e2f88a605f754bae Mon Sep 17 00:00:00 2001 From: NoHomoBoi <36680385+KiritoDv@users.noreply.github.com> Date: Fri, 12 Jun 2020 00:53:40 -0500 Subject: [PATCH 138/166] Changed configfile variable name *Changed from music_enabled to music_volume --- src/pc/configfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pc/configfile.c b/src/pc/configfile.c index f5b80a87..f24e53d4 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -100,7 +100,7 @@ static const struct ConfigOption options[] = { {.name = "vsync", .type = CONFIG_TYPE_UINT, .uintValue = &configWindow.vsync}, {.name = "texture_filtering", .type = CONFIG_TYPE_UINT, .uintValue = &configFiltering}, {.name = "master_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, - {.name = "music_enabled", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, + {.name = "music_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, {.name = "key_a", .type = CONFIG_TYPE_BIND, .uintValue = configKeyA}, {.name = "key_b", .type = CONFIG_TYPE_BIND, .uintValue = configKeyB}, {.name = "key_start", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStart}, From 66923e05afc109fff39cab0bc0c037fcafd5f49a Mon Sep 17 00:00:00 2001 From: NoHomoBoi <36680385+KiritoDv@users.noreply.github.com> Date: Fri, 12 Jun 2020 00:55:21 -0500 Subject: [PATCH 139/166] Changed configfile variable value *Changed from configMasterVolume to configMusicVolume --- src/pc/configfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pc/configfile.c b/src/pc/configfile.c index f24e53d4..7b1ce1a8 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -100,7 +100,7 @@ static const struct ConfigOption options[] = { {.name = "vsync", .type = CONFIG_TYPE_UINT, .uintValue = &configWindow.vsync}, {.name = "texture_filtering", .type = CONFIG_TYPE_UINT, .uintValue = &configFiltering}, {.name = "master_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, - {.name = "music_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, + {.name = "music_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMusicVolume}, {.name = "key_a", .type = CONFIG_TYPE_BIND, .uintValue = configKeyA}, {.name = "key_b", .type = CONFIG_TYPE_BIND, .uintValue = configKeyB}, {.name = "key_start", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStart}, From 56c6590bf3f73c84a9703240e5701ce6fd1f0e64 Mon Sep 17 00:00:00 2001 From: NoHomoBoi <36680385+KiritoDv@users.noreply.github.com> Date: Fri, 12 Jun 2020 00:56:51 -0500 Subject: [PATCH 140/166] Fixed config indentation --- src/pc/configfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 7b1ce1a8..a3055f73 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -100,7 +100,7 @@ static const struct ConfigOption options[] = { {.name = "vsync", .type = CONFIG_TYPE_UINT, .uintValue = &configWindow.vsync}, {.name = "texture_filtering", .type = CONFIG_TYPE_UINT, .uintValue = &configFiltering}, {.name = "master_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, - {.name = "music_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMusicVolume}, + {.name = "music_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMusicVolume}, {.name = "key_a", .type = CONFIG_TYPE_BIND, .uintValue = configKeyA}, {.name = "key_b", .type = CONFIG_TYPE_BIND, .uintValue = configKeyB}, {.name = "key_start", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStart}, From 7c341334f0d8e78ac585b16c1b9d35dba0c143d3 Mon Sep 17 00:00:00 2001 From: NoHomoBoi <36680385+KiritoDv@users.noreply.github.com> Date: Fri, 12 Jun 2020 03:22:08 -0500 Subject: [PATCH 141/166] Code cleanup & changed max volume to 127 --- src/audio/external.c | 14 ++------------ src/audio/external.h | 2 +- src/audio/seqplayer.h | 1 + src/game/options_menu.c | 2 +- src/pc/configfile.c | 2 +- src/pc/pc_main.c | 7 ++++--- 6 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/audio/external.c b/src/audio/external.c index 4c37f8ad..9f28ec32 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -2062,18 +2062,8 @@ void play_dialog_sound(u8 dialogID) { #endif } -void setBackgroundMusicVolume(f32 volume){ - bool needsToUpdate = false; - for(int i = 0; i < 16; i++){ - f32 currentVolume = gSequencePlayers[SEQ_PLAYER_LEVEL].channels[i]->volume; - if(volume != currentVolume){ - gSequencePlayers[SEQ_PLAYER_LEVEL].channels[i]->volume = volume; - needsToUpdate = true; - } - } - if(needsToUpdate){ - update_game_sound(); - } +void setBackgroundMusicVolume(s32 volume){ + func_8031D838(SEQ_PLAYER_LEVEL, 0, volume); } void play_music(u8 player, u16 seqArgs, u16 fadeTimer) { diff --git a/src/audio/external.h b/src/audio/external.h index 2cc97b1f..ef902a51 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -37,7 +37,7 @@ void sound_banks_disable(u8 player, u16 bankMask); void sound_banks_enable(u8 player, u16 bankMask); void func_80320A4C(u8 bankIndex, u8 arg1); void play_dialog_sound(u8 dialogID); -void setBackgroundMusicVolume(f32 volume); +void setBackgroundMusicVolume(s32 volume); void play_music(u8 player, u16 seqArgs, u16 fadeTimer); void stop_background_music(u16 seqId); void fadeout_background_music(u16 arg0, u16 fadeOut); diff --git a/src/audio/seqplayer.h b/src/audio/seqplayer.h index 7d91faeb..005b5193 100644 --- a/src/audio/seqplayer.h +++ b/src/audio/seqplayer.h @@ -9,6 +9,7 @@ void sequence_channel_disable(struct SequenceChannel *seqPlayer); void sequence_player_disable(struct SequencePlayer* seqPlayer); void audio_list_push_back(struct AudioListItem *list, struct AudioListItem *item); void *audio_list_pop_back(struct AudioListItem *list); +void sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume); void process_sequences(s32 iterationsRemaining); void init_sequence_player(u32 player); void init_sequence_players(void); diff --git a/src/game/options_menu.c b/src/game/options_menu.c index b82d6a22..660a6d4f 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -260,7 +260,7 @@ static struct Option optsVideo[] = { static struct Option optsAudio[] = { DEF_OPT_SCROLL( optsAudioStr[0], &configMasterVolume, 0, MAX_VOLUME, 1 ), - DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, 100, 1), + DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, MAX_VOLUME, 1), }; static struct Option optsCheats[] = { diff --git a/src/pc/configfile.c b/src/pc/configfile.c index a3055f73..6a6b6bd4 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -51,7 +51,7 @@ ConfigWindow configWindow = { }; unsigned int configFiltering = 1; // 0=force nearest, 1=linear, (TODO) 2=three-point unsigned int configMasterVolume = MAX_VOLUME; // 0 - MAX_VOLUME -unsigned int configMusicVolume = 100; +unsigned int configMusicVolume = MAX_VOLUME; // Keyboard mappings (VK_ values, by default keyboard/gamepad/mouse) unsigned int configKeyA[MAX_BINDS] = { 0x0026, 0x1000, 0x1103 }; diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 3db52ed1..8843930f 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -73,6 +73,9 @@ void send_display_list(struct SPTask *spTask) { void produce_one_frame(void) { gfx_start_frame(); + + setBackgroundMusicVolume((s32)configMusicVolume); + game_loop_one_iteration(); thread6_rumble_loop(NULL); @@ -87,9 +90,7 @@ void produce_one_frame(void) { u32 num_audio_samples = audio_cnt < 2 ? 528 : 544;*/ create_next_audio_buffer(audio_buffer + i * (num_audio_samples * 2), num_audio_samples); } - //printf("Audio samples before submitting: %d\n", audio_api->buffered()); - - setBackgroundMusicVolume(configMusicVolume / 100.0); + //printf("Audio samples before submitting: %d\n", audio_api->buffered()); // scale by master volume (0-127) const s32 mod = (s32)configMasterVolume; From 8c1257eca1db09c28a5ef614fbc6df94c4d9546b Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 12 Jun 2020 23:43:45 +0300 Subject: [PATCH 142/166] replace full audiofile source with a stripped down single-file version same idea as n64decomp/sm64's armips.cpp you can generate the file by applying tools/util/audiofile_strip.patch and running tools/util/generate_audiofile_cpp.py on a full audiofile source package --- tools/Makefile | 12 +- tools/audiofile-0.3.6/ACKNOWLEDGEMENTS | 25 - tools/audiofile-0.3.6/AUTHORS | 5 - tools/audiofile-0.3.6/COPYING | 502 - tools/audiofile-0.3.6/COPYING.GPL | 339 - tools/audiofile-0.3.6/ChangeLog | 1953 -- tools/audiofile-0.3.6/INSTALL | 182 - tools/audiofile-0.3.6/Makefile | 898 - tools/audiofile-0.3.6/Makefile.am | 58 - tools/audiofile-0.3.6/Makefile.in | 898 - tools/audiofile-0.3.6/NEWS | 53 - tools/audiofile-0.3.6/NOTES | 41 - tools/audiofile-0.3.6/README | 64 - tools/audiofile-0.3.6/TODO | 32 - tools/audiofile-0.3.6/aclocal.m4 | 10284 -------- .../audiofile-0.3.6/audiofile-uninstalled.pc | 6 - .../audiofile-uninstalled.pc.in | 6 - tools/audiofile-0.3.6/audiofile.pc | 12 - tools/audiofile-0.3.6/audiofile.pc.in | 12 - tools/audiofile-0.3.6/audiofile.spec | 69 - tools/audiofile-0.3.6/audiofile.spec.in | 69 - tools/audiofile-0.3.6/autom4te.cache/output.0 | 19712 --------------- tools/audiofile-0.3.6/autom4te.cache/output.1 | 19716 ---------------- tools/audiofile-0.3.6/autom4te.cache/requests | 300 - tools/audiofile-0.3.6/autom4te.cache/traces.0 | 728 - tools/audiofile-0.3.6/autom4te.cache/traces.1 | 2766 --- tools/audiofile-0.3.6/config.guess | 1530 -- tools/audiofile-0.3.6/config.h | 103 - tools/audiofile-0.3.6/config.h.in | 102 - tools/audiofile-0.3.6/config.h.in~ | 103 - tools/audiofile-0.3.6/config.log | 1298 - tools/audiofile-0.3.6/config.status | 2249 -- tools/audiofile-0.3.6/config.sub | 1782 -- tools/audiofile-0.3.6/configure | 19712 --------------- tools/audiofile-0.3.6/configure.ac | 170 - tools/audiofile-0.3.6/depcomp | 708 - tools/audiofile-0.3.6/docs/Makefile | 597 - tools/audiofile-0.3.6/docs/Makefile.am | 71 - tools/audiofile-0.3.6/docs/Makefile.in | 597 - tools/audiofile-0.3.6/docs/afCloseFile.3.txt | 42 - .../docs/afGetFrameCount.3.txt | 63 - .../audiofile-0.3.6/docs/afGetFrameSize.3.txt | 46 - .../docs/afInitAESChannelDataTo.3.txt | 51 - .../docs/afInitCompression.3.txt | 57 - .../docs/afInitFileFormat.3.txt | 56 - .../docs/afInitSampleFormat.3.txt | 94 - .../audiofile-0.3.6/docs/afNewFileSetup.3.txt | 33 - tools/audiofile-0.3.6/docs/afOpenFile.3.txt | 63 - tools/audiofile-0.3.6/docs/afQuery.3.txt | 124 - tools/audiofile-0.3.6/docs/afReadFrames.3.txt | 49 - tools/audiofile-0.3.6/docs/afReadMisc.3.txt | 55 - tools/audiofile-0.3.6/docs/afSeekFrame.3.txt | 56 - .../docs/afSetErrorHandler.3.txt | 30 - .../docs/afSetVirtualSampleFormat.3.txt | 62 - .../audiofile-0.3.6/docs/afWriteFrames.3.txt | 50 - tools/audiofile-0.3.6/docs/asciidoc.conf | 23 - tools/audiofile-0.3.6/docs/sfconvert.1.txt | 70 - tools/audiofile-0.3.6/docs/sfinfo.1.txt | 76 - .../examples/.deps/adddcoffset.Po | 52 - .../examples/.deps/alsaplay.Po | 1 - .../examples/.deps/irixread.Po | 1 - .../examples/.deps/irixtestloop.Po | 1 - .../examples/.deps/linuxtest.Po | 1 - .../audiofile-0.3.6/examples/.deps/osxplay.Po | 1 - tools/audiofile-0.3.6/examples/.deps/power.Po | 55 - tools/audiofile-0.3.6/examples/.deps/sgi.Po | 1 - .../examples/.libs/adddcoffset_ltshwrapper | 213 - .../examples/.libs/lt-adddcoffset.c | 1056 - .../audiofile-0.3.6/examples/.libs/lt-power.c | 1053 - .../examples/.libs/power_ltshwrapper | 213 - tools/audiofile-0.3.6/examples/Makefile | 614 - tools/audiofile-0.3.6/examples/Makefile.am | 31 - tools/audiofile-0.3.6/examples/Makefile.in | 614 - tools/audiofile-0.3.6/examples/adddcoffset.c | 98 - tools/audiofile-0.3.6/examples/alsaplay.cpp | 101 - tools/audiofile-0.3.6/examples/irixread.c | 122 - tools/audiofile-0.3.6/examples/irixtestloop.c | 149 - tools/audiofile-0.3.6/examples/linuxtest.c | 163 - tools/audiofile-0.3.6/examples/osxplay.c | 258 - tools/audiofile-0.3.6/examples/power.c | 219 - tools/audiofile-0.3.6/examples/sgi.c | 108 - tools/audiofile-0.3.6/examples/sgi.h | 52 - .../gtest/.deps/libgtest_la-gtest-all.Plo | 1 - tools/audiofile-0.3.6/gtest/Makefile | 536 - tools/audiofile-0.3.6/gtest/Makefile.am | 5 - tools/audiofile-0.3.6/gtest/Makefile.in | 536 - tools/audiofile-0.3.6/gtest/README.audiofile | 4 - tools/audiofile-0.3.6/gtest/gtest-all.cpp | 9118 ------- tools/audiofile-0.3.6/gtest/gtest.h | 19537 --------------- tools/audiofile-0.3.6/install-sh | 527 - .../libaudiofile/.deps/AIFF.Plo | 248 - .../libaudiofile/.deps/AVR.Plo | 244 - .../libaudiofile/.deps/AudioFormat.Plo | 234 - .../libaudiofile/.deps/Buffer.Plo | 26 - .../libaudiofile/.deps/CAF.Plo | 258 - .../libaudiofile/.deps/FLACFile.Plo | 244 - .../libaudiofile/.deps/File.Plo | 93 - .../libaudiofile/.deps/FileHandle.Plo | 261 - .../libaudiofile/.deps/IFF.Plo | 246 - .../libaudiofile/.deps/IRCAM.Plo | 246 - .../libaudiofile/.deps/Instrument.Plo | 66 - .../libaudiofile/.deps/Loop.Plo | 65 - .../libaudiofile/.deps/Marker.Plo | 242 - .../libaudiofile/.deps/Miscellaneous.Plo | 139 - .../libaudiofile/.deps/NIST.Plo | 244 - .../libaudiofile/.deps/NeXT.Plo | 244 - .../libaudiofile/.deps/PacketTable.Plo | 127 - .../libaudiofile/.deps/Raw.Plo | 237 - .../libaudiofile/.deps/SampleVision.Plo | 241 - .../libaudiofile/.deps/Setup.Plo | 243 - .../libaudiofile/.deps/Track.Plo | 258 - .../libaudiofile/.deps/UUID.Plo | 225 - .../.deps/UnitTests-UT_RebufferModule.Po | 1 - .../libaudiofile/.deps/VOC.Plo | 244 - .../libaudiofile/.deps/WAVE.Plo | 254 - .../libaudiofile/.deps/aes.Plo | 241 - .../libaudiofile/.deps/af_vfs.Plo | 62 - .../libaudiofile/.deps/aupv.Plo | 39 - .../libaudiofile/.deps/compression.Plo | 238 - .../libaudiofile/.deps/data.Plo | 259 - .../libaudiofile/.deps/debug.Plo | 251 - .../libaudiofile/.deps/error.Plo | 47 - .../libaudiofile/.deps/extended.Plo | 18 - .../libaudiofile/.deps/format.Plo | 258 - .../libaudiofile/.deps/g711.Plo | 1 - .../libaudiofile/.deps/openclose.Plo | 269 - .../libaudiofile/.deps/pcm.Plo | 252 - .../libaudiofile/.deps/query.Plo | 68 - .../libaudiofile/.deps/units.Plo | 279 - .../libaudiofile/.deps/util.Plo | 247 - .../libaudiofile/.libs/libaudiofile-1.dll.def | 107 - .../libaudiofile/.libs/libaudiofile.def | 106 - .../libaudiofile/.libs/libaudiofile.lai | 41 - tools/audiofile-0.3.6/libaudiofile/AIFF.cpp | 1220 - tools/audiofile-0.3.6/libaudiofile/AIFF.h | 92 - tools/audiofile-0.3.6/libaudiofile/AVR.cpp | 345 - tools/audiofile-0.3.6/libaudiofile/AVR.h | 47 - .../libaudiofile/AudioFormat.cpp | 164 - .../libaudiofile/AudioFormat.h | 71 - tools/audiofile-0.3.6/libaudiofile/Buffer.cpp | 54 - tools/audiofile-0.3.6/libaudiofile/Buffer.h | 46 - tools/audiofile-0.3.6/libaudiofile/CAF.cpp | 724 - tools/audiofile-0.3.6/libaudiofile/CAF.h | 68 - tools/audiofile-0.3.6/libaudiofile/Compiler.h | 43 - .../audiofile-0.3.6/libaudiofile/FLACFile.cpp | 289 - tools/audiofile-0.3.6/libaudiofile/FLACFile.h | 64 - tools/audiofile-0.3.6/libaudiofile/Features.h | 26 - tools/audiofile-0.3.6/libaudiofile/File.cpp | 197 - tools/audiofile-0.3.6/libaudiofile/File.h | 77 - .../libaudiofile/FileHandle.cpp | 488 - .../audiofile-0.3.6/libaudiofile/FileHandle.h | 114 - tools/audiofile-0.3.6/libaudiofile/IFF.cpp | 489 - tools/audiofile-0.3.6/libaudiofile/IFF.h | 59 - tools/audiofile-0.3.6/libaudiofile/IRCAM.cpp | 441 - tools/audiofile-0.3.6/libaudiofile/IRCAM.h | 49 - .../libaudiofile/Instrument.cpp | 302 - .../audiofile-0.3.6/libaudiofile/Instrument.h | 70 - tools/audiofile-0.3.6/libaudiofile/Loop.cpp | 313 - tools/audiofile-0.3.6/libaudiofile/Makefile | 1069 - .../audiofile-0.3.6/libaudiofile/Makefile.am | 127 - .../audiofile-0.3.6/libaudiofile/Makefile.in | 1069 - tools/audiofile-0.3.6/libaudiofile/Marker.cpp | 257 - tools/audiofile-0.3.6/libaudiofile/Marker.h | 43 - .../libaudiofile/Miscellaneous.cpp | 213 - tools/audiofile-0.3.6/libaudiofile/NIST.cpp | 467 - tools/audiofile-0.3.6/libaudiofile/NIST.h | 47 - tools/audiofile-0.3.6/libaudiofile/NeXT.cpp | 366 - tools/audiofile-0.3.6/libaudiofile/NeXT.h | 53 - .../libaudiofile/PacketTable.cpp | 69 - .../libaudiofile/PacketTable.h | 61 - tools/audiofile-0.3.6/libaudiofile/Raw.cpp | 182 - tools/audiofile-0.3.6/libaudiofile/Raw.h | 45 - .../libaudiofile/SampleVision.cpp | 333 - .../libaudiofile/SampleVision.h | 54 - tools/audiofile-0.3.6/libaudiofile/Setup.cpp | 560 - tools/audiofile-0.3.6/libaudiofile/Setup.h | 61 - tools/audiofile-0.3.6/libaudiofile/Shared.h | 109 - tools/audiofile-0.3.6/libaudiofile/Tag.h | 57 - tools/audiofile-0.3.6/libaudiofile/Track.cpp | 177 - tools/audiofile-0.3.6/libaudiofile/Track.h | 98 - tools/audiofile-0.3.6/libaudiofile/UUID.cpp | 67 - tools/audiofile-0.3.6/libaudiofile/UUID.h | 45 - tools/audiofile-0.3.6/libaudiofile/VOC.cpp | 431 - tools/audiofile-0.3.6/libaudiofile/VOC.h | 49 - tools/audiofile-0.3.6/libaudiofile/WAVE.cpp | 1602 -- tools/audiofile-0.3.6/libaudiofile/WAVE.h | 100 - tools/audiofile-0.3.6/libaudiofile/aes.cpp | 108 - tools/audiofile-0.3.6/libaudiofile/af_vfs.cpp | 44 - tools/audiofile-0.3.6/libaudiofile/af_vfs.h | 64 - .../audiofile-0.3.6/libaudiofile/afinternal.h | 120 - .../alac/.deps/ALACBitUtilities.Plo | 35 - .../libaudiofile/alac/.deps/ALACDecoder.Plo | 64 - .../libaudiofile/alac/.deps/ALACEncoder.Plo | 74 - .../alac/.deps/EndianPortable.Plo | 25 - .../libaudiofile/alac/.deps/ag_dec.Plo | 48 - .../libaudiofile/alac/.deps/ag_enc.Plo | 49 - .../libaudiofile/alac/.deps/dp_dec.Plo | 28 - .../libaudiofile/alac/.deps/dp_enc.Plo | 28 - .../libaudiofile/alac/.deps/matrix_dec.Plo | 27 - .../libaudiofile/alac/.deps/matrix_enc.Plo | 27 - .../libaudiofile/alac/ALACAudioTypes.h | 197 - .../libaudiofile/alac/ALACBitUtilities.c | 260 - .../libaudiofile/alac/ALACBitUtilities.h | 104 - .../libaudiofile/alac/ALACDecoder.cpp | 726 - .../libaudiofile/alac/ALACDecoder.h | 65 - .../libaudiofile/alac/ALACEncoder.cpp | 1421 -- .../libaudiofile/alac/ALACEncoder.h | 92 - .../libaudiofile/alac/EndianPortable.c | 171 - .../libaudiofile/alac/EndianPortable.h | 59 - .../libaudiofile/alac/Makefile | 584 - .../libaudiofile/alac/Makefile.am | 31 - .../libaudiofile/alac/Makefile.in | 584 - .../libaudiofile/alac/ag_dec.c | 354 - .../libaudiofile/alac/ag_enc.c | 368 - .../audiofile-0.3.6/libaudiofile/alac/aglib.h | 81 - .../libaudiofile/alac/dp_dec.c | 381 - .../libaudiofile/alac/dp_enc.c | 386 - .../audiofile-0.3.6/libaudiofile/alac/dplib.h | 61 - .../libaudiofile/alac/matrix_dec.c | 390 - .../libaudiofile/alac/matrix_enc.c | 342 - .../libaudiofile/alac/matrixlib.h | 80 - .../libaudiofile/audiofile.exports | 106 - tools/audiofile-0.3.6/libaudiofile/aupv.c | 252 - .../libaudiofile/aupvinternal.h | 75 - .../audiofile-0.3.6/libaudiofile/byteorder.h | 117 - .../libaudiofile/compression.cpp | 92 - .../libaudiofile/compression.h | 33 - tools/audiofile-0.3.6/libaudiofile/data.cpp | 236 - tools/audiofile-0.3.6/libaudiofile/debug.cpp | 272 - tools/audiofile-0.3.6/libaudiofile/debug.h | 45 - tools/audiofile-0.3.6/libaudiofile/error.c | 69 - tools/audiofile-0.3.6/libaudiofile/error.h | 39 - tools/audiofile-0.3.6/libaudiofile/extended.c | 149 - tools/audiofile-0.3.6/libaudiofile/extended.h | 42 - tools/audiofile-0.3.6/libaudiofile/format.cpp | 385 - tools/audiofile-0.3.6/libaudiofile/g711.c | 268 - tools/audiofile-0.3.6/libaudiofile/g711.h | 119 - .../libaudiofile/modules/.deps/ALAC.Plo | 307 - .../libaudiofile/modules/.deps/BlockCodec.Plo | 250 - .../libaudiofile/modules/.deps/FLAC.Plo | 253 - .../libaudiofile/modules/.deps/FileModule.Plo | 251 - .../libaudiofile/modules/.deps/G711.Plo | 258 - .../libaudiofile/modules/.deps/IMA.Plo | 258 - .../libaudiofile/modules/.deps/MSADPCM.Plo | 264 - .../libaudiofile/modules/.deps/Module.Plo | 289 - .../modules/.deps/ModuleState.Plo | 301 - .../libaudiofile/modules/.deps/PCM.Plo | 261 - .../modules/.deps/RebufferModule.Plo | 266 - .../modules/.deps/SimpleModule.Plo | 281 - .../libaudiofile/modules/ALAC.cpp | 383 - .../libaudiofile/modules/ALAC.h | 41 - .../libaudiofile/modules/BlockCodec.cpp | 126 - .../libaudiofile/modules/BlockCodec.h | 51 - .../libaudiofile/modules/FLAC.cpp | 510 - .../libaudiofile/modules/FLAC.h | 40 - .../libaudiofile/modules/FileModule.cpp | 125 - .../libaudiofile/modules/FileModule.h | 60 - .../libaudiofile/modules/G711.cpp | 247 - .../libaudiofile/modules/G711.h | 45 - .../libaudiofile/modules/IMA.cpp | 418 - .../libaudiofile/modules/IMA.h | 47 - .../libaudiofile/modules/MSADPCM.cpp | 452 - .../libaudiofile/modules/MSADPCM.h | 48 - .../libaudiofile/modules/Makefile | 580 - .../libaudiofile/modules/Makefile.am | 46 - .../libaudiofile/modules/Makefile.in | 580 - .../libaudiofile/modules/Module.cpp | 78 - .../libaudiofile/modules/Module.h | 130 - .../libaudiofile/modules/ModuleState.cpp | 504 - .../libaudiofile/modules/ModuleState.h | 77 - .../libaudiofile/modules/PCM.cpp | 202 - .../libaudiofile/modules/PCM.h | 45 - .../libaudiofile/modules/RebufferModule.cpp | 271 - .../libaudiofile/modules/RebufferModule.h | 68 - .../libaudiofile/modules/SimpleModule.cpp | 174 - .../libaudiofile/modules/SimpleModule.h | 759 - .../modules/UT_RebufferModule.cpp | 336 - .../libaudiofile/openclose.cpp | 462 - tools/audiofile-0.3.6/libaudiofile/pcm.cpp | 172 - tools/audiofile-0.3.6/libaudiofile/pcm.h | 75 - tools/audiofile-0.3.6/libaudiofile/query.cpp | 482 - tools/audiofile-0.3.6/libaudiofile/units.cpp | 368 - tools/audiofile-0.3.6/libaudiofile/units.h | 89 - tools/audiofile-0.3.6/libaudiofile/util.cpp | 384 - tools/audiofile-0.3.6/libaudiofile/util.h | 64 - tools/audiofile-0.3.6/libtool | 11888 ---------- tools/audiofile-0.3.6/ltmain.sh | 11208 --------- tools/audiofile-0.3.6/missing | 331 - tools/audiofile-0.3.6/patch.patch | 102 - .../sfcommands/.deps/printinfo.Po | 56 - .../sfcommands/.deps/sfconvert.Po | 73 - .../sfcommands/.deps/sfinfo.Po | 63 - .../sfcommands/.libs/lt-sfconvert.c | 1055 - .../sfcommands/.libs/lt-sfinfo.c | 1053 - .../sfcommands/.libs/sfconvert_ltshwrapper | 213 - .../sfcommands/.libs/sfinfo_ltshwrapper | 213 - tools/audiofile-0.3.6/sfcommands/Makefile | 571 - tools/audiofile-0.3.6/sfcommands/Makefile.am | 13 - tools/audiofile-0.3.6/sfcommands/Makefile.in | 571 - tools/audiofile-0.3.6/sfcommands/printinfo.c | 216 - tools/audiofile-0.3.6/sfcommands/printinfo.h | 29 - tools/audiofile-0.3.6/sfcommands/sfconvert.c | 366 - tools/audiofile-0.3.6/sfcommands/sfinfo.c | 120 - tools/audiofile-0.3.6/stamp-h1 | 1 - tools/audiofile-0.3.6/test/.deps/ADPCM.Po | 1 - tools/audiofile-0.3.6/test/.deps/AES.Po | 1 - tools/audiofile-0.3.6/test/.deps/ALAC.Po | 1 - .../test/.deps/ChannelMatrix.Po | 1 - tools/audiofile-0.3.6/test/.deps/Error.Po | 1 - tools/audiofile-0.3.6/test/.deps/FLAC.Po | 1 - .../audiofile-0.3.6/test/.deps/FloatToInt.Po | 1 - .../audiofile-0.3.6/test/.deps/Instrument.Po | 1 - .../audiofile-0.3.6/test/.deps/IntToFloat.Po | 1 - .../test/.deps/InvalidCompressionFormat.Po | 1 - .../test/.deps/InvalidSampleFormat.Po | 1 - tools/audiofile-0.3.6/test/.deps/Large.Po | 1 - tools/audiofile-0.3.6/test/.deps/Loop.Po | 1 - tools/audiofile-0.3.6/test/.deps/Marker.Po | 1 - .../test/.deps/Miscellaneous.Po | 1 - tools/audiofile-0.3.6/test/.deps/NeXT.Po | 1 - tools/audiofile-0.3.6/test/.deps/PCMData.Po | 1 - .../audiofile-0.3.6/test/.deps/PCMMapping.Po | 1 - tools/audiofile-0.3.6/test/.deps/Pipe.Po | 1 - tools/audiofile-0.3.6/test/.deps/Query.Po | 1 - .../test/.deps/SampleFormat.Po | 1 - tools/audiofile-0.3.6/test/.deps/Seek.Po | 1 - tools/audiofile-0.3.6/test/.deps/Sign.Po | 1 - .../test/.deps/TestUtilities.Po | 1 - .../audiofile-0.3.6/test/.deps/VirtualFile.Po | 1 - tools/audiofile-0.3.6/test/.deps/floatto24.Po | 1 - .../test/.deps/instparamtest.Po | 1 - .../test/.deps/instparamwrite.Po | 1 - .../test/.deps/printmarkers.Po | 1 - tools/audiofile-0.3.6/test/.deps/query2.Po | 1 - .../test/.deps/sixteen-to-eight.Po | 1 - tools/audiofile-0.3.6/test/.deps/testaupv.Po | 1 - .../test/.deps/testchannelmatrix.Po | 1 - .../audiofile-0.3.6/test/.deps/testdouble.Po | 1 - tools/audiofile-0.3.6/test/.deps/testfloat.Po | 1 - .../audiofile-0.3.6/test/.deps/testmarkers.Po | 1 - .../audiofile-0.3.6/test/.deps/twentyfour.Po | 1 - .../audiofile-0.3.6/test/.deps/twentyfour2.Po | 1 - tools/audiofile-0.3.6/test/.deps/writealaw.Po | 1 - tools/audiofile-0.3.6/test/.deps/writeraw.Po | 1 - tools/audiofile-0.3.6/test/.deps/writeulaw.Po | 1 - tools/audiofile-0.3.6/test/ADPCM.cpp | 159 - tools/audiofile-0.3.6/test/AES.cpp | 110 - tools/audiofile-0.3.6/test/ALAC.cpp | 128 - tools/audiofile-0.3.6/test/ChannelMatrix.cpp | 225 - tools/audiofile-0.3.6/test/Error.cpp | 259 - tools/audiofile-0.3.6/test/FLAC.cpp | 111 - tools/audiofile-0.3.6/test/FloatToInt.cpp | 166 - tools/audiofile-0.3.6/test/Instrument.cpp | 78 - tools/audiofile-0.3.6/test/IntToFloat.cpp | 168 - .../test/InvalidCompressionFormat.cpp | 231 - .../test/InvalidSampleFormat.cpp | 139 - tools/audiofile-0.3.6/test/Large.cpp | 151 - tools/audiofile-0.3.6/test/Loop.cpp | 140 - tools/audiofile-0.3.6/test/Lossless.h | 163 - tools/audiofile-0.3.6/test/Makefile | 1064 - tools/audiofile-0.3.6/test/Makefile.am | 161 - tools/audiofile-0.3.6/test/Makefile.in | 1064 - tools/audiofile-0.3.6/test/Marker.cpp | 169 - tools/audiofile-0.3.6/test/Miscellaneous.cpp | 156 - tools/audiofile-0.3.6/test/NeXT.cpp | 188 - tools/audiofile-0.3.6/test/PCMData.cpp | 282 - tools/audiofile-0.3.6/test/PCMMapping.cpp | 116 - tools/audiofile-0.3.6/test/Pipe.cpp | 85 - tools/audiofile-0.3.6/test/Query.cpp | 131 - tools/audiofile-0.3.6/test/SampleFormat.cpp | 80 - tools/audiofile-0.3.6/test/Seek.cpp | 113 - tools/audiofile-0.3.6/test/Sign.cpp | 169 - tools/audiofile-0.3.6/test/TestUtilities.cpp | 46 - tools/audiofile-0.3.6/test/TestUtilities.h | 62 - tools/audiofile-0.3.6/test/VirtualFile.cpp | 184 - tools/audiofile-0.3.6/test/floatto24.c | 187 - tools/audiofile-0.3.6/test/instparamtest.c | 78 - tools/audiofile-0.3.6/test/instparamwrite.c | 56 - tools/audiofile-0.3.6/test/printmarkers.c | 126 - tools/audiofile-0.3.6/test/query2.c | 171 - tools/audiofile-0.3.6/test/sixteen-to-eight.c | 118 - tools/audiofile-0.3.6/test/testaupv.c | 79 - .../audiofile-0.3.6/test/testchannelmatrix.c | 129 - tools/audiofile-0.3.6/test/testdouble.c | 136 - tools/audiofile-0.3.6/test/testfloat.c | 136 - tools/audiofile-0.3.6/test/testmarkers.c | 140 - tools/audiofile-0.3.6/test/twentyfour.c | 244 - tools/audiofile-0.3.6/test/twentyfour2.c | 138 - tools/audiofile-0.3.6/test/writealaw.c | 177 - tools/audiofile-0.3.6/test/writeraw.c | 136 - tools/audiofile-0.3.6/test/writeulaw.c | 177 - tools/audiofile/Makefile | 12 + tools/audiofile/audiofile.cpp | 15916 +++++++++++++ .../libaudiofile => audiofile}/audiofile.h | 0 .../libaudiofile => audiofile}/aupvlist.h | 0 tools/util/audiofile_strip.patch | 318 + tools/util/generate_audiofile_cpp.py | 136 + 397 files changed, 16391 insertions(+), 203936 deletions(-) delete mode 100644 tools/audiofile-0.3.6/ACKNOWLEDGEMENTS delete mode 100644 tools/audiofile-0.3.6/AUTHORS delete mode 100644 tools/audiofile-0.3.6/COPYING delete mode 100644 tools/audiofile-0.3.6/COPYING.GPL delete mode 100644 tools/audiofile-0.3.6/ChangeLog delete mode 100644 tools/audiofile-0.3.6/INSTALL delete mode 100644 tools/audiofile-0.3.6/Makefile delete mode 100644 tools/audiofile-0.3.6/Makefile.am delete mode 100644 tools/audiofile-0.3.6/Makefile.in delete mode 100644 tools/audiofile-0.3.6/NEWS delete mode 100644 tools/audiofile-0.3.6/NOTES delete mode 100644 tools/audiofile-0.3.6/README delete mode 100644 tools/audiofile-0.3.6/TODO delete mode 100644 tools/audiofile-0.3.6/aclocal.m4 delete mode 100644 tools/audiofile-0.3.6/audiofile-uninstalled.pc delete mode 100644 tools/audiofile-0.3.6/audiofile-uninstalled.pc.in delete mode 100644 tools/audiofile-0.3.6/audiofile.pc delete mode 100644 tools/audiofile-0.3.6/audiofile.pc.in delete mode 100644 tools/audiofile-0.3.6/audiofile.spec delete mode 100644 tools/audiofile-0.3.6/audiofile.spec.in delete mode 100644 tools/audiofile-0.3.6/autom4te.cache/output.0 delete mode 100644 tools/audiofile-0.3.6/autom4te.cache/output.1 delete mode 100644 tools/audiofile-0.3.6/autom4te.cache/requests delete mode 100644 tools/audiofile-0.3.6/autom4te.cache/traces.0 delete mode 100644 tools/audiofile-0.3.6/autom4te.cache/traces.1 delete mode 100644 tools/audiofile-0.3.6/config.guess delete mode 100644 tools/audiofile-0.3.6/config.h delete mode 100644 tools/audiofile-0.3.6/config.h.in delete mode 100644 tools/audiofile-0.3.6/config.h.in~ delete mode 100644 tools/audiofile-0.3.6/config.log delete mode 100644 tools/audiofile-0.3.6/config.status delete mode 100644 tools/audiofile-0.3.6/config.sub delete mode 100644 tools/audiofile-0.3.6/configure delete mode 100644 tools/audiofile-0.3.6/configure.ac delete mode 100644 tools/audiofile-0.3.6/depcomp delete mode 100644 tools/audiofile-0.3.6/docs/Makefile delete mode 100644 tools/audiofile-0.3.6/docs/Makefile.am delete mode 100644 tools/audiofile-0.3.6/docs/Makefile.in delete mode 100644 tools/audiofile-0.3.6/docs/afCloseFile.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afGetFrameCount.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afGetFrameSize.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afInitAESChannelDataTo.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afInitCompression.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afInitFileFormat.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afInitSampleFormat.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afNewFileSetup.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afOpenFile.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afQuery.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afReadFrames.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afReadMisc.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afSeekFrame.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afSetErrorHandler.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afSetVirtualSampleFormat.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/afWriteFrames.3.txt delete mode 100644 tools/audiofile-0.3.6/docs/asciidoc.conf delete mode 100644 tools/audiofile-0.3.6/docs/sfconvert.1.txt delete mode 100644 tools/audiofile-0.3.6/docs/sfinfo.1.txt delete mode 100644 tools/audiofile-0.3.6/examples/.deps/adddcoffset.Po delete mode 100644 tools/audiofile-0.3.6/examples/.deps/alsaplay.Po delete mode 100644 tools/audiofile-0.3.6/examples/.deps/irixread.Po delete mode 100644 tools/audiofile-0.3.6/examples/.deps/irixtestloop.Po delete mode 100644 tools/audiofile-0.3.6/examples/.deps/linuxtest.Po delete mode 100644 tools/audiofile-0.3.6/examples/.deps/osxplay.Po delete mode 100644 tools/audiofile-0.3.6/examples/.deps/power.Po delete mode 100644 tools/audiofile-0.3.6/examples/.deps/sgi.Po delete mode 100644 tools/audiofile-0.3.6/examples/.libs/adddcoffset_ltshwrapper delete mode 100644 tools/audiofile-0.3.6/examples/.libs/lt-adddcoffset.c delete mode 100644 tools/audiofile-0.3.6/examples/.libs/lt-power.c delete mode 100644 tools/audiofile-0.3.6/examples/.libs/power_ltshwrapper delete mode 100644 tools/audiofile-0.3.6/examples/Makefile delete mode 100644 tools/audiofile-0.3.6/examples/Makefile.am delete mode 100644 tools/audiofile-0.3.6/examples/Makefile.in delete mode 100644 tools/audiofile-0.3.6/examples/adddcoffset.c delete mode 100644 tools/audiofile-0.3.6/examples/alsaplay.cpp delete mode 100644 tools/audiofile-0.3.6/examples/irixread.c delete mode 100644 tools/audiofile-0.3.6/examples/irixtestloop.c delete mode 100644 tools/audiofile-0.3.6/examples/linuxtest.c delete mode 100644 tools/audiofile-0.3.6/examples/osxplay.c delete mode 100644 tools/audiofile-0.3.6/examples/power.c delete mode 100644 tools/audiofile-0.3.6/examples/sgi.c delete mode 100644 tools/audiofile-0.3.6/examples/sgi.h delete mode 100644 tools/audiofile-0.3.6/gtest/.deps/libgtest_la-gtest-all.Plo delete mode 100644 tools/audiofile-0.3.6/gtest/Makefile delete mode 100644 tools/audiofile-0.3.6/gtest/Makefile.am delete mode 100644 tools/audiofile-0.3.6/gtest/Makefile.in delete mode 100644 tools/audiofile-0.3.6/gtest/README.audiofile delete mode 100644 tools/audiofile-0.3.6/gtest/gtest-all.cpp delete mode 100644 tools/audiofile-0.3.6/gtest/gtest.h delete mode 100644 tools/audiofile-0.3.6/install-sh delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/AIFF.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/AVR.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/AudioFormat.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/Buffer.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/CAF.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/FLACFile.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/File.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/FileHandle.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/IFF.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/IRCAM.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/Instrument.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/Loop.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/Marker.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/Miscellaneous.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/NIST.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/NeXT.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/PacketTable.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/Raw.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/SampleVision.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/Setup.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/Track.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/UUID.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/UnitTests-UT_RebufferModule.Po delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/VOC.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/WAVE.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/aes.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/af_vfs.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/aupv.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/compression.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/data.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/debug.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/error.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/extended.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/format.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/g711.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/openclose.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/pcm.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/query.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/units.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.deps/util.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile-1.dll.def delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile.def delete mode 100644 tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile.lai delete mode 100644 tools/audiofile-0.3.6/libaudiofile/AIFF.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/AIFF.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/AVR.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/AVR.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/AudioFormat.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/AudioFormat.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Buffer.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Buffer.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/CAF.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/CAF.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Compiler.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/FLACFile.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/FLACFile.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Features.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/File.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/File.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/FileHandle.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/FileHandle.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/IFF.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/IFF.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/IRCAM.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/IRCAM.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Instrument.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Instrument.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Loop.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Makefile delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Makefile.am delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Makefile.in delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Marker.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Marker.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Miscellaneous.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/NIST.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/NIST.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/NeXT.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/NeXT.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/PacketTable.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/PacketTable.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Raw.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Raw.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/SampleVision.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/SampleVision.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Setup.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Setup.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Shared.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Tag.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Track.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/Track.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/UUID.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/UUID.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/VOC.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/VOC.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/WAVE.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/WAVE.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/aes.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/af_vfs.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/af_vfs.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/afinternal.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACBitUtilities.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACDecoder.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACEncoder.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/EndianPortable.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/ag_dec.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/ag_enc.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/dp_dec.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/dp_enc.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/matrix_dec.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/.deps/matrix_enc.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ALACAudioTypes.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ALACBitUtilities.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ALACBitUtilities.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ALACDecoder.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ALACDecoder.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ALACEncoder.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ALACEncoder.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/EndianPortable.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/EndianPortable.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/Makefile delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/Makefile.am delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/Makefile.in delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ag_dec.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/ag_enc.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/aglib.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/dp_dec.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/dp_enc.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/dplib.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/matrix_dec.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/matrix_enc.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/alac/matrixlib.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/audiofile.exports delete mode 100644 tools/audiofile-0.3.6/libaudiofile/aupv.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/aupvinternal.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/byteorder.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/compression.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/compression.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/data.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/debug.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/debug.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/error.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/error.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/extended.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/extended.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/format.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/g711.c delete mode 100644 tools/audiofile-0.3.6/libaudiofile/g711.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/ALAC.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/BlockCodec.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/FLAC.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/FileModule.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/G711.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/IMA.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/MSADPCM.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/Module.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/ModuleState.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/PCM.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/RebufferModule.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/.deps/SimpleModule.Plo delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/ALAC.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/ALAC.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/BlockCodec.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/BlockCodec.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/FLAC.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/FLAC.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/FileModule.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/FileModule.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/G711.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/G711.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/IMA.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/IMA.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/MSADPCM.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/MSADPCM.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/Makefile delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/Makefile.am delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/Makefile.in delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/Module.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/Module.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/ModuleState.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/ModuleState.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/PCM.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/PCM.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/RebufferModule.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/RebufferModule.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/SimpleModule.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/SimpleModule.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/modules/UT_RebufferModule.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/openclose.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/pcm.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/pcm.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/query.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/units.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/units.h delete mode 100644 tools/audiofile-0.3.6/libaudiofile/util.cpp delete mode 100644 tools/audiofile-0.3.6/libaudiofile/util.h delete mode 100644 tools/audiofile-0.3.6/libtool delete mode 100644 tools/audiofile-0.3.6/ltmain.sh delete mode 100644 tools/audiofile-0.3.6/missing delete mode 100644 tools/audiofile-0.3.6/patch.patch delete mode 100644 tools/audiofile-0.3.6/sfcommands/.deps/printinfo.Po delete mode 100644 tools/audiofile-0.3.6/sfcommands/.deps/sfconvert.Po delete mode 100644 tools/audiofile-0.3.6/sfcommands/.deps/sfinfo.Po delete mode 100644 tools/audiofile-0.3.6/sfcommands/.libs/lt-sfconvert.c delete mode 100644 tools/audiofile-0.3.6/sfcommands/.libs/lt-sfinfo.c delete mode 100644 tools/audiofile-0.3.6/sfcommands/.libs/sfconvert_ltshwrapper delete mode 100644 tools/audiofile-0.3.6/sfcommands/.libs/sfinfo_ltshwrapper delete mode 100644 tools/audiofile-0.3.6/sfcommands/Makefile delete mode 100644 tools/audiofile-0.3.6/sfcommands/Makefile.am delete mode 100644 tools/audiofile-0.3.6/sfcommands/Makefile.in delete mode 100644 tools/audiofile-0.3.6/sfcommands/printinfo.c delete mode 100644 tools/audiofile-0.3.6/sfcommands/printinfo.h delete mode 100644 tools/audiofile-0.3.6/sfcommands/sfconvert.c delete mode 100644 tools/audiofile-0.3.6/sfcommands/sfinfo.c delete mode 100644 tools/audiofile-0.3.6/stamp-h1 delete mode 100644 tools/audiofile-0.3.6/test/.deps/ADPCM.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/AES.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/ALAC.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/ChannelMatrix.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Error.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/FLAC.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/FloatToInt.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Instrument.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/IntToFloat.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/InvalidCompressionFormat.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/InvalidSampleFormat.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Large.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Loop.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Marker.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Miscellaneous.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/NeXT.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/PCMData.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/PCMMapping.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Pipe.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Query.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/SampleFormat.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Seek.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/Sign.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/TestUtilities.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/VirtualFile.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/floatto24.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/instparamtest.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/instparamwrite.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/printmarkers.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/query2.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/sixteen-to-eight.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/testaupv.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/testchannelmatrix.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/testdouble.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/testfloat.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/testmarkers.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/twentyfour.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/twentyfour2.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/writealaw.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/writeraw.Po delete mode 100644 tools/audiofile-0.3.6/test/.deps/writeulaw.Po delete mode 100644 tools/audiofile-0.3.6/test/ADPCM.cpp delete mode 100644 tools/audiofile-0.3.6/test/AES.cpp delete mode 100644 tools/audiofile-0.3.6/test/ALAC.cpp delete mode 100644 tools/audiofile-0.3.6/test/ChannelMatrix.cpp delete mode 100644 tools/audiofile-0.3.6/test/Error.cpp delete mode 100644 tools/audiofile-0.3.6/test/FLAC.cpp delete mode 100644 tools/audiofile-0.3.6/test/FloatToInt.cpp delete mode 100644 tools/audiofile-0.3.6/test/Instrument.cpp delete mode 100644 tools/audiofile-0.3.6/test/IntToFloat.cpp delete mode 100644 tools/audiofile-0.3.6/test/InvalidCompressionFormat.cpp delete mode 100644 tools/audiofile-0.3.6/test/InvalidSampleFormat.cpp delete mode 100644 tools/audiofile-0.3.6/test/Large.cpp delete mode 100644 tools/audiofile-0.3.6/test/Loop.cpp delete mode 100644 tools/audiofile-0.3.6/test/Lossless.h delete mode 100644 tools/audiofile-0.3.6/test/Makefile delete mode 100644 tools/audiofile-0.3.6/test/Makefile.am delete mode 100644 tools/audiofile-0.3.6/test/Makefile.in delete mode 100644 tools/audiofile-0.3.6/test/Marker.cpp delete mode 100644 tools/audiofile-0.3.6/test/Miscellaneous.cpp delete mode 100644 tools/audiofile-0.3.6/test/NeXT.cpp delete mode 100644 tools/audiofile-0.3.6/test/PCMData.cpp delete mode 100644 tools/audiofile-0.3.6/test/PCMMapping.cpp delete mode 100644 tools/audiofile-0.3.6/test/Pipe.cpp delete mode 100644 tools/audiofile-0.3.6/test/Query.cpp delete mode 100644 tools/audiofile-0.3.6/test/SampleFormat.cpp delete mode 100644 tools/audiofile-0.3.6/test/Seek.cpp delete mode 100644 tools/audiofile-0.3.6/test/Sign.cpp delete mode 100644 tools/audiofile-0.3.6/test/TestUtilities.cpp delete mode 100644 tools/audiofile-0.3.6/test/TestUtilities.h delete mode 100644 tools/audiofile-0.3.6/test/VirtualFile.cpp delete mode 100644 tools/audiofile-0.3.6/test/floatto24.c delete mode 100644 tools/audiofile-0.3.6/test/instparamtest.c delete mode 100644 tools/audiofile-0.3.6/test/instparamwrite.c delete mode 100644 tools/audiofile-0.3.6/test/printmarkers.c delete mode 100644 tools/audiofile-0.3.6/test/query2.c delete mode 100644 tools/audiofile-0.3.6/test/sixteen-to-eight.c delete mode 100644 tools/audiofile-0.3.6/test/testaupv.c delete mode 100644 tools/audiofile-0.3.6/test/testchannelmatrix.c delete mode 100644 tools/audiofile-0.3.6/test/testdouble.c delete mode 100644 tools/audiofile-0.3.6/test/testfloat.c delete mode 100644 tools/audiofile-0.3.6/test/testmarkers.c delete mode 100644 tools/audiofile-0.3.6/test/twentyfour.c delete mode 100644 tools/audiofile-0.3.6/test/twentyfour2.c delete mode 100644 tools/audiofile-0.3.6/test/writealaw.c delete mode 100644 tools/audiofile-0.3.6/test/writeraw.c delete mode 100644 tools/audiofile-0.3.6/test/writeulaw.c create mode 100644 tools/audiofile/Makefile create mode 100644 tools/audiofile/audiofile.cpp rename tools/{audiofile-0.3.6/libaudiofile => audiofile}/audiofile.h (100%) rename tools/{audiofile-0.3.6/libaudiofile => audiofile}/aupvlist.h (100%) create mode 100644 tools/util/audiofile_strip.patch create mode 100644 tools/util/generate_audiofile_cpp.py diff --git a/tools/Makefile b/tools/Makefile index d143bb46..e87621c5 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -39,7 +39,7 @@ aifc_decode_CFLAGS := $(OPT_FLAG) aiff_extract_codebook_SOURCES := aiff_extract_codebook.c tabledesign_SOURCES := sdk-tools/tabledesign/codebook.c sdk-tools/tabledesign/estimate.c sdk-tools/tabledesign/print.c sdk-tools/tabledesign/tabledesign.c -tabledesign_CFLAGS := -Wno-uninitialized -laudiofile -lstdc++ +tabledesign_CFLAGS := -Wno-uninitialized -Iaudiofile -Laudiofile -laudiofile -lstdc++ vadpcm_enc_SOURCES := sdk-tools/adpcm/vadpcm_enc.c sdk-tools/adpcm/vpredictor.c sdk-tools/adpcm/quant.c sdk-tools/adpcm/util.c sdk-tools/adpcm/vencode.c vadpcm_enc_CFLAGS := -Wno-unused-result -Wno-uninitialized -Wno-sign-compare -Wno-absolute-value @@ -50,11 +50,17 @@ extract_data_for_mio_CFLAGS := $(OPT_FLAG) skyconv_SOURCES := skyconv.c n64graphics.c utils.c skyconv_CFLAGS := $(OPT_FLAG) -lm -all: $(PROGRAMS) +LIBAUDIOFILE := audiofile/libaudiofile.a + +all: $(LIBAUDIOFILE) $(PROGRAMS) + +$(LIBAUDIOFILE): + @$(MAKE) -C audiofile clean: $(RM) $(PROGRAMS) $(RM) gen_asset_list + $(MAKE) -C audiofile clean define COMPILE $(1): $($1_SOURCES) @@ -65,4 +71,4 @@ endef gen_asset_list: $(CXX) -std=c++17 gen_asset_list.cpp -lstdc++fs $(OPT_FLAG) -Wall -o gen_asset_list -$(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p)))) \ No newline at end of file +$(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p)))) diff --git a/tools/audiofile-0.3.6/ACKNOWLEDGEMENTS b/tools/audiofile-0.3.6/ACKNOWLEDGEMENTS deleted file mode 100644 index ed72835d..00000000 --- a/tools/audiofile-0.3.6/ACKNOWLEDGEMENTS +++ /dev/null @@ -1,25 +0,0 @@ -Thanks to all who have contributed patches for the Audio File Library: -* Jason Allen -* Julien Boulnois -* Davy Durham -* Bruce Forsberg -* Fabrizio Gennari -* Simon Kagedal -* Thomas Klausner -* Daniel Kobras -* Michael Krause -* Wim Lewis -* Eric Mitchell -* Cristian Morales Vega -* Mark Murnane -* Michael Palimaka -* Jean-Francois Panisset -* Axel Roebel -* Matthias Rumpke -* Chris Wolf - -Thanks to Douglas Scott of SGI for helping me understand the tricky parts -of the Audio File Library API. Thanks to Chris Pirazzi and Scott Porter -of SGI for creating the Audio File Library in the first place. - -Thanks also to all who have reported bugs. diff --git a/tools/audiofile-0.3.6/AUTHORS b/tools/audiofile-0.3.6/AUTHORS deleted file mode 100644 index 9f639cb5..00000000 --- a/tools/audiofile-0.3.6/AUTHORS +++ /dev/null @@ -1,5 +0,0 @@ -Audio File Library Authors - -Michael Pruett - -Chris Pirazzi, Scott Porter, and Doug Scott diff --git a/tools/audiofile-0.3.6/COPYING b/tools/audiofile-0.3.6/COPYING deleted file mode 100644 index 4362b491..00000000 --- a/tools/audiofile-0.3.6/COPYING +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/tools/audiofile-0.3.6/COPYING.GPL b/tools/audiofile-0.3.6/COPYING.GPL deleted file mode 100644 index d159169d..00000000 --- a/tools/audiofile-0.3.6/COPYING.GPL +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/tools/audiofile-0.3.6/ChangeLog b/tools/audiofile-0.3.6/ChangeLog deleted file mode 100644 index 44604012..00000000 --- a/tools/audiofile-0.3.6/ChangeLog +++ /dev/null @@ -1,1953 +0,0 @@ -2013-03-06 Michael Pruett - - Release version 0.3.6 of the Audio File Library. - -2013-03-06 Michael Pruett - - * libaudiofile/alac/ALACDecoder.cpp, - libaudiofile/alac/ag_enc.c: - Fix unaligned memory accesses in ALAC. - - Thanks to Erik de Castro Lopo for pointing out this problem. - -2013-03-05 Michael Pruett - - * libaudiofile/AIFF.cpp, - libaudiofile/WAVE.cpp, - test/.gitignore, - test/Instrument.cpp, - test/Makefile.am: - Fix instrument parameter validation. - -2013-03-03 Michael Pruett - - * libaudiofile/alac/ALACAudioTypes.h, - libaudiofile/alac/EndianPortable.c: - Fix byte order detection for ALAC. - -2013-03-03 Michael Pruett - - * libaudiofile/alac/EndianPortable.c, - libaudiofile/alac/ag_dec.c, - libaudiofile/alac/ag_enc.c: - Eliminate unnecessary header inclusion in ALAC source files. - -2013-03-03 Michael Pruett - - * libaudiofile/alac/ALACEncoder.cpp: - Write ALAC channel layout tag in big-endian byte order. - -2013-03-03 Michael Pruett - - * libaudiofile/alac/ALACEncoder.cpp: - Remove superfluous debugging print statements in ALAC encoder. - -2013-02-27 Michael Pruett - - Update address for Free Software Foundation. - -2013-02-26 Michael Pruett - - Update license to LGPL 2.1. - -2013-02-21 Michael Pruett - - * libaudiofile/Makefile.am: - Add support for running unit tests under Valgrind. - -2013-02-20 Cristian Morales Vega - - * configure.ac: - Add option for building without example programs. - -2013-02-20 Michael Pruett - - * README, - configure.ac, - docs/afInitCompression.3.txt, - docs/sfconvert.1.txt, - libaudiofile/Buffer.cpp, - libaudiofile/Buffer.h, - libaudiofile/CAF.cpp, - libaudiofile/CAF.h, - libaudiofile/Makefile.am, - libaudiofile/PacketTable.cpp, - libaudiofile/PacketTable.h, - libaudiofile/Track.cpp, - libaudiofile/Track.h, - libaudiofile/afinternal.h, - libaudiofile/alac/ALACAudioTypes.h, - libaudiofile/alac/ALACBitUtilities.c, - libaudiofile/alac/ALACBitUtilities.h, - libaudiofile/alac/ALACDecoder.cpp, - libaudiofile/alac/ALACDecoder.h, - libaudiofile/alac/ALACEncoder.cpp, - libaudiofile/alac/ALACEncoder.h, - libaudiofile/alac/EndianPortable.c, - libaudiofile/alac/EndianPortable.h, - libaudiofile/alac/Makefile.am, - libaudiofile/alac/ag_dec.c, - libaudiofile/alac/ag_enc.c, - libaudiofile/alac/aglib.h, - libaudiofile/alac/dp_dec.c, - libaudiofile/alac/dp_enc.c, - libaudiofile/alac/dplib.h, - libaudiofile/alac/matrix_dec.c, - libaudiofile/alac/matrix_enc.c, - libaudiofile/alac/matrixlib.h, - libaudiofile/audiofile.h, - libaudiofile/modules/ALAC.cpp, - libaudiofile/modules/ALAC.h, - libaudiofile/modules/Makefile.am, - libaudiofile/modules/ModuleState.cpp, - libaudiofile/units.cpp, - libaudiofile/units.h, - sfcommands/sfconvert.c, - test/.gitignore, - test/ALAC.cpp, - test/Makefile.am: - Add support for ALAC. - -2013-02-19 Michael Pruett - - * README, - configure.ac, - docs/afInitCompression.3.txt, - docs/sfconvert.1.txt, - libaudiofile/FLACFile.cpp, - libaudiofile/FLACFile.h, - libaudiofile/Features.h, - libaudiofile/FileHandle.cpp, - libaudiofile/Makefile.am, - libaudiofile/audiofile.h, - libaudiofile/data.cpp, - libaudiofile/modules/FLAC.cpp, - libaudiofile/modules/FLAC.h, - libaudiofile/modules/FileModule.cpp, - libaudiofile/modules/FileModule.h, - libaudiofile/modules/G711.cpp, - libaudiofile/modules/G711.h, - libaudiofile/modules/IMA.cpp, - libaudiofile/modules/IMA.h, - libaudiofile/modules/MSADPCM.cpp, - libaudiofile/modules/MSADPCM.h, - libaudiofile/modules/Makefile.am, - libaudiofile/modules/ModuleState.cpp, - libaudiofile/modules/ModuleState.h, - libaudiofile/modules/PCM.cpp, - libaudiofile/modules/PCM.h, - libaudiofile/units.cpp, - libaudiofile/units.h, - sfcommands/sfconvert.c, - test/.gitignore, - test/FLAC.cpp, - test/Lossless.h, - test/Makefile.am: - Add support for FLAC. - -2013-02-10 Michael Pruett - - * libaudiofile/FileHandle.cpp, - libaudiofile/modules/MSADPCM.cpp, - libaudiofile/modules/SimpleModule.h: - Fix uninitialized fields in constructors. - -2013-02-09 Michael Pruett - - * libaudiofile/modules/BlockCodec.cpp, - libaudiofile/modules/BlockCodec.h, - libaudiofile/modules/IMA.cpp, - libaudiofile/modules/MSADPCM.cpp, - libaudiofile/modules/Makefile.am: - Factor out fixed-size block codec functionality common to IMA and MS ADPCM. - -2013-02-09 Michael Pruett - - * test/InvalidCompressionFormat.cpp, - test/InvalidSampleFormat.cpp, - test/Query.cpp: - Ignore errors in tests for which errors are expected. - -2013-02-09 Michael Pruett - - * test/PCMData.cpp: - Update PCMData test to validate PCM mappings. - -2013-02-09 Michael Pruett - - * libaudiofile/CAF.cpp, - libaudiofile/IFF.cpp, - libaudiofile/SampleVision.cpp, - libaudiofile/VOC.cpp, - test/AES.cpp: - Ensure that initializing AES data fails on unsupported file formats. - -2013-02-05 Michael Pruett - - * Release version 0.3.5 of the Audio File Library. - -2013-02-04 Michael Pruett - - * gtest/Makefile.am, - libaudiofile/Makefile.am, - test/Makefile.am: - Disable exceptions and RTTI when building Google Test framework. - -2013-02-04 Michael Pruett - - * libaudiofile/File.cpp, - libaudiofile/File.h: - Fix resource leak in File destructor. - -2013-02-02 Michael Pruett - - * libaudiofile/Makefile.am, - libaudiofile/modules/Makefile.am: - Remove test coverage files when cleaning. - -2013-02-02 Michael Pruett - - * libaudiofile/IRCAM.cpp: - Fix calculation of IRCAM frame size. - -2013-02-02 Michael Pruett - - * test/PCMData.cpp: - Update PCMData test to create multi-channel audio files. - -2013-01-31 Michael Pruett - - * libaudiofile/AIFF.cpp, - libaudiofile/CAF.cpp: - Report error when attempting to open a file with invalid sample width. - -2013-01-31 Michael Pruett - - * libaudiofile/AIFF.cpp, - libaudiofile/CAF.cpp, - libaudiofile/NeXT.cpp, - libaudiofile/VOC.cpp, - libaudiofile/WAVE.cpp: - Report error when attempting to open a file with zero channels. - -2013-01-31 Michael Pruett - - * test/NeXT.cpp: - Add test for opening a NeXT sound file with zero channels. - -2013-01-30 Michael Pruett - - * libaudiofile/NIST.cpp: - Remove unnecessary check for positive channel count. - - This check is already performed in afInitChannels(). - -2013-01-30 Michael Pruett - - * libaudiofile/SampleVision.cpp: - Set compression type before initializing sample format. - -2013-01-30 Michael Pruett - - * test/TestUtilities.cpp: - Include to provide declaration of close(). - -2013-01-30 Michael Pruett - - * libaudiofile/AIFF.h, - libaudiofile/AVR.h, - libaudiofile/CAF.h, - libaudiofile/Compiler.h, - libaudiofile/IFF.h, - libaudiofile/IRCAM.h, - libaudiofile/NIST.h, - libaudiofile/NeXT.h, - libaudiofile/SampleVision.h, - libaudiofile/VOC.h, - libaudiofile/WAVE.h, - libaudiofile/modules/G711.cpp, - libaudiofile/modules/IMA.cpp, - libaudiofile/modules/MSADPCM.cpp, - libaudiofile/modules/PCM.cpp, - libaudiofile/modules/RebufferModule.h, - libaudiofile/modules/SimpleModule.h: - Use C++11 override keyword with compilers that support it. - -2013-01-19 Michael Pruett - - * libaudiofile/CAF.cpp, - libaudiofile/util.cpp: - Fix conversion specifications in error messages. - -2013-01-19 Michael Pruett - - * libaudiofile/format.cpp, - test/Makefile.am, - test/SampleFormat.cpp: - Fix null checks in afGetSampleFormat() and afGetVirtualSampleFormat(). - - Thanks to David Lassonde for pointing out this problem. - -2013-01-19 Michael Pruett - - * libaudiofile/AIFF.cpp, - libaudiofile/AudioFormat.h, - libaudiofile/CAF.cpp, - libaudiofile/NeXT.cpp, - libaudiofile/VOC.cpp, - libaudiofile/WAVE.cpp, - libaudiofile/modules/G711.cpp, - libaudiofile/modules/IMA.cpp, - libaudiofile/modules/MSADPCM.cpp, - libaudiofile/modules/ModuleState.cpp, - test/InvalidCompressionFormat.cpp: - Validate compressed audio formats. - -2012-11-13 Michael Pruett - - * configure.ac, docs/Makefile.am: - Add support for building without documentation. - -2012-11-12 Michael Pruett - - * libaudiofile/File.cpp: - Open files in binary mode on Windows. - - Thanks to Fabrizio Gennari for proposing this change. - -2012-10-13 Michael Pruett - - * test/*: - Use unique filenames for temporary files in tests. - - Thanks to Giovanni Mascellani for pointing out this problem. - - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=687405 - -2012-09-12 Michael Pruett - - * libaudiofile/AIFF.cpp, - libaudiofile/AVR.cpp, - libaudiofile/AudioFormat.cpp, - libaudiofile/AudioFormat.h, - libaudiofile/CAF.cpp, - libaudiofile/CAF.h, - libaudiofile/IFF.cpp, - libaudiofile/IRCAM.cpp, - libaudiofile/NIST.cpp, - libaudiofile/NeXT.cpp, - libaudiofile/SampleVision.cpp, - libaudiofile/Track.cpp, - libaudiofile/Track.h, - libaudiofile/VOC.cpp, - libaudiofile/WAVE.cpp: - Refactor calculation of frame count from audio data size. - -2012-09-06 Michael Pruett - - * libaudiofile/Makefile.am, libaudiofile/modules/Makefile.am: - Reorganize build. - -2012-09-06 Michael Pruett - - * libaudiofile/AIFF.cpp, - libaudiofile/AIFF.h, - libaudiofile/CAF.cpp, - libaudiofile/SampleVision.cpp, - libaudiofile/VOC.cpp, - libaudiofile/WAVE.cpp, - libaudiofile/WAVE.h, - libaudiofile/util.cpp, - libaudiofile/util.h, - test/Makefile.am, - test/Marker.cpp: - Refactor marker writing. Record marker comments in WAVE files. - -2012-07-31 Michael Pruett - - * libaudiofile/Setup.cpp: - Fix array overrun in afInitFileFormat(). - -2012-07-31 Michael Pruett - - * libaudiofile/query.cpp, test/Makefile.am, test/Query.cpp: - Fix handling of queries for unimplemented compression formats. - -2012-07-31 Michael Pruett - - * libaudiofile/AudioFormat.cpp, libaudiofile/compression.cpp, - libaudiofile/compression.h, libaudiofile/debug.cpp, - libaudiofile/modules/ModuleState.cpp, libaudiofile/query.cpp, - libaudiofile/util.cpp: - Refactor accessing compression units by compression type. - -2012-07-31 Michael Pruett - - * libaudiofile/compression.cpp, libaudiofile/format.cpp, - libaudiofile/modules/ModuleState.cpp, libaudiofile/openclose.cpp, - libaudiofile/query.cpp, libaudiofile/units.cpp, - libaudiofile/units.h: - Remove leading underscores from _Unit and _CompressionUnit types. - -2012-07-31 Michael Pruett - - * libaudiofile/modules/ModuleState.cpp: - Improve error handling in ModuleState::arrange(). - -2012-07-26 Michael Pruett - - * libaudiofile/AIFF.cpp, libaudiofile/NeXT.cpp, - libaudiofile/Setup.cpp, libaudiofile/WAVE.cpp, - libaudiofile/format.cpp, libaudiofile/modules/G711.cpp, - libaudiofile/modules/IMA.cpp, libaudiofile/modules/PCM.cpp: - Remove unnecessary debugging print statements. - -2012-07-21 Michael Pruett - - * libaudiofile/modules/RebufferModule.cpp, - libaudiofile/modules/UT_RebufferModule.cpp: - Fix error in rebuffer module when buffering after pulling a short chunk. - -2012-07-14 Michael Pruett - - * libaudiofile/SampleVision.cpp, libaudiofile/compression.cpp: - Report an error when initializing a file with an invalid compression format. - -2012-07-14 Michael Pruett - - * test/InvalidCompressionFormat.cpp, test/Makefile.am: - Add test for creating audio files with invalid compression formats. - -2012-07-14 Michael Pruett - - * libaudiofile/AIFF.cpp, libaudiofile/AIFF.h: - Refactor discrimination between AIFF and AIFF-C. - -2012-07-14 Michael Pruett - - * Prefix member variables with 'm_'. - -2012-07-14 Michael Pruett - - * Mark default file setup structures as constant. - -2012-07-14 Michael Pruett - - * Refactor file handle initialization. - -2012-07-05 Michael Pruett - - * docs/sfconvert.1.txt, sfcommands/sfconvert.c: - Add support for compression to sfconvert. - -2012-07-05 Michael Pruett - - * docs/afInitCompression.3.txt, - libaudiofile/WAVE.cpp, - libaudiofile/WAVE.h, - libaudiofile/modules/MSADPCM.cpp, - libaudiofile/modules/MSADPCM.h, - libaudiofile/units.cpp, - test/ADPCM.cpp: - Implement Microsoft ADPCM encoding for WAVE files. - -2012-07-05 Michael Pruett - - * docs/afInitCompression.3.txt, - libaudiofile/AIFF.cpp, - libaudiofile/AIFF.h, - libaudiofile/CAF.cpp, - libaudiofile/CAF.h, - libaudiofile/WAVE.cpp, - libaudiofile/WAVE.h, - libaudiofile/afinternal.h, - libaudiofile/modules/IMA.cpp, - libaudiofile/modules/IMA.h, - libaudiofile/modules/Makefile.am, - libaudiofile/units.cpp, - test/ADPCM.cpp, - test/Makefile.am: - Implement IMA ADPCM encoding and decoding for AIFF-C, CAF, and WAVE files. - -2012-07-05 Michael Pruett - - * libaudiofile/AudioFormat.h, - libaudiofile/WAVE.cpp, - libaudiofile/afinternal.h, - libaudiofile/modules/IMA.cpp, - libaudiofile/modules/MSADPCM.cpp: - Add framesPerPacket and bytesPerPacket fields to AudioFormat. - -2012-07-05 Michael Pruett - - * libaudiofile/data.cpp, libaudiofile/modules/Module.h: - Fix mismatched deallocation of temporary buffer in afReadFrames. - -2012-07-01 Michael Pruett - - * sfcommands/sfconvert.c: Improve error handling in sfconvert. - -2012-07-01 Michael Pruett - - * sfcommands/Makefile.am, sfcommands/sfconvert.c: - Clean up sfconvert. - -2012-07-01 Michael Pruett - - * libaudiofile/modules/FileModule.cpp, - libaudiofile/modules/FileModule.h, - libaudiofile/modules/G711.cpp, - libaudiofile/modules/IMA.cpp, - libaudiofile/modules/MSADPCM.cpp, - libaudiofile/modules/PCM.cpp: - Refactor error reporting in file modules. - -2012-06-21 Michael Pruett - - * libaudiofile/SampleVision.cpp: Fix comparisons between signed - and unsigned integers. - -2012-06-21 Michael Pruett - - * libaudiofile/AIFF.cpp, libaudiofile/IFF.cpp, - libaudiofile/WAVE.cpp, libaudiofile/modules/MSADPCM.cpp: - Remove unused variables. - -2012-06-21 Michael Pruett - - * libaudiofile/AVR.cpp, libaudiofile/Marker.cpp, - libaudiofile/NIST.cpp, libaudiofile/NeXT.cpp, - libaudiofile/Setup.cpp, libaudiofile/error.h, - libaudiofile/modules/G711.cpp, libaudiofile/modules/IMA.cpp, - libaudiofile/modules/MSADPCM.cpp, libaudiofile/modules/PCM.cpp: - Fix conversion specifications in error messages. - -2012-06-21 Michael Pruett - - * libaudiofile/modules/ModuleState.cpp, - libaudiofile/modules/RebufferModule.cpp, - libaudiofile/modules/RebufferModule.h - libaudiofile/modules/UT_RebufferModule.cpp: - Refactor rebuffer module. - -2012-05-20 Michael Pruett - - * libaudiofile/modules/RebufferModule.cpp: Fix error in rebuffering - when pulling multiple blocks at once. - -2012-05-20 Michael Pruett - - * libaudiofile/Makefile.am, - libaudiofile/modules/UT_RebufferModule.cpp: Add unit test for - rebuffer module. - -2012-05-20 Michael Pruett - - * Move Google Test framework to top of source tree. - -2012-05-20 Michael Pruett - - * Reorganize code coverage build configuration. - -2012-05-10 Michael Pruett - - * docs/*: Update documentation. - -2012-05-06 Michael Pruett - - * docs/sfconvert.1.txt, sfcommands/sfconvert.c: Add support for - Sample Vision to sfconvert. - -2012-05-06 Michael Pruett - - * Update documentation to include support for Sample Vision. - -2012-05-06 Michael Pruett - - * libaudiofile/VOC.cpp: Report an error when initializing a VOC file - with an invalid sample format. - -2012-05-06 Michael Pruett - - * test/Makefile.am, test/InvalidSampleFormat.cpp: Add test for - creating audio files with invalid sample formats. - -2012-05-06 Michael Pruett - - * Reorganize tests. - -2012-04-30 Michael Pruett - - * Release version 0.3.4 of the Audio File Library. - -2012-04-29 Michael Pruett - - * test/Makefile.am, test/pipe.cpp: Add test for reading and writing - with non-seekable file handles. - -2012-04-29 Michael Pruett - - * Add support for SampleVision format. - -2012-04-29 Michael Pruett - - * sfcommands/printinfo.c: Fix field width for sample rate when - printing short information. - -2012-04-29 Michael Pruett - - * examples/alsaplay.cpp: Update alsaplay to wait for samples to - finish playing before closing. - -2012-04-18 Michael Pruett - - * Use hidden visibility for internal symbols. - - Previously all symbols had default visibility, leading to possible symbol - conflicts. Thanks to Thomas Eschenbacher for pointing out this problem. - -2012-01-17 Michael Pruett - - * libaudiofile/extended.c: Update license for extended-precision - floating-point conversion routines. - -2012-01-11 Michael Pruett - - * Release version 0.3.3 of the Audio File Library. - -2012-01-11 Michael Pruett - - * configure.ac: Update library's soname version. - - Changing the definitions of AFframecount and AFfileoffset breaks - backwards binary compatibility and requires incrementing the - soname version. - -2012-01-11 Michael - - * examples/Makefile.am, test/Makefile.am: Link examples/power - and test/printmarkers explicitly against libm. - -2012-01-11 Matthias Rampke - - * libaudiofile/Makefile.am: Link against libm. - -2011-12-04 Michael Pruett - - * Refactor file handle and track creation and destruction. - -2001-11-30 Thomas Klausner - - * configure.ac: Replace nonstandard '==' operator with '=' in test - expressions. - -2011-11-29 Michael Pruett - - * Release version 0.3.2 of the Audio File Library. - -2011-11-28 Michael Pruett - - * libaudiofile/VOC.cpp: Fix initialization of byte order in - Creative Voice File format. - -2011-10-20 Michael Pruett - - * libaudiofile/NIST.cpp: Fix calculation of frame count in NIST - SPHERE sound files. - -2011-10-20 Michael Pruett - - * libaudiofile/byteorder.h: Remove unused byte-swapping macros. - -2011-10-20 Michael Pruett - - * Simplify calculation of track data size. - -2011-10-11 Michael Pruett - - * libaudiofile/af_vfs.h: Remove duplicate definition of AFvirtualfile. - -2011-09-19 Michael Pruett - - * Don't treat compiler warnings as errors by default. - -2011-09-18 Michael Pruett - - * Released version 0.3.1 of the Audio File Library. - -2011-09-17 Michael Pruett - - * Support u-law and A-law compression in Core Audio Format files. - -2011-09-17 Michael Pruett - - * Add support for Creative Voice File format. - -2011-09-14 Michael Pruett - - * docs/Makefile.am: Fix installation of man pages. - -2011-09-14 Michael Pruett - - * test/Makefile.am, test/channelmatrix.cpp: Add test for channel - matrix. - -2011-09-12 Michael Pruett - - * Released version 0.3.0 of the Audio File Library. - -2011-09-11 Michael Pruett - - * Define AFframecount and AFfileoffset as 64-bit signed integers. - - Previously these types were defined using off_t, whose size can vary - depending upon whether large file support is enabled. Now the library - is built with large file support and the API uses 64-bit frame counts - and file offsets. - -2011-08-20 Michael Pruett - - * test/Makefile.am, test/aes.cpp: Add test for reading and writing - AES channel data. - -2011-08-20 Michael Pruett - - * libaudiofile/AIFF.cpp, libaudiofile/Instrument.cpp, - libaudiofile/Instrument.h, libaudiofile/Loop.cpp, - libaudiofile/Setup.cpp, libaudiofile/Setup.h, test/Makefile.am, - test/loop.cpp: Fix initialization of loop data. - -2011-08-16 Michael Pruett - - * win32: Remove obsolete Windows project files. - -2011-05-07 Michael Pruett - - * libaudiofile/Makefile.am, libaudiofile/WAVE.{cpp,h}, - libaudiofile/UUID.{cpp,h}: Add support for extensible WAVE format. - -2011-04-16 Michael Pruett - - * Refactor file parsing and writing. Update VFS interface. - -2011-04-11 Michael Pruett - - * Reorganize source files. - -2011-04-11 Michael Pruett - - * Support more sample formats in IRCAM sound files. - -2011-04-04 Michael Pruett - - * Add support for Core Audio Format. - -2011-04-04 Michael Pruett - - * libaudiofile/IRCAM.cpp, libaudiofile/IRCAM.h, - libaudiofile/IRCAMWrite.cpp: Handle byte-swapped IRCAM sound files. - -2011-04-04 Michael Pruett - - * test/pcmdata.cpp, test/Makefile.am: Test reading and writing - PCM data formats supported by each file format. - -2011-03-29 Michael Pruett - - * test/large.cpp, test/seek.cpp, test/Makefile.am: Convert large - and seek test cases to use Google Test framework. - -2011-03-27 Michael Pruett - - * docs/*: Update documentation and convert to AsciiDoc format. - -2011-03-27 Michael Pruett - - * sfcommands/sfconvert.c: Update help message for sfconvert to - include NIST SPHERE format. - -2011-03-27 Michael Pruett - - * sfcommands/sfconvert.c, sfcommands/sfinfo.c, - sfcommands/printinfo.[ch]: Add --short and --reporterror options - to sfinfo. Add --help and --version options to sfconvert and - sfinfo. - -2011-03-27 Michael Pruett - - * libaudiofile/NeXT.cpp, test/Makefile.am, test/next.cpp: Fix handling - of NeXT sound files with unspecified or inconsistent length. - -2011-01-16 Michael Pruett - - * libaudiofile/audiofile.h, libaudiofile/Loop.cpp, - libaudiofile/Marker.cpp, libaudiofile/Miscellaneous.cpp, - libaudiofile/Track.cpp, libaudiofile/util.cpp, libaudiofile/util.h: - Change type of id arrays in initialization functions from int * - to const int *. - -2011-01-16 Michael Pruett - - * Refactor file parsing and writing. - -2011-01-12 Stefano Magni - - * libaudiofile/openclose.cpp: Fix leak of miscellaneous data buffers. - -2011-01-12 Michael Pruett - - * libaudiofile/IFF.cpp: Allow writing miscellaneous data in IFF/8SVX files. - -2011-01-12 Michael Pruett - - * test/Makefile.am, test/miscellaneous.cpp: Add test for reading and - writing miscellaneous data. - -2011-01-12 Michael Pruett - - * libaudiofile/audiofile.h, libaudiofile/Miscellaneous.cpp: Change - type of buffer parameter of afWriteMisc() from void * to const void *. - -2011-01-09 Michael Pruett - - * configure.ac, test/Makefile.am: Support running tests under Valgrind. - -2011-01-01 Michael Pruett - - Convert library implementation to C++; refactor file parsing and writing. - -2010-12-02 Michael Pruett - - Use local copy of Google Test framework. - -2010-11-29 Michael Pruett - - Refactor rebuffering module. - -2010-11-14 Michael Pruett - - Refactor audio conversion. - -2010-11-14 Michael Pruett - - Refactor file I/O. - - Eliminate VFS interface since it cannot support large files or provide - context for handling error conditions. - -2010-10-30 Michael Pruett - - * examples/Makefile.am, examples/alsaplay.cpp: Add example - program demonstrating audio file playback using ALSA. - -2010-10-30 Michael Pruett - - * test/floattoint.cpp, test/inttofloat.cpp, test/pcmmapping.cpp, - test/sign.cpp: Add tests for converting between integer and - floating-point audio data, between signed and unsigned integer - audio data, and between audio data with different PCM mappings. - -2010-09-20 Michael Pruett - - * libaudiofile/pcm.h, test/floatto24.c: Update default mapping - between floating-point and integer audio data. - - Map N-bit integer audio data to [-1, 1) rather than the previous - range of [-1 - 1/(2^N - 1), 1]. - -2010-09-11 Michael Pruett - - * configure.ac, Makefile.am, libaudiofile/Makefile.am, - libaudiofile/modules/Makefile.am, test/Makefile.am: Enable code - coverage reporting with lcov. - -2010-09-11 Michael Pruett - - * audiofile-config.in, audiofile.m4: Remove configuration files - superseded by pkg-config. - -2010-04-14 Brian Cameron - - * audiofile-uninstalled.pc.in, configure.ac: Add uninstalled - pkg-config file. - -2010-03-29 Michael Pruett - - * libaudiofile/af_vfs.h: Specify C linkage. - -2010-03-25 Daniel Kobras - - * libaudiofile/af_vfs.h: Include . - -2010-03-25 Daniel Kobras - - * audiofile.pc.in: Link against libm only for static builds. - -2010-03-21 Michael Pruett - - * Released version 0.2.7 of the Audio File Library. - -2010-03-21 Michael Pruett - - * libaudiofile/wavewrite.c: Write fact chunk in WAVE files - with floating-point audio data. - -2010-03-21 Michael Pruett - - * libaudiofile/aiff.c, libaudiofile/aiffwrite.c, - libaudiofile/iff.c, libaudiofile/iffwrite.c, - libaudiofile/util.c, libaudiofile/util.h, libaudiofile/wave.c, - libaudiofile/wavewrite.c: Add convenience functions for reading - and writing bytes and Pascal strings. - -2010-03-18 Michael Pruett - - * libaudiofile/wave.c, libaudiofile/wavewrite.c: Add support - for writing double-precision floating-point WAVE files. - - * test/Makefile.am, test/testdouble.c: Add test for reading and - writing double-precision floating-point audio files. - -2010-03-18 Michael Pruett - - * libaudiofile/aiffwrite.c, libaudiofile/avr.c, libaudiofile/ircam.c, - libaudiofile/next.c, libaudiofile/raw.c, libaudiofile/wave.c, - libaudiofile/wavewrite.c: Fix handling of audio files with more than - 2^24 frames. - - * test/Makefile.am, test/large.c: Add test for reading and writing - audio files with more than 2^24 frames. - -2010-03-17 Michael Pruett - - * Mark module function tables as constant. - -2010-03-17 Jason Allen - - * Mark data as constant in order to minimize unshared data. - -2010-03-16 Michael Pruett - - * Use C99 bool type. - -2010-03-16 Michael Pruett - - * libaudiofile/afinternal.h, libaudiofile/modules/adpcm.c, - libaudiofile/modules/adpcm.h, libaudiofile/modules/ima.c, - libaudiofile/modules/msadpcm.c, libaudiofile/wave.c: Fix decoding - of multi-channel ADPCM audio files. - -2010-03-15 Michael Pruett - - * Use C99 integer types. - -2010-03-12 Wim Lewis - - * libaudiofile/debug.c, libaudiofile/modules/msadpcm.c, - libaudiofile/modules/ima.c, libaudiofile/wavewrite.c, - libaudiofile/query.c: Remove unused variables and fix warnings. - -2004-11-14 Michael Pruett - - * libaudiofile/aiff.c: Add support for reading more nonstandard - uncompressed two's complement AIFF-C files created by Mac OS X. - -2004-09-14 Michael Pruett - - * libaudiofile/aiff.c: Add support for reading nonstandard - uncompressed AIFF-C files created by Mac OS X. - -2004-07-21 Michael Pruett - - * examples/power.c: Change invocations of 'abs' to 'fabs' since - arguments are doubles. - - * sfcommands/sfconvert.c: Add support for converting to the NIST - SPHERE file format. - -2004-06-26 Michael Pruett - - * libaudiofile/aiff.c, libaudiofile/aiff.h, libaudiofile/aiffwrite.c, - libaudiofile/next.c, libaudiofile/nextwrite.c, libaudiofile/wave.c, - libaudiofile/wavewrite.c: Clean up AIFF, WAVE, and NeXT file parsing - and writing code by using af_{read,write}_uint{16,32}_{be,le} where - appropriate. - -2004-04-14 Michael Pruett - - * configure.in: Update configure.in to conform to current - autoconf conventions. - - Thanks to Nico Roeser for this patch. - -2004-03-29 Michael Pruett - - * docs/*: Update documentation. - -2004-03-11 Michael Pruett - - * audiofile.m4: Quote AM_PATH_AUDIOFILE in order to fix - automake warning. - - * libaudiofile/Makefile.am: Prepend audiofile.exports with - $(srcdir) in order to allow building from another directory. - - Thanks to Frederic L. W. Meunier for these fixes. - - * libaudiofile/audiofile.exports: Add VFS functions to list of - exported symbols. - - Thanks to Daniel Kobras for pointing out this omission. - -2004-03-05 Michael Pruett - - * libaudiofile/Makefile.am, libaudiofile/audiofile.exports: - Export only public entry points. - - * Released version 0.2.6 of the Audio File Library. - -2004-02-19 Michael Pruett - - * libaudiofile/audiofile.h: Update comments to reflect the fact - that AVR and IFF/8SVX file formats are now implemented. - -2004-02-18 Michael Pruett - - * test/Makefile.am, test/writeavr.c. test/writeiff.c, - test/writenist.c: Add regression tests for AVR, IFF/8SVX, and - NIST SPHERE file formats. - -2004-02-14 Michael Pruett - - * configure.in, examples/Makefile.am, examples/osxplay.c: Add - example program for Mac OS X demonstrating audio file playback - using the Audio File Library and Core Audio. - -2004-02-09 Michael Pruett - - Fabrizio Gennari has contributed several Windows-related fixes: - - * libaudiofile/openclose.c, win32/config.h: Open files with - binary translation mode under MinGW and Cygwin. - * win32/sfinfo.dsp: Link against non-debug version of libaudiofile - when building non-debug version of sfinfo. - * win32/*: Sychronize MSVC project files with latest source code. - -2004-01-27 Michael Pruett - - * libaudiofile/afinternal.h, libaudiofile/openclose.c: Store - file name in AFfilehandle structure. - - * libaudiofile/Makefile.am, libaudiofile/avr.c, - libaudiofile/avr.h, libaudiofile/avrwrite.c, - libaudiofile/units.c: Add support for reading and writing AVR - files. - -2004-01-22 Michael Pruett - - * libaudiofile/util.[ch]: Add functions for reading and writing - 16-bit and 32-bit integers with specified byte order. - - * libaudiofile/Makefile.am, libaudiofile/iff.c, - libaudiofile/iff.h, libaudiofile/iffwrite.c, - libaudiofile/units.c: Add support for reading and writing - IFF/8SVX files. - -2004-01-15 Michael Pruett - - * libaudiofile/Makefile.am, libaudiofile/nist.c, - libaudiofile/nist.h, libaudiofile/nistwrite.c: Add support for - reading and writing NIST SPHERE files. - - * libaudiofile/audiofile.h: Add constants for new file - formats. - - * libaudiofile/units.c, libaudiofile/units.h: Define units for - new file formats. - -2004-01-12 Michael Pruett - - * libaudiofile/Makefile.am, libaudiofile/util.[ch], - libaudiofile/debug.[ch]: Move debugging routines into a - separate file. - - * libaudiofile/modules.c: Include "debug.h" for debugging - routines. - -2004-01-06 Michael Pruett - - * libaudiofile/afinternal.h, libaudiofile/aiff.h, - libaudiofile/aiffwrite.c: Eliminate duplicate definition of - AIFC_VERSION_1 constant. - -2003-12-21 Michael Pruett - - * Released version 0.2.5 of the Audio File Library. - -2003-12-20 Michael Pruett - - * test/seek.c: Delete temporary file before exiting. - -2003-12-17 Michael Pruett - - * libaudiofile/aiff.c: When reading an AIFF-C file with an - unknown compression type, return an error. - - * libaudiofile/aiff.c: Skip zero-length miscellaneous chunks. - - * libaudiofile/aiff.c: Add support for reading AIFF-C files with - little-endian audio data. - -2003-12-17 Michael Pruett - - Fix two bugs related to processing 24-bit audio data. - - * libaudiofile/data.c: Fix calculation of bytes per virtual frame - in the case of 24-bit audio data. Previously, requesting more - than _AF_ATOMIC_NVFRAMES from afReadFrames when reading a 24-bit - audio file would result in corrupted audio data since the audio - data pointer would be incremented using a sample size of 3 bytes - rather than 4 bytes. - - * libaudiofile/openclose.c: Set virtual sample width by default to - the same value as file sample width. Previously for 24-bit audio - data, the virtual sample width would be incorrectly set to 32. - - * test/twentyfour2.c: Add new test which checks reading and - writing a large amount of 24-bit audio data. This program - serves as a regression test for a bug in the Audio File Library - in which requesting more than 1024 frames (_AF_ATOMIC_NVFRAMES) - from afReadFrames when reading a 24-bit audio file would result - in corrupted audio data. - -2003-12-08 Michael Pruett - - * examples/*, test/*: Add examples subdirectory. Separate - example programs from regression test programs. Remove obsolete - test programs. - -2003-12-03 Michael Pruett - - * sfcommands/sfconvert.c: Fix argument parsing in sfconvert. - * sfcommands/printinfo.c: Fix format strings to handle different - sizes of off_t when printing track byte count, data offset, - and frame count. - -2003-10-01 Michael Pruett - - * sfcommands/printinfo.c: Change printfileinfo to display duration - with millisecond accuracy. - -2003-09-29 Michael Pruett - - * test/seek.c: Include for memcmp. Thanks to Christian - Weisgerber for catching this omission. - -2003-09-25 Michael Pruett - - * Released version 0.2.4 of the Audio File Library. - -2003-09-24 Michael Pruett - - * libaudiofile/afinternal.h: Remove unused structure definitions. - * libaudiofile/audiofile.h: Correct return type of afTellFrame - to be AFframecount rather than AFfileoffset. - -2003-09-23 Michael Pruett - - * libaudiofile/modules/ima.c: Include . - -2003-09-16 Michael Pruett - - * libaudiofile/audiofile.h: Define LIBAUDIOFILE_MICRO_VERSION. - -2003-09-15 Michael Pruett - - * test/Makefile.am, test/seek.c: Add test case for seeking within - an audio file. - -2003-09-11 Michael Pruett - - * test/*.c: Update tests to use exit(EXIT_FAILURE) upon abnormal - termination. - -2003-09-11 Michael Pruett - - * libaudiofile/wave.c, libaudiofile/wavewrite.c: Add support - for miscellaneous data in WAVE files. Thanks to Davy Durham - for this patch. - - * test/{misc.sh,miscread.c,miscwrite.c}: Update miscellaneous - data tests to support WAVE as well as AIFF. - -2003-09-11 Michael Pruett - - * libaudiofile/*.c: Replace use of off_t with AFfileoffset and - AFframecount, as appropriate. - * configure.in: Add AC_SYS_LARGEFILE in order to support large - files. - -2003-09-09 Michael Pruett - - * libaudiofile/*.c: Include as necessary. - -2003-09-08 Michael Pruett - - * test/*.c: Update test programs to include as necessary. - -2003-09-04 Michael Pruett - - * configure.in, libaudiofile/{aiff.c,aiff.h,aiffwrite.c}, - libaudiofile/{ircam.c,ircamwrite.c}, libaudiofile/modules.h, - libaudiofile/{next.c,nextwrite.c}, libaudiofile/nist.c, - libaudiofile/{wave.c,wavewrite.c}, libaudiofile/modules/adpcm.h, - test/{pipe.c,sixteen-to-eight.c,twentyfour.c}: Check for - and include it if available. - - Thanks to Daniel Bergstrom for proposing this change. - -2003-08-21 Michael Pruett - - * configure.in, Makefile.am, win32/Makefile.am: Include win32 - directory in distribution. - -2003-07-02 Michael Pruett - - * test/testchannelmatrix.c, test/Makefile.am: Add regression - test for channel matrix functionality. - -2003-07-01 Michael Pruett - - Applying a patch from Masahiro Sakai to enable building as a - DLL under Cygwin. - - * configure.in: Add AC_LIBTOOL_WIN32_DLL and call - AM_PROG_LIBTOOL after AC_PROG_CC. - * libaudiofile/Makefile.am: Add -no-undefined to - libaudiofile_la_LDFLAGS. - -2003-06-10 Michael Pruett - - * libaudiofile/format.c: Fix error in channel matrix - initialization. Thanks to Jasmin Frenette for reporting this - problem. - -2002-09-11 Michael Pruett - - * libaudiofile/raw.c: Account for data offset when calculating - frame count on raw audio data files. - - Thanks to Davy Durham for reporting this problem. - - * test/writeraw.c, test/Makefile.am: Add a regression test for - raw audio data files. - -2002-05-17 Michael Pruett - - * libaudiofile/wave.c: Add support for reading names of markers - in WAVE files. Locations of WAVE markers are now assumed to be - in units of frames as is the case with Sound Forge. - * libaudiofile/wavewrite.c, libaudiofile/wave.h: Add support - for writing markers in WAVE files. - - Thanks to Davy Durham for the above patches. - - * libaudiofile/marker.[ch]: Change static function findMarkByID - to non-static _af_mark_find_by_id for use by WAVE file marker - code. - - * test/testmarkers.c: Add a regression test for markers. - * test/printmarkers.c: Add a utility for printing marker - information. - * test/Makefile.am: Add testmarkers and printmarkers. - -2002-05-16 Michael Pruett - - * libaudiofile/wave.c: Compute the frame count of uncompressed - WAVE files using double-precision floating-point arithmetic. - -2002-05-16 Michael Pruett - - * libaudiofile/openclose.c: Implement afOpenVirtualFile. - -2002-03-24 Michael Pruett - - * libaudiofile/marker.c: afInitMarkerComment was corrupting the - marker's name because it would free and allocate the marker's - name but write to its comment. Thanks to Daniel Kobras and - Davy Durham for noticing and fixing this problem. - -2002-02-20 Michael Pruett - - * libaudiofile/*: Eliminate unnecessary global symbols. Thanks - to Daniel Kobras for fixing this problem. - -2002-02-04 Michael Pruett - - * audiofile.spec.in: Add /usr/lib/libaudiofile.la and - /usr/lib/pkgconfig/audiofile.pc to the RPM spec file. - -2001-10-25 Michael Pruett - - * test/irixread.c: Improve error handling. Use proper - conversion specifications in printf statements. - - * Makefile.am, configure.in, audiofile.pc.in: Add pkgconfig file. - - * Released version 0.2.3 of the Audio File Library. - -2001-10-10 Michael Pruett - - * test/error.c: Expanded the error test to include several more - library functions. - - * libaudiofile/format.c: Improve error checking and add comments. - -2001-09-20 Michael Pruett - - * test/irixread.c, test/irixtestloop.c, test/linuxtest.c: - Always use virtual audio format in calculations regarding audio - data in memory. - -2001-09-18 Michael Pruett - - * configure.in: Bump version to 0.2.3 in anticipation of the - upcoming release. - -2001-09-08 Michael Pruett - - * test/sgi.c: Replace fixed-point shift with a call to the more - elegant alDoubleToFixed. - -2001-08-29 Michael Pruett - - * test/pipe.{c,sh}: Added simple test of Audio File Library - operation on non-seekable file handles. - -2001-08-28 Michael Pruett - - * libaudiofile/openclose.c: Applied Chris Wolf's patch invoking - the macro SETBINARYMODE on all file pointers before handing - them off to the AF VFS. This macro does nothing on non-Windows - systems. - -2001-08-27 Michael Pruett - - * win32/*: Added Chris Wolf's Windows port of the Audio File Library. - -2001-08-24 Michael Pruett - - * libaudiofile/error.c: Include . - - * libaudiofile/modules.c: Replacing null macro arguments with - the token NULLMODULEPARAM so that the module macros will work - with bad preprocessors. - -2001-08-23 Michael Pruett - - * libaudiofile/openclose.c: Include only if the - system has this header file. - - * libaudiofile/modules/rebuffer.c: Don't define min and max if - they've been defined already. - -2001-08-23 Michael Pruett - - * libaudiofile/modules/Makefile.am, libaudiofile/units.[ch]: - Added IMA and MS ADPCM compression modules. - - * libaudiofile/modules/msadpcm.[ch]: Checked in MS ADPCM - compression module. - - * libaudiofile/modules/{ima,adpcm}.[ch]: Checked in IMA - compression module and Stichting Mathematisch Centrum's IMA - reference codec. - - * libaudiofile/afinternal.h: Declared new internal tokens for - compression parameters in PV lists. - - * libaudiofile/audiofile.h: Declared constants for DV and MS - ADPCM compression formats. - - * libaudiofile/wave.[ch]: Handle IMA and MS ADPCM compression - in WAVE files. - - * libaudiofile/openclose.c: If a track has compression - parameters, deallocate them before closing the file. - - * sfcommands/printinfo.c: Added support for compressed audio - data to sound commands. - -2001-08-07 Michael Pruett - - * libaudiofile/query.c: Added support for - AF_QUERYTYPE_COMPRESSION. - -2001-08-04 Michael Pruett - - * libaudiofile/util.c, libaudiofile/util.h: Add utility - routines _af_pv_getlong, _af_pv_getdouble, and _af_pv_getptr. - -2001-07-19 Michael Pruett - - * Released version 0.2.2 of the Audio File Library. - -2001-07-19 Michael Pruett - - * libaudiofile/format.c: Add afSetChannelMatrix and - afGetVirtualChannels. - - * libaudiofile/openclose.c: Add afIdentifyFD, afIdentifyNamedFD, - afOpenFD, and afOpenNamedFD. - -2001-07-18 Michael Pruett - - * sfcommands/sfconvert.c: Use a fixed-size buffer for reading - and writing audio data, thus reducing memory usage when - converting large sound files. Add float, integer, and channels - keywords to sfconvert. - - * docs/sfconvert: Updated documentation to reflect new - keywords. - - * libaudiofile/setup.c: Change the default file format for - big-endian systems from AIFF to AIFF-C. - - * libaudiofile/{data.c,audiofile.h}: Change the type of the - buffer parameter of afWriteFrames from void * to const void *. - -2001-07-12 Michael Pruett - - * libaudiofile/{aiffwrite.c,wavewrite.c}: Since - _af_format_frame_size takes compression into account, compute - the extent of compressed and uncompressed audio data using - _af_format_frame_size. - - * libaudiofile/wave.c: Add support for double-precision - floating-point WAVE files. - -2001-07-10 Michael Pruett - - * libaudiofile/util.[ch]: Make _af_format_sample_size and - _af_format_frame_size consider compression. - -2001-07-09 Michael Pruett - - * libaudiofile/aiffwrite.c: Make AIFF code handle compressed - data formats more cleanly. - - * libaudiofile/{wave.h,wave.c,wavewrite.c}: Make WAVE code - handle compressed data formats more cleanly. - - * test/query2.c: Print default value of instrument parameters - if instrument parameters are supported. - - * test/{writeulaw.c,writealaw.c}: Update writeulaw and - writealaw to test G.711 compression in AIFF-C and WAVE files in - addition to NeXT .snd. - -2001-07-08 Michael Pruett - - * libaudiofile/{aiff.c,aiffwrite.c}: Add support for - floating-point AIFF-C files. - - * test/testfloat.c: Add a test for reading and writing - floating-point audio files. - - * libaudiofile/af_vfs.[ch]: Change the virtual file read and - write operations to use size_t and ssize_t as read(2) and - write(2) do. - -2001-07-07 Michael Pruett - - * configure.in, test/Makefile.am: Link against libaudio.so only - for programs which use it. - -2001-07-04 Michael Pruett - - * test/floatto24.c: Added program to test virtual sample format - conversion from float to 24-bit signed integer. - -2001-06-28 Michael Pruett - - * libaudiofile/pcm.c: Added afInitPCMMapping(), - afGetPCMMapping(), and afGetVirtualPCMMapping(). - -2001-06-28 Michael Pruett - - * libaudiofile/{wave.c,wavewrite.c}: Improved support for - floating-point WAVE files. - - * libaudiofile/wave.c: Made error messages more informative for - currently unsupported data formats such as ADPCM and MPEG - audio. - - * libaudiofile/wave.h: Declared additional WAVE format tag - constants. - -2001-06-28 Mark Murnane - - * libaudiofile/{openclose.c,track.c}: Included string.h to - ensure proper declaration of memset(). - - * libaudiofile/util.c: Ditto for memset(), strlen() and strcpy(). - - * libaudiofile/modules/g711.c: Ditto for strerror(). - - * sfcommands/sfconvert.c: Ditto for strcmp(). - -2001-06-19 Michael Pruett - - * test/power.c: Adding a new example program which calculates - the power and peak amplitudes of an audio file. This program - is based on Chris Vaill's normalize. - -2001-06-06 Michael Pruett - - * libaudiofile/modules.c: Fix conversion between 24-bit and - 32-bit data formats on little-endian systems. Thanks to Axel - Roebel for pointing out this problem. - - * libaudiofile/aiffwrite.c: Don't write a MARK chunk unless - markers are present. Don't confuse the big-endian marker id - used for writing to the file with its native-endian value used - in calls to afGetMark*. - - * test/twentyfour.c: Add a new program to test the conversion - between 24-bit signed integer data in a file and 32-bit signed - integer data in memory. - -2001-06-05 Michael Pruett - - * libaudiofile/af_vfs.c: Prevent division by zero in af_fread - and af_fwrite when size is zero. - - * libaudiofile/aiff.c: Check that the number of markers in a - MARK chunk is positive before allocating markers. - - Thanks to Axel Roebel for pointing out both of these problems. - -2001-05-19 Michael Pruett - - * libaudiofile/nist.[ch]: Checked in support for recognizing - NIST SPHERE files. - -2001-05-16 Michael Pruett - - * libaudiofile/query.c: Backing out last change. The file - format and instrument parameter selectors once again return - arrays of type 'int' rather than arrays of type 'long'. - - Although the AUpv structure uses only long integers, the Audio - File Library's API uses 'int' and not 'long' when describing - file formats and instrument parameters. Furthermore all - existing applications expect the affected query calls to return - arrays of int. - - * test/query2.c: Expect arrays of int rather than arrays of - long when querying on file formats and instrument parameters. - -2001-05-09 Michael Pruett - - * libaudiofile/aiffwrite.c: Fix a memory leak in WriteMARK, and - make WriteMARK use the afGetMark* calls rather than accessing - track->markers directly. - - * libaudiofile/util.[ch]: Add _af_print_pvlist for debugging. - -2001-05-04 Michael Pruett - - * libaudiofile/ircam.[ch]: Make a first pass at supporting the - IRCAM file format. - -2001-04-25 Michael Pruett - - * libaudiofile/query.c: Although the documentation states that - certain selectors return an array of integers, the AUpv structure - uses only long integers. I'm resolving the ambiguity in the - documentation by making such selectors return an array of long - integers. - - This change has no impact on platforms where sizeof (int) == - sizeof (long), but it makes the query system consistent on - platforms where the above is not the case. - -2001-04-23 Michael Pruett - - * libaudiofile/wavewrite.c: Fixed a bug seen on 64-bit systems - in which WAVE files would be created with zero-length RIFF and - data chunks. (Thanks to Wayne Price for bringing this bug to - my attention.) - -2001-04-19 Michael Pruett - - * sfcommands/sfconvert.c: Make sfconvert use the sample rate of - the input file. - -2001-04-09 Michael Pruett - - * Include in source files which use string functions. - (Thanks to Michael Madore for pointing out this omission.) - * Fix calculation of file position for G.711 compression. - (Thanks to Bruce Forsberg for pointing out this bug.) - * configure.in: Check for int{8,16,32}_t and define them - appropriately if they are missing. - -2001-02-20 Michael Pruett - - * Released version 0.2.1. - * Removed -release flag on library build. - * libaudiofile/*: Added some lint-style comments to clean up - some warnings pointed out by Jean-Francois Panisset. - -2000-12-15 Michael Pruett - - * Released version 0.2. - -2000-11-01 Michael Pruett - - * libaudiofile/*: Finished integrating the modules code. - -2000-10-26 Michael Pruett - - * libaudiofile/raw.[ch]: Added support for raw file reading and - writing. - -2000-10-24 Michael Pruett - - * libaudiofile/*: Cleaned up the Audio File Library and improved - error handling. - -2000-10-09 Michael Pruett - - * libaudiofile/wave*.[ch]: WAVE format chunks can occur in any - order. Processing of WAVE chunks now acts accordingly. - (Thanks to Michael Krause for pointing out shortcomings in the - previous implementation.) - * libaudiofile/*.[ch]: The VFS layer doesn't handle SEEK_END - as a valid mode for fseek; we must use af_flength instead. - * Removed query from the test suite as it did not handle - values of AU_NULL_PVLIST returned from afQuery. (It even - crashes under IRIX.) - -2000-10-04 Michael Pruett - - * libaudiofile/*.c: Added better error handling. - * libaudiofile/*.c: Added the file format unit structure, - updated querying accordingly. All queries except compression - types are implemented. - * Added query and query2 to the test suite. - -2000-09-13 Michael Pruett - - * libaudiofile/*.c: Added support for G.711 a-law, thanks to - Bruce Forsberg. - -1999-11-20 Michael Pruett - - * libaudiofile/*.c: Cleaning up, added afOpenFD. - -1999-08-21 Kjartan Maraas - - * */*c: Even more warning fixes - initialize vars, add 'int' as return - type of a function, and include headers. - -1999-08-20 Elliot Lee - * */*.c: More warning fixes - remove unused variables, add 'int' as return type - of main(), and include some more header files. - -1999-08-18 Anders Carlsson - - * Fixed compiler warnings. - -1999-08-16 Elliot Lee - * libaudiofile/af_vfs.[ch]: Virtualize file access. - * libaudiofile/*.[ch]: Use the new virtualized file access routines. - -1999-05-09 Michael Pruett - - * bread.c, ulaw.c: If more sample frames are requested than - remain in the file, limit the number of sample frames that can - be returned. This bug was brought to my attention by Scott - Heavner. - * test/sgi.[ch]: These files contain SGI Audio Library routines - used in SGI-specific test programs. - * test/irixread.c, test/irixtest.c, test/irixtestloop.c: These - programs now use the routines contained in sgi.[ch] and are more - robust. - -1999-05-23 Raja R Harinath - - * test/miscread.c: Include . - * test/miscwrite.c: Likewise. - * test/writeaiff.c: Likewise. - * test/writenext.c: Likewise. - * test/writeulaw.c: Likewise. - * test/writewave.c: Likewise. - -1999-05-09 Michael Pruett - - * Merge in Audio File Library version 0.1.7. - - * aiff.c: Fixed an obscure bug in AIFF parsing in the - instrument chunk parsing code. Made AIFF parsing slightly - cleaner by replacing multiple-character constant comparisons - with memcmp and strings. - - * compression.[ch]: Added support for compressed audio. - - * au.c, auwrite.c, ulaw.c, g711.[ch]: Incorporated support for - G.711 mu-law encoding. Currently this encoding is only available - for NeXT/Sun .snd/.au format files. - - * audiofile.c: Virtual byte order is now set properly. - - * aiff.c, audiofile.c, auwrite.c, bread.c, bwrite.c, - compression.c, instrument.c, loop.c, marker.c, misc.c, - query.c, ulaw.c: Added more error checking. - - * docs/*: Documentation has been improved. - - * test/*: Several simple test programs have been added as a - test suite. - - * sfcommands/*: Fix hard-coded virtual byte order since it's - now set by the library. - - * configure.in: Fixed platform-specific tests and detect byte - order at configuration time. - -1999-04-11 James Henstridge - - * audiofile.spec.in: added %{prefix}/share/aclocal/* to files - list for the devel package. - -1999-02-24 Martin Baulig - - * configure.in (BUILD_STATIC_LIBS): New automake conditional. - - * sfcommands/Makefile.am, test/Makefile.am: Only link statically - if we build static libraries. - -1999-02-22 Raja R Harinath - - * libaudiofile/audiofile.h (extern "C"): Remove duplicated - __cplusplus guards. - -1999-02-22 Michael Fulbright - * Fixed spec file to be autogenerated - -1999-02-22 Michael Pruett - Elliot Lee - - * */*: Merge in audiofile 0.1.6. - -1999-01-20 Jeff Garzik - - * libaudiofile/wave.c: - Fix newly-uncovered bug caught by Mike Bond . - -1999-01-17 Jeff Garzik - - * aiff.c, wave.c: - Replaced some [int == '1234'] comparisons with memcmp. - - * aiff.h: - Replaced large enum value with 'const unsigned long' instead, to - silence ANSI C compiler warning. - - * ulaw.c: - Converted function declarations from K&R to ANSI C, silencing a - (big surprise) ANSI C compiler warning. - - * libaudiofile/Makefile.am: - Remove non-existent instrument.h, loop.h, marker.h - - * sfcommands/Makefile.am: - Add README to EXTRA_DIST. - - * libaudiofile/aiff.c, libaudiofile/aiffwrite.c, - libaudiofile/audiofile.c, libaudiofile/auwrite.c, - libaudiofile/bread.c, libaudiofile/bwrite.c, - libaudiofile/byteorder.c, libaudiofile/byteorder.h, - libaudiofile/extended.c, libaudiofile/extended.h, - libaudiofile/instrument.c, libaudiofile/loop.c, - libaudiofile/marker.c, libaudiofile/misc.c, - libaudiofile/swapblock.c, libaudiofile/swapblock.h, - libaudiofile/ulaw.c, libaudiofile/ulaw.h: - More namespace cleanups. Made a few functions static, several - more renamed to add "_af_" prefix. - - * libaudiofile/instrument.h, libaudiofile/loop.h, - libaudiofile/marker.h: - Removed because they only contained prototypes of static funcs, - and were included only by their implementation modules. - -1999-01-16 Jeff Garzik - - * test/transparency.c: - Change to unsigned short to avoid Sun CC warning. - - * libaudiofile/swapblock.c: - Changed const long to a #define, Sun CC choked on the const. - The definition of u_int16_t may be interfering with array - definitions like this one, b/c u_int16_t is a macro instead of a - typedef on Solaris platforms. - - * acconfig.h: - Protected against multiple inclusion, using @TOP@ and @BOTTOM@. - - * libaudiofile/afinternal.h: - Include config.h for u_int8_t and friends. - - * libaudiofile/audiofile.h, libaudiofile/aupvlist.h: - Mark as extern 'c' if C++ compile. - - * libaudiofile/aiff.c, libaudiofile/aiffwrite.c, - libaudiofile/au.c, libaudiofile/audiofile.c, - libaudiofile/auwrite.c, libaudiofile/bread.c, - libaudiofile/bwrite.c, libaudiofile/byteorder.c, - libaudiofile/swapblock.c, libaudiofile/util.c, - libaudiofile/wave.c, libaudiofile/wavewrite.c, - test/miscread.c, test/miscwrite.c: - s/#if HAVE_CONFIG_H/#ifdef HAVE_CONFIG_H/ - -1999-01-16 Jeff Garzik - - * libaudiofile/afinternal.h, libaudiofile/aiff.c, - libaudiofile/aiffwrite.c, libaudiofile/au.c, - libaudiofile/audiofile.c, libaudiofile/auwrite.c, - libaudiofile/bread.c, libaudiofile/bwrite.c, - libaudiofile/error.c, libaudiofile/error.h, - libaudiofile/instrument.c, libaudiofile/loop.c, - libaudiofile/marker.c, libaudiofile/misc.c, - libaudiofile/util.c, libaudiofile/util.h, - libaudiofile/wave.c, libaudiofile/wavewrite.c: - Major namespace cleanups: - Made several functions static as warranted. - Renamed a some exported private functions to _af_funcname - to prevent collision. - -1999-01-16 Jeff Garzik - - * autogen.sh configure.in acconfig.h: - Added AM_CONFIG_HEADER and requisite support for it. - - * libaudiofile/aiff.c libaudiofile/aiffwrite.c libaudiofile/au.c - libaudiofile/audiofile.c libaudiofile/auwrite.c - libaudiofile/bread.c libaudiofile/bwrite.c - libaudiofile/byteorder.c libaudiofile/swapblock.c - libaudiofile/util.c libaudiofile/wave.c - libaudiofile/wavewrite.c test/miscread.c test/miscwrite.c: - Conditionally include config.h. - -1999-01-16 Raja R Harinath - - * libaudiofile/error.c (afSetErrorHandler): Provide a better - implementation which agrees with the semantics of the variable - names, and usual "set_error_handler" type of functions. (Modifies - a "fix" in commit: "1999-01-16 Jeff Garzik "). - -1999-01-16 Jeff Garzik - - * libaudiofile/aes.c, libaudiofile/aiff.c, libaudiofile/aiffwrite.c, - libaudiofile/au.c, libaudiofile/audiofile.c, libaudiofile/aupv.c, - libaudiofile/auwrite.c, libaudiofile/bread.c, libaudiofile/bwrite.c, - libaudiofile/error.c, libaudiofile/loop.c, libaudiofile/misc.c, - libaudiofile/swapblock.c, libaudiofile/util.c, libaudiofile/wave.c, - libaudiofile/wavewrite.c, sfcommands/printinfo.c, - sfcommands/sfconvert.c, sfcommands/sfinfo.c: - Corrected missing-default-case, unused-var, no-return-value, - implicit-declaration, other gcc warnings. Fixing those warnings - also fixed many bugs. - - * test/adddcoffset.c, test/copy.c, test/linuxtest.c, test/miscread.c, - test/miscwrite.c, test/results.c, test/transparency.c: - Changed main() declaration to standard one, fixed warnings. - -1999-01-01 Jeff Garzik - - * libaudiofile/audiofile.h: - Corrected comma-in-final-element warnings. - -1998-12-10 Jeff Garzik - - * tests/miscwrite.c: - include string.h to silence warning about strlen - -Tue Dec 8 21:38:08 PST 1998 Manish Singh - - * auto* fixes for make dist - -1998-12-07 Jeff Garzik - - * LICENSE: - Removed. Automake automatically adds the file COPYING to the - distribution, so this file is redundant. - -1998-12-01 Yo Ric Dude - - * libaudiofile/Makefile.am, au.c, audiofile.c, audiofile.h, - bread.c, teach libaudiofile how to handle u-law encoded .au - files. NOTE: only added routines for reading files. - - * libaudiofile/ulaw.c, libaudiofile/ulaw.h: u-law algorithms from - http://www.itl.atr.co.jp/comp.speech/Section2/Q2.7.html. - -1998-10-21 Bertrand Guiheneuf - * added an audiofile-config and an audiofile.m4 - -1998-10-17 Raja R Harinath - - * configure.in (u_int_{8,16,32}_t): Define these to some "natural" - C types if the typedefs are missing. - - * libaudiofile/Makefile.am (include_HEADERS): - Remove spurious empty line. - -Wed Oct 7 02:13:34 PDT 1998 Manish Singh - - * auto* stuff fixes - -Wed Oct 7 02:08:30 CDT 1998 Frank Belew - - * added support for automake, and libtool - -1998-07-16 Michael Pruett - - * Changes for the Audio File Library version 0.1.4. - - AES data functions are now implemented. They're only effective - whenusing the AIFF/AIFF-C formats. - - Miscellaneous data functions are now implemented for the - AIFF/AIFF-C file formats. - - The Audio File Library now uses GNU autoconf. - - The Audio File Library now builds shared libraries. - - Some rudimentary documentation is now included. - -1998-06-22 Michael Pruett - - * Changes for the Audio File Library version 0.1.3 - - The Linux-specific test programs should work on all Linux - platforms which support audio. (I believe this includes just - Linux/i386, Linux/PowerPC, and Linux/Alpha. I may be wrong.) - - The function afReadFrames now returns the proper value. - - The afGetInstParams, afSetInstParams, afGetInstParamLong, and - afSetInstParamLong calls are now implemented to the same extent - that SGI's versions are. - - Instrument, marker, and loop data functions are now fully - implemented. I'll eventually get around to the miscellaneous data - functions. - - The AUpvlist functions have been implemented and tested. The - afQuery calls are on my list of things to implement. - - A few minor bugs have been fixed. diff --git a/tools/audiofile-0.3.6/INSTALL b/tools/audiofile-0.3.6/INSTALL deleted file mode 100644 index b42a17ac..00000000 --- a/tools/audiofile-0.3.6/INSTALL +++ /dev/null @@ -1,182 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. diff --git a/tools/audiofile-0.3.6/Makefile b/tools/audiofile-0.3.6/Makefile deleted file mode 100644 index 5e386210..00000000 --- a/tools/audiofile-0.3.6/Makefile +++ /dev/null @@ -1,898 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/audiofile-uninstalled.pc.in \ - $(srcdir)/audiofile.pc.in $(srcdir)/audiofile.spec.in \ - $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \ - ChangeLog INSTALL NEWS TODO config.guess config.sub depcomp \ - install-sh ltmain.sh missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = audiofile.spec audiofile.pc \ - audiofile-uninstalled.pc -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = -top_builddir = . -top_srcdir = . -SUBDIRS = gtest libaudiofile sfcommands test examples docs -EXTRA_DIST = \ - ACKNOWLEDGEMENTS \ - NOTES \ - README \ - TODO \ - COPYING.GPL \ - configure configure.ac \ - audiofile.spec.in \ - audiofile.pc.in \ - audiofile-uninstalled.pc.in - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = audiofile.pc -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -audiofile.spec: $(top_builddir)/config.status $(srcdir)/audiofile.spec.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -audiofile.pc: $(top_builddir)/config.status $(srcdir)/audiofile.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -audiofile-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/audiofile-uninstalled.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod u+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean-local: -clean: clean-recursive - -clean-am: clean-generic clean-libtool clean-local mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool clean-local ctags ctags-recursive dist dist-all \ - dist-bzip2 dist-gzip dist-hook dist-lzip dist-lzma dist-shar \ - dist-tarZ dist-xz dist-zip distcheck distclean \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-pkgconfigDATA - - -dist-hook: audiofile.spec - cp audiofile.spec $(distdir) - -#coverage: -# $(MAKE) coverage-reset -# $(MAKE) check -# $(MAKE) coverage-report - -#coverage-reset: -# $(LCOV) --base-directory=. --directory ./libaudiofile --zerocounters - -#coverage-report: -# $(LCOV) --directory ./libaudiofile \ -# --capture \ -# --output-file ./lcov.info - -# $(LCOV) --directory ./libaudiofile \ -# --output-file ./lcov.info \ -# --remove ./lcov.info \ -# "/usr/include/*" "gtest/*" "*/UT_*" - -# $(mkdir_p) ./coverage -# git_commit=`GIT_DIR=./.git git log -1 --pretty=format:%h 2>/dev/null`; \ -# $(GENHTML) --title "audiofile 0.3.6 $$git_commit" \ -# --output-directory ./coverage ./lcov.info -# @echo -# @echo 'lcov report can be found here:' -# @echo 'file:///i/Development/sm64pc/tools/audiofile-0.3.6/coverage/index.html' -# @echo - -#clean-local: -# -rm -rf coverage - -#.PHONY: coverage-reset coverage coverage-report -coverage: - @echo "Code coverage is not enabled." - @exit 1 - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/Makefile.am b/tools/audiofile-0.3.6/Makefile.am deleted file mode 100644 index 33732698..00000000 --- a/tools/audiofile-0.3.6/Makefile.am +++ /dev/null @@ -1,58 +0,0 @@ -## Process this file with automake to produce Makefile.in - -SUBDIRS = gtest libaudiofile sfcommands test examples docs - -EXTRA_DIST = \ - ACKNOWLEDGEMENTS \ - NOTES \ - README \ - TODO \ - COPYING.GPL \ - configure configure.ac \ - audiofile.spec.in \ - audiofile.pc.in \ - audiofile-uninstalled.pc.in - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = audiofile.pc - -dist-hook: audiofile.spec - cp audiofile.spec $(distdir) - -if ENABLE_COVERAGE -coverage: - $(MAKE) coverage-reset - $(MAKE) check - $(MAKE) coverage-report - -coverage-reset: - $(LCOV) --base-directory=@top_srcdir@ --directory @top_srcdir@/libaudiofile --zerocounters - -coverage-report: - $(LCOV) --directory @top_srcdir@/libaudiofile \ - --capture \ - --output-file @top_builddir@/lcov.info - - $(LCOV) --directory @top_srcdir@/libaudiofile \ - --output-file @top_builddir@/lcov.info \ - --remove @top_builddir@/lcov.info \ - "/usr/include/*" "gtest/*" "*/UT_*" - - $(mkdir_p) @top_builddir@/coverage - git_commit=`GIT_DIR=@top_srcdir@/.git git log -1 --pretty=format:%h 2>/dev/null`; \ - $(GENHTML) --title "@PACKAGE@ @VERSION@ $$git_commit" \ - --output-directory @top_builddir@/coverage @top_builddir@/lcov.info - @echo - @echo 'lcov report can be found here:' - @echo 'file://@abs_top_builddir@/coverage/index.html' - @echo - -clean-local: - -rm -rf coverage - -.PHONY: coverage-reset coverage coverage-report -else -coverage: - @echo "Code coverage is not enabled." - @exit 1 -endif diff --git a/tools/audiofile-0.3.6/Makefile.in b/tools/audiofile-0.3.6/Makefile.in deleted file mode 100644 index 1b754062..00000000 --- a/tools/audiofile-0.3.6/Makefile.in +++ /dev/null @@ -1,898 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/audiofile-uninstalled.pc.in \ - $(srcdir)/audiofile.pc.in $(srcdir)/audiofile.spec.in \ - $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \ - ChangeLog INSTALL NEWS TODO config.guess config.sub depcomp \ - install-sh ltmain.sh missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = audiofile.spec audiofile.pc \ - audiofile-uninstalled.pc -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = gtest libaudiofile sfcommands test examples docs -EXTRA_DIST = \ - ACKNOWLEDGEMENTS \ - NOTES \ - README \ - TODO \ - COPYING.GPL \ - configure configure.ac \ - audiofile.spec.in \ - audiofile.pc.in \ - audiofile-uninstalled.pc.in - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = audiofile.pc -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -audiofile.spec: $(top_builddir)/config.status $(srcdir)/audiofile.spec.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -audiofile.pc: $(top_builddir)/config.status $(srcdir)/audiofile.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -audiofile-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/audiofile-uninstalled.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod u+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -@ENABLE_COVERAGE_FALSE@clean-local: -clean: clean-recursive - -clean-am: clean-generic clean-libtool clean-local mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool clean-local ctags ctags-recursive dist dist-all \ - dist-bzip2 dist-gzip dist-hook dist-lzip dist-lzma dist-shar \ - dist-tarZ dist-xz dist-zip distcheck distclean \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-pkgconfigDATA - - -dist-hook: audiofile.spec - cp audiofile.spec $(distdir) - -@ENABLE_COVERAGE_TRUE@coverage: -@ENABLE_COVERAGE_TRUE@ $(MAKE) coverage-reset -@ENABLE_COVERAGE_TRUE@ $(MAKE) check -@ENABLE_COVERAGE_TRUE@ $(MAKE) coverage-report - -@ENABLE_COVERAGE_TRUE@coverage-reset: -@ENABLE_COVERAGE_TRUE@ $(LCOV) --base-directory=@top_srcdir@ --directory @top_srcdir@/libaudiofile --zerocounters - -@ENABLE_COVERAGE_TRUE@coverage-report: -@ENABLE_COVERAGE_TRUE@ $(LCOV) --directory @top_srcdir@/libaudiofile \ -@ENABLE_COVERAGE_TRUE@ --capture \ -@ENABLE_COVERAGE_TRUE@ --output-file @top_builddir@/lcov.info - -@ENABLE_COVERAGE_TRUE@ $(LCOV) --directory @top_srcdir@/libaudiofile \ -@ENABLE_COVERAGE_TRUE@ --output-file @top_builddir@/lcov.info \ -@ENABLE_COVERAGE_TRUE@ --remove @top_builddir@/lcov.info \ -@ENABLE_COVERAGE_TRUE@ "/usr/include/*" "gtest/*" "*/UT_*" - -@ENABLE_COVERAGE_TRUE@ $(mkdir_p) @top_builddir@/coverage -@ENABLE_COVERAGE_TRUE@ git_commit=`GIT_DIR=@top_srcdir@/.git git log -1 --pretty=format:%h 2>/dev/null`; \ -@ENABLE_COVERAGE_TRUE@ $(GENHTML) --title "@PACKAGE@ @VERSION@ $$git_commit" \ -@ENABLE_COVERAGE_TRUE@ --output-directory @top_builddir@/coverage @top_builddir@/lcov.info -@ENABLE_COVERAGE_TRUE@ @echo -@ENABLE_COVERAGE_TRUE@ @echo 'lcov report can be found here:' -@ENABLE_COVERAGE_TRUE@ @echo 'file://@abs_top_builddir@/coverage/index.html' -@ENABLE_COVERAGE_TRUE@ @echo - -@ENABLE_COVERAGE_TRUE@clean-local: -@ENABLE_COVERAGE_TRUE@ -rm -rf coverage - -@ENABLE_COVERAGE_TRUE@.PHONY: coverage-reset coverage coverage-report -@ENABLE_COVERAGE_FALSE@coverage: -@ENABLE_COVERAGE_FALSE@ @echo "Code coverage is not enabled." -@ENABLE_COVERAGE_FALSE@ @exit 1 - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/NEWS b/tools/audiofile-0.3.6/NEWS deleted file mode 100644 index 54f5dc74..00000000 --- a/tools/audiofile-0.3.6/NEWS +++ /dev/null @@ -1,53 +0,0 @@ -Changes for Audio File Library version 0.3.6: - -* Implement FLAC and ALAC encoding and decoding. -* Update license to LGPL 2.1. - -Changes for Audio File Library version 0.3.5: - -* Implement IMA ADPCM encoding and decoding for AIFF-C, CAF, and WAVE files. -* Implement Microsoft ADPCM encoding for WAVE files. -* Fix calculation of IRCAM frame size. -* Record marker comments in WAVE files. -* Improve validation of compressed audio formats. -* Add support for building without documentation. - -Changes for Audio File Library version 0.3.4: - -* Use hidden visibility for internal symbols. -* Add support for Sample Vision format. -* Update license for extended-precision floating-point conversion routines. - -Changes for Audio File Library version 0.3.3: - -* Update library's soname version. -* Link against libm. - -Changes for Audio File Library version 0.3.2: - -* Fix initialization of byte order in Creative Voice File format. -* Fix calculation of frame count in NIST SPHERE sound files. -* Remove duplicate definition of AFvirtualfile. -* Don't treat compiler warnings as errors by default. - -Changes for Audio File Library version 0.3.1: - -* Fix installation of man pages. -* Add support for Creative Voice File format. -* Support u-law and A-law compression in Core Audio Format files. - -Changes for Audio File Library version 0.3.0: - -* Define AFframecount and AFfileoffset as 64-bit integers regardless of - whether system specifies off_t as 64 bits. -* Added support for Core Audio Format. -* Added support for extensible WAVE format files. -* Fixed leak of miscellaneous data buffers. (Thanks to Stefano Magni - for finding and fixing this problem.) -* Fixed default mapping between integer and floating-point audio data. -* Fix handling of NeXT sound files with unspecified or inconsistent length. -* Added support for miscellaneous data in IFF/8SVX files. -* Added support for byte-swapped IRCAM sound files. -* Refactored file parsing and writing. -* Refactored audio conversion. -* Updated and expanded documentation. diff --git a/tools/audiofile-0.3.6/NOTES b/tools/audiofile-0.3.6/NOTES deleted file mode 100644 index d33c6dcd..00000000 --- a/tools/audiofile-0.3.6/NOTES +++ /dev/null @@ -1,41 +0,0 @@ -Audio File Library 0.3.6 -Development Notes -Michael Pruett - ----- - -Large file support is now enabled by default on all systems. This change -has no effect on systems where off_t is always 64 bits (e.g. IRIX, -FreeBSD, NetBSD, OpenBSD, Mac OS X). - -Many compressed data formats are not supported. This is currently the -most important issue to address. - -Error handling is at the present quite robust, but more work can always -be done in this area. - -SGI's Audio File Library on IRIX implements the following formats which -this version of the library does not: - - MPEG1 audio bitstream - Sound Designer II - SoundFont2 - -I plan to implement some of these as time permits. Sound Designer -II is out of the question because of its dependency upon Macintosh -resource forks. Handling these files on Unix systems is simply not -worth the effort. - ----- - -This version of the Audio File Library has been tested under the following -operating environments: - - i686-pc-linux-gnu / Ubuntu 12.10 (gcc 4.7.2) - x86_64-pc-linux-gnu / Ubuntu 12.10 (gcc 4.7.2) - x86_64-pc-linux-gnu / Ubuntu 12.10 (clang 3.0) - armv6l-raspberrypi-linux-gnueabihf / Raspbian Wheezy (gcc 4.6.3) - i386-apple-darwin10.8.0 / Mac OS X 10.6.8 (gcc 4.2.1) - x86_64-apple-darwin10.8.0 / Mac OS X 10.6.8 (gcc 4.2.1) - i386-pc-freebsd9.1 / FreeBSD 9.1 (gcc 4.2.1) - sparc64-sun-freebsd9.1 / FreeBSD 9.1 (gcc 4.2.1) diff --git a/tools/audiofile-0.3.6/README b/tools/audiofile-0.3.6/README deleted file mode 100644 index c90025fe..00000000 --- a/tools/audiofile-0.3.6/README +++ /dev/null @@ -1,64 +0,0 @@ -Audio File Library -Version 0.3.6 -Wednesday, 6 March 2013 - -Copyright (C) 1998-2000, 2003-2004, 2010-2013 Michael Pruett -Copyright (C) 2000-2001 Silicon Graphics, Inc. - -michael@68k.org -http://audiofile.68k.org/ - ----- - -The Audio File Library handles reading and writing audio files in many -common formats. - -Key goals of the Audio File Library are file format transparency and data -format transparency. The same calls for opening a file, accessing and -manipulating audio metadata (e.g. sample rate, sample format, textual -information, MIDI parameters), and reading and writing sample data will -work with any supported audio file format. Likewise, the format of the -audio data presented to the application need not be tied to the format -of the data contained in the file. - -The following file formats are currently supported: -* AIFF/AIFF-C -* WAVE -* NeXT .snd/Sun .au -* Berkeley/IRCAM/CARL Sound File -* Audio Visual Research -* Amiga IFF/8SVX -* Sample Vision -* Creative Voice File -* NIST SPHERE -* Core Audio Format -* FLAC - -The following compression formats are currently supported: -* G.711 mu-law and A-law -* IMA ADPCM -* Microsoft ADPCM -* FLAC -* Apple Lossless Audio Codec - -The Audio File Library itself is available under the GNU Lesser General -Public License, and the programs in this package are available under the -GNU General Public License. The two licenses are included in the files -COPYING and COPYING.GPL, respectively. - ----- - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301 USA diff --git a/tools/audiofile-0.3.6/TODO b/tools/audiofile-0.3.6/TODO deleted file mode 100644 index 1dde4889..00000000 --- a/tools/audiofile-0.3.6/TODO +++ /dev/null @@ -1,32 +0,0 @@ -Audio File Library -To Do List - -Michael Pruett - -Short-term ----------- - -Handle more compressed data formats, most importantly Ogg Vorbis. -GSM 06.10 would also be nice. - -Handle sample rate conversion. - -More comprehensive tests should be developed to stress-test the -library. Tests are needed most for the following sets of functions: - * af{Get,Set}VirtualChannels/afSetChannelMatrix - * afGetSampleFormat/af{Get,Set}VirtualSampleFormat - * af{Get,Set}Loop{IDs,Mode,Count,Start,End,StartFrame,EndFrame,Track} - -Support for auxiliary data in IRCAM files (maximum amplitude, comments, -etc.) should be added. - -Long-term ---------- - -It would be nice to support some more file formats. - -Add locale support for error messages. - -Whenever a compression format is requested, the library should scan -through /usr/lib/audiofile/*.so to see if any DSOs support the requested -format. diff --git a/tools/audiofile-0.3.6/aclocal.m4 b/tools/audiofile-0.3.6/aclocal.m4 deleted file mode 100644 index 3a8b46a3..00000000 --- a/tools/audiofile-0.3.6/aclocal.m4 +++ /dev/null @@ -1,10284 +0,0 @@ -# generated automatically by aclocal 1.11.6 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -# Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -]) - -# serial 58 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_PREPARE_CC_BASENAME -# ----------------------- -m4_defun([_LT_PREPARE_CC_BASENAME], [ -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} -])# _LT_PREPARE_CC_BASENAME - - -# _LT_CC_BASENAME(CC) -# ------------------- -# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, -# but that macro is also expanded into generated libtool script, which -# arranges for $SED and $ECHO to be set by different means. -m4_defun([_LT_CC_BASENAME], -[m4_require([_LT_PREPARE_CC_BASENAME])dnl -AC_REQUIRE([_LT_DECL_SED])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl -func_cc_basename $1 -cc_basename=$func_cc_basename_result -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl -m4_require([_LT_CMD_TRUNCATE])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from 'configure', and 'config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# 'config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain=$ac_aux_dir/ltmain.sh -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the 'libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to 'config.status' so that its -# declaration there will have the same value as in 'configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags='_LT_TAGS'dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into 'config.status', and then the shell code to quote escape them in -# for loops in 'config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# '#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test 0 = "$lt_write_fail" && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -'$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test 0 != $[#] -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try '$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try '$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test yes = "$silent" && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -_LT_COPYING -_LT_LIBTOOL_TAGS - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -_LT_PREPARE_MUNGE_PATH_LIST -_LT_PREPARE_CC_BASENAME - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -m4_ifndef([AC_PROG_GO], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS=$save_LDFLAGS - ]) - - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]][[,.]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test yes = "$lt_cv_ld_force_load"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - m4_if([$1], [CXX], -[ if test yes != "$lt_cv_apple_cc_single_mod"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script that will find a shell with a builtin -# printf (that we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case $ECHO in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], - [Search for dependent libraries within DIR (or the compiler's sysroot - if not specified).])], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([$with_sysroot]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and where our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test yes = "[$]$2"; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS -]) - -if test yes = "[$]$2"; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | msys* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n "$lt_cv_sys_max_cmd_len"; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes = "$cross_compiling"; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin* | msys*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen=shl_load], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen=dlopen], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links=nottested -if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test no = "$hard_links"; then - AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", - [Define to the sub-directory where libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then - - # We can hardcode non-existent directories. - if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && - test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || - test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_PREPARE_MUNGE_PATH_LIST -# --------------------------- -# Make sure func_munge_path_list() is defined correctly. -m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], -[[# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} -]])# _LT_PREPARE_PATH_LIST - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -AC_ARG_VAR([LT_SYS_LIBRARY_PATH], -[User-defined run-time library search path.]) - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a[(]lib.so.V[)]' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | msys* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - msys*) - # MSYS DLLs use 'msys-' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/msys-/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin* | msys*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], - [Detected run-time system search path for libraries]) -_LT_DECL([], [configure_time_lt_sys_library_path], [2], - [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program that can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$1"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac]) -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program that can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test no = "$withval" || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], -[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi]) -rm -f conftest.i conftest2.i conftest.out]) -])# _LT_PATH_DD - - -# _LT_CMD_TRUNCATE -# ---------------- -# find command to truncate a binary pipe -m4_defun([_LT_CMD_TRUNCATE], -[m4_require([_LT_PATH_DD]) -AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], -[printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) -_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], - [Command to truncate a binary pipe]) -])# _LT_CMD_TRUNCATE - - -# _LT_CHECK_MAGIC_METHOD -# ---------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_MAGIC_METHOD], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -AC_CACHE_CHECK([how to recognize dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[[4-9]]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin* | msys*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi]) -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | msys* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# _LT_DLL_DEF_P([FILE]) -# --------------------- -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with func_dll_def_p in the libtool script -AC_DEFUN([_LT_DLL_DEF_P], -[dnl - test DEF = "`$SED -n dnl - -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace - -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments - -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl - -e q dnl Only consider the first "real" line - $1`" dnl -])# _LT_DLL_DEF_P - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-msys* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM=-lm) - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | msys* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], - [Transform the output of nm into a list of symbols to manually relocate]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], - [The name lister interface]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test yes = "$GCC"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ F* | *Sun*Fortran*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Intel*\ [[CF]]*Compiler*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - *Portland\ Group*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds - ;; - cygwin* | msys* | mingw* | cegcc*) - case $cc_basename in - cl*) - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - _LT_TAGVAR(file_list_spec, $1)='@' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS=$save_LDFLAGS]) - if test yes = "$lt_cv_irix_exported_symbol"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(ld_shlibs, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - osf3*) - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting $shlibpath_var if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC=$CC -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report what library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC=$lt_save_CC -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - - _LT_TAGVAR(GCC, $1)=$GXX - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l* | */libclang_rt.*.a) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)=$prev$p - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)=$p - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)=$p - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test no = "$F77"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_F77"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$G77 - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_F77" - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test no = "$FC"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_FC"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_FC" - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE - -# Source file extension for Go test sources. -ac_ext=go - -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" - -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code=$lt_simple_compile_test_code - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f "$lt_ac_sed" && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test 10 -lt "$lt_ac_count" && break - lt_ac_count=`expr $lt_ac_count + 1` - if test "$lt_ac_count" -gt "$lt_ac_max"; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine what file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* | *-*-msys* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* | *-*-msys* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* | *-*-msys* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 8 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option '$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl 'shared' nor 'disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], - [_LT_WITH_AIX_SONAME([aix])]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the 'shared' and -# 'disable-shared' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the 'static' and -# 'disable-static' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the 'fast-install' -# and 'disable-fast-install' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_AIX_SONAME([DEFAULT]) -# ---------------------------------- -# implement the --with-aix-soname flag, and support the `aix-soname=aix' -# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT -# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. -m4_define([_LT_WITH_AIX_SONAME], -[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl -shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[[5-9]]*,yes) - AC_MSG_CHECKING([which variant of shared library versioning to provide]) - AC_ARG_WITH([aix-soname], - [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], - [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], - [case $withval in - aix|svr4|both) - ;; - *) - AC_MSG_ERROR([Unknown argument to --with-aix-soname]) - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname], - [AC_CACHE_VAL([lt_cv_with_aix_soname], - [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) - with_aix_soname=$lt_cv_with_aix_soname]) - AC_MSG_RESULT([$with_aix_soname]) - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - -_LT_DECL([], [shared_archive_member_spec], [0], - [Shared archive member basename, for filename based shared library versioning on AIX])dnl -])# _LT_WITH_AIX_SONAME - -LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' -# LT_INIT options. -# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [pic_mode=m4_default([$1], [default])]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59, which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 4179 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.6]) -m4_define([LT_PACKAGE_REVISION], [2.4.6]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.6' -macro_revision='2.4.6' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 12 (pkg-config-0.29.2) - -dnl Copyright © 2004 Scott James Remnant . -dnl Copyright © 2012-2015 Dan Nicholson -dnl -dnl This program is free software; you can redistribute it and/or modify -dnl it under the terms of the GNU General Public License as published by -dnl the Free Software Foundation; either version 2 of the License, or -dnl (at your option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -dnl General Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License -dnl along with this program; if not, write to the Free Software -dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -dnl 02111-1307, USA. -dnl -dnl As a special exception to the GNU General Public License, if you -dnl distribute this file as part of a program that contains a -dnl configuration script generated by Autoconf, you may include it under -dnl the same distribution terms that you use for the rest of that -dnl program. - -dnl PKG_PREREQ(MIN-VERSION) -dnl ----------------------- -dnl Since: 0.29 -dnl -dnl Verify that the version of the pkg-config macros are at least -dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's -dnl installed version of pkg-config, this checks the developer's version -dnl of pkg.m4 when generating configure. -dnl -dnl To ensure that this macro is defined, also add: -dnl m4_ifndef([PKG_PREREQ], -dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) -dnl -dnl See the "Since" comment for each macro you use to see what version -dnl of the macros you require. -m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.2]) -m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, - [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) -])dnl PKG_PREREQ - -dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) -dnl ---------------------------------- -dnl Since: 0.16 -dnl -dnl Search for the pkg-config tool and set the PKG_CONFIG variable to -dnl first found in the path. Checks that the version of pkg-config found -dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is -dnl used since that's the first version where most current features of -dnl pkg-config existed. -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -])dnl PKG_PROG_PKG_CONFIG - -dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -dnl ------------------------------------------------------------------- -dnl Since: 0.18 -dnl -dnl Check to see whether a particular set of modules exists. Similar to -dnl PKG_CHECK_MODULES(), but does not set variables or print errors. -dnl -dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -dnl only at the first occurence in configure.ac, so if the first place -dnl it's called might be skipped (such as if it is within an "if", you -dnl have to call PKG_CHECK_EXISTS manually -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - -dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -dnl --------------------------------------------- -dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting -dnl pkg_failed based on the result. -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes ], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])dnl _PKG_CONFIG - -dnl _PKG_SHORT_ERRORS_SUPPORTED -dnl --------------------------- -dnl Internal check to see if pkg-config supports short errors. -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])dnl _PKG_SHORT_ERRORS_SUPPORTED - - -dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -dnl [ACTION-IF-NOT-FOUND]) -dnl -------------------------------------------------------------- -dnl Since: 0.4.0 -dnl -dnl Note that if there is a possibility the first call to -dnl PKG_CHECK_MODULES might not happen, you should be sure to include an -dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $2]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])dnl PKG_CHECK_MODULES - - -dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -dnl [ACTION-IF-NOT-FOUND]) -dnl --------------------------------------------------------------------- -dnl Since: 0.29 -dnl -dnl Checks for existence of MODULES and gathers its build flags with -dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags -dnl and VARIABLE-PREFIX_LIBS from --libs. -dnl -dnl Note that if there is a possibility the first call to -dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to -dnl include an explicit call to PKG_PROG_PKG_CONFIG in your -dnl configure.ac. -AC_DEFUN([PKG_CHECK_MODULES_STATIC], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -_save_PKG_CONFIG=$PKG_CONFIG -PKG_CONFIG="$PKG_CONFIG --static" -PKG_CHECK_MODULES($@) -PKG_CONFIG=$_save_PKG_CONFIG[]dnl -])dnl PKG_CHECK_MODULES_STATIC - - -dnl PKG_INSTALLDIR([DIRECTORY]) -dnl ------------------------- -dnl Since: 0.27 -dnl -dnl Substitutes the variable pkgconfigdir as the location where a module -dnl should install pkg-config .pc files. By default the directory is -dnl $libdir/pkgconfig, but the default can be changed by passing -dnl DIRECTORY. The user can override through the --with-pkgconfigdir -dnl parameter. -AC_DEFUN([PKG_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([pkgconfigdir], - [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, - [with_pkgconfigdir=]pkg_default) -AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -])dnl PKG_INSTALLDIR - - -dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) -dnl -------------------------------- -dnl Since: 0.27 -dnl -dnl Substitutes the variable noarch_pkgconfigdir as the location where a -dnl module should install arch-independent pkg-config .pc files. By -dnl default the directory is $datadir/pkgconfig, but the default can be -dnl changed by passing DIRECTORY. The user can override through the -dnl --with-noarch-pkgconfigdir parameter. -AC_DEFUN([PKG_NOARCH_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([noarch-pkgconfigdir], - [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, - [with_noarch_pkgconfigdir=]pkg_default) -AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -])dnl PKG_NOARCH_INSTALLDIR - - -dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, -dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -dnl ------------------------------------------- -dnl Since: 0.28 -dnl -dnl Retrieves the value of the pkg-config variable for the given module. -AC_DEFUN([PKG_CHECK_VAR], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl - -_PKG_CONFIG([$1], [variable="][$3]["], [$2]) -AS_VAR_COPY([$1], [pkg_cv_][$1]) - -AS_VAR_IF([$1], [""], [$5], [$4])dnl -])dnl PKG_CHECK_VAR - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software -# Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.6], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.6])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, -# 2010, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 12 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software -# Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - diff --git a/tools/audiofile-0.3.6/audiofile-uninstalled.pc b/tools/audiofile-0.3.6/audiofile-uninstalled.pc deleted file mode 100644 index da58fe7d..00000000 --- a/tools/audiofile-0.3.6/audiofile-uninstalled.pc +++ /dev/null @@ -1,6 +0,0 @@ -Name: audiofile -Description: audiofile -Requires: -Version: 0.3.6 -Libs: ${pc_top_builddir}/${pcfiledir}/libaudiofile/libaudiofile.la -lm -Cflags: -I${pc_top_builddir}/${pcfiledir}/libaudiofile diff --git a/tools/audiofile-0.3.6/audiofile-uninstalled.pc.in b/tools/audiofile-0.3.6/audiofile-uninstalled.pc.in deleted file mode 100644 index 5b6fcf91..00000000 --- a/tools/audiofile-0.3.6/audiofile-uninstalled.pc.in +++ /dev/null @@ -1,6 +0,0 @@ -Name: audiofile -Description: audiofile -Requires: -Version: @VERSION@ -Libs: ${pc_top_builddir}/${pcfiledir}/libaudiofile/libaudiofile.la -lm -Cflags: -I${pc_top_builddir}/${pcfiledir}/libaudiofile diff --git a/tools/audiofile-0.3.6/audiofile.pc b/tools/audiofile-0.3.6/audiofile.pc deleted file mode 100644 index 4a8c50c0..00000000 --- a/tools/audiofile-0.3.6/audiofile.pc +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/mingw64 -exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${prefix}/include - -Name: audiofile -Description: audiofile -Requires: -Version: 0.3.6 -Libs: -L${libdir} -laudiofile -Libs.private: -lm -Cflags: -I${includedir} diff --git a/tools/audiofile-0.3.6/audiofile.pc.in b/tools/audiofile-0.3.6/audiofile.pc.in deleted file mode 100644 index ad5956a3..00000000 --- a/tools/audiofile-0.3.6/audiofile.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: audiofile -Description: audiofile -Requires: -Version: @VERSION@ -Libs: -L${libdir} -laudiofile -Libs.private: -lm -Cflags: -I${includedir} diff --git a/tools/audiofile-0.3.6/audiofile.spec b/tools/audiofile-0.3.6/audiofile.spec deleted file mode 100644 index 62878f3c..00000000 --- a/tools/audiofile-0.3.6/audiofile.spec +++ /dev/null @@ -1,69 +0,0 @@ -%define ver 0.3.6 -%define RELEASE 1 -%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} -%define prefix /usr - -Summary: A library to handle various audio file formats. -Name: audiofile -Version: %ver -Release: %rel -Copyright: LGPL -Group: Libraries/Sound -Source: ftp://ftp.gnome.org/pub/GNOME/sources/audiofile/audiofile-%{PACKAGE_VERSION}.tar.gz -URL: http://www.68k.org/~michael/audiofile/ -BuildRoot:/var/tmp/audiofile-%{PACKAGE_VERSION}-root -Docdir: %{prefix}/doc -Obsoletes: libaudiofile - -%description -The Audio File Library provides an elegant API for accessing a variety -of audio file formats, such as AIFF/AIFF-C, WAVE, and NeXT/Sun -.snd/.au, in a manner independent of file and data formats. - -%package devel -Summary: Library, headers, etc. to develop with the Audio File Library. -Group: Libraries - -%description devel -Library, header files, etc. for developing applications with the Audio -File Library. - -%prep -%setup - -%build -CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%prefix -make $MAKE_FLAGS - -%install - -rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT - -# -# makefile is broken, sets exec_prefix explicitely. -# -make exec_prefix=$RPM_BUILD_ROOT/%{prefix} prefix=$RPM_BUILD_ROOT/%{prefix} install - -%clean -rm -rf $RPM_BUILD_ROOT - -%changelog - -* Fri Nov 20 1998 Michael Fulbright -- First try at a spec file - -%files -%defattr(-, root, root) -%doc COPYING TODO README ChangeLog docs -%{prefix}/bin/* -%{prefix}/lib/lib*.so.* - -%files devel -%defattr(-, root, root) -%{prefix}/lib/lib*.so -%{prefix}/lib/*.a -%{prefix}/lib/*.la -%{prefix}/lib/pkgconfig/*.pc -%{prefix}/include/* -%{prefix}/share/aclocal/* diff --git a/tools/audiofile-0.3.6/audiofile.spec.in b/tools/audiofile-0.3.6/audiofile.spec.in deleted file mode 100644 index fbeefece..00000000 --- a/tools/audiofile-0.3.6/audiofile.spec.in +++ /dev/null @@ -1,69 +0,0 @@ -%define ver @VERSION@ -%define RELEASE 1 -%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} -%define prefix /usr - -Summary: A library to handle various audio file formats. -Name: audiofile -Version: %ver -Release: %rel -Copyright: LGPL -Group: Libraries/Sound -Source: ftp://ftp.gnome.org/pub/GNOME/sources/audiofile/audiofile-%{PACKAGE_VERSION}.tar.gz -URL: http://www.68k.org/~michael/audiofile/ -BuildRoot:/var/tmp/audiofile-%{PACKAGE_VERSION}-root -Docdir: %{prefix}/doc -Obsoletes: libaudiofile - -%description -The Audio File Library provides an elegant API for accessing a variety -of audio file formats, such as AIFF/AIFF-C, WAVE, and NeXT/Sun -.snd/.au, in a manner independent of file and data formats. - -%package devel -Summary: Library, headers, etc. to develop with the Audio File Library. -Group: Libraries - -%description devel -Library, header files, etc. for developing applications with the Audio -File Library. - -%prep -%setup - -%build -CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%prefix -make $MAKE_FLAGS - -%install - -rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT - -# -# makefile is broken, sets exec_prefix explicitely. -# -make exec_prefix=$RPM_BUILD_ROOT/%{prefix} prefix=$RPM_BUILD_ROOT/%{prefix} install - -%clean -rm -rf $RPM_BUILD_ROOT - -%changelog - -* Fri Nov 20 1998 Michael Fulbright -- First try at a spec file - -%files -%defattr(-, root, root) -%doc COPYING TODO README ChangeLog docs -%{prefix}/bin/* -%{prefix}/lib/lib*.so.* - -%files devel -%defattr(-, root, root) -%{prefix}/lib/lib*.so -%{prefix}/lib/*.a -%{prefix}/lib/*.la -%{prefix}/lib/pkgconfig/*.pc -%{prefix}/include/* -%{prefix}/share/aclocal/* diff --git a/tools/audiofile-0.3.6/autom4te.cache/output.0 b/tools/audiofile-0.3.6/autom4te.cache/output.0 deleted file mode 100644 index 08e5734a..00000000 --- a/tools/audiofile-0.3.6/autom4te.cache/output.0 +++ /dev/null @@ -1,19712 +0,0 @@ -@%:@! /bin/sh -@%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.69 for audiofile 0.3.6. -@%:@ -@%:@ -@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -@%:@ -@%:@ -@%:@ This configure script is free software; the Free Software Foundation -@%:@ gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in @%:@( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in @%:@(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in @%:@ (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in @%:@( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in @%:@ (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -@%:@ as_fn_unset VAR -@%:@ --------------- -@%:@ Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -@%:@ as_fn_set_status STATUS -@%:@ ----------------------- -@%:@ Set @S|@? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} @%:@ as_fn_set_status - -@%:@ as_fn_exit STATUS -@%:@ ----------------- -@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} @%:@ as_fn_exit - -@%:@ as_fn_mkdir_p -@%:@ ------------- -@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} @%:@ as_fn_mkdir_p - -@%:@ as_fn_executable_p FILE -@%:@ ----------------------- -@%:@ Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} @%:@ as_fn_executable_p -@%:@ as_fn_append VAR VALUE -@%:@ ---------------------- -@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take -@%:@ advantage of any shell optimizations that allow amortized linear growth over -@%:@ repeated appends, instead of the typical quadratic growth present in naive -@%:@ implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -@%:@ as_fn_arith ARG... -@%:@ ------------------ -@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the -@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments -@%:@ must be portable across @S|@(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] -@%:@ ---------------------------------------- -@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are -@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the -@%:@ script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} @%:@ as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in @%:@((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIB@&t@OBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='audiofile' -PACKAGE_TARNAME='audiofile' -PACKAGE_VERSION='0.3.6' -PACKAGE_STRING='audiofile 0.3.6' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -ac_unique_file="libaudiofile/AIFF.cpp" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIB@&t@OBJS -ENABLE_FLAC_FALSE -ENABLE_FLAC_TRUE -FLAC_LIBS -FLAC_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -ASCIIDOC -A2X -ENABLE_DOCUMENTATION_FALSE -ENABLE_DOCUMENTATION_TRUE -VALGRIND -ENABLE_VALGRIND_FALSE -ENABLE_VALGRIND_TRUE -GENHTML -LCOV -COVERAGE_LIBS -COVERAGE_CFLAGS -ENABLE_COVERAGE_FALSE -ENABLE_COVERAGE_TRUE -WERROR_CFLAGS -ENABLE_WERROR_FALSE -ENABLE_WERROR_TRUE -TEST_BIN -CXXCPP -CPP -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LIBTOOL -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -AUDIOFILE_VERSION_INFO -AUDIOFILE_VERSION -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_largefile -enable_werror -enable_coverage -enable_valgrind -enable_docs -enable_examples -enable_flac -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -LT_SYS_LIBRARY_PATH -CPP -CXXCPP -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -FLAC_CFLAGS -FLAC_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures audiofile 0.3.6 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - @<:@@S|@ac_default_prefix@:>@ - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - @<:@PREFIX@:>@ - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root @<:@DATAROOTDIR/doc/audiofile@:>@ - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of audiofile 0.3.6:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ - --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ - --enable-fast-install@<:@=PKGS@:>@ - optimize for fast installation @<:@default=yes@:>@ - --disable-libtool-lock avoid locking (might break parallel builds) - --disable-largefile omit support for large files - --enable-werror treat compiler warnings as errors - --enable-coverage enable code coverage - --enable-valgrind enable testing with Valgrind - --disable-docs disable documentation - --disable-examples disable examples - --disable-flac disable FLAC - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic@<:@=PKGS@:>@ try to use only PIC/non-PIC objects @<:@default=use - both@:>@ - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, @<:@default=aix@:>@. - --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ - --with-sysroot@<:@=DIR@:>@ Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - CPP C preprocessor - CXXCPP C++ preprocessor - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - FLAC_CFLAGS C compiler flags for FLAC, overriding pkg-config - FLAC_LIBS linker flags for FLAC, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -audiofile configure 0.3.6 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -@%:@ ac_fn_c_try_compile LINENO -@%:@ -------------------------- -@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_compile - -@%:@ ac_fn_cxx_try_compile LINENO -@%:@ ---------------------------- -@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_cxx_try_compile - -@%:@ ac_fn_c_try_link LINENO -@%:@ ----------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_link - -@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -@%:@ ------------------------------------------------------- -@%:@ Tests whether HEADER exists and can be compiled using the include files in -@%:@ INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -@%:@include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_header_compile - -@%:@ ac_fn_c_try_cpp LINENO -@%:@ ---------------------- -@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_cpp - -@%:@ ac_fn_c_try_run LINENO -@%:@ ---------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes -@%:@ that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_run - -@%:@ ac_fn_c_check_func LINENO FUNC VAR -@%:@ ---------------------------------- -@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_func - -@%:@ ac_fn_cxx_try_cpp LINENO -@%:@ ------------------------ -@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_cxx_try_cpp - -@%:@ ac_fn_cxx_try_link LINENO -@%:@ ------------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_cxx_try_link - -@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -@%:@ ------------------------------------------------------- -@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using -@%:@ the include files in INCLUDES and setting the cache variable VAR -@%:@ accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -@%:@include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_header_mongrel - -@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES -@%:@ ------------------------------------------- -@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache -@%:@ variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by audiofile $as_me 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in @%:@(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - -AUDIOFILE_VERSION_INFO=1:0:0 -AUDIOFILE_VERSION=$PACKAGE_VERSION - - - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in @%:@(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE=$PACKAGE_NAME - VERSION=$PACKAGE_VERSION - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -ac_config_headers="$ac_config_headers config.h" - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -@%:@ Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -#include - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str; - int number; - float fnumber; - - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} - -int -main () -{ - - // Check bool. - _Bool success = false; - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); - - ; - return 0; -} -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : - -fi - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -@%:@ Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | msys* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* | *-*-msys* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* | *-*-msys* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* | *-*-msys* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin* | msys*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | msys* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | msys* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -@%:@ Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -@%:@ Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - -func_stripname_cnf () -{ - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - @%:@ Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - @%:@ Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -@%:@ Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - @%:@ Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -@%:@ Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -@%:@define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - file_list_spec='@' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | msys* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - msys*) - # MSYS DLLs use 'msys-' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/msys-/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin* | msys*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin* | msys*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC - - if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - - -@%:@ Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct_CXX=no - hardcode_direct_absolute_CXX=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec_CXX='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - no_undefined_flag_CXX='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' $wl-bernotok' - allow_undefined_flag_CXX=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='$wl--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - file_list_spec_CXX='@' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - if test yes != "$lt_cv_apple_cc_single_mod"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - os2*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_minus_L_CXX=yes - allow_undefined_flag_CXX=unsupported - shrext_cmds=.dll - archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes_CXX=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='$wl-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='$wl-E' - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - no_undefined_flag_CXX=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='$wl-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='$wl-z,text' - allow_undefined_flag_CXX='$wl-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test no = "$ld_shlibs_CXX" && can_build_shared=no - - GCC_CXX=$GXX - LD_CXX=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l* | */libclang_rt.*.a) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX=$prev$p - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX=$prev$p - else - postdeps_CXX="${postdeps_CXX} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX=$p - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX=$p - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - lt_prog_compiler_pic_CXX='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static_CXX='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX=$ltdll_cmds - ;; - cygwin* | msys* | mingw* | cegcc*) - case $cc_basename in - cl*) - exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test no = "$ld_shlibs_CXX" && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | msys* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - ;; - msys*) - # MSYS DLLs use 'msys-' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/msys-/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin* | msys*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test yes = "$hardcode_automatic_CXX"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct_CXX" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && - test no != "$hardcode_minus_L_CXX"; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test relink = "$hardcode_action_CXX" || - test yes = "$inherit_rpath_CXX"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_header in fcntl.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ - typedef int charset[2]; - const charset cs = { 0, 0 }; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "@%:@define const /**/" >>confdefs.h - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - -@%:@ Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@define _FILE_OFFSET_BITS 64 -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } -case $ac_cv_sys_file_offset_bits in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF -;; -esac -rm -rf conftest* - if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@define _LARGE_FILES 1 -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=1; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } -case $ac_cv_sys_large_files in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -@%:@define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF -;; -esac -rm -rf conftest* - fi - - -fi - -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -@%:@define off_t long int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -@%:@define size_t unsigned int -_ACEOF - -fi - - -platform=none -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for platform specific tests to compile" >&5 -$as_echo_n "checking for platform specific tests to compile... " >&6; } -case "$host_os" in - linux*) - TEST_BIN="linuxtest alsaplay" - platform=linux - ;; - irix5* | irix6*) - TEST_BIN="irixread irixtestloop" - platform=irix - ;; - darwin*) - if test -e /System/Library/Frameworks/CoreAudio.framework; then - TEST_BIN="osxplay" - platform="Mac OS X" - fi - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $platform" >&5 -$as_echo "$platform" >&6; } - - -@%:@ Check whether --enable-werror was given. -if test "${enable_werror+set}" = set; then : - enableval=$enable_werror; enable_werror=$enableval -else - enable_werror=no -fi - - if test "$enable_werror" = "yes"; then - ENABLE_WERROR_TRUE= - ENABLE_WERROR_FALSE='#' -else - ENABLE_WERROR_TRUE='#' - ENABLE_WERROR_FALSE= -fi - - -if test "$enable_werror" = "yes"; then : - WERROR_CFLAGS="-Werror" - -fi - -@%:@ Check whether --enable-coverage was given. -if test "${enable_coverage+set}" = set; then : - enableval=$enable_coverage; enable_coverage=$enableval -else - enable_coverage=no -fi - - if test "$enable_coverage" = "yes"; then - ENABLE_COVERAGE_TRUE= - ENABLE_COVERAGE_FALSE='#' -else - ENABLE_COVERAGE_TRUE='#' - ENABLE_COVERAGE_FALSE= -fi - - -if test "$enable_coverage" = "yes"; then : - COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage" - COVERAGE_LIBS="-lgcov" - - - - # Extract the first word of "lcov", so it can be a program name with args. -set dummy lcov; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LCOV+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $LCOV in - [\\/]* | ?:[\\/]*) - ac_cv_path_LCOV="$LCOV" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LCOV="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_LCOV" && ac_cv_path_LCOV=":" - ;; -esac -fi -LCOV=$ac_cv_path_LCOV -if test -n "$LCOV"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5 -$as_echo "$LCOV" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # Extract the first word of "genhtml", so it can be a program name with args. -set dummy genhtml; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GENHTML+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GENHTML in - [\\/]* | ?:[\\/]*) - ac_cv_path_GENHTML="$GENHTML" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GENHTML="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GENHTML" && ac_cv_path_GENHTML=":" - ;; -esac -fi -GENHTML=$ac_cv_path_GENHTML -if test -n "$GENHTML"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5 -$as_echo "$GENHTML" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - if test "$LCOV" = :; then : - as_fn_error $? "lcov must be installed for code coverage: http://ltp.sourceforge.net/coverage/lcov.php" "$LINENO" 5 - -fi - -fi - -@%:@ Check whether --enable-valgrind was given. -if test "${enable_valgrind+set}" = set; then : - enableval=$enable_valgrind; enable_valgrind=$enableval -else - enable_valgrind=no -fi - - if test "$enable_valgrind" = "yes"; then - ENABLE_VALGRIND_TRUE= - ENABLE_VALGRIND_FALSE='#' -else - ENABLE_VALGRIND_TRUE='#' - ENABLE_VALGRIND_FALSE= -fi - - -if test "$enable_valgrind" = "yes"; then : - # Extract the first word of "valgrind", so it can be a program name with args. -set dummy valgrind; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_VALGRIND+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $VALGRIND in - [\\/]* | ?:[\\/]*) - ac_cv_path_VALGRIND="$VALGRIND" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_VALGRIND="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_VALGRIND" && ac_cv_path_VALGRIND=":" - ;; -esac -fi -VALGRIND=$ac_cv_path_VALGRIND -if test -n "$VALGRIND"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 -$as_echo "$VALGRIND" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - if test "$VALGRIND" = :; then : - as_fn_error $? "Could not find Valgrind." "$LINENO" 5 - -fi - -fi - -@%:@ Check whether --enable-docs was given. -if test "${enable_docs+set}" = set; then : - enableval=$enable_docs; enable_documentation=$enableval -else - enable_documentation=yes -fi - - - if test "$enable_documentation" = "yes"; then - ENABLE_DOCUMENTATION_TRUE= - ENABLE_DOCUMENTATION_FALSE='#' -else - ENABLE_DOCUMENTATION_TRUE='#' - ENABLE_DOCUMENTATION_FALSE= -fi - - -if test "$enable_documentation" = "yes"; then : - # Extract the first word of "a2x", so it can be a program name with args. -set dummy a2x; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_A2X+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $A2X in - [\\/]* | ?:[\\/]*) - ac_cv_path_A2X="$A2X" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_A2X="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_A2X" && ac_cv_path_A2X=":" - ;; -esac -fi -A2X=$ac_cv_path_A2X -if test -n "$A2X"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $A2X" >&5 -$as_echo "$A2X" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # Extract the first word of "asciidoc", so it can be a program name with args. -set dummy asciidoc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ASCIIDOC+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ASCIIDOC in - [\\/]* | ?:[\\/]*) - ac_cv_path_ASCIIDOC="$ASCIIDOC" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ASCIIDOC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_ASCIIDOC" && ac_cv_path_ASCIIDOC=":" - ;; -esac -fi -ASCIIDOC=$ac_cv_path_ASCIIDOC -if test -n "$ASCIIDOC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ASCIIDOC" >&5 -$as_echo "$ASCIIDOC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "$A2X" = :; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find a2x." >&5 -$as_echo "$as_me: WARNING: Could not find a2x." >&2;} - -fi - if test "$ASCIIDOC" = :; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find asciidoc." >&5 -$as_echo "$as_me: WARNING: Could not find asciidoc." >&2;} - -fi - -fi - -@%:@ Check whether --enable-examples was given. -if test "${enable_examples+set}" = set; then : - enableval=$enable_examples; enable_examples=$enableval -else - enable_examples=yes -fi - -if test "$enable_examples" != "yes"; then : - TEST_BIN="" -fi - -@%:@ Check whether --enable-flac was given. -if test "${enable_flac+set}" = set; then : - enableval=$enable_flac; enable_flac=$enableval -else - enable_flac=yes -fi - - - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - -FLAC_CFLAGS="" -FLAC_LIBS="" - -if test -n "$PKG_CONFIG" ; then - if test "$enable_flac" = "yes" ; then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flac >= 1.2.1" >&5 -$as_echo_n "checking for flac >= 1.2.1... " >&6; } - -if test -n "$FLAC_CFLAGS"; then - pkg_cv_FLAC_CFLAGS="$FLAC_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.2.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "flac >= 1.2.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FLAC_CFLAGS=`$PKG_CONFIG --cflags "flac >= 1.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FLAC_LIBS"; then - pkg_cv_FLAC_LIBS="$FLAC_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.2.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "flac >= 1.2.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FLAC_LIBS=`$PKG_CONFIG --libs "flac >= 1.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FLAC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "flac >= 1.2.1" 2>&1` - else - FLAC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "flac >= 1.2.1" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FLAC_PKG_ERRORS" >&5 - - ac_cv_flac=no -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ac_cv_flac=no -else - FLAC_CFLAGS=$pkg_cv_FLAC_CFLAGS - FLAC_LIBS=$pkg_cv_FLAC_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ac_cv_flac=yes -fi - FLAC_CFLAGS=`echo $FLAC_CFLAGS | $SED "s/FLAC$//"` - if test "$ac_cv_flac" = "no" ; then - enable_flac=no - fi - fi -else - enable_flac=no -fi - - - - - if test "$enable_flac" = "yes"; then - ENABLE_FLAC_TRUE= - ENABLE_FLAC_FALSE='#' -else - ENABLE_FLAC_TRUE='#' - ENABLE_FLAC_FALSE= -fi - -if test "$enable_flac" = "yes" ; then - -cat >>confdefs.h <<_ACEOF -@%:@define ENABLE_FLAC 1 -_ACEOF - -else - -cat >>confdefs.h <<_ACEOF -@%:@define ENABLE_FLAC 0 -_ACEOF - -fi - -ac_config_files="$ac_config_files audiofile.spec audiofile.pc audiofile-uninstalled.pc sfcommands/Makefile test/Makefile gtest/Makefile examples/Makefile libaudiofile/Makefile libaudiofile/alac/Makefile libaudiofile/modules/Makefile docs/Makefile Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIB@&t@OBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -if test -z "${ENABLE_WERROR_TRUE}" && test -z "${ENABLE_WERROR_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_WERROR\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_COVERAGE_TRUE}" && test -z "${ENABLE_COVERAGE_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_COVERAGE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_VALGRIND_TRUE}" && test -z "${ENABLE_VALGRIND_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_VALGRIND\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_DOCUMENTATION_TRUE}" && test -z "${ENABLE_DOCUMENTATION_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_DOCUMENTATION\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_FLAC_TRUE}" && test -z "${ENABLE_FLAC_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_FLAC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in @%:@( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in @%:@(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] -@%:@ ---------------------------------------- -@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are -@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the -@%:@ script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} @%:@ as_fn_error - - -@%:@ as_fn_set_status STATUS -@%:@ ----------------------- -@%:@ Set @S|@? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} @%:@ as_fn_set_status - -@%:@ as_fn_exit STATUS -@%:@ ----------------- -@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} @%:@ as_fn_exit - -@%:@ as_fn_unset VAR -@%:@ --------------- -@%:@ Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -@%:@ as_fn_append VAR VALUE -@%:@ ---------------------- -@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take -@%:@ advantage of any shell optimizations that allow amortized linear growth over -@%:@ repeated appends, instead of the typical quadratic growth present in naive -@%:@ implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -@%:@ as_fn_arith ARG... -@%:@ ------------------ -@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the -@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments -@%:@ must be portable across @S|@(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in @%:@((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -@%:@ as_fn_mkdir_p -@%:@ ------------- -@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} @%:@ as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -@%:@ as_fn_executable_p FILE -@%:@ ----------------------- -@%:@ Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} @%:@ as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by audiofile $as_me 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -audiofile config.status 0.3.6 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX -@%:@@%:@ Running $as_me. @%:@@%:@ -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - " ") CONFIG_FILES="$CONFIG_FILES " ;; - "audiofile.spec ") CONFIG_FILES="$CONFIG_FILES audiofile.spec " ;; - "audiofile.pc ") CONFIG_FILES="$CONFIG_FILES audiofile.pc " ;; - "audiofile-uninstalled.pc ") CONFIG_FILES="$CONFIG_FILES audiofile-uninstalled.pc " ;; - "sfcommands/Makefile ") CONFIG_FILES="$CONFIG_FILES sfcommands/Makefile " ;; - "test/Makefile ") CONFIG_FILES="$CONFIG_FILES test/Makefile " ;; - "gtest/Makefile ") CONFIG_FILES="$CONFIG_FILES gtest/Makefile " ;; - "examples/Makefile ") CONFIG_FILES="$CONFIG_FILES examples/Makefile " ;; - "libaudiofile/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/Makefile " ;; - "libaudiofile/alac/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/alac/Makefile " ;; - "libaudiofile/modules/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/modules/Makefile " ;; - "docs/Makefile ") CONFIG_FILES="$CONFIG_FILES docs/Makefile " ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='CXX ' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/tools/audiofile-0.3.6/autom4te.cache/output.1 b/tools/audiofile-0.3.6/autom4te.cache/output.1 deleted file mode 100644 index 4b099e67..00000000 --- a/tools/audiofile-0.3.6/autom4te.cache/output.1 +++ /dev/null @@ -1,19716 +0,0 @@ -@%:@! /bin/sh -@%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.69 for audiofile 0.3.6. -@%:@ -@%:@ -@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -@%:@ -@%:@ -@%:@ This configure script is free software; the Free Software Foundation -@%:@ gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in @%:@( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in @%:@(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in @%:@ (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in @%:@( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in @%:@ (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -@%:@ as_fn_unset VAR -@%:@ --------------- -@%:@ Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -@%:@ as_fn_set_status STATUS -@%:@ ----------------------- -@%:@ Set @S|@? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} @%:@ as_fn_set_status - -@%:@ as_fn_exit STATUS -@%:@ ----------------- -@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} @%:@ as_fn_exit - -@%:@ as_fn_mkdir_p -@%:@ ------------- -@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} @%:@ as_fn_mkdir_p - -@%:@ as_fn_executable_p FILE -@%:@ ----------------------- -@%:@ Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} @%:@ as_fn_executable_p -@%:@ as_fn_append VAR VALUE -@%:@ ---------------------- -@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take -@%:@ advantage of any shell optimizations that allow amortized linear growth over -@%:@ repeated appends, instead of the typical quadratic growth present in naive -@%:@ implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -@%:@ as_fn_arith ARG... -@%:@ ------------------ -@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the -@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments -@%:@ must be portable across @S|@(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] -@%:@ ---------------------------------------- -@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are -@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the -@%:@ script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} @%:@ as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in @%:@((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIB@&t@OBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='audiofile' -PACKAGE_TARNAME='audiofile' -PACKAGE_VERSION='0.3.6' -PACKAGE_STRING='audiofile 0.3.6' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -ac_unique_file="libaudiofile/AIFF.cpp" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIB@&t@OBJS -ENABLE_FLAC_FALSE -ENABLE_FLAC_TRUE -FLAC_LIBS -FLAC_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -ASCIIDOC -A2X -ENABLE_DOCUMENTATION_FALSE -ENABLE_DOCUMENTATION_TRUE -VALGRIND -ENABLE_VALGRIND_FALSE -ENABLE_VALGRIND_TRUE -GENHTML -LCOV -COVERAGE_LIBS -COVERAGE_CFLAGS -ENABLE_COVERAGE_FALSE -ENABLE_COVERAGE_TRUE -WERROR_CFLAGS -ENABLE_WERROR_FALSE -ENABLE_WERROR_TRUE -TEST_BIN -CXXCPP -CPP -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LIBTOOL -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -AUDIOFILE_VERSION_INFO -AUDIOFILE_VERSION -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_largefile -enable_werror -enable_coverage -enable_valgrind -enable_docs -enable_examples -enable_flac -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -LT_SYS_LIBRARY_PATH -CPP -CXXCPP -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -FLAC_CFLAGS -FLAC_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures audiofile 0.3.6 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - @<:@@S|@ac_default_prefix@:>@ - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - @<:@PREFIX@:>@ - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root @<:@DATAROOTDIR/doc/audiofile@:>@ - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of audiofile 0.3.6:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ - --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ - --enable-fast-install@<:@=PKGS@:>@ - optimize for fast installation @<:@default=yes@:>@ - --disable-libtool-lock avoid locking (might break parallel builds) - --disable-largefile omit support for large files - --enable-werror treat compiler warnings as errors - --enable-coverage enable code coverage - --enable-valgrind enable testing with Valgrind - --disable-docs disable documentation - --disable-examples disable examples - --disable-flac disable FLAC - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic@<:@=PKGS@:>@ try to use only PIC/non-PIC objects @<:@default=use - both@:>@ - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, @<:@default=aix@:>@. - --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ - --with-sysroot@<:@=DIR@:>@ Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - CPP C preprocessor - CXXCPP C++ preprocessor - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - FLAC_CFLAGS C compiler flags for FLAC, overriding pkg-config - FLAC_LIBS linker flags for FLAC, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -audiofile configure 0.3.6 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -@%:@ ac_fn_c_try_compile LINENO -@%:@ -------------------------- -@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_compile - -@%:@ ac_fn_cxx_try_compile LINENO -@%:@ ---------------------------- -@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_cxx_try_compile - -@%:@ ac_fn_c_try_link LINENO -@%:@ ----------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_link - -@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -@%:@ ------------------------------------------------------- -@%:@ Tests whether HEADER exists and can be compiled using the include files in -@%:@ INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -@%:@include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_header_compile - -@%:@ ac_fn_c_try_cpp LINENO -@%:@ ---------------------- -@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_cpp - -@%:@ ac_fn_c_try_run LINENO -@%:@ ---------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes -@%:@ that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_run - -@%:@ ac_fn_c_check_func LINENO FUNC VAR -@%:@ ---------------------------------- -@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_func - -@%:@ ac_fn_cxx_try_cpp LINENO -@%:@ ------------------------ -@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_cxx_try_cpp - -@%:@ ac_fn_cxx_try_link LINENO -@%:@ ------------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_cxx_try_link - -@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -@%:@ ------------------------------------------------------- -@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using -@%:@ the include files in INCLUDES and setting the cache variable VAR -@%:@ accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -@%:@include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_header_mongrel - -@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES -@%:@ ------------------------------------------- -@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache -@%:@ variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by audiofile $as_me 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in @%:@(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - -AUDIOFILE_VERSION_INFO=1:0:0 -AUDIOFILE_VERSION=$PACKAGE_VERSION - - - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in @%:@(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE=$PACKAGE_NAME - VERSION=$PACKAGE_VERSION - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -ac_config_headers="$ac_config_headers config.h" - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -@%:@ Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -#include - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str; - int number; - float fnumber; - - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} - -int -main () -{ - - // Check bool. - _Bool success = false; - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); - - ; - return 0; -} -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : - -fi - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -@%:@ Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | msys* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* | *-*-msys* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* | *-*-msys* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* | *-*-msys* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin* | msys*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | msys* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | msys* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -@%:@ Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -@%:@ Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - -func_stripname_cnf () -{ - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - @%:@ Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - @%:@ Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -@%:@ Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - @%:@ Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -@%:@ Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -@%:@define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - file_list_spec='@' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | msys* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - msys*) - # MSYS DLLs use 'msys-' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/msys-/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin* | msys*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin* | msys*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC - - if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - - -@%:@ Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct_CXX=no - hardcode_direct_absolute_CXX=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec_CXX='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - no_undefined_flag_CXX='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' $wl-bernotok' - allow_undefined_flag_CXX=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='$wl--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - file_list_spec_CXX='@' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - if test yes != "$lt_cv_apple_cc_single_mod"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - os2*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_minus_L_CXX=yes - allow_undefined_flag_CXX=unsupported - shrext_cmds=.dll - archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes_CXX=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='$wl-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='$wl-E' - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - no_undefined_flag_CXX=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='$wl-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='$wl-z,text' - allow_undefined_flag_CXX='$wl-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test no = "$ld_shlibs_CXX" && can_build_shared=no - - GCC_CXX=$GXX - LD_CXX=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l* | */libclang_rt.*.a) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX=$prev$p - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX=$prev$p - else - postdeps_CXX="${postdeps_CXX} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX=$p - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX=$p - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - lt_prog_compiler_pic_CXX='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static_CXX='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX=$ltdll_cmds - ;; - cygwin* | msys* | mingw* | cegcc*) - case $cc_basename in - cl*) - exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test no = "$ld_shlibs_CXX" && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | msys* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - ;; - msys*) - # MSYS DLLs use 'msys-' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/msys-/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin* | msys*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test yes = "$hardcode_automatic_CXX"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct_CXX" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && - test no != "$hardcode_minus_L_CXX"; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test relink = "$hardcode_action_CXX" || - test yes = "$inherit_rpath_CXX"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_header in fcntl.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ - typedef int charset[2]; - const charset cs = { 0, 0 }; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "@%:@define const /**/" >>confdefs.h - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - -@%:@ Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@define _FILE_OFFSET_BITS 64 -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } -case $ac_cv_sys_file_offset_bits in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF -;; -esac -rm -rf conftest* - if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@define _LARGE_FILES 1 -@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=1; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } -case $ac_cv_sys_large_files in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -@%:@define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF -;; -esac -rm -rf conftest* - fi - - -fi - -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -@%:@define off_t long int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -@%:@define size_t unsigned int -_ACEOF - -fi - - -platform=none -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for platform specific tests to compile" >&5 -$as_echo_n "checking for platform specific tests to compile... " >&6; } -case "$host_os" in - linux*) - TEST_BIN="linuxtest alsaplay" - platform=linux - ;; - irix5* | irix6*) - TEST_BIN="irixread irixtestloop" - platform=irix - ;; - darwin*) - if test -e /System/Library/Frameworks/CoreAudio.framework; then - TEST_BIN="osxplay" - platform="Mac OS X" - fi - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $platform" >&5 -$as_echo "$platform" >&6; } - - -@%:@ Check whether --enable-werror was given. -if test "${enable_werror+set}" = set; then : - enableval=$enable_werror; enable_werror=$enableval -else - enable_werror=no -fi - - if test "$enable_werror" = "yes"; then - ENABLE_WERROR_TRUE= - ENABLE_WERROR_FALSE='#' -else - ENABLE_WERROR_TRUE='#' - ENABLE_WERROR_FALSE= -fi - - -if test "$enable_werror" = "yes"; then : - WERROR_CFLAGS="-Werror" - -fi - -@%:@ Check whether --enable-coverage was given. -if test "${enable_coverage+set}" = set; then : - enableval=$enable_coverage; enable_coverage=$enableval -else - enable_coverage=no -fi - - if test "$enable_coverage" = "yes"; then - ENABLE_COVERAGE_TRUE= - ENABLE_COVERAGE_FALSE='#' -else - ENABLE_COVERAGE_TRUE='#' - ENABLE_COVERAGE_FALSE= -fi - - -if test "$enable_coverage" = "yes"; then : - COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage" - COVERAGE_LIBS="-lgcov" - - - - # Extract the first word of "lcov", so it can be a program name with args. -set dummy lcov; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LCOV+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $LCOV in - [\\/]* | ?:[\\/]*) - ac_cv_path_LCOV="$LCOV" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LCOV="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_LCOV" && ac_cv_path_LCOV=":" - ;; -esac -fi -LCOV=$ac_cv_path_LCOV -if test -n "$LCOV"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5 -$as_echo "$LCOV" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # Extract the first word of "genhtml", so it can be a program name with args. -set dummy genhtml; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GENHTML+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GENHTML in - [\\/]* | ?:[\\/]*) - ac_cv_path_GENHTML="$GENHTML" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GENHTML="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GENHTML" && ac_cv_path_GENHTML=":" - ;; -esac -fi -GENHTML=$ac_cv_path_GENHTML -if test -n "$GENHTML"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5 -$as_echo "$GENHTML" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - if test "$LCOV" = :; then : - as_fn_error $? "lcov must be installed for code coverage: http://ltp.sourceforge.net/coverage/lcov.php" "$LINENO" 5 - -fi - -fi - -@%:@ Check whether --enable-valgrind was given. -if test "${enable_valgrind+set}" = set; then : - enableval=$enable_valgrind; enable_valgrind=$enableval -else - enable_valgrind=no -fi - - if test "$enable_valgrind" = "yes"; then - ENABLE_VALGRIND_TRUE= - ENABLE_VALGRIND_FALSE='#' -else - ENABLE_VALGRIND_TRUE='#' - ENABLE_VALGRIND_FALSE= -fi - - -if test "$enable_valgrind" = "yes"; then : - # Extract the first word of "valgrind", so it can be a program name with args. -set dummy valgrind; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_VALGRIND+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $VALGRIND in - [\\/]* | ?:[\\/]*) - ac_cv_path_VALGRIND="$VALGRIND" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_VALGRIND="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_VALGRIND" && ac_cv_path_VALGRIND=":" - ;; -esac -fi -VALGRIND=$ac_cv_path_VALGRIND -if test -n "$VALGRIND"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 -$as_echo "$VALGRIND" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - if test "$VALGRIND" = :; then : - as_fn_error $? "Could not find Valgrind." "$LINENO" 5 - -fi - -fi - -@%:@ Check whether --enable-docs was given. -if test "${enable_docs+set}" = set; then : - enableval=$enable_docs; enable_documentation=$enableval -else - enable_documentation=yes -fi - - - if test "$enable_documentation" = "yes"; then - ENABLE_DOCUMENTATION_TRUE= - ENABLE_DOCUMENTATION_FALSE='#' -else - ENABLE_DOCUMENTATION_TRUE='#' - ENABLE_DOCUMENTATION_FALSE= -fi - - -if test "$enable_documentation" = "yes"; then : - # Extract the first word of "a2x", so it can be a program name with args. -set dummy a2x; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_A2X+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $A2X in - [\\/]* | ?:[\\/]*) - ac_cv_path_A2X="$A2X" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_A2X="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_A2X" && ac_cv_path_A2X=":" - ;; -esac -fi -A2X=$ac_cv_path_A2X -if test -n "$A2X"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $A2X" >&5 -$as_echo "$A2X" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # Extract the first word of "asciidoc", so it can be a program name with args. -set dummy asciidoc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ASCIIDOC+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ASCIIDOC in - [\\/]* | ?:[\\/]*) - ac_cv_path_ASCIIDOC="$ASCIIDOC" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ASCIIDOC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_ASCIIDOC" && ac_cv_path_ASCIIDOC=":" - ;; -esac -fi -ASCIIDOC=$ac_cv_path_ASCIIDOC -if test -n "$ASCIIDOC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ASCIIDOC" >&5 -$as_echo "$ASCIIDOC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "$A2X" = :; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find a2x." >&5 -$as_echo "$as_me: WARNING: Could not find a2x." >&2;} - -fi - if test "$ASCIIDOC" = :; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find asciidoc." >&5 -$as_echo "$as_me: WARNING: Could not find asciidoc." >&2;} - -fi - -fi - -@%:@ Check whether --enable-examples was given. -if test "${enable_examples+set}" = set; then : - enableval=$enable_examples; enable_examples=$enableval -else - enable_examples=yes -fi - -if test "$enable_examples" != "yes"; then : - TEST_BIN="" -fi - -@%:@ Check whether --enable-flac was given. -if test "${enable_flac+set}" = set; then : - enableval=$enable_flac; enable_flac=$enableval -else - enable_flac=yes -fi - - - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - -FLAC_CFLAGS="" -FLAC_LIBS="" - -if test -n "$PKG_CONFIG" ; then - if test "$enable_flac" = "yes" ; then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flac >= 1.2.1" >&5 -$as_echo_n "checking for flac >= 1.2.1... " >&6; } - -if test -n "$FLAC_CFLAGS"; then - pkg_cv_FLAC_CFLAGS="$FLAC_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.2.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "flac >= 1.2.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FLAC_CFLAGS=`$PKG_CONFIG --cflags "flac >= 1.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FLAC_LIBS"; then - pkg_cv_FLAC_LIBS="$FLAC_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.2.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "flac >= 1.2.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FLAC_LIBS=`$PKG_CONFIG --libs "flac >= 1.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FLAC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "flac >= 1.2.1" 2>&1` - else - FLAC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "flac >= 1.2.1" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FLAC_PKG_ERRORS" >&5 - - ac_cv_flac=no -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ac_cv_flac=no -else - FLAC_CFLAGS=$pkg_cv_FLAC_CFLAGS - FLAC_LIBS=$pkg_cv_FLAC_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ac_cv_flac=yes -fi - FLAC_CFLAGS=`echo $FLAC_CFLAGS | $SED "s/FLAC$//"` - if test "$ac_cv_flac" = "no" ; then - enable_flac=no - fi - fi -else - enable_flac=no -fi - - - - - if test "$enable_flac" = "yes"; then - ENABLE_FLAC_TRUE= - ENABLE_FLAC_FALSE='#' -else - ENABLE_FLAC_TRUE='#' - ENABLE_FLAC_FALSE= -fi - -if test "$enable_flac" = "yes" ; then - -cat >>confdefs.h <<_ACEOF -@%:@define ENABLE_FLAC 1 -_ACEOF - -else - -cat >>confdefs.h <<_ACEOF -@%:@define ENABLE_FLAC 0 -_ACEOF - -fi - -ac_config_files="$ac_config_files audiofile.spec audiofile.pc audiofile-uninstalled.pc sfcommands/Makefile test/Makefile gtest/Makefile examples/Makefile libaudiofile/Makefile libaudiofile/alac/Makefile libaudiofile/modules/Makefile docs/Makefile Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIB@&t@OBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -if test -z "${ENABLE_WERROR_TRUE}" && test -z "${ENABLE_WERROR_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_WERROR\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_COVERAGE_TRUE}" && test -z "${ENABLE_COVERAGE_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_COVERAGE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_VALGRIND_TRUE}" && test -z "${ENABLE_VALGRIND_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_VALGRIND\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_DOCUMENTATION_TRUE}" && test -z "${ENABLE_DOCUMENTATION_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_DOCUMENTATION\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_FLAC_TRUE}" && test -z "${ENABLE_FLAC_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_FLAC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in @%:@( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in @%:@(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] -@%:@ ---------------------------------------- -@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are -@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the -@%:@ script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} @%:@ as_fn_error - - -@%:@ as_fn_set_status STATUS -@%:@ ----------------------- -@%:@ Set @S|@? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} @%:@ as_fn_set_status - -@%:@ as_fn_exit STATUS -@%:@ ----------------- -@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} @%:@ as_fn_exit - -@%:@ as_fn_unset VAR -@%:@ --------------- -@%:@ Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -@%:@ as_fn_append VAR VALUE -@%:@ ---------------------- -@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take -@%:@ advantage of any shell optimizations that allow amortized linear growth over -@%:@ repeated appends, instead of the typical quadratic growth present in naive -@%:@ implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -@%:@ as_fn_arith ARG... -@%:@ ------------------ -@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the -@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments -@%:@ must be portable across @S|@(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in @%:@((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -@%:@ as_fn_mkdir_p -@%:@ ------------- -@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} @%:@ as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -@%:@ as_fn_executable_p FILE -@%:@ ----------------------- -@%:@ Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} @%:@ as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by audiofile $as_me 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -audiofile config.status 0.3.6 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX -@%:@@%:@ Running $as_me. @%:@@%:@ -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - " ") CONFIG_FILES="$CONFIG_FILES " ;; - "audiofile.spec ") CONFIG_FILES="$CONFIG_FILES audiofile.spec " ;; - "audiofile.pc ") CONFIG_FILES="$CONFIG_FILES audiofile.pc " ;; - "audiofile-uninstalled.pc ") CONFIG_FILES="$CONFIG_FILES audiofile-uninstalled.pc " ;; - "sfcommands/Makefile ") CONFIG_FILES="$CONFIG_FILES sfcommands/Makefile " ;; - "test/Makefile ") CONFIG_FILES="$CONFIG_FILES test/Makefile " ;; - "gtest/Makefile ") CONFIG_FILES="$CONFIG_FILES gtest/Makefile " ;; - "examples/Makefile ") CONFIG_FILES="$CONFIG_FILES examples/Makefile " ;; - "libaudiofile/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/Makefile " ;; - "libaudiofile/alac/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/alac/Makefile " ;; - "libaudiofile/modules/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/modules/Makefile " ;; - "docs/Makefile ") CONFIG_FILES="$CONFIG_FILES docs/Makefile " ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='CXX ' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/tools/audiofile-0.3.6/autom4te.cache/requests b/tools/audiofile-0.3.6/autom4te.cache/requests deleted file mode 100644 index 9e9aabe2..00000000 --- a/tools/audiofile-0.3.6/autom4te.cache/requests +++ /dev/null @@ -1,300 +0,0 @@ -# This file was generated. -# It contains the lists of macros which have been traced. -# It can be safely removed. - -@request = ( - bless( [ - '0', - 1, - [ - '/usr/share/autoconf' - ], - [ - '/usr/share/autoconf/autoconf/autoconf.m4f', - 'aclocal.m4', - 'configure.ac' - ], - { - 'AM_MAINTAINER_MODE' => 1, - 'AC_CANONICAL_TARGET' => 1, - 'm4_pattern_allow' => 1, - 'AM_PROG_FC_C_O' => 1, - 'include' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AH_OUTPUT' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'AM_SILENT_RULES' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AC_INIT' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'AM_PROG_F77_C_O' => 1, - 'm4_pattern_forbid' => 1, - 'LT_INIT' => 1, - 'AM_PROG_AR' => 1, - '_AM_COND_ENDIF' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AC_SUBST_TRACE' => 1, - 'AC_FC_PP_DEFINE' => 1, - '_AM_COND_IF' => 1, - 'AM_NLS' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'AM_POT_TOOLS' => 1, - 'sinclude' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AM_PROG_CC_C_O' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - '_AM_COND_ELSE' => 1, - 'AM_CONDITIONAL' => 1, - '_m4_warn' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AC_SUBST' => 1, - 'AM_PROG_MOC' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AC_FC_SRCEXT' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'AC_FC_FREEFORM' => 1, - 'AC_FC_PP_SRCEXT' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AM_PATH_GUILE' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AC_CONFIG_FILES' => 1, - 'AM_ENABLE_MULTILIB' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'm4_sinclude' => 1, - 'AC_CANONICAL_HOST' => 1, - 'm4_include' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AC_LIBSOURCE' => 1, - 'AM_MAKEFILE_INCLUDE' => 1 - } - ], 'Autom4te::Request' ), - bless( [ - '1', - 1, - [ - '/usr/share/autoconf' - ], - [ - '/usr/share/autoconf/autoconf/autoconf.m4f', - '/usr/share/aclocal/libtool.m4', - '/usr/share/aclocal/ltargz.m4', - '/usr/share/aclocal/ltdl.m4', - '/usr/share/aclocal/ltoptions.m4', - '/usr/share/aclocal/ltsugar.m4', - '/usr/share/aclocal/ltversion.m4', - '/usr/share/aclocal/lt~obsolete.m4', - '/mingw64/share/aclocal/pkg.m4', - '/usr/share/aclocal-1.11/amversion.m4', - '/usr/share/aclocal-1.11/auxdir.m4', - '/usr/share/aclocal-1.11/cond.m4', - '/usr/share/aclocal-1.11/depend.m4', - '/usr/share/aclocal-1.11/depout.m4', - '/usr/share/aclocal-1.11/init.m4', - '/usr/share/aclocal-1.11/install-sh.m4', - '/usr/share/aclocal-1.11/lead-dot.m4', - '/usr/share/aclocal-1.11/make.m4', - '/usr/share/aclocal-1.11/missing.m4', - '/usr/share/aclocal-1.11/mkdirp.m4', - '/usr/share/aclocal-1.11/options.m4', - '/usr/share/aclocal-1.11/runlog.m4', - '/usr/share/aclocal-1.11/sanity.m4', - '/usr/share/aclocal-1.11/silent.m4', - '/usr/share/aclocal-1.11/strip.m4', - '/usr/share/aclocal-1.11/substnot.m4', - '/usr/share/aclocal-1.11/tar.m4', - 'configure.ac' - ], - { - 'AC_LTDL_SYMBOL_USCORE' => 1, - 'AC_LIBTOOL_CXX' => 1, - '_LT_AC_LANG_F77' => 1, - 'LT_FUNC_ARGZ' => 1, - 'LTDL_CONVENIENCE' => 1, - 'AC_LIBTOOL_LINKER_OPTION' => 1, - 'AC_LIBTOOL_F77' => 1, - 'AC_LTDL_DLLIB' => 1, - '_LT_WITH_SYSROOT' => 1, - '_LT_AC_LANG_C_CONFIG' => 1, - 'AM_PROG_NM' => 1, - 'AC_PROG_NM' => 1, - 'LT_OUTPUT' => 1, - '_AM_MANGLE_OPTION' => 1, - '_LTDL_SETUP' => 1, - 'PKG_INSTALLDIR' => 1, - '_AM_IF_OPTION' => 1, - 'LT_PROG_GCJ' => 1, - 'LTSUGAR_VERSION' => 1, - 'LT_SYS_DLOPEN_SELF' => 1, - 'AM_ENABLE_STATIC' => 1, - 'AC_ENABLE_STATIC' => 1, - '_AM_DEPENDENCIES' => 1, - '_AM_SET_OPTIONS' => 1, - 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, - 'PKG_CHECK_VAR' => 1, - 'AC_LTDL_ENABLE_INSTALL' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AC_PROG_LD_GNU' => 1, - '_LT_LINKER_BOILERPLATE' => 1, - 'AM_SUBST_NOTMAKE' => 1, - 'LT_LIB_M' => 1, - '_AC_AM_CONFIG_HEADER_HOOK' => 1, - 'PKG_NOARCH_INSTALLDIR' => 1, - 'LT_PATH_NM' => 1, - 'AC_PATH_MAGIC' => 1, - 'AC_LIBTOOL_GCJ' => 1, - '_LT_DLL_DEF_P' => 1, - 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, - 'AM_MISSING_HAS_RUN' => 1, - 'AC_LIBTOOL_RC' => 1, - '_LT_PROG_CXX' => 1, - '_AM_PROG_TAR' => 1, - 'AC_LIB_LTDL' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'm4_pattern_allow' => 1, - 'LTOPTIONS_VERSION' => 1, - 'include' => 1, - 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, - 'AC_CHECK_LIBM' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, - 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, - 'm4_pattern_forbid' => 1, - '_LT_AC_FILE_LTDLL_C' => 1, - 'AM_DEP_TRACK' => 1, - 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, - 'AC_LIBTOOL_PROG_CC_C_O' => 1, - 'LTOBSOLETE_VERSION' => 1, - 'LT_AC_PROG_SED' => 1, - '_LT_COMPILER_OPTION' => 1, - 'AM_CONDITIONAL' => 1, - 'LT_PROG_RC' => 1, - '_LT_AC_TAGVAR' => 1, - 'LT_FUNC_DLSYM_USCORE' => 1, - '_LT_PATH_TOOL_PREFIX' => 1, - 'LT_SYS_DLOPEN_DEPLIBS' => 1, - 'AC_LIBTOOL_OBJDIR' => 1, - '_LT_PROG_F77' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'm4_include' => 1, - '_LT_AC_LANG_CXX_CONFIG' => 1, - 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - 'LT_SYS_MODULE_EXT' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AC_LIBTOOL_COMPILER_OPTION' => 1, - 'LT_SYS_MODULE_PATH' => 1, - '_LT_AC_LANG_GCJ' => 1, - 'AM_PROG_INSTALL_SH' => 1, - 'LTDL_INSTALLABLE' => 1, - 'LTVERSION_VERSION' => 1, - 'AM_PROG_LD' => 1, - 'AC_PROG_LD' => 1, - 'AC_LTDL_SHLIBEXT' => 1, - 'AC_LIBTOOL_DLOPEN_SELF' => 1, - 'AC_LIBLTDL_INSTALLABLE' => 1, - '_LT_AC_LOCK' => 1, - 'AC_LTDL_DLSYM_USCORE' => 1, - 'AM_SILENT_RULES' => 1, - 'AM_DISABLE_STATIC' => 1, - 'AC_DISABLE_STATIC' => 1, - 'AM_ENABLE_SHARED' => 1, - '_AM_SET_OPTION' => 1, - 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, - 'AC_ENABLE_SHARED' => 1, - '_LT_AC_TRY_DLOPEN_SELF' => 1, - 'AC_LIBLTDL_CONVENIENCE' => 1, - 'AU_DEFUN' => 1, - 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, - 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, - '_LT_REQUIRED_DARWIN_CHECKS' => 1, - 'AC_LTDL_PREOPEN' => 1, - 'LT_AC_PROG_RC' => 1, - '_AC_PROG_LIBTOOL' => 1, - 'LT_AC_PROG_GCJ' => 1, - 'AC_LIBTOOL_WIN32_DLL' => 1, - 'AM_RUN_LOG' => 1, - 'AM_DISABLE_SHARED' => 1, - 'AM_SET_LEADING_DOT' => 1, - 'LT_LIB_DLLOAD' => 1, - 'AC_DISABLE_SHARED' => 1, - '_LT_AC_LANG_RC_CONFIG' => 1, - '_LT_PROG_ECHO_BACKSLASH' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'LT_PATH_LD' => 1, - 'LT_LANG' => 1, - '_LT_PROG_FC' => 1, - 'PKG_PROG_PKG_CONFIG' => 1, - 'AM_SET_DEPDIR' => 1, - 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, - '_m4_warn' => 1, - '_LT_AC_LANG_F77_CONFIG' => 1, - 'LTDL_INIT' => 1, - 'AC_LTDL_SHLIBPATH' => 1, - 'AM_PROG_INSTALL_STRIP' => 1, - 'AM_PROG_MKDIR_P' => 1, - '_AM_AUTOCONF_VERSION' => 1, - 'AC_LIBTOOL_LANG_C_CONFIG' => 1, - '_LT_AC_SHELL_INIT' => 1, - 'PKG_CHECK_MODULES_STATIC' => 1, - 'AC_LTDL_OBJDIR' => 1, - 'AC_DEPLIBS_CHECK_METHOD' => 1, - '_LT_AC_PROG_ECHO_BACKSLASH' => 1, - '_LT_PREPARE_SED_QUOTE_VARS' => 1, - '_LT_COMPILER_BOILERPLATE' => 1, - 'AC_PROG_EGREP' => 1, - 'AM_AUX_DIR_EXPAND' => 1, - 'AC_LTDL_SYSSEARCHPATH' => 1, - '_LT_LINKER_OPTION' => 1, - '_LT_LIBOBJ' => 1, - 'LT_PROG_GO' => 1, - 'LT_AC_PROG_EGREP' => 1, - 'PKG_CHECK_EXISTS' => 1, - '_LT_PROG_LTMAIN' => 1, - 'AC_LIBTOOL_DLOPEN' => 1, - 'AM_MISSING_PROG' => 1, - '_LT_AC_LANG_GCJ_CONFIG' => 1, - '_LT_AC_SYS_COMPILER' => 1, - 'AC_LIBTOOL_PICMODE' => 1, - '_LT_AC_CHECK_DLFCN' => 1, - 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, - 'LT_INIT' => 1, - '_LT_AC_LANG_CXX' => 1, - 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, - 'LT_SYS_DLSEARCH_PATH' => 1, - 'AC_DISABLE_FAST_INSTALL' => 1, - 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, - 'AM_SANITY_CHECK' => 1, - 'AC_WITH_LTDL' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, - 'AM_MAKE_INCLUDE' => 1, - 'PKG_CHECK_MODULES' => 1, - 'AC_PATH_TOOL_PREFIX' => 1, - 'AC_DEFUN_ONCE' => 1, - '_LT_AC_PROG_CXXCPP' => 1, - 'AC_LIBTOOL_CONFIG' => 1, - 'AC_LIBTOOL_SETUP' => 1, - 'LT_CMD_MAX_LEN' => 1, - '_PKG_SHORT_ERRORS_SUPPORTED' => 1, - '_LT_AC_SYS_LIBPATH_AIX' => 1, - 'AC_PROG_LD_RELOAD_FLAG' => 1, - 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, - 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, - 'LT_SYS_SYMBOL_USCORE' => 1, - 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, - 'AC_LIBTOOL_FC' => 1, - 'AC_DEFUN' => 1, - 'AC_ENABLE_FAST_INSTALL' => 1, - '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - 'LT_WITH_LTDL' => 1, - '_LT_CC_BASENAME' => 1 - } - ], 'Autom4te::Request' ) - ); - diff --git a/tools/audiofile-0.3.6/autom4te.cache/traces.0 b/tools/audiofile-0.3.6/autom4te.cache/traces.0 deleted file mode 100644 index 6a91fd05..00000000 --- a/tools/audiofile-0.3.6/autom4te.cache/traces.0 +++ /dev/null @@ -1,728 +0,0 @@ -m4trace:configure.ac:2: -1- AC_INIT([audiofile], [0.3.6]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) -m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) -m4trace:configure.ac:2: -1- AC_SUBST([SHELL]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([SHELL]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) -m4trace:configure.ac:2: -1- AC_SUBST([PATH_SEPARATOR]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) -m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_NAME]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) -m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_STRING]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) -m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_URL]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) -m4trace:configure.ac:2: -1- AC_SUBST([exec_prefix], [NONE]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([exec_prefix]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) -m4trace:configure.ac:2: -1- AC_SUBST([prefix], [NONE]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([prefix]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) -m4trace:configure.ac:2: -1- AC_SUBST([program_transform_name], [s,x,x,]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([program_transform_name]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) -m4trace:configure.ac:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([bindir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) -m4trace:configure.ac:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sbindir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) -m4trace:configure.ac:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libexecdir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) -m4trace:configure.ac:2: -1- AC_SUBST([datarootdir], ['${prefix}/share']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datarootdir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) -m4trace:configure.ac:2: -1- AC_SUBST([datadir], ['${datarootdir}']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datadir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) -m4trace:configure.ac:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sysconfdir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) -m4trace:configure.ac:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sharedstatedir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) -m4trace:configure.ac:2: -1- AC_SUBST([localstatedir], ['${prefix}/var']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localstatedir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) -m4trace:configure.ac:2: -1- AC_SUBST([includedir], ['${prefix}/include']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([includedir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) -m4trace:configure.ac:2: -1- AC_SUBST([oldincludedir], ['/usr/include']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([oldincludedir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) -m4trace:configure.ac:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], - ['${datarootdir}/doc/${PACKAGE_TARNAME}'], - ['${datarootdir}/doc/${PACKAGE}'])]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([docdir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) -m4trace:configure.ac:2: -1- AC_SUBST([infodir], ['${datarootdir}/info']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([infodir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) -m4trace:configure.ac:2: -1- AC_SUBST([htmldir], ['${docdir}']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([htmldir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) -m4trace:configure.ac:2: -1- AC_SUBST([dvidir], ['${docdir}']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([dvidir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) -m4trace:configure.ac:2: -1- AC_SUBST([pdfdir], ['${docdir}']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([pdfdir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) -m4trace:configure.ac:2: -1- AC_SUBST([psdir], ['${docdir}']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([psdir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) -m4trace:configure.ac:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libdir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) -m4trace:configure.ac:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localedir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) -m4trace:configure.ac:2: -1- AC_SUBST([mandir], ['${datarootdir}/man']) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([mandir]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) -m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) -m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ -@%:@undef PACKAGE_NAME]) -m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ -@%:@undef PACKAGE_TARNAME]) -m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ -@%:@undef PACKAGE_VERSION]) -m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) -m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ -@%:@undef PACKAGE_STRING]) -m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ -@%:@undef PACKAGE_BUGREPORT]) -m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) -m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ -@%:@undef PACKAGE_URL]) -m4trace:configure.ac:2: -1- AC_SUBST([DEFS]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([DEFS]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) -m4trace:configure.ac:2: -1- AC_SUBST([ECHO_C]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_C]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) -m4trace:configure.ac:2: -1- AC_SUBST([ECHO_N]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_N]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) -m4trace:configure.ac:2: -1- AC_SUBST([ECHO_T]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_T]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) -m4trace:configure.ac:2: -1- AC_SUBST([LIBS]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([LIBS]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.ac:2: -1- AC_SUBST([build_alias]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([build_alias]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) -m4trace:configure.ac:2: -1- AC_SUBST([host_alias]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([host_alias]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) -m4trace:configure.ac:2: -1- AC_SUBST([target_alias]) -m4trace:configure.ac:2: -1- AC_SUBST_TRACE([target_alias]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) -m4trace:configure.ac:9: -1- AC_SUBST([AUDIOFILE_VERSION]) -m4trace:configure.ac:9: -1- AC_SUBST_TRACE([AUDIOFILE_VERSION]) -m4trace:configure.ac:9: -1- m4_pattern_allow([^AUDIOFILE_VERSION$]) -m4trace:configure.ac:10: -1- AC_SUBST([AUDIOFILE_VERSION_INFO]) -m4trace:configure.ac:10: -1- AC_SUBST_TRACE([AUDIOFILE_VERSION_INFO]) -m4trace:configure.ac:10: -1- m4_pattern_allow([^AUDIOFILE_VERSION_INFO$]) -m4trace:configure.ac:12: -1- AM_INIT_AUTOMAKE([$PACKAGE_NAME], [$PACKAGE_VERSION]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) -m4trace:configure.ac:12: -1- AM_AUTOMAKE_VERSION([1.11.6]) -m4trace:configure.ac:12: -1- AC_REQUIRE_AUX_FILE([install-sh]) -m4trace:configure.ac:12: -1- AC_SUBST([INSTALL_PROGRAM]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) -m4trace:configure.ac:12: -1- AC_SUBST([INSTALL_SCRIPT]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) -m4trace:configure.ac:12: -1- AC_SUBST([INSTALL_DATA]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([INSTALL_DATA]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^INSTALL_DATA$]) -m4trace:configure.ac:12: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__isrc]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^am__isrc$]) -m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([am__isrc]) -m4trace:configure.ac:12: -1- AC_SUBST([CYGPATH_W]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CYGPATH_W]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^CYGPATH_W$]) -m4trace:configure.ac:12: -1- AC_SUBST([PACKAGE], [$PACKAGE_NAME]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([PACKAGE]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE$]) -m4trace:configure.ac:12: -1- AC_SUBST([VERSION], [$PACKAGE_VERSION]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([VERSION]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^VERSION$]) -m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE$]) -m4trace:configure.ac:12: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ -@%:@undef PACKAGE]) -m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^VERSION$]) -m4trace:configure.ac:12: -1- AH_OUTPUT([VERSION], [/* Version number of package */ -@%:@undef VERSION]) -m4trace:configure.ac:12: -1- AC_REQUIRE_AUX_FILE([missing]) -m4trace:configure.ac:12: -1- AC_SUBST([ACLOCAL]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([ACLOCAL]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^ACLOCAL$]) -m4trace:configure.ac:12: -1- AC_SUBST([AUTOCONF]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([AUTOCONF]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AUTOCONF$]) -m4trace:configure.ac:12: -1- AC_SUBST([AUTOMAKE]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([AUTOMAKE]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AUTOMAKE$]) -m4trace:configure.ac:12: -1- AC_SUBST([AUTOHEADER]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([AUTOHEADER]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AUTOHEADER$]) -m4trace:configure.ac:12: -1- AC_SUBST([MAKEINFO]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([MAKEINFO]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^MAKEINFO$]) -m4trace:configure.ac:12: -1- AC_SUBST([install_sh]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([install_sh]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^install_sh$]) -m4trace:configure.ac:12: -1- AC_SUBST([STRIP]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([STRIP]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^STRIP$]) -m4trace:configure.ac:12: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) -m4trace:configure.ac:12: -1- AC_REQUIRE_AUX_FILE([install-sh]) -m4trace:configure.ac:12: -1- AC_SUBST([MKDIR_P]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([MKDIR_P]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^MKDIR_P$]) -m4trace:configure.ac:12: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([mkdir_p]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^mkdir_p$]) -m4trace:configure.ac:12: -1- AC_SUBST([AWK]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([AWK]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AWK$]) -m4trace:configure.ac:12: -1- AC_SUBST([SET_MAKE]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([SET_MAKE]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^SET_MAKE$]) -m4trace:configure.ac:12: -1- AC_SUBST([am__leading_dot]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__leading_dot]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^am__leading_dot$]) -m4trace:configure.ac:12: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([AMTAR]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AMTAR$]) -m4trace:configure.ac:12: -1- AC_SUBST([am__tar]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__tar]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^am__tar$]) -m4trace:configure.ac:12: -1- AC_SUBST([am__untar]) -m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__untar]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^am__untar$]) -m4trace:configure.ac:13: -1- AC_CONFIG_HEADERS([config.h]) -m4trace:configure.ac:16: -1- AC_SUBST([CC]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- AC_SUBST([CFLAGS]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([CFLAGS]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.ac:16: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LDFLAGS]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.ac:16: -1- AC_SUBST([LIBS]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LIBS]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.ac:16: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.ac:16: -1- AC_SUBST([CC]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- AC_SUBST([CC]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- AC_SUBST([CC]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- AC_SUBST([CC]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([ac_ct_CC]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^ac_ct_CC$]) -m4trace:configure.ac:16: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([EXEEXT]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^EXEEXT$]) -m4trace:configure.ac:16: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([OBJEXT]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^OBJEXT$]) -m4trace:configure.ac:16: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([DEPDIR]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^DEPDIR$]) -m4trace:configure.ac:16: -1- AC_SUBST([am__include]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([am__include]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__include$]) -m4trace:configure.ac:16: -1- AC_SUBST([am__quote]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([am__quote]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__quote$]) -m4trace:configure.ac:16: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -m4trace:configure.ac:16: -1- AC_SUBST([AMDEP_TRUE]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([AMDEP_TRUE]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^AMDEP_TRUE$]) -m4trace:configure.ac:16: -1- AC_SUBST([AMDEP_FALSE]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([AMDEP_FALSE]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^AMDEP_FALSE$]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) -m4trace:configure.ac:16: -1- AC_SUBST([AMDEPBACKSLASH]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) -m4trace:configure.ac:16: -1- AC_SUBST([am__nodep]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([am__nodep]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__nodep$]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([am__nodep]) -m4trace:configure.ac:16: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([CCDEPMODE]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CCDEPMODE$]) -m4trace:configure.ac:16: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.ac:16: -1- AC_SUBST([am__fastdepCC_TRUE]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) -m4trace:configure.ac:16: -1- AC_SUBST([am__fastdepCC_FALSE]) -m4trace:configure.ac:16: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) -m4trace:configure.ac:17: -1- AC_SUBST([CXX]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CXX]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CXX$]) -m4trace:configure.ac:17: -1- AC_SUBST([CXXFLAGS]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CXXFLAGS]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CXXFLAGS$]) -m4trace:configure.ac:17: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([LDFLAGS]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.ac:17: -1- AC_SUBST([LIBS]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([LIBS]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.ac:17: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.ac:17: -1- AC_SUBST([CXX]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CXX]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CXX$]) -m4trace:configure.ac:17: -1- AC_SUBST([ac_ct_CXX]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([ac_ct_CXX]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^ac_ct_CXX$]) -m4trace:configure.ac:17: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CXXDEPMODE]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CXXDEPMODE$]) -m4trace:configure.ac:17: -1- AM_CONDITIONAL([am__fastdepCXX], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) -m4trace:configure.ac:17: -1- AC_SUBST([am__fastdepCXX_TRUE]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) -m4trace:configure.ac:17: -1- AC_SUBST([am__fastdepCXX_FALSE]) -m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) -m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) -m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) -m4trace:configure.ac:19: -1- _m4_warn([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete. -You should run autoupdate.], [aclocal.m4:122: AM_PROG_LIBTOOL is expanded from... -configure.ac:19: the top level]) -m4trace:configure.ac:19: -1- LT_INIT -m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) -m4trace:configure.ac:19: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) -m4trace:configure.ac:19: -1- AC_SUBST([LIBTOOL]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIBTOOL]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBTOOL$]) -m4trace:configure.ac:19: -1- AC_CANONICAL_HOST -m4trace:configure.ac:19: -1- AC_CANONICAL_BUILD -m4trace:configure.ac:19: -1- AC_REQUIRE_AUX_FILE([config.sub]) -m4trace:configure.ac:19: -1- AC_REQUIRE_AUX_FILE([config.guess]) -m4trace:configure.ac:19: -1- AC_SUBST([build], [$ac_cv_build]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^build$]) -m4trace:configure.ac:19: -1- AC_SUBST([build_cpu], [$[1]]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_cpu]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^build_cpu$]) -m4trace:configure.ac:19: -1- AC_SUBST([build_vendor], [$[2]]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_vendor]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^build_vendor$]) -m4trace:configure.ac:19: -1- AC_SUBST([build_os]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_os]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^build_os$]) -m4trace:configure.ac:19: -1- AC_SUBST([host], [$ac_cv_host]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^host$]) -m4trace:configure.ac:19: -1- AC_SUBST([host_cpu], [$[1]]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_cpu]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^host_cpu$]) -m4trace:configure.ac:19: -1- AC_SUBST([host_vendor], [$[2]]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_vendor]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^host_vendor$]) -m4trace:configure.ac:19: -1- AC_SUBST([host_os]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_os]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^host_os$]) -m4trace:configure.ac:19: -1- AC_SUBST([SED]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([SED]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^SED$]) -m4trace:configure.ac:19: -1- AC_SUBST([GREP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([GREP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^GREP$]) -m4trace:configure.ac:19: -1- AC_SUBST([EGREP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([EGREP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^EGREP$]) -m4trace:configure.ac:19: -1- AC_SUBST([FGREP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([FGREP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^FGREP$]) -m4trace:configure.ac:19: -1- AC_SUBST([GREP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([GREP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^GREP$]) -m4trace:configure.ac:19: -1- AC_SUBST([LD]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LD]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LD$]) -m4trace:configure.ac:19: -1- AC_SUBST([DUMPBIN]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DUMPBIN]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^DUMPBIN$]) -m4trace:configure.ac:19: -1- AC_SUBST([ac_ct_DUMPBIN]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) -m4trace:configure.ac:19: -1- AC_SUBST([DUMPBIN]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DUMPBIN]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^DUMPBIN$]) -m4trace:configure.ac:19: -1- AC_SUBST([NM]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([NM]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^NM$]) -m4trace:configure.ac:19: -1- AC_SUBST([LN_S], [$as_ln_s]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LN_S]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LN_S$]) -m4trace:configure.ac:19: -1- AC_SUBST([OBJDUMP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([OBJDUMP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^OBJDUMP$]) -m4trace:configure.ac:19: -1- AC_SUBST([OBJDUMP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([OBJDUMP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^OBJDUMP$]) -m4trace:configure.ac:19: -1- AC_SUBST([DLLTOOL]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DLLTOOL]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^DLLTOOL$]) -m4trace:configure.ac:19: -1- AC_SUBST([DLLTOOL]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DLLTOOL]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^DLLTOOL$]) -m4trace:configure.ac:19: -1- AC_SUBST([AR]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([AR]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^AR$]) -m4trace:configure.ac:19: -1- AC_SUBST([ac_ct_AR]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ac_ct_AR]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^ac_ct_AR$]) -m4trace:configure.ac:19: -1- AC_SUBST([STRIP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([STRIP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^STRIP$]) -m4trace:configure.ac:19: -1- AC_SUBST([RANLIB]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([RANLIB]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^RANLIB$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([LT_OBJDIR]) -m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LT_OBJDIR$]) -m4trace:configure.ac:19: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory where libtool stores uninstalled libraries. */ -@%:@undef LT_OBJDIR]) -m4trace:configure.ac:19: -1- LT_SUPPORTED_TAG([CC]) -m4trace:configure.ac:19: -1- AC_SUBST([MANIFEST_TOOL]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([MANIFEST_TOOL]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^MANIFEST_TOOL$]) -m4trace:configure.ac:19: -1- AC_SUBST([DSYMUTIL]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DSYMUTIL]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^DSYMUTIL$]) -m4trace:configure.ac:19: -1- AC_SUBST([NMEDIT]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([NMEDIT]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^NMEDIT$]) -m4trace:configure.ac:19: -1- AC_SUBST([LIPO]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIPO]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LIPO$]) -m4trace:configure.ac:19: -1- AC_SUBST([OTOOL]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([OTOOL]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^OTOOL$]) -m4trace:configure.ac:19: -1- AC_SUBST([OTOOL64]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([OTOOL64]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^OTOOL64$]) -m4trace:configure.ac:19: -1- AC_SUBST([LT_SYS_LIBRARY_PATH]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_DLFCN_H]) -m4trace:configure.ac:19: -1- AC_SUBST([CPP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CPP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.ac:19: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.ac:19: -1- AC_SUBST([CPP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CPP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^STDC_HEADERS$]) -m4trace:configure.ac:19: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ -@%:@undef STDC_HEADERS]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_SYS_TYPES_H]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_SYS_STAT_H]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDLIB_H]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STRING_H]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_MEMORY_H]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STRINGS_H]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_INTTYPES_H]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDINT_H]) -m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_UNISTD_H]) -m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^HAVE_DLFCN_H$]) -m4trace:configure.ac:19: -1- LT_SUPPORTED_TAG([CXX]) -m4trace:configure.ac:19: -1- AC_SUBST([CXXCPP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CXXCPP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CXXCPP$]) -m4trace:configure.ac:19: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.ac:19: -1- AC_SUBST([CXXCPP]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CXXCPP]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CXXCPP$]) -m4trace:configure.ac:19: -1- AC_SUBST([LD]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LD]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LD$]) -m4trace:configure.ac:19: -1- AC_SUBST([LT_SYS_LIBRARY_PATH]) -m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$]) -m4trace:configure.ac:22: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) -m4trace:configure.ac:22: -1- m4_pattern_allow([^STDC_HEADERS$]) -m4trace:configure.ac:22: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ -@%:@undef STDC_HEADERS]) -m4trace:configure.ac:23: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_FCNTL_H]) -m4trace:configure.ac:23: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_UNISTD_H]) -m4trace:configure.ac:26: -1- AC_DEFINE_TRACE_LITERAL([const]) -m4trace:configure.ac:26: -1- m4_pattern_allow([^const$]) -m4trace:configure.ac:26: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ -@%:@undef const]) -m4trace:configure.ac:27: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -# undef WORDS_BIGENDIAN -# endif -#endif]) -m4trace:configure.ac:27: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) -m4trace:configure.ac:27: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) -m4trace:configure.ac:27: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD]) -m4trace:configure.ac:27: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) -m4trace:configure.ac:27: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */ -@%:@undef AC_APPLE_UNIVERSAL_BUILD]) -m4trace:configure.ac:30: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) -m4trace:configure.ac:30: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) -m4trace:configure.ac:30: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ -@%:@undef _FILE_OFFSET_BITS]) -m4trace:configure.ac:30: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) -m4trace:configure.ac:30: -1- m4_pattern_allow([^_LARGE_FILES$]) -m4trace:configure.ac:30: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ -@%:@undef _LARGE_FILES]) -m4trace:configure.ac:30: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif]) -m4trace:configure.ac:31: -1- AC_DEFINE_TRACE_LITERAL([off_t]) -m4trace:configure.ac:31: -1- m4_pattern_allow([^off_t$]) -m4trace:configure.ac:31: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if does not define. */ -@%:@undef off_t]) -m4trace:configure.ac:32: -1- AC_DEFINE_TRACE_LITERAL([size_t]) -m4trace:configure.ac:32: -1- m4_pattern_allow([^size_t$]) -m4trace:configure.ac:32: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if does not define. */ -@%:@undef size_t]) -m4trace:configure.ac:54: -1- AC_SUBST([TEST_BIN]) -m4trace:configure.ac:54: -1- AC_SUBST_TRACE([TEST_BIN]) -m4trace:configure.ac:54: -1- m4_pattern_allow([^TEST_BIN$]) -m4trace:configure.ac:60: -1- AM_CONDITIONAL([ENABLE_WERROR], [test "$enable_werror" = "yes"]) -m4trace:configure.ac:60: -1- AC_SUBST([ENABLE_WERROR_TRUE]) -m4trace:configure.ac:60: -1- AC_SUBST_TRACE([ENABLE_WERROR_TRUE]) -m4trace:configure.ac:60: -1- m4_pattern_allow([^ENABLE_WERROR_TRUE$]) -m4trace:configure.ac:60: -1- AC_SUBST([ENABLE_WERROR_FALSE]) -m4trace:configure.ac:60: -1- AC_SUBST_TRACE([ENABLE_WERROR_FALSE]) -m4trace:configure.ac:60: -1- m4_pattern_allow([^ENABLE_WERROR_FALSE$]) -m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([ENABLE_WERROR_TRUE]) -m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([ENABLE_WERROR_FALSE]) -m4trace:configure.ac:62: -1- AC_SUBST([WERROR_CFLAGS]) -m4trace:configure.ac:62: -1- AC_SUBST_TRACE([WERROR_CFLAGS]) -m4trace:configure.ac:62: -1- m4_pattern_allow([^WERROR_CFLAGS$]) -m4trace:configure.ac:70: -1- AM_CONDITIONAL([ENABLE_COVERAGE], [test "$enable_coverage" = "yes"]) -m4trace:configure.ac:70: -1- AC_SUBST([ENABLE_COVERAGE_TRUE]) -m4trace:configure.ac:70: -1- AC_SUBST_TRACE([ENABLE_COVERAGE_TRUE]) -m4trace:configure.ac:70: -1- m4_pattern_allow([^ENABLE_COVERAGE_TRUE$]) -m4trace:configure.ac:70: -1- AC_SUBST([ENABLE_COVERAGE_FALSE]) -m4trace:configure.ac:70: -1- AC_SUBST_TRACE([ENABLE_COVERAGE_FALSE]) -m4trace:configure.ac:70: -1- m4_pattern_allow([^ENABLE_COVERAGE_FALSE$]) -m4trace:configure.ac:70: -1- _AM_SUBST_NOTMAKE([ENABLE_COVERAGE_TRUE]) -m4trace:configure.ac:70: -1- _AM_SUBST_NOTMAKE([ENABLE_COVERAGE_FALSE]) -m4trace:configure.ac:72: -1- AC_SUBST([COVERAGE_CFLAGS]) -m4trace:configure.ac:72: -1- AC_SUBST_TRACE([COVERAGE_CFLAGS]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^COVERAGE_CFLAGS$]) -m4trace:configure.ac:72: -1- AC_SUBST([COVERAGE_LIBS]) -m4trace:configure.ac:72: -1- AC_SUBST_TRACE([COVERAGE_LIBS]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^COVERAGE_LIBS$]) -m4trace:configure.ac:72: -1- AC_SUBST([LCOV]) -m4trace:configure.ac:72: -1- AC_SUBST_TRACE([LCOV]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^LCOV$]) -m4trace:configure.ac:72: -1- AC_SUBST([GENHTML]) -m4trace:configure.ac:72: -1- AC_SUBST_TRACE([GENHTML]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^GENHTML$]) -m4trace:configure.ac:72: -1- AC_SUBST([LCOV]) -m4trace:configure.ac:72: -1- AC_SUBST_TRACE([LCOV]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^LCOV$]) -m4trace:configure.ac:72: -1- AC_SUBST([GENHTML]) -m4trace:configure.ac:72: -1- AC_SUBST_TRACE([GENHTML]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^GENHTML$]) -m4trace:configure.ac:91: -1- AM_CONDITIONAL([ENABLE_VALGRIND], [test "$enable_valgrind" = "yes"]) -m4trace:configure.ac:91: -1- AC_SUBST([ENABLE_VALGRIND_TRUE]) -m4trace:configure.ac:91: -1- AC_SUBST_TRACE([ENABLE_VALGRIND_TRUE]) -m4trace:configure.ac:91: -1- m4_pattern_allow([^ENABLE_VALGRIND_TRUE$]) -m4trace:configure.ac:91: -1- AC_SUBST([ENABLE_VALGRIND_FALSE]) -m4trace:configure.ac:91: -1- AC_SUBST_TRACE([ENABLE_VALGRIND_FALSE]) -m4trace:configure.ac:91: -1- m4_pattern_allow([^ENABLE_VALGRIND_FALSE$]) -m4trace:configure.ac:91: -1- _AM_SUBST_NOTMAKE([ENABLE_VALGRIND_TRUE]) -m4trace:configure.ac:91: -1- _AM_SUBST_NOTMAKE([ENABLE_VALGRIND_FALSE]) -m4trace:configure.ac:93: -1- AC_SUBST([VALGRIND]) -m4trace:configure.ac:93: -1- AC_SUBST_TRACE([VALGRIND]) -m4trace:configure.ac:93: -1- m4_pattern_allow([^VALGRIND$]) -m4trace:configure.ac:93: -1- AC_SUBST([VALGRIND]) -m4trace:configure.ac:93: -1- AC_SUBST_TRACE([VALGRIND]) -m4trace:configure.ac:93: -1- m4_pattern_allow([^VALGRIND$]) -m4trace:configure.ac:106: -1- AM_CONDITIONAL([ENABLE_DOCUMENTATION], [test "$enable_documentation" = "yes"]) -m4trace:configure.ac:106: -1- AC_SUBST([ENABLE_DOCUMENTATION_TRUE]) -m4trace:configure.ac:106: -1- AC_SUBST_TRACE([ENABLE_DOCUMENTATION_TRUE]) -m4trace:configure.ac:106: -1- m4_pattern_allow([^ENABLE_DOCUMENTATION_TRUE$]) -m4trace:configure.ac:106: -1- AC_SUBST([ENABLE_DOCUMENTATION_FALSE]) -m4trace:configure.ac:106: -1- AC_SUBST_TRACE([ENABLE_DOCUMENTATION_FALSE]) -m4trace:configure.ac:106: -1- m4_pattern_allow([^ENABLE_DOCUMENTATION_FALSE$]) -m4trace:configure.ac:106: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCUMENTATION_TRUE]) -m4trace:configure.ac:106: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCUMENTATION_FALSE]) -m4trace:configure.ac:108: -1- AC_SUBST([A2X]) -m4trace:configure.ac:108: -1- AC_SUBST_TRACE([A2X]) -m4trace:configure.ac:108: -1- m4_pattern_allow([^A2X$]) -m4trace:configure.ac:108: -1- AC_SUBST([ASCIIDOC]) -m4trace:configure.ac:108: -1- AC_SUBST_TRACE([ASCIIDOC]) -m4trace:configure.ac:108: -1- m4_pattern_allow([^ASCIIDOC$]) -m4trace:configure.ac:130: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -m4trace:configure.ac:130: -1- AC_SUBST([PKG_CONFIG]) -m4trace:configure.ac:130: -1- AC_SUBST_TRACE([PKG_CONFIG]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG$]) -m4trace:configure.ac:130: -1- AC_SUBST([PKG_CONFIG_PATH]) -m4trace:configure.ac:130: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) -m4trace:configure.ac:130: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) -m4trace:configure.ac:130: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) -m4trace:configure.ac:130: -1- AC_SUBST([PKG_CONFIG]) -m4trace:configure.ac:130: -1- AC_SUBST_TRACE([PKG_CONFIG]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG$]) -m4trace:configure.ac:137: -1- AC_SUBST([FLAC_CFLAGS]) -m4trace:configure.ac:137: -1- AC_SUBST_TRACE([FLAC_CFLAGS]) -m4trace:configure.ac:137: -1- m4_pattern_allow([^FLAC_CFLAGS$]) -m4trace:configure.ac:137: -1- AC_SUBST([FLAC_LIBS]) -m4trace:configure.ac:137: -1- AC_SUBST_TRACE([FLAC_LIBS]) -m4trace:configure.ac:137: -1- m4_pattern_allow([^FLAC_LIBS$]) -m4trace:configure.ac:147: -1- AC_SUBST([FLAC_CFLAGS]) -m4trace:configure.ac:147: -1- AC_SUBST_TRACE([FLAC_CFLAGS]) -m4trace:configure.ac:147: -1- m4_pattern_allow([^FLAC_CFLAGS$]) -m4trace:configure.ac:148: -1- AC_SUBST([FLAC_LIBS]) -m4trace:configure.ac:148: -1- AC_SUBST_TRACE([FLAC_LIBS]) -m4trace:configure.ac:148: -1- m4_pattern_allow([^FLAC_LIBS$]) -m4trace:configure.ac:150: -1- AM_CONDITIONAL([ENABLE_FLAC], [test "$enable_flac" = "yes"]) -m4trace:configure.ac:150: -1- AC_SUBST([ENABLE_FLAC_TRUE]) -m4trace:configure.ac:150: -1- AC_SUBST_TRACE([ENABLE_FLAC_TRUE]) -m4trace:configure.ac:150: -1- m4_pattern_allow([^ENABLE_FLAC_TRUE$]) -m4trace:configure.ac:150: -1- AC_SUBST([ENABLE_FLAC_FALSE]) -m4trace:configure.ac:150: -1- AC_SUBST_TRACE([ENABLE_FLAC_FALSE]) -m4trace:configure.ac:150: -1- m4_pattern_allow([^ENABLE_FLAC_FALSE$]) -m4trace:configure.ac:150: -1- _AM_SUBST_NOTMAKE([ENABLE_FLAC_TRUE]) -m4trace:configure.ac:150: -1- _AM_SUBST_NOTMAKE([ENABLE_FLAC_FALSE]) -m4trace:configure.ac:152: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_FLAC]) -m4trace:configure.ac:152: -1- m4_pattern_allow([^ENABLE_FLAC$]) -m4trace:configure.ac:152: -1- AH_OUTPUT([ENABLE_FLAC], [/* Whether FLAC is enabled. */ -@%:@undef ENABLE_FLAC]) -m4trace:configure.ac:154: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_FLAC]) -m4trace:configure.ac:154: -1- m4_pattern_allow([^ENABLE_FLAC$]) -m4trace:configure.ac:154: -1- AH_OUTPUT([ENABLE_FLAC], [/* Whether FLAC is enabled. */ -@%:@undef ENABLE_FLAC]) -m4trace:configure.ac:157: -1- AC_CONFIG_FILES([ - audiofile.spec - audiofile.pc - audiofile-uninstalled.pc - sfcommands/Makefile - test/Makefile - gtest/Makefile - examples/Makefile - libaudiofile/Makefile - libaudiofile/alac/Makefile - libaudiofile/modules/Makefile - docs/Makefile - Makefile]) -m4trace:configure.ac:170: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.ac:170: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.ac:170: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([LTLIBOBJS]) -m4trace:configure.ac:170: -1- m4_pattern_allow([^LTLIBOBJS$]) -m4trace:configure.ac:170: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) -m4trace:configure.ac:170: -1- AC_SUBST([am__EXEEXT_TRUE]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) -m4trace:configure.ac:170: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) -m4trace:configure.ac:170: -1- AC_SUBST([am__EXEEXT_FALSE]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) -m4trace:configure.ac:170: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) -m4trace:configure.ac:170: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) -m4trace:configure.ac:170: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([top_builddir]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([top_build_prefix]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([srcdir]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([abs_srcdir]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([top_srcdir]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([abs_top_srcdir]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([builddir]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([abs_builddir]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([abs_top_builddir]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([INSTALL]) -m4trace:configure.ac:170: -1- AC_SUBST_TRACE([MKDIR_P]) -m4trace:configure.ac:170: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) diff --git a/tools/audiofile-0.3.6/autom4te.cache/traces.1 b/tools/audiofile-0.3.6/autom4te.cache/traces.1 deleted file mode 100644 index 44e1055b..00000000 --- a/tools/audiofile-0.3.6/autom4te.cache/traces.1 +++ /dev/null @@ -1,2766 +0,0 @@ -m4trace:/usr/share/aclocal/libtool.m4:61: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -]) -m4trace:/usr/share/aclocal/libtool.m4:99: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:99: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:100: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:100: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:619: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -'$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test 0 != $[#] -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try '$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try '$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test yes = "$silent" && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -]) -m4trace:/usr/share/aclocal/libtool.m4:812: -1- AC_DEFUN([LT_SUPPORTED_TAG], []) -m4trace:/usr/share/aclocal/libtool.m4:823: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -]) -m4trace:/usr/share/aclocal/libtool.m4:915: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -m4trace:/usr/share/aclocal/libtool.m4:915: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete. -You should run autoupdate.])dnl -LT_LANG(C++)]) -m4trace:/usr/share/aclocal/libtool.m4:916: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -m4trace:/usr/share/aclocal/libtool.m4:916: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete. -You should run autoupdate.])dnl -LT_LANG(Fortran 77)]) -m4trace:/usr/share/aclocal/libtool.m4:917: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -m4trace:/usr/share/aclocal/libtool.m4:917: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete. -You should run autoupdate.])dnl -LT_LANG(Fortran)]) -m4trace:/usr/share/aclocal/libtool.m4:918: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -m4trace:/usr/share/aclocal/libtool.m4:918: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete. -You should run autoupdate.])dnl -LT_LANG(Java)]) -m4trace:/usr/share/aclocal/libtool.m4:919: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -m4trace:/usr/share/aclocal/libtool.m4:919: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete. -You should run autoupdate.])dnl -LT_LANG(Windows Resource)]) -m4trace:/usr/share/aclocal/libtool.m4:1247: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], - [Search for dependent libraries within DIR (or the compiler's sysroot - if not specified).])], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([$with_sysroot]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and where our libraries should be installed.])]) -m4trace:/usr/share/aclocal/libtool.m4:1578: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test yes = "[$]$2"; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -]) -m4trace:/usr/share/aclocal/libtool.m4:1620: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:1620: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:1629: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS -]) - -if test yes = "[$]$2"; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -]) -m4trace:/usr/share/aclocal/libtool.m4:1664: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:1664: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:1671: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | msys* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n "$lt_cv_sys_max_cmd_len"; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -]) -m4trace:/usr/share/aclocal/libtool.m4:1810: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:1810: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:1921: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin* | msys*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen=shl_load], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen=dlopen], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -]) -m4trace:/usr/share/aclocal/libtool.m4:2046: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:2046: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:3161: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$1"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac]) -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -]) -m4trace:/usr/share/aclocal/libtool.m4:3223: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:3223: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:3246: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test no = "$withval" || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi]) -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -]) -m4trace:/usr/share/aclocal/libtool.m4:3760: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:3760: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:3761: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:3761: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:3832: -1- AC_DEFUN([_LT_DLL_DEF_P], [dnl - test DEF = "`$SED -n dnl - -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace - -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments - -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl - -e q dnl Only consider the first "real" line - $1`" dnl -]) -m4trace:/usr/share/aclocal/libtool.m4:3846: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-msys* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM=-lm) - ;; -esac -AC_SUBST([LIBM]) -]) -m4trace:/usr/share/aclocal/libtool.m4:3865: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:3865: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:8130: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) -m4trace:/usr/share/aclocal/libtool.m4:8139: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:8139: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:8146: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) -]) -m4trace:/usr/share/aclocal/libtool.m4:8153: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) -]) -m4trace:/usr/share/aclocal/libtool.m4:8158: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:8158: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:8278: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) -m4trace:/usr/share/aclocal/libtool.m4:8278: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) -m4trace:/usr/share/aclocal/ltargz.m4:12: -1- AC_DEFUN([LT_FUNC_ARGZ], [ -AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT]) - -AC_CHECK_TYPES([error_t], - [], - [AC_DEFINE([error_t], [int], - [Define to a type to use for 'error_t' if it is not otherwise available.]) - AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h - does not typedef error_t.])], - [#if defined(HAVE_ARGZ_H) -# include -#endif]) - -LT_ARGZ_H= -AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \ - argz_next argz_stringify], [], [LT_ARGZ_H=lt__argz.h; AC_LIBOBJ([lt__argz])]) - -dnl if have system argz functions, allow forced use of -dnl libltdl-supplied implementation (and default to do so -dnl on "known bad" systems). Could use a runtime check, but -dnl (a) detecting malloc issues is notoriously unreliable -dnl (b) only known system that declares argz functions, -dnl provides them, yet they are broken, is cygwin -dnl releases prior to 16-Mar-2007 (1.5.24 and earlier) -dnl So, it's more straightforward simply to special case -dnl this for known bad systems. -AS_IF([test -z "$LT_ARGZ_H"], - [AC_CACHE_CHECK( - [if argz actually works], - [lt_cv_sys_argz_works], - [[case $host_os in #( - *cygwin*) - lt_cv_sys_argz_works=no - if test no != "$cross_compiling"; then - lt_cv_sys_argz_works="guessing no" - else - lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/' - save_IFS=$IFS - IFS=-. - set x `uname -r | sed -e "$lt_sed_extract_leading_digits"` - IFS=$save_IFS - lt_os_major=${2-0} - lt_os_minor=${3-0} - lt_os_micro=${4-0} - if test 1 -lt "$lt_os_major" \ - || { test 1 -eq "$lt_os_major" \ - && { test 5 -lt "$lt_os_minor" \ - || { test 5 -eq "$lt_os_minor" \ - && test 24 -lt "$lt_os_micro"; }; }; }; then - lt_cv_sys_argz_works=yes - fi - fi - ;; #( - *) lt_cv_sys_argz_works=yes ;; - esac]]) - AS_IF([test yes = "$lt_cv_sys_argz_works"], - [AC_DEFINE([HAVE_WORKING_ARGZ], 1, - [This value is set to 1 to indicate that the system argz facility works])], - [LT_ARGZ_H=lt__argz.h - AC_LIBOBJ([lt__argz])])]) - -AC_SUBST([LT_ARGZ_H]) -]) -m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) -_$0($*) -]) -m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl -dnl Although the argument is deprecated and no longer documented, -dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one -dnl here make sure it is the same as any other declaration of libltdl's -dnl location! This also ensures lt_ltdl_dir is set when configure.ac is -dnl not yet using an explicit LT_CONFIG_LTDL_DIR. -m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl -_$0() -]) -m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) -_LTDL_CONVENIENCE]) -m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete. -You should run autoupdate.])dnl -_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) -_LTDL_CONVENIENCE]) -m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl -dnl Although the argument is deprecated and no longer documented, -dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one -dnl here make sure it is the same as any other declaration of libltdl's -dnl location! This also ensures lt_ltdl_dir is set when configure.ac is -dnl not yet using an explicit LT_CONFIG_LTDL_DIR. -m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl -_$0() -]) -m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) -_LTDL_INSTALLABLE]) -m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete. -You should run autoupdate.])dnl -_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) -_LTDL_INSTALLABLE]) -m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [ - m4_pattern_allow([^_LT_LIBOBJS$]) - _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" -]) -m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -dnl We need to keep our own list of libobjs separate from our parent project, -dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while -dnl we look for our own LIBOBJs. -m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) -m4_pushdef([AC_LIBSOURCES]) - -dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: -m4_if(_LTDL_MODE, [], - [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) - m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], - [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) - -AC_ARG_WITH([included_ltdl], - [AS_HELP_STRING([--with-included-ltdl], - [use the GNU ltdl sources included here])]) - -if test yes != "$with_included_ltdl"; then - # We are not being forced to use the included libltdl sources, so - # decide whether there is a useful installed version we can use. - AC_CHECK_HEADER([ltdl.h], - [AC_CHECK_DECL([lt_dlinterface_register], - [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], - [with_included_ltdl=no], - [with_included_ltdl=yes])], - [with_included_ltdl=yes], - [AC_INCLUDES_DEFAULT - #include ])], - [with_included_ltdl=yes], - [AC_INCLUDES_DEFAULT] - ) -fi - -dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE -dnl was called yet, then for old times' sake, we assume libltdl is in an -dnl eponymous directory: -AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) - -AC_ARG_WITH([ltdl_include], - [AS_HELP_STRING([--with-ltdl-include=DIR], - [use the ltdl headers installed in DIR])]) - -if test -n "$with_ltdl_include"; then - if test -f "$with_ltdl_include/ltdl.h"; then : - else - AC_MSG_ERROR([invalid ltdl include directory: '$with_ltdl_include']) - fi -else - with_ltdl_include=no -fi - -AC_ARG_WITH([ltdl_lib], - [AS_HELP_STRING([--with-ltdl-lib=DIR], - [use the libltdl.la installed in DIR])]) - -if test -n "$with_ltdl_lib"; then - if test -f "$with_ltdl_lib/libltdl.la"; then : - else - AC_MSG_ERROR([invalid ltdl library directory: '$with_ltdl_lib']) - fi -else - with_ltdl_lib=no -fi - -case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in - ,yes,no,no,) - m4_case(m4_default(_LTDL_TYPE, [convenience]), - [convenience], [_LTDL_CONVENIENCE], - [installable], [_LTDL_INSTALLABLE], - [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) - ;; - ,no,no,no,) - # If the included ltdl is not to be used, then use the - # preinstalled libltdl we found. - AC_DEFINE([HAVE_LTDL], [1], - [Define this if a modern libltdl is already installed]) - LIBLTDL=-lltdl - LTDLDEPS= - LTDLINCL= - ;; - ,no*,no,*) - AC_MSG_ERROR(['--with-ltdl-include' and '--with-ltdl-lib' options must be used together]) - ;; - *) with_included_ltdl=no - LIBLTDL="-L$with_ltdl_lib -lltdl" - LTDLDEPS= - LTDLINCL=-I$with_ltdl_include - ;; -esac -INCLTDL=$LTDLINCL - -# Report our decision... -AC_MSG_CHECKING([where to find libltdl headers]) -AC_MSG_RESULT([$LTDLINCL]) -AC_MSG_CHECKING([where to find libltdl library]) -AC_MSG_RESULT([$LIBLTDL]) - -_LTDL_SETUP - -dnl restore autoconf definition. -m4_popdef([AC_LIBOBJ]) -m4_popdef([AC_LIBSOURCES]) - -AC_CONFIG_COMMANDS_PRE([ - _ltdl_libobjs= - _ltdl_ltlibobjs= - if test -n "$_LT_LIBOBJS"; then - # Remove the extension. - _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' - for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do - _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" - _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" - done - fi - AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) - AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) -]) - -# Only expand once: -m4_define([LTDL_INIT]) -]) -m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) -m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete. -You should run autoupdate.])dnl -LTDL_INIT($@)]) -m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) -m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete. -You should run autoupdate.])dnl -LTDL_INIT($@)]) -m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) -m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete. -You should run autoupdate.])dnl -LTDL_INIT($@)]) -m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_SYS_MODULE_EXT])dnl -AC_REQUIRE([LT_SYS_MODULE_PATH])dnl -AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl -AC_REQUIRE([LT_LIB_DLLOAD])dnl -AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl -AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl -AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl -AC_REQUIRE([LT_FUNC_ARGZ])dnl - -m4_require([_LT_CHECK_OBJDIR])dnl -m4_require([_LT_HEADER_DLFCN])dnl -m4_require([_LT_CHECK_DLPREOPEN])dnl -m4_require([_LT_DECL_SED])dnl - -dnl Don't require this, or it will be expanded earlier than the code -dnl that sets the variables it relies on: -_LT_ENABLE_INSTALL - -dnl _LTDL_MODE specific code must be called at least once: -_LTDL_MODE_DISPATCH - -# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS -# the user used. This is so that ltdl.h can pick up the parent projects -# config.h file, The first file in AC_CONFIG_HEADERS must contain the -# definitions required by ltdl.c. -# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). -AC_CONFIG_COMMANDS_PRE([dnl -m4_pattern_allow([^LT_CONFIG_H$])dnl -m4_ifset([AH_HEADER], - [LT_CONFIG_H=AH_HEADER], - [m4_ifset([AC_LIST_HEADERS], - [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's|^[[ ]]*||;s|[[ :]].*$||'`], - [])])]) -AC_SUBST([LT_CONFIG_H]) - -AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], - [], [], [AC_INCLUDES_DEFAULT]) - -AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) -AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) - -m4_pattern_allow([LT_LIBEXT])dnl -AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) - -name= -eval "lt_libprefix=\"$libname_spec\"" -m4_pattern_allow([LT_LIBPREFIX])dnl -AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) - -name=ltdl -eval "LTDLOPEN=\"$libname_spec\"" -AC_SUBST([LTDLOPEN]) -]) -m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_CACHE_CHECK([whether deplibs are loaded by dlopen], - [lt_cv_sys_dlopen_deplibs], - [# PORTME does your system automatically load deplibs for dlopen? - # or its logical equivalent (e.g. shl_load for HP-UX < 11) - # For now, we just catch OSes we know something about -- in the - # future, we'll try test this programmatically. - lt_cv_sys_dlopen_deplibs=unknown - case $host_os in - aix3*|aix4.1.*|aix4.2.*) - # Unknown whether this is true for these versions of AIX, but - # we want this 'case' here to explicitly catch those versions. - lt_cv_sys_dlopen_deplibs=unknown - ;; - aix[[4-9]]*) - lt_cv_sys_dlopen_deplibs=yes - ;; - amigaos*) - case $host_cpu in - powerpc) - lt_cv_sys_dlopen_deplibs=no - ;; - esac - ;; - bitrig*) - lt_cv_sys_dlopen_deplibs=yes - ;; - darwin*) - # Assuming the user has installed a libdl from somewhere, this is true - # If you are looking for one http://www.opendarwin.org/projects/dlcompat - lt_cv_sys_dlopen_deplibs=yes - ;; - freebsd* | dragonfly*) - lt_cv_sys_dlopen_deplibs=yes - ;; - gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) - # GNU and its variants, using gnu ld.so (Glibc) - lt_cv_sys_dlopen_deplibs=yes - ;; - hpux10*|hpux11*) - lt_cv_sys_dlopen_deplibs=yes - ;; - interix*) - lt_cv_sys_dlopen_deplibs=yes - ;; - irix[[12345]]*|irix6.[[01]]*) - # Catch all versions of IRIX before 6.2, and indicate that we don't - # know how it worked for any of those versions. - lt_cv_sys_dlopen_deplibs=unknown - ;; - irix*) - # The case above catches anything before 6.2, and it's known that - # at 6.2 and later dlopen does load deplibs. - lt_cv_sys_dlopen_deplibs=yes - ;; - netbsd*) - lt_cv_sys_dlopen_deplibs=yes - ;; - openbsd*) - lt_cv_sys_dlopen_deplibs=yes - ;; - osf[[1234]]*) - # dlopen did load deplibs (at least at 4.x), but until the 5.x series, - # it did *not* use an RPATH in a shared library to find objects the - # library depends on, so we explicitly say 'no'. - lt_cv_sys_dlopen_deplibs=no - ;; - osf5.0|osf5.0a|osf5.1) - # dlopen *does* load deplibs and with the right loader patch applied - # it even uses RPATH in a shared library to search for shared objects - # that the library depends on, but there's no easy way to know if that - # patch is installed. Since this is the case, all we can really - # say is unknown -- it depends on the patch being installed. If - # it is, this changes to 'yes'. Without it, it would be 'no'. - lt_cv_sys_dlopen_deplibs=unknown - ;; - osf*) - # the two cases above should catch all versions of osf <= 5.1. Read - # the comments above for what we know about them. - # At > 5.1, deplibs are loaded *and* any RPATH in a shared library - # is used to find them so we can finally say 'yes'. - lt_cv_sys_dlopen_deplibs=yes - ;; - qnx*) - lt_cv_sys_dlopen_deplibs=yes - ;; - solaris*) - lt_cv_sys_dlopen_deplibs=yes - ;; - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - libltdl_cv_sys_dlopen_deplibs=yes - ;; - esac - ]) -if test yes != "$lt_cv_sys_dlopen_deplibs"; then - AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], - [Define if the OS needs help to load dependent libraries for dlopen().]) -fi -]) -m4trace:/usr/share/aclocal/ltdl.m4:545: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:545: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:552: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl -AC_CACHE_CHECK([what extension is used for runtime loadable modules], - [libltdl_cv_shlibext], -[ -module=yes -eval libltdl_cv_shlibext=$shrext_cmds -module=no -eval libltdl_cv_shrext=$shrext_cmds - ]) -if test -n "$libltdl_cv_shlibext"; then - m4_pattern_allow([LT_MODULE_EXT])dnl - AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], - [Define to the extension used for runtime loadable modules, say, ".so".]) -fi -if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then - m4_pattern_allow([LT_SHARED_EXT])dnl - AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], - [Define to the shared library suffix, say, ".dylib".]) -fi -if test -n "$shared_archive_member_spec"; then - m4_pattern_allow([LT_SHARED_LIB_MEMBER])dnl - AC_DEFINE_UNQUOTED([LT_SHARED_LIB_MEMBER], ["($shared_archive_member_spec.o)"], - [Define to the shared archive member specification, say "(shr.o)".]) -fi -]) -m4trace:/usr/share/aclocal/ltdl.m4:580: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:580: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:587: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl -AC_CACHE_CHECK([what variable specifies run-time module search path], - [lt_cv_module_path_var], [lt_cv_module_path_var=$shlibpath_var]) -if test -n "$lt_cv_module_path_var"; then - m4_pattern_allow([LT_MODULE_PATH_VAR])dnl - AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], - [Define to the name of the environment variable that determines the run-time module search path.]) -fi -]) -m4trace:/usr/share/aclocal/ltdl.m4:599: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:599: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:606: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl -AC_CACHE_CHECK([for the default library search path], - [lt_cv_sys_dlsearch_path], - [lt_cv_sys_dlsearch_path=$sys_lib_dlsearch_path_spec]) -if test -n "$lt_cv_sys_dlsearch_path"; then - sys_dlsearch_path= - for dir in $lt_cv_sys_dlsearch_path; do - if test -z "$sys_dlsearch_path"; then - sys_dlsearch_path=$dir - else - sys_dlsearch_path=$sys_dlsearch_path$PATH_SEPARATOR$dir - fi - done - m4_pattern_allow([LT_DLSEARCH_PATH])dnl - AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], - [Define to the system default library search path.]) -fi -]) -m4trace:/usr/share/aclocal/ltdl.m4:627: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:627: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:653: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) -LT_DLLOADERS= -AC_SUBST([LT_DLLOADERS]) - -AC_LANG_PUSH([C]) -lt_dlload_save_LIBS=$LIBS - -LIBADD_DLOPEN= -AC_SEARCH_LIBS([dlopen], [dl], - [AC_DEFINE([HAVE_LIBDL], [1], - [Define if you have the libdl library or equivalent.]) - if test "$ac_cv_search_dlopen" != "none required"; then - LIBADD_DLOPEN=-ldl - fi - libltdl_cv_lib_dl_dlopen=yes - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], - [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H -# include -#endif - ]], [[dlopen(0, 0);]])], - [AC_DEFINE([HAVE_LIBDL], [1], - [Define if you have the libdl library or equivalent.]) - libltdl_cv_func_dlopen=yes - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], - [AC_CHECK_LIB([svld], [dlopen], - [AC_DEFINE([HAVE_LIBDL], [1], - [Define if you have the libdl library or equivalent.]) - LIBADD_DLOPEN=-lsvld libltdl_cv_func_dlopen=yes - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) -if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen" -then - lt_save_LIBS=$LIBS - LIBS="$LIBS $LIBADD_DLOPEN" - AC_CHECK_FUNCS([dlerror]) - LIBS=$lt_save_LIBS -fi -AC_SUBST([LIBADD_DLOPEN]) - -LIBADD_SHL_LOAD= -AC_CHECK_FUNC([shl_load], - [AC_DEFINE([HAVE_SHL_LOAD], [1], - [Define if you have the shl_load function.]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], - [AC_CHECK_LIB([dld], [shl_load], - [AC_DEFINE([HAVE_SHL_LOAD], [1], - [Define if you have the shl_load function.]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" - LIBADD_SHL_LOAD=-ldld])]) -AC_SUBST([LIBADD_SHL_LOAD]) - -case $host_os in -darwin[[1567]].*) -# We only want this for pre-Mac OS X 10.4. - AC_CHECK_FUNC([_dyld_func_lookup], - [AC_DEFINE([HAVE_DYLD], [1], - [Define if you have the _dyld_func_lookup function.]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) - ;; -beos*) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" - ;; -cygwin* | msys* | mingw* | pw32*) - AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" - ;; -esac - -AC_CHECK_LIB([dld], [dld_link], - [AC_DEFINE([HAVE_DLD], [1], - [Define if you have the GNU dld library.]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) -AC_SUBST([LIBADD_DLD_LINK]) - -m4_pattern_allow([^LT_DLPREOPEN$]) -LT_DLPREOPEN= -if test -n "$LT_DLLOADERS" -then - for lt_loader in $LT_DLLOADERS; do - LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " - done - AC_DEFINE([HAVE_LIBDLLOADER], [1], - [Define if libdlloader will be built on this platform]) -fi -AC_SUBST([LT_DLPREOPEN]) - -dnl This isn't used anymore, but set it for backwards compatibility -LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" -AC_SUBST([LIBADD_DL]) - -LIBS=$lt_dlload_save_LIBS -AC_LANG_POP -]) -m4trace:/usr/share/aclocal/ltdl.m4:748: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:748: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:756: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -AC_CACHE_CHECK([for _ prefix in compiled symbols], - [lt_cv_sys_symbol_underscore], - [lt_cv_sys_symbol_underscore=no - cat > conftest.$ac_ext <<_LT_EOF -void nm_test_func(){} -int main(){nm_test_func;return 0;} -_LT_EOF - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - ac_nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then - # See whether the symbols have a leading underscore. - if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then - lt_cv_sys_symbol_underscore=yes - else - if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then - : - else - echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD - fi - fi - else - echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.c >&AS_MESSAGE_LOG_FD - fi - rm -rf conftest* - ]) - sys_symbol_underscore=$lt_cv_sys_symbol_underscore - AC_SUBST([sys_symbol_underscore]) -]) -m4trace:/usr/share/aclocal/ltdl.m4:793: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:793: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:800: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([_LT_COMPILER_PIC])dnl for lt_prog_compiler_wl -AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl for lt_cv_sys_symbol_underscore -AC_REQUIRE([LT_SYS_MODULE_EXT])dnl for libltdl_cv_shlibext -if test yes = "$lt_cv_sys_symbol_underscore"; then - if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen"; then - AC_CACHE_CHECK([whether we have to add an underscore for dlsym], - [libltdl_cv_need_uscore], - [libltdl_cv_need_uscore=unknown - dlsym_uscore_save_LIBS=$LIBS - LIBS="$LIBS $LIBADD_DLOPEN" - libname=conftmod # stay within 8.3 filename limits! - cat >$libname.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif -int fnord () { return 42; }] -_LT_EOF - - # ltfn_module_cmds module_cmds - # Execute tilde-delimited MODULE_CMDS with environment primed for - # $module_cmds or $archive_cmds type content. - ltfn_module_cmds () - {( # subshell avoids polluting parent global environment - module_cmds_save_ifs=$IFS; IFS='~' - for cmd in @S|@1; do - IFS=$module_cmds_save_ifs - libobjs=$libname.$ac_objext; lib=$libname$libltdl_cv_shlibext - rpath=/not-exists; soname=$libname$libltdl_cv_shlibext; output_objdir=. - major=; versuffix=; verstring=; deplibs= - ECHO=echo; wl=$lt_prog_compiler_wl; allow_undefined_flag= - eval $cmd - done - IFS=$module_cmds_save_ifs - )} - - # Compile a loadable module using libtool macro expansion results. - $CC $pic_flag -c $libname.$ac_ext - ltfn_module_cmds "${module_cmds:-$archive_cmds}" - - # Try to fetch fnord with dlsym(). - libltdl_dlunknown=0; libltdl_dlnouscore=1; libltdl_dluscore=2 - cat >conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" -#if HAVE_DLFCN_H -#include -#endif -#include -#ifndef RTLD_GLOBAL -# ifdef DL_GLOBAL -# define RTLD_GLOBAL DL_GLOBAL -# else -# define RTLD_GLOBAL 0 -# endif -#endif -#ifndef RTLD_NOW -# ifdef DL_NOW -# define RTLD_NOW DL_NOW -# else -# define RTLD_NOW 0 -# endif -#endif -int main () { - void *handle = dlopen ("`pwd`/$libname$libltdl_cv_shlibext", RTLD_GLOBAL|RTLD_NOW); - int status = $libltdl_dlunknown; - if (handle) { - if (dlsym (handle, "fnord")) - status = $libltdl_dlnouscore; - else { - if (dlsym (handle, "_fnord")) - status = $libltdl_dluscore; - else - puts (dlerror ()); - } - dlclose (handle); - } else - puts (dlerror ()); - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - libltdl_status=$? - case x$libltdl_status in - x$libltdl_dlnouscore) libltdl_cv_need_uscore=no ;; - x$libltdl_dluscore) libltdl_cv_need_uscore=yes ;; - x*) libltdl_cv_need_uscore=unknown ;; - esac - fi - rm -rf conftest* $libname* - LIBS=$dlsym_uscore_save_LIBS - ]) - fi -fi - -if test yes = "$libltdl_cv_need_uscore"; then - AC_DEFINE([NEED_USCORE], [1], - [Define if dlsym() requires a leading underscore in symbol names.]) -fi -]) -m4trace:/usr/share/aclocal/ltdl.m4:907: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) -m4trace:/usr/share/aclocal/ltdl.m4:907: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete. -You should run autoupdate.])dnl -m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) -m4trace:/usr/share/aclocal/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) -m4trace:/usr/share/aclocal/ltoptions.m4:113: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'dlopen' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:113: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete. -You should run autoupdate.])dnl -_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'dlopen' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:148: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'win32-dll' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:148: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete. -You should run autoupdate.])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'win32-dll' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:197: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:201: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:205: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -m4trace:/usr/share/aclocal/ltoptions.m4:205: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete. -You should run autoupdate.])dnl -AC_ENABLE_SHARED($@)]) -m4trace:/usr/share/aclocal/ltoptions.m4:206: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -m4trace:/usr/share/aclocal/ltoptions.m4:206: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete. -You should run autoupdate.])dnl -AC_DISABLE_SHARED($@)]) -m4trace:/usr/share/aclocal/ltoptions.m4:251: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:255: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:259: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -m4trace:/usr/share/aclocal/ltoptions.m4:259: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete. -You should run autoupdate.])dnl -AC_ENABLE_STATIC($@)]) -m4trace:/usr/share/aclocal/ltoptions.m4:260: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -m4trace:/usr/share/aclocal/ltoptions.m4:260: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete. -You should run autoupdate.])dnl -AC_DISABLE_STATIC($@)]) -m4trace:/usr/share/aclocal/ltoptions.m4:305: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'fast-install' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:305: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete. -You should run autoupdate.])dnl -_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'fast-install' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:312: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'disable-fast-install' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:312: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete. -You should run autoupdate.])dnl -_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'disable-fast-install' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:411: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'pic-only' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltoptions.m4:411: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete. -You should run autoupdate.])dnl -_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'pic-only' option into LT_INIT's first parameter.]) -]) -m4trace:/usr/share/aclocal/ltsugar.m4:14: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) -m4trace:/usr/share/aclocal/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' -macro_revision='2.4.6' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:37: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SHELL_INIT]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:43: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([_LT_AC_TAGVAR]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([AC_LTDL_PREOPEN]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_SYS_COMPILER]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([_LT_AC_LOCK]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LTDL_OBJDIR]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PATH_MAGIC]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_GNU]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:67: -1- AC_DEFUN([LT_AC_PROG_EGREP]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([_AC_PROG_LIBTOOL]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([AC_LIBTOOL_SETUP]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:76: -1- AC_DEFUN([_LT_AC_TAGCONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_CXX]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_F77]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([_LT_AC_LANG_GCJ]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([AC_LIBTOOL_CONFIG]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:92: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:94: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_F77]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_FC]) -m4trace:/usr/share/aclocal/lt~obsolete.m4:99: -1- AC_DEFUN([_LT_PROG_CXX]) -m4trace:/mingw64/share/aclocal/pkg.m4:58: -1- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -]) -m4trace:/mingw64/share/aclocal/pkg.m4:92: -1- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) -m4trace:/mingw64/share/aclocal/pkg.m4:121: -1- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -]) -m4trace:/mingw64/share/aclocal/pkg.m4:139: -1- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $2]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -]) -m4trace:/mingw64/share/aclocal/pkg.m4:208: -1- AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -_save_PKG_CONFIG=$PKG_CONFIG -PKG_CONFIG="$PKG_CONFIG --static" -PKG_CHECK_MODULES($@) -PKG_CONFIG=$_save_PKG_CONFIG[]dnl -]) -m4trace:/mingw64/share/aclocal/pkg.m4:226: -1- AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([pkgconfigdir], - [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, - [with_pkgconfigdir=]pkg_default) -AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -]) -m4trace:/mingw64/share/aclocal/pkg.m4:248: -1- AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([noarch-pkgconfigdir], - [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, - [with_noarch_pkgconfigdir=]pkg_default) -AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -]) -m4trace:/mingw64/share/aclocal/pkg.m4:267: -1- AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl - -_PKG_CONFIG([$1], [variable="][$3]["], [$2]) -AS_VAR_COPY([$1], [pkg_cv_][$1]) - -AS_VAR_IF([$1], [""], [$5], [$4])dnl -]) -m4trace:/usr/share/aclocal-1.11/amversion.m4:17: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.6], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) -m4trace:/usr/share/aclocal-1.11/amversion.m4:36: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -m4trace:/usr/share/aclocal-1.11/auxdir.m4:49: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) -m4trace:/usr/share/aclocal-1.11/cond.m4:15: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) -m4trace:/usr/share/aclocal-1.11/depend.m4:28: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) -m4trace:/usr/share/aclocal-1.11/depend.m4:164: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) -m4trace:/usr/share/aclocal-1.11/depend.m4:172: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) -m4trace:/usr/share/aclocal-1.11/depout.m4:14: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -]) -m4trace:/usr/share/aclocal-1.11/depout.m4:75: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) -m4trace:/usr/share/aclocal-1.11/init.m4:26: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) -m4trace:/usr/share/aclocal-1.11/init.m4:126: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -m4trace:/usr/share/aclocal-1.11/install-sh.m4:14: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) -m4trace:/usr/share/aclocal-1.11/lead-dot.m4:12: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) -m4trace:/usr/share/aclocal-1.11/make.m4:14: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) -m4trace:/usr/share/aclocal-1.11/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) -m4trace:/usr/share/aclocal-1.11/missing.m4:24: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) -m4trace:/usr/share/aclocal-1.11/mkdirp.m4:14: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) -m4trace:/usr/share/aclocal-1.11/options.m4:14: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -m4trace:/usr/share/aclocal-1.11/options.m4:20: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) -m4trace:/usr/share/aclocal-1.11/options.m4:26: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) -m4trace:/usr/share/aclocal-1.11/options.m4:32: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -m4trace:/usr/share/aclocal-1.11/runlog.m4:14: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) -m4trace:/usr/share/aclocal-1.11/sanity.m4:14: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) -m4trace:/usr/share/aclocal-1.11/silent.m4:14: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], -[ --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0')]) -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few `make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using `$V' instead of `$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) -m4trace:/usr/share/aclocal-1.11/strip.m4:19: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) -m4trace:/usr/share/aclocal-1.11/substnot.m4:14: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) -m4trace:/usr/share/aclocal-1.11/substnot.m4:19: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) -m4trace:/usr/share/aclocal-1.11/tar.m4:24: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) -m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) -m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) -m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) -m4trace:configure.ac:9: -1- m4_pattern_allow([^AUDIOFILE_VERSION$]) -m4trace:configure.ac:10: -1- m4_pattern_allow([^AUDIOFILE_VERSION_INFO$]) -m4trace:configure.ac:12: -1- AM_INIT_AUTOMAKE([$PACKAGE_NAME], [$PACKAGE_VERSION]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) -m4trace:configure.ac:12: -1- AM_SET_CURRENT_AUTOMAKE_VERSION -m4trace:configure.ac:12: -1- AM_AUTOMAKE_VERSION([1.11.6]) -m4trace:configure.ac:12: -1- _AM_AUTOCONF_VERSION([2.69]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^INSTALL_DATA$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^am__isrc$]) -m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([am__isrc]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^CYGPATH_W$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^VERSION$]) -m4trace:configure.ac:12: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) -m4trace:configure.ac:12: -2- _AM_MANGLE_OPTION([no-define]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^VERSION$]) -m4trace:configure.ac:12: -1- AM_SANITY_CHECK -m4trace:configure.ac:12: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -m4trace:configure.ac:12: -1- AM_MISSING_HAS_RUN -m4trace:configure.ac:12: -1- AM_AUX_DIR_EXPAND -m4trace:configure.ac:12: -1- m4_pattern_allow([^ACLOCAL$]) -m4trace:configure.ac:12: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AUTOCONF$]) -m4trace:configure.ac:12: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AUTOMAKE$]) -m4trace:configure.ac:12: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AUTOHEADER$]) -m4trace:configure.ac:12: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^MAKEINFO$]) -m4trace:configure.ac:12: -1- AM_PROG_INSTALL_SH -m4trace:configure.ac:12: -1- m4_pattern_allow([^install_sh$]) -m4trace:configure.ac:12: -1- AM_PROG_INSTALL_STRIP -m4trace:configure.ac:12: -1- m4_pattern_allow([^STRIP$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) -m4trace:configure.ac:12: -1- AM_PROG_MKDIR_P -m4trace:configure.ac:12: -1- m4_pattern_allow([^MKDIR_P$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^mkdir_p$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AWK$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^SET_MAKE$]) -m4trace:configure.ac:12: -1- AM_SET_LEADING_DOT -m4trace:configure.ac:12: -1- m4_pattern_allow([^am__leading_dot$]) -m4trace:configure.ac:12: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -m4trace:configure.ac:12: -2- _AM_MANGLE_OPTION([tar-ustar]) -m4trace:configure.ac:12: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) -m4trace:configure.ac:12: -2- _AM_MANGLE_OPTION([tar-pax]) -m4trace:configure.ac:12: -1- _AM_PROG_TAR([v7]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^AMTAR$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^am__tar$]) -m4trace:configure.ac:12: -1- m4_pattern_allow([^am__untar$]) -m4trace:configure.ac:12: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -m4trace:configure.ac:12: -2- _AM_MANGLE_OPTION([no-dependencies]) -m4trace:configure.ac:12: -1- _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])]) -m4trace:configure.ac:12: -2- _AM_MANGLE_OPTION([silent-rules]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CC$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^ac_ct_CC$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^EXEEXT$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^OBJEXT$]) -m4trace:configure.ac:16: -1- _AM_DEPENDENCIES([CC]) -m4trace:configure.ac:16: -1- AM_SET_DEPDIR -m4trace:configure.ac:16: -1- m4_pattern_allow([^DEPDIR$]) -m4trace:configure.ac:16: -1- AM_OUTPUT_DEPENDENCY_COMMANDS -m4trace:configure.ac:16: -1- AM_MAKE_INCLUDE -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__include$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__quote$]) -m4trace:configure.ac:16: -1- AM_DEP_TRACK -m4trace:configure.ac:16: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^AMDEP_TRUE$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^AMDEP_FALSE$]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__nodep$]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([am__nodep]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^CCDEPMODE$]) -m4trace:configure.ac:16: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) -m4trace:configure.ac:16: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) -m4trace:configure.ac:16: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CXX$]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CXXFLAGS$]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CXX$]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^ac_ct_CXX$]) -m4trace:configure.ac:17: -1- _AM_DEPENDENCIES([CXX]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^CXXDEPMODE$]) -m4trace:configure.ac:17: -1- AM_CONDITIONAL([am__fastdepCXX], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) -m4trace:configure.ac:17: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) -m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) -m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) -m4trace:configure.ac:19: -1- AM_PROG_LIBTOOL -m4trace:configure.ac:19: -1- _m4_warn([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete. -You should run autoupdate.], [/usr/share/aclocal/libtool.m4:100: AM_PROG_LIBTOOL is expanded from... -configure.ac:19: the top level]) -m4trace:configure.ac:19: -1- LT_INIT -m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) -m4trace:configure.ac:19: -1- LTOPTIONS_VERSION -m4trace:configure.ac:19: -1- LTSUGAR_VERSION -m4trace:configure.ac:19: -1- LTVERSION_VERSION -m4trace:configure.ac:19: -1- LTOBSOLETE_VERSION -m4trace:configure.ac:19: -1- _LT_PROG_LTMAIN -m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBTOOL$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^build$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^build_cpu$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^build_vendor$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^build_os$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^host$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^host_cpu$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^host_vendor$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^host_os$]) -m4trace:configure.ac:19: -1- _LT_PREPARE_SED_QUOTE_VARS -m4trace:configure.ac:19: -1- _LT_PROG_ECHO_BACKSLASH -m4trace:configure.ac:19: -1- LT_PATH_LD -m4trace:configure.ac:19: -1- m4_pattern_allow([^SED$]) -m4trace:configure.ac:19: -1- AC_PROG_EGREP -m4trace:configure.ac:19: -1- m4_pattern_allow([^GREP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^EGREP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^FGREP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^GREP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LD$]) -m4trace:configure.ac:19: -1- LT_PATH_NM -m4trace:configure.ac:19: -1- m4_pattern_allow([^DUMPBIN$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^DUMPBIN$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^NM$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LN_S$]) -m4trace:configure.ac:19: -1- LT_CMD_MAX_LEN -m4trace:configure.ac:19: -1- m4_pattern_allow([^OBJDUMP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^OBJDUMP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^DLLTOOL$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^DLLTOOL$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^AR$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^ac_ct_AR$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^STRIP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^RANLIB$]) -m4trace:configure.ac:19: -1- _LT_WITH_SYSROOT -m4trace:configure.ac:19: -1- m4_pattern_allow([LT_OBJDIR]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LT_OBJDIR$]) -m4trace:configure.ac:19: -1- _LT_CC_BASENAME([$compiler]) -m4trace:configure.ac:19: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH]) -m4trace:configure.ac:19: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH]) -m4trace:configure.ac:19: -1- LT_SUPPORTED_TAG([CC]) -m4trace:configure.ac:19: -1- _LT_COMPILER_BOILERPLATE -m4trace:configure.ac:19: -1- _LT_LINKER_BOILERPLATE -m4trace:configure.ac:19: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"]) -m4trace:configure.ac:19: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t@m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;; - esac], [_LT_TAGVAR(lt_prog_compiler_pic, )= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no]) -m4trace:configure.ac:19: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^MANIFEST_TOOL$]) -m4trace:configure.ac:19: -1- _LT_DLL_DEF_P([$export_symbols]) -m4trace:configure.ac:19: -1- _LT_DLL_DEF_P([$export_symbols]) -m4trace:configure.ac:19: -1- _LT_REQUIRED_DARWIN_CHECKS -m4trace:configure.ac:19: -1- m4_pattern_allow([^DSYMUTIL$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^NMEDIT$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LIPO$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^OTOOL$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^OTOOL64$]) -m4trace:configure.ac:19: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags']) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$]) -m4trace:configure.ac:19: -1- LT_SYS_DLOPEN_SELF -m4trace:configure.ac:19: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^STDC_HEADERS$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^HAVE_DLFCN_H$]) -m4trace:configure.ac:19: -1- LT_LANG([CXX]) -m4trace:configure.ac:19: -1- LT_SUPPORTED_TAG([CXX]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CXXCPP$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^CXXCPP$]) -m4trace:configure.ac:19: -1- _LT_COMPILER_BOILERPLATE -m4trace:configure.ac:19: -1- _LT_LINKER_BOILERPLATE -m4trace:configure.ac:19: -1- _LT_CC_BASENAME([$compiler]) -m4trace:configure.ac:19: -1- LT_PATH_LD -m4trace:configure.ac:19: -1- m4_pattern_allow([^LD$]) -m4trace:configure.ac:19: -1- _LT_DLL_DEF_P([$export_symbols]) -m4trace:configure.ac:19: -1- _LT_DLL_DEF_P([$export_symbols]) -m4trace:configure.ac:19: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, CXX) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, CXX)], [$_LT_TAGVAR(lt_prog_compiler_pic, CXX)@&t@m4_if([CXX],[],[ -DPIC],[m4_if([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, CXX) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_TAGVAR(lt_prog_compiler_pic, CXX)" ;; - esac], [_LT_TAGVAR(lt_prog_compiler_pic, CXX)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no]) -m4trace:configure.ac:19: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, CXX)=]) -m4trace:configure.ac:19: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$]) -m4trace:configure.ac:22: -1- m4_pattern_allow([^STDC_HEADERS$]) -m4trace:configure.ac:26: -1- m4_pattern_allow([^const$]) -m4trace:configure.ac:27: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) -m4trace:configure.ac:27: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) -m4trace:configure.ac:30: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) -m4trace:configure.ac:30: -1- m4_pattern_allow([^_LARGE_FILES$]) -m4trace:configure.ac:31: -1- m4_pattern_allow([^off_t$]) -m4trace:configure.ac:32: -1- m4_pattern_allow([^size_t$]) -m4trace:configure.ac:54: -1- m4_pattern_allow([^TEST_BIN$]) -m4trace:configure.ac:60: -1- AM_CONDITIONAL([ENABLE_WERROR], [test "$enable_werror" = "yes"]) -m4trace:configure.ac:60: -1- m4_pattern_allow([^ENABLE_WERROR_TRUE$]) -m4trace:configure.ac:60: -1- m4_pattern_allow([^ENABLE_WERROR_FALSE$]) -m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([ENABLE_WERROR_TRUE]) -m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([ENABLE_WERROR_FALSE]) -m4trace:configure.ac:62: -1- m4_pattern_allow([^WERROR_CFLAGS$]) -m4trace:configure.ac:70: -1- AM_CONDITIONAL([ENABLE_COVERAGE], [test "$enable_coverage" = "yes"]) -m4trace:configure.ac:70: -1- m4_pattern_allow([^ENABLE_COVERAGE_TRUE$]) -m4trace:configure.ac:70: -1- m4_pattern_allow([^ENABLE_COVERAGE_FALSE$]) -m4trace:configure.ac:70: -1- _AM_SUBST_NOTMAKE([ENABLE_COVERAGE_TRUE]) -m4trace:configure.ac:70: -1- _AM_SUBST_NOTMAKE([ENABLE_COVERAGE_FALSE]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^COVERAGE_CFLAGS$]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^COVERAGE_LIBS$]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^LCOV$]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^GENHTML$]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^LCOV$]) -m4trace:configure.ac:72: -1- m4_pattern_allow([^GENHTML$]) -m4trace:configure.ac:91: -1- AM_CONDITIONAL([ENABLE_VALGRIND], [test "$enable_valgrind" = "yes"]) -m4trace:configure.ac:91: -1- m4_pattern_allow([^ENABLE_VALGRIND_TRUE$]) -m4trace:configure.ac:91: -1- m4_pattern_allow([^ENABLE_VALGRIND_FALSE$]) -m4trace:configure.ac:91: -1- _AM_SUBST_NOTMAKE([ENABLE_VALGRIND_TRUE]) -m4trace:configure.ac:91: -1- _AM_SUBST_NOTMAKE([ENABLE_VALGRIND_FALSE]) -m4trace:configure.ac:93: -1- m4_pattern_allow([^VALGRIND$]) -m4trace:configure.ac:93: -1- m4_pattern_allow([^VALGRIND$]) -m4trace:configure.ac:106: -1- AM_CONDITIONAL([ENABLE_DOCUMENTATION], [test "$enable_documentation" = "yes"]) -m4trace:configure.ac:106: -1- m4_pattern_allow([^ENABLE_DOCUMENTATION_TRUE$]) -m4trace:configure.ac:106: -1- m4_pattern_allow([^ENABLE_DOCUMENTATION_FALSE$]) -m4trace:configure.ac:106: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCUMENTATION_TRUE]) -m4trace:configure.ac:106: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCUMENTATION_FALSE]) -m4trace:configure.ac:108: -1- m4_pattern_allow([^A2X$]) -m4trace:configure.ac:108: -1- m4_pattern_allow([^ASCIIDOC$]) -m4trace:configure.ac:130: -1- PKG_PROG_PKG_CONFIG -m4trace:configure.ac:130: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG$]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) -m4trace:configure.ac:130: -1- m4_pattern_allow([^PKG_CONFIG$]) -m4trace:configure.ac:137: -1- PKG_CHECK_MODULES([FLAC], [flac >= 1.2.1], [ac_cv_flac=yes], [ac_cv_flac=no]) -m4trace:configure.ac:137: -1- m4_pattern_allow([^FLAC_CFLAGS$]) -m4trace:configure.ac:137: -1- m4_pattern_allow([^FLAC_LIBS$]) -m4trace:configure.ac:137: -1- PKG_CHECK_EXISTS([flac >= 1.2.1], [pkg_cv_[]FLAC_CFLAGS=`$PKG_CONFIG --[]cflags "flac >= 1.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) -m4trace:configure.ac:137: -1- PKG_CHECK_EXISTS([flac >= 1.2.1], [pkg_cv_[]FLAC_LIBS=`$PKG_CONFIG --[]libs "flac >= 1.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) -m4trace:configure.ac:137: -1- _PKG_SHORT_ERRORS_SUPPORTED -m4trace:configure.ac:147: -1- m4_pattern_allow([^FLAC_CFLAGS$]) -m4trace:configure.ac:148: -1- m4_pattern_allow([^FLAC_LIBS$]) -m4trace:configure.ac:150: -1- AM_CONDITIONAL([ENABLE_FLAC], [test "$enable_flac" = "yes"]) -m4trace:configure.ac:150: -1- m4_pattern_allow([^ENABLE_FLAC_TRUE$]) -m4trace:configure.ac:150: -1- m4_pattern_allow([^ENABLE_FLAC_FALSE$]) -m4trace:configure.ac:150: -1- _AM_SUBST_NOTMAKE([ENABLE_FLAC_TRUE]) -m4trace:configure.ac:150: -1- _AM_SUBST_NOTMAKE([ENABLE_FLAC_FALSE]) -m4trace:configure.ac:152: -1- m4_pattern_allow([^ENABLE_FLAC$]) -m4trace:configure.ac:154: -1- m4_pattern_allow([^ENABLE_FLAC$]) -m4trace:configure.ac:170: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.ac:170: -1- m4_pattern_allow([^LTLIBOBJS$]) -m4trace:configure.ac:170: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) -m4trace:configure.ac:170: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) -m4trace:configure.ac:170: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) -m4trace:configure.ac:170: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) -m4trace:configure.ac:170: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) -m4trace:configure.ac:170: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) -m4trace:configure.ac:170: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS -m4trace:configure.ac:170: -1- _LT_PROG_LTMAIN diff --git a/tools/audiofile-0.3.6/config.guess b/tools/audiofile-0.3.6/config.guess deleted file mode 100644 index d622a44e..00000000 --- a/tools/audiofile-0.3.6/config.guess +++ /dev/null @@ -1,1530 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. - -timestamp='2012-02-10' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/tools/audiofile-0.3.6/config.h b/tools/audiofile-0.3.6/config.h deleted file mode 100644 index ebc33314..00000000 --- a/tools/audiofile-0.3.6/config.h +++ /dev/null @@ -1,103 +0,0 @@ -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define if building universal (internal helper macro) */ -/* #undef AC_APPLE_UNIVERSAL_BUILD */ - -/* Whether FLAC is enabled. */ -#define ENABLE_FLAC 0 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_DLFCN_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#define LT_OBJDIR ".libs/" - -/* Name of package */ -#define PACKAGE "audiofile" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "audiofile" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "audiofile 0.3.6" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "audiofile" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "0.3.6" - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Version number of package */ -#define VERSION "0.3.6" - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -/* # undef WORDS_BIGENDIAN */ -# endif -#endif - -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - -/* Number of bits in a file offset, on hosts where this is settable. */ -#define _FILE_OFFSET_BITS 64 - -/* Define for large files, on AIX-style hosts. */ -/* #undef _LARGE_FILES */ - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef const */ - -/* Define to `long int' if does not define. */ -/* #undef off_t */ - -/* Define to `unsigned int' if does not define. */ -/* #undef size_t */ diff --git a/tools/audiofile-0.3.6/config.h.in b/tools/audiofile-0.3.6/config.h.in deleted file mode 100644 index f943e290..00000000 --- a/tools/audiofile-0.3.6/config.h.in +++ /dev/null @@ -1,102 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define if building universal (internal helper macro) */ -#undef AC_APPLE_UNIVERSAL_BUILD - -/* Whether FLAC is enabled. */ -#undef ENABLE_FLAC - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#undef LT_OBJDIR - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -# undef WORDS_BIGENDIAN -# endif -#endif - -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - -/* Number of bits in a file offset, on hosts where this is settable. */ -#undef _FILE_OFFSET_BITS - -/* Define for large files, on AIX-style hosts. */ -#undef _LARGE_FILES - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const - -/* Define to `long int' if does not define. */ -#undef off_t - -/* Define to `unsigned int' if does not define. */ -#undef size_t diff --git a/tools/audiofile-0.3.6/config.h.in~ b/tools/audiofile-0.3.6/config.h.in~ deleted file mode 100644 index a4dc1378..00000000 --- a/tools/audiofile-0.3.6/config.h.in~ +++ /dev/null @@ -1,103 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define if building universal (internal helper macro) */ -#undef AC_APPLE_UNIVERSAL_BUILD - -/* Whether FLAC is enabled. */ -#undef ENABLE_FLAC - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#undef LT_OBJDIR - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -# undef WORDS_BIGENDIAN -# endif -#endif - -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - -/* Number of bits in a file offset, on hosts where this is settable. */ -#undef _FILE_OFFSET_BITS - -/* Define for large files, on AIX-style hosts. */ -#undef _LARGE_FILES - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const - -/* Define to `long int' if does not define. */ -#undef off_t - -/* Define to `unsigned int' if does not define. */ -#undef size_t diff --git a/tools/audiofile-0.3.6/config.log b/tools/audiofile-0.3.6/config.log deleted file mode 100644 index 8ca2d316..00000000 --- a/tools/audiofile-0.3.6/config.log +++ /dev/null @@ -1,1298 +0,0 @@ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by audiofile configure 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ ./configure --disable-docs - -## --------- ## -## Platform. ## -## --------- ## - -hostname = Ryzen -uname -m = x86_64 -uname -r = 3.0.7-338.x86_64 -uname -s = MINGW64_NT-10.0-18362 -uname -v = 2019-07-11 10:58 UTC - -/usr/bin/uname -p = unknown -/bin/uname -X = unknown - -/bin/arch = x86_64 -/usr/bin/arch -k = unknown -/usr/convex/getsysinfo = unknown -/usr/bin/hostinfo = unknown -/bin/machine = unknown -/usr/bin/oslevel = unknown -/bin/universe = unknown - -PATH: /mingw64/bin -PATH: /mingw32/bin -PATH: /mingw64/bin -PATH: /usr/local/bin -PATH: /usr/bin -PATH: /bin -PATH: /c/Program Files (x86)/NVIDIA Corporation/PhysX/Common -PATH: /c/Program Files (x86)/Common Files/Oracle/Java/javapath -PATH: /c/WINDOWS/system32 -PATH: /c/WINDOWS -PATH: /c/WINDOWS/System32/Wbem -PATH: /c/WINDOWS/System32/WindowsPowerShell/v1.0 -PATH: /c/WINDOWS/System32/OpenSSH -PATH: /c/Program Files/dotnet -PATH: /c/Program Files/Microsoft SQL Server/130/Tools/Binn -PATH: /c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn -PATH: /c/ProgramData/chocolatey/bin -PATH: /c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR -PATH: /c/WINDOWS/system32 -PATH: /c/WINDOWS -PATH: /c/WINDOWS/System32/Wbem -PATH: /c/WINDOWS/System32/WindowsPowerShell/v1.0 -PATH: /c/WINDOWS/System32/OpenSSH -PATH: /c/Program Files/Git/cmd -PATH: /c/Program Files/Git LFS -PATH: /c/Program Files/OpenJDK/jdk-14/bin -PATH: /c/Users/Владимир/AppData/Local/Programs/Python/Python37/Scripts -PATH: /c/Users/Владимир/AppData/Local/Programs/Python/Python37 -PATH: /c/Users/Владимир/AppData/Local/Programs/Python/Launcher -PATH: /c/Users/Владимир/AppData/Local/Microsoft/WindowsApps -PATH: /c/Users/Владимир/AppData/Local/Programs/Microsoft VS Code/bin -PATH: /c/Development/Visual/Code/bin -PATH: /c/Users/Владимир/.dotnet/tools -PATH: /c/Users/Владимир/AppData/Local/Microsoft/WindowsApps -PATH: /c/Development/java/jdk-14/bin -PATH: /mingw64/bin -PATH: /mingw32/bin -PATH: /usr/bin/site_perl -PATH: /usr/bin/vendor_perl -PATH: /usr/bin/core_perl - - -## ----------- ## -## Core tests. ## -## ----------- ## - -configure:2342: loading site script /mingw64/etc/config.site -| # This file is in public domain. -| # Original author: Karlson2k (Evgeny Grin) -| # Written for MSys2/MinGW64 to help running 'configure' scripts -| -| # Defaults for MinGW64-targeted programs -| -| # Set proper selfname on bash and fallback to default name on other shells -| test -n "${BASH_SOURCE}" 2>/dev/null && config_site_me="${BASH_SOURCE[0]##*/}" || config_site_me=config.site -| -| # Set default 'host' to speedup configure -| if test -z "$build_alias"; then -| build_alias="${MSYSTEM_CHOST-x86_64-w64-mingw32}" && \ -| ${as_echo-echo} "$config_site_me:${as_lineno-$LINENO}: default build_alias set to $build_alias" >&5 -| fi -| -| # Set default 'prefix' to "/mingw64" -| if ( test -z "$prefix" || test "x$prefix" = "xNONE" ) && \ -| ( test -z "$exec_prefix" || test "x$exec_prefix" = "xNONE" ); then -| prefix="${MSYSTEM_PREFIX-/mingw64}" && \ -| ${as_echo-echo} "$config_site_me:${as_lineno-$LINENO}: default prefix set to $prefix" >&5 -| fi -config.site:13: default build_alias set to x86_64-w64-mingw32 -config.site:20: default prefix set to /mingw64 -configure:2491: checking for a BSD-compatible install -configure:2559: result: /usr/bin/install -c -configure:2570: checking whether build environment is sane -configure:2620: result: yes -configure:2761: checking for a thread-safe mkdir -p -configure:2800: result: /usr/bin/mkdir -p -configure:2813: checking for gawk -configure:2829: found /usr/bin/gawk -configure:2840: result: gawk -configure:2851: checking whether make sets $(MAKE) -configure:2873: result: yes -configure:2968: checking for style of include used by make -configure:2996: result: GNU -configure:3067: checking for gcc -configure:3083: found /mingw64/bin/gcc -configure:3094: result: gcc -configure:3323: checking for C compiler version -configure:3332: gcc --version >&5 -gcc.exe (Rev2, Built by MSYS2 project) 10.1.0 -Copyright (C) 2020 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -configure:3343: $? = 0 -configure:3332: gcc -v >&5 -Using built-in specs. -COLLECT_GCC=I:\Development\MSYS2\mingw64\bin\gcc.exe -COLLECT_LTO_WRAPPER=I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/lto-wrapper.exe -Target: x86_64-w64-mingw32 -Configured with: ../gcc-10.1.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++ --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --disable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld -Thread model: posix -Supported LTO compression algorithms: zlib zstd -gcc version 10.1.0 (Rev2, Built by MSYS2 project) -configure:3343: $? = 0 -configure:3332: gcc -V >&5 -gcc.exe: error: unrecognized command-line option '-V' -gcc.exe: fatal error: no input files -compilation terminated. -configure:3343: $? = 1 -configure:3332: gcc -qversion >&5 -gcc.exe: error: unrecognized command-line option '-qversion'; did you mean '--version'? -gcc.exe: fatal error: no input files -compilation terminated. -configure:3343: $? = 1 -configure:3363: checking whether the C compiler works -configure:3385: gcc conftest.c -lstdc++ >&5 -configure:3389: $? = 0 -configure:3437: result: yes -configure:3440: checking for C compiler default output file name -configure:3442: result: a.exe -configure:3448: checking for suffix of executables -configure:3455: gcc -o conftest.exe conftest.c -lstdc++ >&5 -configure:3459: $? = 0 -configure:3481: result: .exe -configure:3503: checking whether we are cross compiling -configure:3511: gcc -o conftest.exe conftest.c -lstdc++ >&5 -configure:3515: $? = 0 -configure:3522: ./conftest.exe -configure:3526: $? = 0 -configure:3541: result: no -configure:3546: checking for suffix of object files -configure:3568: gcc -c conftest.c >&5 -configure:3572: $? = 0 -configure:3593: result: o -configure:3597: checking whether we are using the GNU C compiler -configure:3616: gcc -c conftest.c >&5 -configure:3616: $? = 0 -configure:3625: result: yes -configure:3634: checking whether gcc accepts -g -configure:3654: gcc -c -g conftest.c >&5 -configure:3654: $? = 0 -configure:3695: result: yes -configure:3712: checking for gcc option to accept ISO C89 -configure:3775: gcc -c -g -O2 conftest.c >&5 -configure:3775: $? = 0 -configure:3788: result: none needed -configure:3810: checking dependency style of gcc -configure:3921: result: gcc3 -configure:3936: checking for gcc option to accept ISO C99 -configure:4085: gcc -c -g -O2 conftest.c >&5 -configure:4085: $? = 0 -configure:4098: result: none needed -configure:4171: checking for g++ -configure:4187: found /mingw64/bin/g++ -configure:4198: result: g++ -configure:4225: checking for C++ compiler version -configure:4234: g++ --version >&5 -g++.exe (Rev2, Built by MSYS2 project) 10.1.0 -Copyright (C) 2020 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -configure:4245: $? = 0 -configure:4234: g++ -v >&5 -Using built-in specs. -COLLECT_GCC=I:\Development\MSYS2\mingw64\bin\g++.exe -COLLECT_LTO_WRAPPER=I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/lto-wrapper.exe -Target: x86_64-w64-mingw32 -Configured with: ../gcc-10.1.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++ --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --disable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld -Thread model: posix -Supported LTO compression algorithms: zlib zstd -gcc version 10.1.0 (Rev2, Built by MSYS2 project) -configure:4245: $? = 0 -configure:4234: g++ -V >&5 -g++.exe: error: unrecognized command-line option '-V' -g++.exe: fatal error: no input files -compilation terminated. -configure:4245: $? = 1 -configure:4234: g++ -qversion >&5 -g++.exe: error: unrecognized command-line option '-qversion'; did you mean '--version'? -g++.exe: fatal error: no input files -compilation terminated. -configure:4245: $? = 1 -configure:4249: checking whether we are using the GNU C++ compiler -configure:4268: g++ -c conftest.cpp >&5 -configure:4268: $? = 0 -configure:4277: result: yes -configure:4286: checking whether g++ accepts -g -configure:4306: g++ -c -g conftest.cpp >&5 -configure:4306: $? = 0 -configure:4347: result: yes -configure:4372: checking dependency style of g++ -configure:4483: result: gcc3 -configure:4528: checking build system type -configure:4542: result: x86_64-w64-mingw32 -configure:4562: checking host system type -configure:4575: result: x86_64-w64-mingw32 -configure:4616: checking how to print strings -configure:4643: result: printf -configure:4664: checking for a sed that does not truncate output -configure:4728: result: /usr/bin/sed -configure:4746: checking for grep that handles long lines and -e -configure:4804: result: /usr/bin/grep -configure:4809: checking for egrep -configure:4871: result: /usr/bin/grep -E -configure:4876: checking for fgrep -configure:4938: result: /usr/bin/grep -F -configure:4973: checking for ld used by gcc -configure:5040: result: I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -configure:5047: checking if the linker (I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe) is GNU ld -configure:5062: result: yes -configure:5074: checking for BSD- or MS-compatible name lister (nm) -configure:5128: result: /mingw64/bin/nm -B -configure:5258: checking the name lister (/mingw64/bin/nm -B) interface -configure:5265: gcc -c -g -O2 conftest.c >&5 -configure:5268: /mingw64/bin/nm -B "conftest.o" -configure:5271: output -0000000000000000 b .bss -0000000000000000 d .data -0000000000000000 N .debug_abbrev -0000000000000000 N .debug_aranges -0000000000000000 N .debug_info -0000000000000000 N .debug_line -0000000000000000 r .rdata$zzz -0000000000000000 t .text -0000000000000000 B some_variable -configure:5278: result: BSD nm -configure:5281: checking whether ln -s works -configure:5288: result: no, using cp -pR -configure:5293: checking the maximum length of command line arguments -configure:5424: result: 8192 -configure:5472: checking how to convert x86_64-w64-mingw32 file names to x86_64-w64-mingw32 format -configure:5512: result: func_convert_file_msys_to_w32 -configure:5519: checking how to convert x86_64-w64-mingw32 file names to toolchain format -configure:5539: result: func_convert_file_msys_to_w32 -configure:5546: checking for I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe option to reload object files -configure:5553: result: -r -configure:5627: checking for objdump -configure:5643: found /mingw64/bin/objdump -configure:5654: result: objdump -configure:5686: checking how to recognize dependent libraries -configure:5886: result: file_magic ^x86 archive import|^x86 DLL -configure:5971: checking for dlltool -configure:5987: found /mingw64/bin/dlltool -configure:5998: result: dlltool -configure:6031: checking how to associate runtime and link libraries -configure:6058: result: func_cygming_dll_for_implib -configure:6119: checking for ar -configure:6135: found /mingw64/bin/ar -configure:6146: result: ar -configure:6183: checking for archiver @FILE support -configure:6200: gcc -c -g -O2 conftest.c >&5 -configure:6200: $? = 0 -configure:6203: ar cru libconftest.a @conftest.lst >&5 -configure:6206: $? = 0 -configure:6211: ar cru libconftest.a @conftest.lst >&5 -I:\Development\MSYS2\mingw64\bin\ar.exe: conftest.o: No such file or directory -configure:6214: $? = 1 -configure:6226: result: @ -configure:6284: checking for strip -configure:6300: found /mingw64/bin/strip -configure:6311: result: strip -configure:6383: checking for ranlib -configure:6399: found /mingw64/bin/ranlib -configure:6410: result: ranlib -configure:6512: checking command to parse /mingw64/bin/nm -B output from gcc object -configure:6665: gcc -c -g -O2 conftest.c >&5 -configure:6668: $? = 0 -configure:6672: /mingw64/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)\{0,1\}$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm -configure:6675: $? = 0 -configure:6741: gcc -o conftest.exe -g -O2 conftest.c conftstm.o >&5 -configure:6744: $? = 0 -configure:6782: result: ok -configure:6829: checking for sysroot -configure:6859: result: no -configure:6866: checking for a working dd -configure:6904: result: /usr/bin/dd -configure:6908: checking how to truncate binary pipes -configure:6923: result: /usr/bin/dd bs=4096 count=1 -configure:7252: checking for mt -configure:7282: result: no -configure:7302: checking if : is a manifest tool -configure:7308: : '-?' -configure:7316: result: no -configure:7993: checking how to run the C preprocessor -configure:8024: gcc -E conftest.c -configure:8024: $? = 0 -configure:8038: gcc -E conftest.c -conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory - 11 | #include - | ^~~~~~~~~~~~~~~~~~ -compilation terminated. -configure:8038: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| /* end confdefs.h. */ -| #include -configure:8063: result: gcc -E -configure:8083: gcc -E conftest.c -configure:8083: $? = 0 -configure:8097: gcc -E conftest.c -conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory - 11 | #include - | ^~~~~~~~~~~~~~~~~~ -compilation terminated. -configure:8097: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| /* end confdefs.h. */ -| #include -configure:8126: checking for ANSI C header files -configure:8146: gcc -c -g -O2 conftest.c >&5 -configure:8146: $? = 0 -configure:8219: gcc -o conftest.exe -g -O2 conftest.c -lstdc++ >&5 -configure:8219: $? = 0 -configure:8219: ./conftest.exe -configure:8219: $? = 0 -configure:8230: result: yes -configure:8243: checking for sys/types.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8243: checking for sys/stat.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8243: checking for stdlib.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8243: checking for string.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8243: checking for memory.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8243: checking for strings.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8243: checking for inttypes.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8243: checking for stdint.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8243: checking for unistd.h -configure:8243: gcc -c -g -O2 conftest.c >&5 -configure:8243: $? = 0 -configure:8243: result: yes -configure:8257: checking for dlfcn.h -configure:8257: gcc -c -g -O2 conftest.c >&5 -conftest.c:55:10: fatal error: dlfcn.h: No such file or directory - 55 | #include - | ^~~~~~~~~ -compilation terminated. -configure:8257: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| -| #include -configure:8257: result: no -configure:8524: checking for objdir -configure:8539: result: .libs -configure:8799: checking if gcc supports -fno-rtti -fno-exceptions -configure:8817: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 -cc1.exe: warning: command-line option '-fno-rtti' is valid for C++/D/ObjC++ but not for C -configure:8821: $? = 0 -configure:8834: result: no -configure:9192: checking for gcc option to produce PIC -configure:9199: result: -DDLL_EXPORT -DPIC -configure:9207: checking if gcc PIC flag -DDLL_EXPORT -DPIC works -configure:9225: gcc -c -g -O2 -DDLL_EXPORT -DPIC -DPIC conftest.c >&5 -configure:9229: $? = 0 -configure:9242: result: yes -configure:9271: checking if gcc static flag -static works -configure:9299: result: yes -configure:9314: checking if gcc supports -c -o file.o -configure:9335: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 -configure:9339: $? = 0 -configure:9361: result: yes -configure:9369: checking if gcc supports -c -o file.o -configure:9416: result: yes -configure:9449: checking whether the gcc linker (I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe) supports shared libraries -configure:10709: result: yes -configure:10746: checking whether -lc should be explicitly linked in -configure:10754: gcc -c -g -O2 conftest.c >&5 -configure:10757: $? = 0 -configure:10772: gcc -shared conftest.o -v -o ./conftest -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker conftest 2\>\&1 \| /usr/bin/grep -lc \>/dev/null 2\>\&1 -configure:10775: $? = 1 -configure:10789: result: yes -configure:10949: checking dynamic linker characteristics -configure:11773: result: Win32 ld.exe -configure:11895: checking how to hardcode library paths into programs -configure:11920: result: immediate -configure:12468: checking whether stripping libraries is possible -configure:12473: result: yes -configure:12508: checking if libtool supports shared libraries -configure:12510: result: yes -configure:12513: checking whether to build shared libraries -configure:12538: result: yes -configure:12541: checking whether to build static libraries -configure:12545: result: yes -configure:12568: checking how to run the C++ preprocessor -configure:12595: g++ -E conftest.cpp -configure:12595: $? = 0 -configure:12609: g++ -E conftest.cpp -conftest.cpp:22:10: fatal error: ac_nonexistent.h: No such file or directory - 22 | #include - | ^~~~~~~~~~~~~~~~~~ -compilation terminated. -configure:12609: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define LT_OBJDIR ".libs/" -| /* end confdefs.h. */ -| #include -configure:12634: result: g++ -E -configure:12654: g++ -E conftest.cpp -configure:12654: $? = 0 -configure:12668: g++ -E conftest.cpp -conftest.cpp:22:10: fatal error: ac_nonexistent.h: No such file or directory - 22 | #include - | ^~~~~~~~~~~~~~~~~~ -compilation terminated. -configure:12668: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define LT_OBJDIR ".libs/" -| /* end confdefs.h. */ -| #include -configure:12830: checking for ld used by g++ -configure:12897: result: I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -configure:12904: checking if the linker (I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe) is GNU ld -configure:12919: result: yes -configure:12974: checking whether the g++ linker (I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe) supports shared libraries -configure:14048: result: yes -configure:14084: g++ -c -g -O2 conftest.cpp >&5 -configure:14087: $? = 0 -configure:14568: checking for g++ option to produce PIC -configure:14575: result: -DDLL_EXPORT -DPIC -configure:14583: checking if g++ PIC flag -DDLL_EXPORT -DPIC works -configure:14601: g++ -c -g -O2 -DDLL_EXPORT -DPIC -DPIC conftest.cpp >&5 -configure:14605: $? = 0 -configure:14618: result: yes -configure:14641: checking if g++ static flag -static works -configure:14669: result: yes -configure:14681: checking if g++ supports -c -o file.o -configure:14702: g++ -c -g -O2 -o out/conftest2.o conftest.cpp >&5 -configure:14706: $? = 0 -configure:14728: result: yes -configure:14733: checking if g++ supports -c -o file.o -configure:14780: result: yes -configure:14810: checking whether the g++ linker (I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe) supports shared libraries -configure:14850: result: yes -configure:14991: checking dynamic linker characteristics -configure:15741: result: Win32 ld.exe -configure:15806: checking how to hardcode library paths into programs -configure:15831: result: immediate -configure:15893: checking for ANSI C header files -configure:15997: result: yes -configure:16008: checking fcntl.h usability -configure:16008: gcc -c -g -O2 conftest.c >&5 -configure:16008: $? = 0 -configure:16008: result: yes -configure:16008: checking fcntl.h presence -configure:16008: gcc -E conftest.c -configure:16008: $? = 0 -configure:16008: result: yes -configure:16008: checking for fcntl.h -configure:16008: result: yes -configure:16008: checking for unistd.h -configure:16008: result: yes -configure:16019: checking for an ANSI C-conforming const -configure:16085: gcc -c -g -O2 conftest.c >&5 -configure:16085: $? = 0 -configure:16092: result: yes -configure:16100: checking whether byte ordering is bigendian -configure:16115: gcc -c -g -O2 conftest.c >&5 -conftest.c:26:9: error: unknown type name 'not' - 26 | not a universal capable compiler - | ^~~ -conftest.c:26:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'universal' - 26 | not a universal capable compiler - | ^~~~~~~~~ -conftest.c:26:15: error: unknown type name 'universal' -configure:16115: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define LT_OBJDIR ".libs/" -| #define STDC_HEADERS 1 -| #define HAVE_FCNTL_H 1 -| #define HAVE_UNISTD_H 1 -| /* end confdefs.h. */ -| #ifndef __APPLE_CC__ -| not a universal capable compiler -| #endif -| typedef int dummy; -| -configure:16160: gcc -c -g -O2 conftest.c >&5 -configure:16160: $? = 0 -configure:16178: gcc -c -g -O2 conftest.c >&5 -conftest.c: In function 'main': -conftest.c:32:4: error: unknown type name 'not'; did you mean 'ino_t'? - 32 | not big endian - | ^~~ - | ino_t -conftest.c:32:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'endian' - 32 | not big endian - | ^~~~~~ -configure:16178: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define LT_OBJDIR ".libs/" -| #define STDC_HEADERS 1 -| #define HAVE_FCNTL_H 1 -| #define HAVE_UNISTD_H 1 -| /* end confdefs.h. */ -| #include -| #include -| -| int -| main () -| { -| #if BYTE_ORDER != BIG_ENDIAN -| not big endian -| #endif -| -| ; -| return 0; -| } -configure:16306: result: no -configure:16332: checking for special C compiler options needed for large files -configure:16377: result: no -configure:16383: checking for _FILE_OFFSET_BITS value needed for large files -configure:16408: gcc -c -g -O2 conftest.c >&5 -conftest.c:30:33: warning: left shift count >= width of type [-Wshift-count-overflow] - 30 | #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - | ^~ -conftest.c:31:23: note: in expansion of macro 'LARGE_OFF_T' - 31 | int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - | ^~~~~~~~~~~ -conftest.c:30:57: warning: left shift count >= width of type [-Wshift-count-overflow] - 30 | #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - | ^~ -conftest.c:31:23: note: in expansion of macro 'LARGE_OFF_T' - 31 | int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - | ^~~~~~~~~~~ -conftest.c:30:33: warning: left shift count >= width of type [-Wshift-count-overflow] - 30 | #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - | ^~ -conftest.c:32:13: note: in expansion of macro 'LARGE_OFF_T' - 32 | && LARGE_OFF_T % 2147483647 == 1) - | ^~~~~~~~~~~ -conftest.c:30:57: warning: left shift count >= width of type [-Wshift-count-overflow] - 30 | #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - | ^~ -conftest.c:32:13: note: in expansion of macro 'LARGE_OFF_T' - 32 | && LARGE_OFF_T % 2147483647 == 1) - | ^~~~~~~~~~~ -conftest.c:31:7: error: variably modified 'off_t_is_large' at file scope - 31 | int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - | ^~~~~~~~~~~~~~ -configure:16408: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define LT_OBJDIR ".libs/" -| #define STDC_HEADERS 1 -| #define HAVE_FCNTL_H 1 -| #define HAVE_UNISTD_H 1 -| /* end confdefs.h. */ -| #include -| /* Check that off_t can represent 2**63 - 1 correctly. -| We can't simply define LARGE_OFF_T to be 9223372036854775807, -| since some C++ compilers masquerading as C compilers -| incorrectly reject 9223372036854775807. */ -| #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) -| int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 -| && LARGE_OFF_T % 2147483647 == 1) -| ? 1 : -1]; -| int -| main () -| { -| -| ; -| return 0; -| } -configure:16432: gcc -c -g -O2 conftest.c >&5 -configure:16432: $? = 0 -configure:16440: result: 64 -configure:16525: checking for off_t -configure:16525: gcc -c -g -O2 conftest.c >&5 -configure:16525: $? = 0 -configure:16525: gcc -c -g -O2 conftest.c >&5 -conftest.c: In function 'main': -conftest.c:62:20: error: expected expression before ')' token - 62 | if (sizeof ((off_t))) - | ^ -configure:16525: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define LT_OBJDIR ".libs/" -| #define STDC_HEADERS 1 -| #define HAVE_FCNTL_H 1 -| #define HAVE_UNISTD_H 1 -| #define _FILE_OFFSET_BITS 64 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| int -| main () -| { -| if (sizeof ((off_t))) -| return 0; -| ; -| return 0; -| } -configure:16525: result: yes -configure:16536: checking for size_t -configure:16536: gcc -c -g -O2 conftest.c >&5 -configure:16536: $? = 0 -configure:16536: gcc -c -g -O2 conftest.c >&5 -conftest.c: In function 'main': -conftest.c:62:21: error: expected expression before ')' token - 62 | if (sizeof ((size_t))) - | ^ -configure:16536: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "audiofile" -| #define PACKAGE_TARNAME "audiofile" -| #define PACKAGE_VERSION "0.3.6" -| #define PACKAGE_STRING "audiofile 0.3.6" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define PACKAGE "audiofile" -| #define VERSION "0.3.6" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define LT_OBJDIR ".libs/" -| #define STDC_HEADERS 1 -| #define HAVE_FCNTL_H 1 -| #define HAVE_UNISTD_H 1 -| #define _FILE_OFFSET_BITS 64 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| int -| main () -| { -| if (sizeof ((size_t))) -| return 0; -| ; -| return 0; -| } -configure:16536: result: yes -configure:16549: checking for platform specific tests to compile -configure:16567: result: none -configure:16957: checking for pkg-config -configure:16975: found /mingw64/bin/pkg-config -configure:16987: result: /mingw64/bin/pkg-config -configure:17012: checking pkg-config is at least version 0.9.0 -configure:17015: result: yes -configure:17031: checking for flac >= 1.2.1 -configure:17038: $PKG_CONFIG --exists --print-errors "flac >= 1.2.1" -Package flac was not found in the pkg-config search path. -Perhaps you should add the directory containing `flac.pc' -to the PKG_CONFIG_PATH environment variable -No package 'flac' found -configure:17041: $? = 1 -configure:17055: $PKG_CONFIG --exists --print-errors "flac >= 1.2.1" -Package flac was not found in the pkg-config search path. -Perhaps you should add the directory containing `flac.pc' -to the PKG_CONFIG_PATH environment variable -No package 'flac' found -configure:17058: $? = 1 -configure:17072: result: no -No package 'flac' found -configure:17291: creating ./config.status - -## ---------------------- ## -## Running config.status. ## -## ---------------------- ## - -This file was extended by audiofile config.status 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = - CONFIG_HEADERS = - CONFIG_LINKS = - CONFIG_COMMANDS = - $ ./config.status - -on Ryzen - -config.status:1203: creating audiofile.spec -config.status:1203: creating audiofile.pc -config.status:1203: creating audiofile-uninstalled.pc -config.status:1203: creating sfcommands/Makefile -config.status:1203: creating test/Makefile -config.status:1203: creating gtest/Makefile -config.status:1203: creating examples/Makefile -config.status:1203: creating libaudiofile/Makefile -config.status:1203: creating libaudiofile/alac/Makefile -config.status:1203: creating libaudiofile/modules/Makefile -config.status:1203: creating docs/Makefile -config.status:1203: creating Makefile -config.status:1203: creating config.h -config.status:1432: executing depfiles commands -config.status:1432: executing libtool commands - -## ---------------- ## -## Cache variables. ## -## ---------------- ## - -ac_cv_build=x86_64-w64-mingw32 -ac_cv_c_bigendian=no -ac_cv_c_compiler_gnu=yes -ac_cv_c_const=yes -ac_cv_cxx_compiler_gnu=yes -ac_cv_env_CCC_set= -ac_cv_env_CCC_value= -ac_cv_env_CC_set= -ac_cv_env_CC_value= -ac_cv_env_CFLAGS_set= -ac_cv_env_CFLAGS_value= -ac_cv_env_CPPFLAGS_set= -ac_cv_env_CPPFLAGS_value= -ac_cv_env_CPP_set= -ac_cv_env_CPP_value= -ac_cv_env_CXXCPP_set= -ac_cv_env_CXXCPP_value= -ac_cv_env_CXXFLAGS_set= -ac_cv_env_CXXFLAGS_value= -ac_cv_env_CXX_set= -ac_cv_env_CXX_value= -ac_cv_env_FLAC_CFLAGS_set= -ac_cv_env_FLAC_CFLAGS_value= -ac_cv_env_FLAC_LIBS_set= -ac_cv_env_FLAC_LIBS_value= -ac_cv_env_LDFLAGS_set= -ac_cv_env_LDFLAGS_value= -ac_cv_env_LIBS_set=set -ac_cv_env_LIBS_value=-lstdc++ -ac_cv_env_LT_SYS_LIBRARY_PATH_set= -ac_cv_env_LT_SYS_LIBRARY_PATH_value= -ac_cv_env_PKG_CONFIG_LIBDIR_set= -ac_cv_env_PKG_CONFIG_LIBDIR_value= -ac_cv_env_PKG_CONFIG_PATH_set=set -ac_cv_env_PKG_CONFIG_PATH_value=/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -ac_cv_env_PKG_CONFIG_set= -ac_cv_env_PKG_CONFIG_value= -ac_cv_env_build_alias_set= -ac_cv_env_build_alias_value= -ac_cv_env_host_alias_set= -ac_cv_env_host_alias_value= -ac_cv_env_target_alias_set= -ac_cv_env_target_alias_value= -ac_cv_exeext=.exe -ac_cv_flac=no -ac_cv_header_dlfcn_h=no -ac_cv_header_fcntl_h=yes -ac_cv_header_inttypes_h=yes -ac_cv_header_memory_h=yes -ac_cv_header_stdc=yes -ac_cv_header_stdint_h=yes -ac_cv_header_stdlib_h=yes -ac_cv_header_string_h=yes -ac_cv_header_strings_h=yes -ac_cv_header_sys_stat_h=yes -ac_cv_header_sys_types_h=yes -ac_cv_header_unistd_h=yes -ac_cv_host=x86_64-w64-mingw32 -ac_cv_objext=o -ac_cv_path_EGREP='/usr/bin/grep -E' -ac_cv_path_FGREP='/usr/bin/grep -F' -ac_cv_path_GREP=/usr/bin/grep -ac_cv_path_SED=/usr/bin/sed -ac_cv_path_ac_pt_PKG_CONFIG=/mingw64/bin/pkg-config -ac_cv_path_install='/usr/bin/install -c' -ac_cv_path_lt_DD=/usr/bin/dd -ac_cv_path_mkdir=/usr/bin/mkdir -ac_cv_prog_AWK=gawk -ac_cv_prog_CPP='gcc -E' -ac_cv_prog_CXXCPP='g++ -E' -ac_cv_prog_ac_ct_AR=ar -ac_cv_prog_ac_ct_CC=gcc -ac_cv_prog_ac_ct_CXX=g++ -ac_cv_prog_ac_ct_DLLTOOL=dlltool -ac_cv_prog_ac_ct_OBJDUMP=objdump -ac_cv_prog_ac_ct_RANLIB=ranlib -ac_cv_prog_ac_ct_STRIP=strip -ac_cv_prog_cc_c89= -ac_cv_prog_cc_c99= -ac_cv_prog_cc_g=yes -ac_cv_prog_cxx_g=yes -ac_cv_prog_make_make_set=yes -ac_cv_sys_file_offset_bits=64 -ac_cv_sys_largefile_CC=no -ac_cv_type_off_t=yes -ac_cv_type_size_t=yes -am_cv_CC_dependencies_compiler_type=gcc3 -am_cv_CXX_dependencies_compiler_type=gcc3 -lt_cv_ar_at_file=@ -lt_cv_archive_cmds_need_lc=yes -lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' -lt_cv_file_magic_cmd=func_win32_libid -lt_cv_file_magic_test_file= -lt_cv_ld_reload_flag=-r -lt_cv_nm_interface='BSD nm' -lt_cv_objdir=.libs -lt_cv_path_LD=I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -lt_cv_path_LDCXX=I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -lt_cv_path_NM='/mingw64/bin/nm -B' -lt_cv_path_mainfest_tool=no -lt_cv_prog_compiler_c_o=yes -lt_cv_prog_compiler_c_o_CXX=yes -lt_cv_prog_compiler_pic='-DDLL_EXPORT -DPIC' -lt_cv_prog_compiler_pic_CXX='-DDLL_EXPORT -DPIC' -lt_cv_prog_compiler_pic_works=yes -lt_cv_prog_compiler_pic_works_CXX=yes -lt_cv_prog_compiler_rtti_exceptions=no -lt_cv_prog_compiler_static_works=yes -lt_cv_prog_compiler_static_works_CXX=yes -lt_cv_prog_gnu_ld=yes -lt_cv_prog_gnu_ldcxx=yes -lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib -lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\) \{0,1\}$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' -lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' -lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' -lt_cv_sys_global_symbol_to_import= -lt_cv_sys_max_cmd_len=8192 -lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 -lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 -lt_cv_truncate_bin='/usr/bin/dd bs=4096 count=1' - -## ----------------- ## -## Output variables. ## -## ----------------- ## - -A2X='' -ACLOCAL='${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11' -AMDEPBACKSLASH='\' -AMDEP_FALSE='#' -AMDEP_TRUE='' -AMTAR='$${TAR-tar}' -AR='ar' -ASCIIDOC='' -AUDIOFILE_VERSION='0.3.6' -AUDIOFILE_VERSION_INFO='1:0:0' -AUTOCONF='${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf' -AUTOHEADER='${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader' -AUTOMAKE='${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11' -AWK='gawk' -CC='gcc' -CCDEPMODE='depmode=gcc3' -CFLAGS='-g -O2' -COVERAGE_CFLAGS='' -COVERAGE_LIBS='' -CPP='gcc -E' -CPPFLAGS='' -CXX='g++' -CXXCPP='g++ -E' -CXXDEPMODE='depmode=gcc3' -CXXFLAGS='-g -O2' -CYGPATH_W='cygpath -w' -DEFS='-DHAVE_CONFIG_H' -DEPDIR='.deps' -DLLTOOL='dlltool' -DSYMUTIL='' -DUMPBIN='' -ECHO_C='' -ECHO_N='-n' -ECHO_T='' -EGREP='/usr/bin/grep -E' -ENABLE_COVERAGE_FALSE='' -ENABLE_COVERAGE_TRUE='#' -ENABLE_DOCUMENTATION_FALSE='' -ENABLE_DOCUMENTATION_TRUE='#' -ENABLE_FLAC_FALSE='' -ENABLE_FLAC_TRUE='#' -ENABLE_VALGRIND_FALSE='' -ENABLE_VALGRIND_TRUE='#' -ENABLE_WERROR_FALSE='' -ENABLE_WERROR_TRUE='#' -EXEEXT='.exe' -FGREP='/usr/bin/grep -F' -FLAC_CFLAGS='' -FLAC_LIBS='' -GENHTML='' -GREP='/usr/bin/grep' -INSTALL_DATA='${INSTALL} -m 644' -INSTALL_PROGRAM='${INSTALL}' -INSTALL_SCRIPT='${INSTALL}' -INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' -LCOV='' -LD='I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe' -LDFLAGS='' -LIBOBJS='' -LIBS='-lstdc++' -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -LIPO='' -LN_S='cp -pR' -LTLIBOBJS='' -LT_SYS_LIBRARY_PATH='' -MAKEINFO='${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo' -MANIFEST_TOOL=':' -MKDIR_P='/usr/bin/mkdir -p' -NM='/mingw64/bin/nm -B' -NMEDIT='' -OBJDUMP='objdump' -OBJEXT='o' -OTOOL64='' -OTOOL='' -PACKAGE='audiofile' -PACKAGE_BUGREPORT='' -PACKAGE_NAME='audiofile' -PACKAGE_STRING='audiofile 0.3.6' -PACKAGE_TARNAME='audiofile' -PACKAGE_URL='' -PACKAGE_VERSION='0.3.6' -PATH_SEPARATOR=':' -PKG_CONFIG='/mingw64/bin/pkg-config' -PKG_CONFIG_LIBDIR='' -PKG_CONFIG_PATH='/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig' -RANLIB='ranlib' -SED='/usr/bin/sed' -SET_MAKE='' -SHELL='/bin/sh' -STRIP='strip' -TEST_BIN='' -VALGRIND='' -VERSION='0.3.6' -WERROR_CFLAGS='' -ac_ct_AR='ar' -ac_ct_CC='gcc' -ac_ct_CXX='g++' -ac_ct_DUMPBIN='' -am__EXEEXT_FALSE='#' -am__EXEEXT_TRUE='' -am__fastdepCC_FALSE='#' -am__fastdepCC_TRUE='' -am__fastdepCXX_FALSE='#' -am__fastdepCXX_TRUE='' -am__include='include' -am__isrc='' -am__leading_dot='.' -am__nodep='_no' -am__quote='' -am__tar='$${TAR-tar} chof - "$$tardir"' -am__untar='$${TAR-tar} xf -' -bindir='${exec_prefix}/bin' -build='x86_64-w64-mingw32' -build_alias='x86_64-w64-mingw32' -build_cpu='x86_64' -build_os='mingw32' -build_vendor='w64' -datadir='${datarootdir}' -datarootdir='${prefix}/share' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -dvidir='${docdir}' -exec_prefix='${prefix}' -host='x86_64-w64-mingw32' -host_alias='' -host_cpu='x86_64' -host_os='mingw32' -host_vendor='w64' -htmldir='${docdir}' -includedir='${prefix}/include' -infodir='${datarootdir}/info' -install_sh='${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh' -libdir='${exec_prefix}/lib' -libexecdir='${exec_prefix}/libexec' -localedir='${datarootdir}/locale' -localstatedir='${prefix}/var' -mandir='${datarootdir}/man' -mkdir_p='/usr/bin/mkdir -p' -oldincludedir='/usr/include' -pdfdir='${docdir}' -prefix='/mingw64' -program_transform_name='s,x,x,' -psdir='${docdir}' -sbindir='${exec_prefix}/sbin' -sharedstatedir='${prefix}/com' -sysconfdir='${prefix}/etc' -target_alias='' - -## ----------- ## -## confdefs.h. ## -## ----------- ## - -/* confdefs.h */ -#define PACKAGE_NAME "audiofile" -#define PACKAGE_TARNAME "audiofile" -#define PACKAGE_VERSION "0.3.6" -#define PACKAGE_STRING "audiofile 0.3.6" -#define PACKAGE_BUGREPORT "" -#define PACKAGE_URL "" -#define PACKAGE "audiofile" -#define VERSION "0.3.6" -#define STDC_HEADERS 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STRING_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_STRINGS_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_UNISTD_H 1 -#define LT_OBJDIR ".libs/" -#define STDC_HEADERS 1 -#define HAVE_FCNTL_H 1 -#define HAVE_UNISTD_H 1 -#define _FILE_OFFSET_BITS 64 -#define ENABLE_FLAC 0 - -configure: exit 0 diff --git a/tools/audiofile-0.3.6/config.status b/tools/audiofile-0.3.6/config.status deleted file mode 100644 index 48fb162f..00000000 --- a/tools/audiofile-0.3.6/config.status +++ /dev/null @@ -1,2249 +0,0 @@ -#! /bin/sh -# Generated by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by audiofile $as_me 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -# Files that config.status was made for. -config_files=" audiofile.spec audiofile.pc audiofile-uninstalled.pc sfcommands/Makefile test/Makefile gtest/Makefile examples/Makefile libaudiofile/Makefile libaudiofile/alac/Makefile libaudiofile/modules/Makefile docs/Makefile Makefile" -config_headers=" config.h" -config_commands=" depfiles libtool" - -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -ac_cs_config="'--disable-docs' 'LIBS=-lstdc++' 'PKG_CONFIG_PATH=/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig'" -ac_cs_version="\ -audiofile config.status 0.3.6 -configured by ./configure, generated by GNU Autoconf 2.69, - with options \"$ac_cs_config\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='/i/Development/sm64pc/tools/audiofile-0.3.6' -srcdir='.' -INSTALL='/usr/bin/install -c' -MKDIR_P='/usr/bin/mkdir -p' -AWK='gawk' -test -n "$AWK" || AWK=awk -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -if $ac_cs_recheck; then - set X /bin/sh './configure' '--disable-docs' 'LIBS=-lstdc++' 'PKG_CONFIG_PATH=/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig' $ac_configure_extra_args --no-create --no-recursion - shift - $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 - CONFIG_SHELL='/bin/sh' - export CONFIG_SHELL - exec "$@" -fi - -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -# -# INIT-COMMANDS -# -AMDEP_TRUE="" ac_aux_dir="." - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -double_quote_subst='s/\(["`\\]\)/\\\1/g' -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -macro_version='2.4.6' -macro_revision='2.4.6' -enable_shared='yes' -enable_static='yes' -pic_mode='default' -enable_fast_install='needless' -shared_archive_member_spec='' -SHELL='/bin/sh' -ECHO='printf %s\n' -PATH_SEPARATOR=':' -host_alias='' -host='x86_64-w64-mingw32' -host_os='mingw32' -build_alias='x86_64-w64-mingw32' -build='x86_64-w64-mingw32' -build_os='mingw32' -SED='/usr/bin/sed' -Xsed='/usr/bin/sed -e 1s/^X//' -GREP='/usr/bin/grep' -EGREP='/usr/bin/grep -E' -FGREP='/usr/bin/grep -F' -LD='I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe' -NM='/mingw64/bin/nm -B' -LN_S='cp -pR' -max_cmd_len='8192' -ac_objext='o' -exeext='' -lt_unset='unset' -lt_SP2NL='tr \040 \012' -lt_NL2SP='tr \015\012 \040\040' -lt_cv_to_host_file_cmd='func_convert_file_msys_to_w32' -lt_cv_to_tool_file_cmd='func_convert_file_msys_to_w32' -reload_flag=' -r' -reload_cmds='$LD$reload_flag -o $output$reload_objs' -OBJDUMP='objdump' -deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' -file_magic_cmd='func_win32_libid' -file_magic_glob='' -want_nocaseglob='yes' -DLLTOOL='dlltool' -sharedlib_from_linklib_cmd='func_cygming_dll_for_implib' -AR='ar' -AR_FLAGS='cru' -archiver_list_spec='@' -STRIP='strip' -RANLIB='ranlib' -old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $tool_oldlib' -old_postuninstall_cmds='' -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' -lock_old_archive_extraction='no' -CC='gcc' -CFLAGS='-g -O2' -compiler='g++' -GCC='yes' -lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\) \{0,1\}$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' -lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' -lt_cv_sys_global_symbol_to_import='' -lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' -lt_cv_nm_interface='BSD nm' -nm_file_list_spec='@' -lt_sysroot='' -lt_cv_truncate_bin='/usr/bin/dd bs=4096 count=1' -objdir='.libs' -MAGIC_CMD='file' -lt_prog_compiler_no_builtin_flag=' -fno-builtin' -lt_prog_compiler_pic=' -DDLL_EXPORT -DPIC' -lt_prog_compiler_wl='-Wl,' -lt_prog_compiler_static='-static' -lt_cv_prog_compiler_c_o='yes' -need_locks='no' -MANIFEST_TOOL=':' -DSYMUTIL='' -NMEDIT='' -LIPO='' -OTOOL='' -OTOOL64='' -libext='a' -shrext_cmds='.dll' -extract_expsyms_cmds='' -archive_cmds_need_lc='yes' -enable_shared_with_static_runtimes='yes' -export_dynamic_flag_spec='$wl--export-all-symbols' -whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' -compiler_needs_object='no' -old_archive_from_new_cmds='' -old_archive_from_expsyms_cmds='' -archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -module_cmds='' -module_expsym_cmds='' -with_gnu_ld='yes' -allow_undefined_flag='unsupported' -no_undefined_flag='' -hardcode_libdir_flag_spec='-L$libdir' -hardcode_libdir_separator='' -hardcode_direct='no' -hardcode_direct_absolute='no' -hardcode_minus_L='no' -hardcode_shlibpath_var='unsupported' -hardcode_automatic='no' -inherit_rpath='no' -link_all_deplibs='unknown' -always_export_symbols='no' -export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' -exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' -include_expsyms='' -prelink_cmds='' -postlink_cmds='' -file_list_spec='@' -variables_saved_for_relink='PATH PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' -need_lib_prefix='no' -need_version='no' -version_type='windows' -runpath_var='LD_RUN_PATH' -shlibpath_var='PATH' -shlibpath_overrides_runpath='yes' -libname_spec='lib$name' -library_names_spec='$libname.dll.a' -soname_spec='$libname`echo $release | $SED -e s/[.]/-/g`$versuffix$shared_ext' -install_override_mode='' -postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' -postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' -finish_cmds='' -finish_eval='' -hardcode_into_libs='no' -sys_lib_search_path_spec='I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0 I:/Development/MSYS2/mingw64/lib/gcc I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/lib I:/Development/MSYS2/mingw64/lib ' -configure_time_dlsearch_path='/lib /usr/lib' -configure_time_lt_sys_library_path='' -hardcode_action='immediate' -enable_dlopen='unknown' -enable_dlopen_self='unknown' -enable_dlopen_self_static='unknown' -old_striplib='strip --strip-debug' -striplib='strip --strip-unneeded' -compiler_lib_search_dirs='' -predep_objects='' -postdep_objects='' -predeps='' -postdeps='' -compiler_lib_search_path='' -LD_CXX='I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe' -reload_flag_CXX=' -r' -reload_cmds_CXX='$LD$reload_flag -o $output$reload_objs' -old_archive_cmds_CXX='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' -compiler_CXX='g++' -GCC_CXX='yes' -lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' -lt_prog_compiler_pic_CXX=' -DDLL_EXPORT -DPIC' -lt_prog_compiler_wl_CXX='-Wl,' -lt_prog_compiler_static_CXX='-static' -lt_cv_prog_compiler_c_o_CXX='yes' -archive_cmds_need_lc_CXX='no' -enable_shared_with_static_runtimes_CXX='yes' -export_dynamic_flag_spec_CXX='$wl--export-all-symbols' -whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' -compiler_needs_object_CXX='no' -old_archive_from_new_cmds_CXX='' -old_archive_from_expsyms_cmds_CXX='' -archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -module_cmds_CXX='' -module_expsym_cmds_CXX='' -with_gnu_ld_CXX='yes' -allow_undefined_flag_CXX='unsupported' -no_undefined_flag_CXX='' -hardcode_libdir_flag_spec_CXX='-L$libdir' -hardcode_libdir_separator_CXX='' -hardcode_direct_CXX='no' -hardcode_direct_absolute_CXX='no' -hardcode_minus_L_CXX='no' -hardcode_shlibpath_var_CXX='unsupported' -hardcode_automatic_CXX='no' -inherit_rpath_CXX='no' -link_all_deplibs_CXX='unknown' -always_export_symbols_CXX='no' -export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' -exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' -include_expsyms_CXX='' -prelink_cmds_CXX='' -postlink_cmds_CXX='' -file_list_spec_CXX='@' -hardcode_action_CXX='immediate' -compiler_lib_search_dirs_CXX='I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0 I:/Development/MSYS2/mingw64/bin/../lib/gcc I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib/../lib I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../lib I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../..' -predep_objects_CXX='I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib/../lib/dllcrt2.o I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/crtbegin.o' -postdep_objects_CXX='I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/crtend.o' -predeps_CXX='' -postdeps_CXX='-lstdc++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt' -compiler_lib_search_path_CXX='-LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0 -LI:/Development/MSYS2/mingw64/bin/../lib/gcc -LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib/../lib -LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../lib -LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib -LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../..' - -LTCC='gcc' -LTCFLAGS='-g -O2' -compiler='gcc' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL ECHO PATH_SEPARATOR SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd file_magic_glob want_nocaseglob DLLTOOL sharedlib_from_linklib_cmd AR AR_FLAGS archiver_list_spec STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_import lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix lt_cv_nm_interface nm_file_list_spec lt_cv_truncate_bin lt_prog_compiler_no_builtin_flag lt_prog_compiler_pic lt_prog_compiler_wl lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks MANIFEST_TOOL DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_separator exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec install_override_mode finish_eval old_striplib striplib compiler_lib_search_dirs predep_objects postdep_objects predeps postdeps compiler_lib_search_path LD_CXX reload_flag_CXX compiler_CXX lt_prog_compiler_no_builtin_flag_CXX lt_prog_compiler_pic_CXX lt_prog_compiler_wl_CXX lt_prog_compiler_static_CXX lt_cv_prog_compiler_c_o_CXX export_dynamic_flag_spec_CXX whole_archive_flag_spec_CXX compiler_needs_object_CXX with_gnu_ld_CXX allow_undefined_flag_CXX no_undefined_flag_CXX hardcode_libdir_flag_spec_CXX hardcode_libdir_separator_CXX exclude_expsyms_CXX include_expsyms_CXX file_list_spec_CXX compiler_lib_search_dirs_CXX predep_objects_CXX postdep_objects_CXX predeps_CXX postdeps_CXX compiler_lib_search_path_CXX; do - case `eval \\$ECHO \\""\\$$var"\\"` in - *[\\\`\"\$]*) - eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED \"\$sed_quote_subst\"\`\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_$var=\\\"\$$var\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postlink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec configure_time_dlsearch_path configure_time_lt_sys_library_path reload_cmds_CXX old_archive_cmds_CXX old_archive_from_new_cmds_CXX old_archive_from_expsyms_cmds_CXX archive_cmds_CXX archive_expsym_cmds_CXX module_cmds_CXX module_expsym_cmds_CXX export_symbols_cmds_CXX prelink_cmds_CXX postlink_cmds_CXX; do - case `eval \\$ECHO \\""\\$$var"\\"` in - *[\\\`\"\$]*) - eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_$var=\\\"\$$var\\\"" - ;; - esac -done - -ac_aux_dir='.' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='audiofile' - VERSION='0.3.6' - RM='rm -f' - ofile='libtool' - - - - - - - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "") CONFIG_FILES="$CONFIG_FILES " ;; - "audiofile.spec") CONFIG_FILES="$CONFIG_FILES audiofile.spec" ;; - "audiofile.pc") CONFIG_FILES="$CONFIG_FILES audiofile.pc" ;; - "audiofile-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES audiofile-uninstalled.pc" ;; - "sfcommands/Makefile") CONFIG_FILES="$CONFIG_FILES sfcommands/Makefile" ;; - "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; - "gtest/Makefile") CONFIG_FILES="$CONFIG_FILES gtest/Makefile" ;; - "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; - "libaudiofile/Makefile") CONFIG_FILES="$CONFIG_FILES libaudiofile/Makefile" ;; - "libaudiofile/alac/Makefile") CONFIG_FILES="$CONFIG_FILES libaudiofile/alac/Makefile" ;; - "libaudiofile/modules/Makefile") CONFIG_FILES="$CONFIG_FILES libaudiofile/modules/Makefile" ;; - "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && -S["am__EXEEXT_FALSE"]="#" -S["am__EXEEXT_TRUE"]="" -S["LTLIBOBJS"]="" -S["LIBOBJS"]="" -S["ENABLE_FLAC_FALSE"]="" -S["ENABLE_FLAC_TRUE"]="#" -S["FLAC_LIBS"]="" -S["FLAC_CFLAGS"]="" -S["PKG_CONFIG_LIBDIR"]="" -S["PKG_CONFIG_PATH"]="/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig" -S["PKG_CONFIG"]="/mingw64/bin/pkg-config" -S["ASCIIDOC"]="" -S["A2X"]="" -S["ENABLE_DOCUMENTATION_FALSE"]="" -S["ENABLE_DOCUMENTATION_TRUE"]="#" -S["VALGRIND"]="" -S["ENABLE_VALGRIND_FALSE"]="" -S["ENABLE_VALGRIND_TRUE"]="#" -S["GENHTML"]="" -S["LCOV"]="" -S["COVERAGE_LIBS"]="" -S["COVERAGE_CFLAGS"]="" -S["ENABLE_COVERAGE_FALSE"]="" -S["ENABLE_COVERAGE_TRUE"]="#" -S["WERROR_CFLAGS"]="" -S["ENABLE_WERROR_FALSE"]="" -S["ENABLE_WERROR_TRUE"]="#" -S["TEST_BIN"]="" -S["CXXCPP"]="g++ -E" -S["CPP"]="gcc -E" -S["LT_SYS_LIBRARY_PATH"]="" -S["OTOOL64"]="" -S["OTOOL"]="" -S["LIPO"]="" -S["NMEDIT"]="" -S["DSYMUTIL"]="" -S["MANIFEST_TOOL"]=":" -S["RANLIB"]="ranlib" -S["ac_ct_AR"]="ar" -S["AR"]="ar" -S["DLLTOOL"]="dlltool" -S["OBJDUMP"]="objdump" -S["LN_S"]="cp -pR" -S["NM"]="/mingw64/bin/nm -B" -S["ac_ct_DUMPBIN"]="" -S["DUMPBIN"]="" -S["LD"]="I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe" -S["FGREP"]="/usr/bin/grep -F" -S["EGREP"]="/usr/bin/grep -E" -S["GREP"]="/usr/bin/grep" -S["SED"]="/usr/bin/sed" -S["host_os"]="mingw32" -S["host_vendor"]="w64" -S["host_cpu"]="x86_64" -S["host"]="x86_64-w64-mingw32" -S["build_os"]="mingw32" -S["build_vendor"]="w64" -S["build_cpu"]="x86_64" -S["build"]="x86_64-w64-mingw32" -S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" -S["am__fastdepCXX_FALSE"]="#" -S["am__fastdepCXX_TRUE"]="" -S["CXXDEPMODE"]="depmode=gcc3" -S["ac_ct_CXX"]="g++" -S["CXXFLAGS"]="-g -O2" -S["CXX"]="g++" -S["am__fastdepCC_FALSE"]="#" -S["am__fastdepCC_TRUE"]="" -S["CCDEPMODE"]="depmode=gcc3" -S["am__nodep"]="_no" -S["AMDEPBACKSLASH"]="\\" -S["AMDEP_FALSE"]="#" -S["AMDEP_TRUE"]="" -S["am__quote"]="" -S["am__include"]="include" -S["DEPDIR"]=".deps" -S["OBJEXT"]="o" -S["EXEEXT"]=".exe" -S["ac_ct_CC"]="gcc" -S["CPPFLAGS"]="" -S["LDFLAGS"]="" -S["CFLAGS"]="-g -O2" -S["CC"]="gcc" -S["am__untar"]="$${TAR-tar} xf -" -S["am__tar"]="$${TAR-tar} chof - \"$$tardir\"" -S["AMTAR"]="$${TAR-tar}" -S["am__leading_dot"]="." -S["SET_MAKE"]="" -S["AWK"]="gawk" -S["mkdir_p"]="/usr/bin/mkdir -p" -S["MKDIR_P"]="/usr/bin/mkdir -p" -S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" -S["STRIP"]="strip" -S["install_sh"]="${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh" -S["MAKEINFO"]="${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo" -S["AUTOHEADER"]="${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader" -S["AUTOMAKE"]="${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11" -S["AUTOCONF"]="${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf" -S["ACLOCAL"]="${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11" -S["VERSION"]="0.3.6" -S["PACKAGE"]="audiofile" -S["CYGPATH_W"]="cygpath -w" -S["am__isrc"]="" -S["INSTALL_DATA"]="${INSTALL} -m 644" -S["INSTALL_SCRIPT"]="${INSTALL}" -S["INSTALL_PROGRAM"]="${INSTALL}" -S["AUDIOFILE_VERSION_INFO"]="1:0:0" -S["AUDIOFILE_VERSION"]="0.3.6" -S["target_alias"]="" -S["host_alias"]="" -S["build_alias"]="x86_64-w64-mingw32" -S["LIBS"]="-lstdc++" -S["ECHO_T"]="" -S["ECHO_N"]="-n" -S["ECHO_C"]="" -S["DEFS"]="-DHAVE_CONFIG_H" -S["mandir"]="${datarootdir}/man" -S["localedir"]="${datarootdir}/locale" -S["libdir"]="${exec_prefix}/lib" -S["psdir"]="${docdir}" -S["pdfdir"]="${docdir}" -S["dvidir"]="${docdir}" -S["htmldir"]="${docdir}" -S["infodir"]="${datarootdir}/info" -S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" -S["oldincludedir"]="/usr/include" -S["includedir"]="${prefix}/include" -S["localstatedir"]="${prefix}/var" -S["sharedstatedir"]="${prefix}/com" -S["sysconfdir"]="${prefix}/etc" -S["datadir"]="${datarootdir}" -S["datarootdir"]="${prefix}/share" -S["libexecdir"]="${exec_prefix}/libexec" -S["sbindir"]="${exec_prefix}/sbin" -S["bindir"]="${exec_prefix}/bin" -S["program_transform_name"]="s,x,x," -S["prefix"]="/mingw64" -S["exec_prefix"]="${prefix}" -S["PACKAGE_URL"]="" -S["PACKAGE_BUGREPORT"]="" -S["PACKAGE_STRING"]="audiofile 0.3.6" -S["PACKAGE_VERSION"]="0.3.6" -S["PACKAGE_TARNAME"]="audiofile" -S["PACKAGE_NAME"]="audiofile" -S["PATH_SEPARATOR"]=":" -S["SHELL"]="/bin/sh" -_ACAWK -cat >>"$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -D["PACKAGE_NAME"]=" \"audiofile\"" -D["PACKAGE_TARNAME"]=" \"audiofile\"" -D["PACKAGE_VERSION"]=" \"0.3.6\"" -D["PACKAGE_STRING"]=" \"audiofile 0.3.6\"" -D["PACKAGE_BUGREPORT"]=" \"\"" -D["PACKAGE_URL"]=" \"\"" -D["PACKAGE"]=" \"audiofile\"" -D["VERSION"]=" \"0.3.6\"" -D["STDC_HEADERS"]=" 1" -D["HAVE_SYS_TYPES_H"]=" 1" -D["HAVE_SYS_STAT_H"]=" 1" -D["HAVE_STDLIB_H"]=" 1" -D["HAVE_STRING_H"]=" 1" -D["HAVE_MEMORY_H"]=" 1" -D["HAVE_STRINGS_H"]=" 1" -D["HAVE_INTTYPES_H"]=" 1" -D["HAVE_STDINT_H"]=" 1" -D["HAVE_UNISTD_H"]=" 1" -D["LT_OBJDIR"]=" \".libs/\"" -D["STDC_HEADERS"]=" 1" -D["HAVE_FCNTL_H"]=" 1" -D["HAVE_UNISTD_H"]=" 1" -D["_FILE_OFFSET_BITS"]=" 64" -D["ENABLE_FLAC"]=" 0" - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { - line = $ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} - ac_datarootdir_hack=' - s&@datadir@&${datarootdir}&g - s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g - s&@infodir@&${datarootdir}/info&g - s&@localedir@&${datarootdir}/locale&g - s&@mandir@&${datarootdir}/man&g - s&\${datarootdir}&${prefix}/share&g' ;; -esac -ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -} - -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='CXX ' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 diff --git a/tools/audiofile-0.3.6/config.sub b/tools/audiofile-0.3.6/config.sub deleted file mode 100644 index 6205f842..00000000 --- a/tools/audiofile-0.3.6/config.sub +++ /dev/null @@ -1,1782 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. - -timestamp='2012-04-18' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ - | open8 \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i386-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/tools/audiofile-0.3.6/configure b/tools/audiofile-0.3.6/configure deleted file mode 100644 index a586010f..00000000 --- a/tools/audiofile-0.3.6/configure +++ /dev/null @@ -1,19712 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for audiofile 0.3.6. -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='audiofile' -PACKAGE_TARNAME='audiofile' -PACKAGE_VERSION='0.3.6' -PACKAGE_STRING='audiofile 0.3.6' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -ac_unique_file="libaudiofile/AIFF.cpp" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -ENABLE_FLAC_FALSE -ENABLE_FLAC_TRUE -FLAC_LIBS -FLAC_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -ASCIIDOC -A2X -ENABLE_DOCUMENTATION_FALSE -ENABLE_DOCUMENTATION_TRUE -VALGRIND -ENABLE_VALGRIND_FALSE -ENABLE_VALGRIND_TRUE -GENHTML -LCOV -COVERAGE_LIBS -COVERAGE_CFLAGS -ENABLE_COVERAGE_FALSE -ENABLE_COVERAGE_TRUE -WERROR_CFLAGS -ENABLE_WERROR_FALSE -ENABLE_WERROR_TRUE -TEST_BIN -CXXCPP -CPP -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LIBTOOL -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -AUDIOFILE_VERSION_INFO -AUDIOFILE_VERSION -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_largefile -enable_werror -enable_coverage -enable_valgrind -enable_docs -enable_examples -enable_flac -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -LT_SYS_LIBRARY_PATH -CPP -CXXCPP -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -FLAC_CFLAGS -FLAC_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures audiofile 0.3.6 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/audiofile] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of audiofile 0.3.6:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --disable-largefile omit support for large files - --enable-werror treat compiler warnings as errors - --enable-coverage enable code coverage - --enable-valgrind enable testing with Valgrind - --disable-docs disable documentation - --disable-examples disable examples - --disable-flac disable FLAC - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - CPP C preprocessor - CXXCPP C++ preprocessor - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - FLAC_CFLAGS C compiler flags for FLAC, overriding pkg-config - FLAC_LIBS linker flags for FLAC, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -audiofile configure 0.3.6 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by audiofile $as_me 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - -AUDIOFILE_VERSION_INFO=1:0:0 -AUDIOFILE_VERSION=$PACKAGE_VERSION - - - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE=$PACKAGE_NAME - VERSION=$PACKAGE_VERSION - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -ac_config_headers="$ac_config_headers config.h" - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -#include - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str; - int number; - float fnumber; - - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} - -int -main () -{ - - // Check bool. - _Bool success = false; - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); - - ; - return 0; -} -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : - -fi - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | msys* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* | *-*-msys* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* | *-*-msys* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* | *-*-msys* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin* | msys*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | msys* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | msys* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - -func_stripname_cnf () -{ - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - file_list_spec='@' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | msys* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - msys*) - # MSYS DLLs use 'msys-' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/msys-/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin* | msys*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin* | msys*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC - - if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct_CXX=no - hardcode_direct_absolute_CXX=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec_CXX='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - no_undefined_flag_CXX='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' $wl-bernotok' - allow_undefined_flag_CXX=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | msys* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='$wl--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - file_list_spec_CXX='@' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - if test yes != "$lt_cv_apple_cc_single_mod"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - os2*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_minus_L_CXX=yes - allow_undefined_flag_CXX=unsupported - shrext_cmds=.dll - archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes_CXX=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='$wl-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='$wl-E' - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - no_undefined_flag_CXX=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='$wl-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='$wl-z,text' - allow_undefined_flag_CXX='$wl-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test no = "$ld_shlibs_CXX" && can_build_shared=no - - GCC_CXX=$GXX - LD_CXX=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l* | */libclang_rt.*.a) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX=$prev$p - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX=$prev$p - else - postdeps_CXX="${postdeps_CXX} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX=$p - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX=$p - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - lt_prog_compiler_pic_CXX='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static_CXX='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX=$ltdll_cmds - ;; - cygwin* | msys* | mingw* | cegcc*) - case $cc_basename in - cl*) - exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test no = "$ld_shlibs_CXX" && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | msys* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - ;; - msys*) - # MSYS DLLs use 'msys-' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/msys-/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin* | msys*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test yes = "$hardcode_automatic_CXX"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct_CXX" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && - test no != "$hardcode_minus_L_CXX"; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test relink = "$hardcode_action_CXX" || - test yes = "$inherit_rpath_CXX"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_header in fcntl.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ - typedef int charset[2]; - const charset cs = { 0, 0 }; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - -# Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _FILE_OFFSET_BITS 64 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } -case $ac_cv_sys_file_offset_bits in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF -;; -esac -rm -rf conftest* - if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _LARGE_FILES 1 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=1; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } -case $ac_cv_sys_large_files in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF -;; -esac -rm -rf conftest* - fi - - -fi - -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - - -platform=none -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for platform specific tests to compile" >&5 -$as_echo_n "checking for platform specific tests to compile... " >&6; } -case "$host_os" in - linux*) - TEST_BIN="linuxtest alsaplay" - platform=linux - ;; - irix5* | irix6*) - TEST_BIN="irixread irixtestloop" - platform=irix - ;; - darwin*) - if test -e /System/Library/Frameworks/CoreAudio.framework; then - TEST_BIN="osxplay" - platform="Mac OS X" - fi - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $platform" >&5 -$as_echo "$platform" >&6; } - - -# Check whether --enable-werror was given. -if test "${enable_werror+set}" = set; then : - enableval=$enable_werror; enable_werror=$enableval -else - enable_werror=no -fi - - if test "$enable_werror" = "yes"; then - ENABLE_WERROR_TRUE= - ENABLE_WERROR_FALSE='#' -else - ENABLE_WERROR_TRUE='#' - ENABLE_WERROR_FALSE= -fi - - -if test "$enable_werror" = "yes"; then : - WERROR_CFLAGS="-Werror" - -fi - -# Check whether --enable-coverage was given. -if test "${enable_coverage+set}" = set; then : - enableval=$enable_coverage; enable_coverage=$enableval -else - enable_coverage=no -fi - - if test "$enable_coverage" = "yes"; then - ENABLE_COVERAGE_TRUE= - ENABLE_COVERAGE_FALSE='#' -else - ENABLE_COVERAGE_TRUE='#' - ENABLE_COVERAGE_FALSE= -fi - - -if test "$enable_coverage" = "yes"; then : - COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage" - COVERAGE_LIBS="-lgcov" - - - - # Extract the first word of "lcov", so it can be a program name with args. -set dummy lcov; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LCOV+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $LCOV in - [\\/]* | ?:[\\/]*) - ac_cv_path_LCOV="$LCOV" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LCOV="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_LCOV" && ac_cv_path_LCOV=":" - ;; -esac -fi -LCOV=$ac_cv_path_LCOV -if test -n "$LCOV"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5 -$as_echo "$LCOV" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # Extract the first word of "genhtml", so it can be a program name with args. -set dummy genhtml; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GENHTML+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GENHTML in - [\\/]* | ?:[\\/]*) - ac_cv_path_GENHTML="$GENHTML" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GENHTML="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GENHTML" && ac_cv_path_GENHTML=":" - ;; -esac -fi -GENHTML=$ac_cv_path_GENHTML -if test -n "$GENHTML"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5 -$as_echo "$GENHTML" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - if test "$LCOV" = :; then : - as_fn_error $? "lcov must be installed for code coverage: http://ltp.sourceforge.net/coverage/lcov.php" "$LINENO" 5 - -fi - -fi - -# Check whether --enable-valgrind was given. -if test "${enable_valgrind+set}" = set; then : - enableval=$enable_valgrind; enable_valgrind=$enableval -else - enable_valgrind=no -fi - - if test "$enable_valgrind" = "yes"; then - ENABLE_VALGRIND_TRUE= - ENABLE_VALGRIND_FALSE='#' -else - ENABLE_VALGRIND_TRUE='#' - ENABLE_VALGRIND_FALSE= -fi - - -if test "$enable_valgrind" = "yes"; then : - # Extract the first word of "valgrind", so it can be a program name with args. -set dummy valgrind; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_VALGRIND+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $VALGRIND in - [\\/]* | ?:[\\/]*) - ac_cv_path_VALGRIND="$VALGRIND" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_VALGRIND="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_VALGRIND" && ac_cv_path_VALGRIND=":" - ;; -esac -fi -VALGRIND=$ac_cv_path_VALGRIND -if test -n "$VALGRIND"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 -$as_echo "$VALGRIND" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - if test "$VALGRIND" = :; then : - as_fn_error $? "Could not find Valgrind." "$LINENO" 5 - -fi - -fi - -# Check whether --enable-docs was given. -if test "${enable_docs+set}" = set; then : - enableval=$enable_docs; enable_documentation=$enableval -else - enable_documentation=yes -fi - - - if test "$enable_documentation" = "yes"; then - ENABLE_DOCUMENTATION_TRUE= - ENABLE_DOCUMENTATION_FALSE='#' -else - ENABLE_DOCUMENTATION_TRUE='#' - ENABLE_DOCUMENTATION_FALSE= -fi - - -if test "$enable_documentation" = "yes"; then : - # Extract the first word of "a2x", so it can be a program name with args. -set dummy a2x; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_A2X+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $A2X in - [\\/]* | ?:[\\/]*) - ac_cv_path_A2X="$A2X" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_A2X="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_A2X" && ac_cv_path_A2X=":" - ;; -esac -fi -A2X=$ac_cv_path_A2X -if test -n "$A2X"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $A2X" >&5 -$as_echo "$A2X" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # Extract the first word of "asciidoc", so it can be a program name with args. -set dummy asciidoc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ASCIIDOC+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ASCIIDOC in - [\\/]* | ?:[\\/]*) - ac_cv_path_ASCIIDOC="$ASCIIDOC" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ASCIIDOC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_ASCIIDOC" && ac_cv_path_ASCIIDOC=":" - ;; -esac -fi -ASCIIDOC=$ac_cv_path_ASCIIDOC -if test -n "$ASCIIDOC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ASCIIDOC" >&5 -$as_echo "$ASCIIDOC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "$A2X" = :; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find a2x." >&5 -$as_echo "$as_me: WARNING: Could not find a2x." >&2;} - -fi - if test "$ASCIIDOC" = :; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find asciidoc." >&5 -$as_echo "$as_me: WARNING: Could not find asciidoc." >&2;} - -fi - -fi - -# Check whether --enable-examples was given. -if test "${enable_examples+set}" = set; then : - enableval=$enable_examples; enable_examples=$enableval -else - enable_examples=yes -fi - -if test "$enable_examples" != "yes"; then : - TEST_BIN="" -fi - -# Check whether --enable-flac was given. -if test "${enable_flac+set}" = set; then : - enableval=$enable_flac; enable_flac=$enableval -else - enable_flac=yes -fi - - - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - -FLAC_CFLAGS="" -FLAC_LIBS="" - -if test -n "$PKG_CONFIG" ; then - if test "$enable_flac" = "yes" ; then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flac >= 1.2.1" >&5 -$as_echo_n "checking for flac >= 1.2.1... " >&6; } - -if test -n "$FLAC_CFLAGS"; then - pkg_cv_FLAC_CFLAGS="$FLAC_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.2.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "flac >= 1.2.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FLAC_CFLAGS=`$PKG_CONFIG --cflags "flac >= 1.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FLAC_LIBS"; then - pkg_cv_FLAC_LIBS="$FLAC_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.2.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "flac >= 1.2.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FLAC_LIBS=`$PKG_CONFIG --libs "flac >= 1.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FLAC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "flac >= 1.2.1" 2>&1` - else - FLAC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "flac >= 1.2.1" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FLAC_PKG_ERRORS" >&5 - - ac_cv_flac=no -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ac_cv_flac=no -else - FLAC_CFLAGS=$pkg_cv_FLAC_CFLAGS - FLAC_LIBS=$pkg_cv_FLAC_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ac_cv_flac=yes -fi - FLAC_CFLAGS=`echo $FLAC_CFLAGS | $SED "s/FLAC$//"` - if test "$ac_cv_flac" = "no" ; then - enable_flac=no - fi - fi -else - enable_flac=no -fi - - - - - if test "$enable_flac" = "yes"; then - ENABLE_FLAC_TRUE= - ENABLE_FLAC_FALSE='#' -else - ENABLE_FLAC_TRUE='#' - ENABLE_FLAC_FALSE= -fi - -if test "$enable_flac" = "yes" ; then - -cat >>confdefs.h <<_ACEOF -#define ENABLE_FLAC 1 -_ACEOF - -else - -cat >>confdefs.h <<_ACEOF -#define ENABLE_FLAC 0 -_ACEOF - -fi - -ac_config_files="$ac_config_files audiofile.spec audiofile.pc audiofile-uninstalled.pc sfcommands/Makefile test/Makefile gtest/Makefile examples/Makefile libaudiofile/Makefile libaudiofile/alac/Makefile libaudiofile/modules/Makefile docs/Makefile Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -if test -z "${ENABLE_WERROR_TRUE}" && test -z "${ENABLE_WERROR_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_WERROR\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_COVERAGE_TRUE}" && test -z "${ENABLE_COVERAGE_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_COVERAGE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_VALGRIND_TRUE}" && test -z "${ENABLE_VALGRIND_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_VALGRIND\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_DOCUMENTATION_TRUE}" && test -z "${ENABLE_DOCUMENTATION_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_DOCUMENTATION\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_FLAC_TRUE}" && test -z "${ENABLE_FLAC_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_FLAC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by audiofile $as_me 0.3.6, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -audiofile config.status 0.3.6 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - " ") CONFIG_FILES="$CONFIG_FILES " ;; - "audiofile.spec ") CONFIG_FILES="$CONFIG_FILES audiofile.spec " ;; - "audiofile.pc ") CONFIG_FILES="$CONFIG_FILES audiofile.pc " ;; - "audiofile-uninstalled.pc ") CONFIG_FILES="$CONFIG_FILES audiofile-uninstalled.pc " ;; - "sfcommands/Makefile ") CONFIG_FILES="$CONFIG_FILES sfcommands/Makefile " ;; - "test/Makefile ") CONFIG_FILES="$CONFIG_FILES test/Makefile " ;; - "gtest/Makefile ") CONFIG_FILES="$CONFIG_FILES gtest/Makefile " ;; - "examples/Makefile ") CONFIG_FILES="$CONFIG_FILES examples/Makefile " ;; - "libaudiofile/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/Makefile " ;; - "libaudiofile/alac/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/alac/Makefile " ;; - "libaudiofile/modules/Makefile ") CONFIG_FILES="$CONFIG_FILES libaudiofile/modules/Makefile " ;; - "docs/Makefile ") CONFIG_FILES="$CONFIG_FILES docs/Makefile " ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='CXX ' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/tools/audiofile-0.3.6/configure.ac b/tools/audiofile-0.3.6/configure.ac deleted file mode 100644 index 5ccfd299..00000000 --- a/tools/audiofile-0.3.6/configure.ac +++ /dev/null @@ -1,170 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT([audiofile], [0.3.6]) -AC_CONFIG_SRCDIR([libaudiofile/AIFF.cpp]) - -dnl Set libtool version information. -AUDIOFILE_VERSION_INFO=1:0:0 -AUDIOFILE_VERSION=$PACKAGE_VERSION - -AC_SUBST(AUDIOFILE_VERSION) -AC_SUBST(AUDIOFILE_VERSION_INFO) - -AM_INIT_AUTOMAKE($PACKAGE_NAME, $PACKAGE_VERSION) -AC_CONFIG_HEADER([config.h]) - -dnl Checks for programs. -AC_PROG_CC_C99 -AC_PROG_CXX -AC_PROG_INSTALL -AM_PROG_LIBTOOL - -dnl Checks for header files. -AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h unistd.h) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_C_BIGENDIAN - -dnl Enable large file support by default. -AC_SYS_LARGEFILE -AC_TYPE_OFF_T -AC_TYPE_SIZE_T - -dnl Set up platform specific stuff -platform=none -AC_MSG_CHECKING([for platform specific tests to compile]) -case "$host_os" in - linux*) - TEST_BIN="linuxtest alsaplay" - platform=linux - ;; - irix5* | irix6*) - TEST_BIN="irixread irixtestloop" - platform=irix - ;; - darwin*) - if test -e /System/Library/Frameworks/CoreAudio.framework; then - TEST_BIN="osxplay" - platform="Mac OS X" - fi - ;; -esac -AC_MSG_RESULT($platform) -AC_SUBST(TEST_BIN) - -AC_ARG_ENABLE(werror, - AS_HELP_STRING([--enable-werror], [treat compiler warnings as errors]), - [enable_werror=$enableval], - [enable_werror=no]) -AM_CONDITIONAL(ENABLE_WERROR, [test "$enable_werror" = "yes"]) - -AS_IF([test "$enable_werror" = "yes"], - [WERROR_CFLAGS="-Werror" - AC_SUBST(WERROR_CFLAGS)]) - -AC_ARG_ENABLE(coverage, - AS_HELP_STRING([--enable-coverage], [enable code coverage]), - [enable_coverage=$enableval], - [enable_coverage=no]) -AM_CONDITIONAL(ENABLE_COVERAGE, [test "$enable_coverage" = "yes"]) - -AS_IF([test "$enable_coverage" = "yes"], - [COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage" - COVERAGE_LIBS="-lgcov" - AC_SUBST(COVERAGE_CFLAGS) - AC_SUBST(COVERAGE_LIBS) - - AC_PATH_PROG(LCOV, lcov, :) - AC_PATH_PROG(GENHTML, genhtml, :) - AC_SUBST(LCOV) - AC_SUBST(GENHTML) - AS_IF([test "$LCOV" = :], - [AC_MSG_ERROR([lcov must be installed for code coverage: http://ltp.sourceforge.net/coverage/lcov.php])] - )] -) - -AC_ARG_ENABLE(valgrind, - AS_HELP_STRING([--enable-valgrind], [enable testing with Valgrind]), - [enable_valgrind=$enableval], - [enable_valgrind=no]) -AM_CONDITIONAL(ENABLE_VALGRIND, [test "$enable_valgrind" = "yes"]) - -AS_IF([test "$enable_valgrind" = "yes"], - [AC_PATH_PROG(VALGRIND, valgrind, :) - AC_SUBST(VALGRIND) - AS_IF([test "$VALGRIND" = :], - [AC_MSG_ERROR([Could not find Valgrind.])] - )] -) - -AC_ARG_ENABLE(docs, - AS_HELP_STRING([--disable-docs], [disable documentation]), - [enable_documentation=$enableval], - [enable_documentation=yes]) - -AM_CONDITIONAL(ENABLE_DOCUMENTATION, [test "$enable_documentation" = "yes"]) - -AS_IF([test "$enable_documentation" = "yes"], - [AC_PATH_PROG(A2X, a2x, :) - AC_PATH_PROG(ASCIIDOC, asciidoc, :) - AS_IF([test "$A2X" = :], - [AC_MSG_WARN([Could not find a2x.])] - ) - AS_IF([test "$ASCIIDOC" = :], - [AC_MSG_WARN([Could not find asciidoc.])] - )] -) - -AC_ARG_ENABLE(examples, - AS_HELP_STRING([--disable-examples], [disable examples]), - [enable_examples=$enableval], - [enable_examples=yes]) -AS_IF([test "$enable_examples" != "yes"], [TEST_BIN=""]) - -AC_ARG_ENABLE(flac, - AS_HELP_STRING([--disable-flac], [disable FLAC]), - [enable_flac=$enableval], - [enable_flac=yes]) - -PKG_PROG_PKG_CONFIG - -FLAC_CFLAGS="" -FLAC_LIBS="" - -if test -n "$PKG_CONFIG" ; then - if test "$enable_flac" = "yes" ; then - PKG_CHECK_MODULES([FLAC], [flac >= 1.2.1], [ac_cv_flac=yes], [ac_cv_flac=no]) - FLAC_CFLAGS=`echo $FLAC_CFLAGS | $SED "s/FLAC$//"` - if test "$ac_cv_flac" = "no" ; then - enable_flac=no - fi - fi -else - enable_flac=no -fi - -AC_SUBST(FLAC_CFLAGS) -AC_SUBST(FLAC_LIBS) - -AM_CONDITIONAL(ENABLE_FLAC, [test "$enable_flac" = "yes"]) -if test "$enable_flac" = "yes" ; then - AC_DEFINE_UNQUOTED([ENABLE_FLAC], [1], [Whether FLAC is enabled.]) -else - AC_DEFINE_UNQUOTED([ENABLE_FLAC], [0], [Whether FLAC is enabled.]) -fi - -AC_CONFIG_FILES([ - audiofile.spec - audiofile.pc - audiofile-uninstalled.pc - sfcommands/Makefile - test/Makefile - gtest/Makefile - examples/Makefile - libaudiofile/Makefile - libaudiofile/alac/Makefile - libaudiofile/modules/Makefile - docs/Makefile - Makefile]) -AC_OUTPUT diff --git a/tools/audiofile-0.3.6/depcomp b/tools/audiofile-0.3.6/depcomp deleted file mode 100644 index 25a39e6c..00000000 --- a/tools/audiofile-0.3.6/depcomp +++ /dev/null @@ -1,708 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2012-03-27.16; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputting dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the "deleted header file" problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' "$nl" < "$tmpdepfile" | -## Some versions of gcc put a space before the ':'. On the theory -## that the space means something, we add a space to the output as -## well. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like '#:fec' to the end of the - # dependency line. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -xlc) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts '$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. - # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\': - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. - # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. - "$@" $dashmflag | - sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/tools/audiofile-0.3.6/docs/Makefile b/tools/audiofile-0.3.6/docs/Makefile deleted file mode 100644 index 51a09f1e..00000000 --- a/tools/audiofile-0.3.6/docs/Makefile +++ /dev/null @@ -1,597 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# docs/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -subdir = docs -DIST_COMMON = $(dist_man1_MANS) $(dist_man3_MANS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man1dir = $(mandir)/man1 -am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" -man3dir = $(mandir)/man3 -NROFF = nroff -MANS = $(dist_man1_MANS) $(dist_man3_MANS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6/docs -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6/docs -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -#DOCS_TXT_MAN1 = \ -# sfconvert.1.txt \ -# sfinfo.1.txt - -#DOCS_TXT_MAN3 = \ -# afCloseFile.3.txt \ -# afGetFrameCount.3.txt \ -# afGetFrameSize.3.txt \ -# afInitAESChannelDataTo.3.txt \ -# afInitCompression.3.txt \ -# afInitFileFormat.3.txt \ -# afInitSampleFormat.3.txt \ -# afNewFileSetup.3.txt \ -# afOpenFile.3.txt \ -# afQuery.3.txt \ -# afReadFrames.3.txt \ -# afReadMisc.3.txt \ -# afSeekFrame.3.txt \ -# afSetErrorHandler.3.txt \ -# afSetVirtualSampleFormat.3.txt \ -# afWriteFrames.3.txt - -#DOCS_TXT = $(DOCS_TXT_MAN1) $(DOCS_TXT_MAN3) -#EXTRA_DIST = \ -# $(DOCS_TXT) \ -# asciidoc.conf - -#DOCS_MAN1 = $(DOCS_TXT_MAN1:.txt=) -#DOCS_MAN3 = $(DOCS_TXT_MAN3:.txt=) -#DOCS_MAN3_EXTRA = \ -# afInitAESChannelData.3 \ -# afInitByteOrder.3 \ -# afInitChannels.3 \ -# afInitRate.3 \ -# afGetDataOffset.3 \ -# afGetTrackBytes.3 \ -# afQueryLong.3 \ -# afQueryDouble.3 \ -# afQueryPointer.3 \ -# afSeekMisc.3 \ -# afSetVirtualByteOrder.3 \ -# afSetVirtualChannels.3 \ -# afSetVirtualPCMMapping.3 \ -# afTellFrame.3 \ -# afWriteMisc.3 - -#DOCS_HTML = $(DOCS_TXT:.txt=.html) -#dist_man1_MANS = $(DOCS_MAN1) -#dist_man3_MANS = $(DOCS_MAN3) $(DOCS_MAN3_EXTRA) -#ASCIIDOCFLAGS = -arevnumber=$(VERSION) -amansource="Audio File Library" -#A2XFLAGS = $(ASCIIDOCFLAGS) -d manpage -f manpage -#CLEANFILES = *.1 *.3 *.html -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu docs/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(dist_man1_MANS) - @$(NORMAL_INSTALL) - @list1='$(dist_man1_MANS)'; \ - list2=''; \ - test -n "$(man1dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.1[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) -install-man3: $(dist_man3_MANS) - @$(NORMAL_INSTALL) - @list1='$(dist_man3_MANS)'; \ - list2=''; \ - test -n "$(man3dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.3[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ - done; } - -uninstall-man3: - @$(NORMAL_UNINSTALL) - @list='$(dist_man3_MANS)'; test -n "$(man3dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @list='$(MANS)'; if test -n "$$list"; then \ - list=`for p in $$list; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ - if test -n "$$list" && \ - grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ - echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ - grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ - echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ - echo " typically \`make maintainer-clean' will remove them" >&2; \ - exit 1; \ - else :; fi; \ - else :; fi - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(MANS) -installdirs: - for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man1 install-man3 - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-man - -uninstall-man: uninstall-man1 uninstall-man3 - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-man1 \ - install-man3 install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-man uninstall-man1 \ - uninstall-man3 - - -#%.html: %.txt -# $(ASCIIDOC) $(ASCIIDOCFLAGS) -b html4 -d manpage -f asciidoc.conf $< - -#%.1: %.1.txt -# $(A2X) $(A2XFLAGS) --asciidoc-opts="-f asciidoc.conf" $< - -#%.3: %.3.txt -# $(A2X) $(A2XFLAGS) --asciidoc-opts="-f asciidoc.conf" $< - -#html: $(DOCS_HTML) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/docs/Makefile.am b/tools/audiofile-0.3.6/docs/Makefile.am deleted file mode 100644 index c5e068a9..00000000 --- a/tools/audiofile-0.3.6/docs/Makefile.am +++ /dev/null @@ -1,71 +0,0 @@ -if ENABLE_DOCUMENTATION - -DOCS_TXT_MAN1 = \ - sfconvert.1.txt \ - sfinfo.1.txt - -DOCS_TXT_MAN3 = \ - afCloseFile.3.txt \ - afGetFrameCount.3.txt \ - afGetFrameSize.3.txt \ - afInitAESChannelDataTo.3.txt \ - afInitCompression.3.txt \ - afInitFileFormat.3.txt \ - afInitSampleFormat.3.txt \ - afNewFileSetup.3.txt \ - afOpenFile.3.txt \ - afQuery.3.txt \ - afReadFrames.3.txt \ - afReadMisc.3.txt \ - afSeekFrame.3.txt \ - afSetErrorHandler.3.txt \ - afSetVirtualSampleFormat.3.txt \ - afWriteFrames.3.txt - -DOCS_TXT = $(DOCS_TXT_MAN1) $(DOCS_TXT_MAN3) - -EXTRA_DIST = \ - $(DOCS_TXT) \ - asciidoc.conf - -DOCS_MAN1 = $(DOCS_TXT_MAN1:.txt=) -DOCS_MAN3 = $(DOCS_TXT_MAN3:.txt=) -DOCS_MAN3_EXTRA = \ - afInitAESChannelData.3 \ - afInitByteOrder.3 \ - afInitChannels.3 \ - afInitRate.3 \ - afGetDataOffset.3 \ - afGetTrackBytes.3 \ - afQueryLong.3 \ - afQueryDouble.3 \ - afQueryPointer.3 \ - afSeekMisc.3 \ - afSetVirtualByteOrder.3 \ - afSetVirtualChannels.3 \ - afSetVirtualPCMMapping.3 \ - afTellFrame.3 \ - afWriteMisc.3 - -DOCS_HTML = $(DOCS_TXT:.txt=.html) - -dist_man1_MANS = $(DOCS_MAN1) -dist_man3_MANS = $(DOCS_MAN3) $(DOCS_MAN3_EXTRA) - -ASCIIDOCFLAGS = -arevnumber=$(VERSION) -amansource="Audio File Library" -A2XFLAGS = $(ASCIIDOCFLAGS) -d manpage -f manpage - -%.html: %.txt - $(ASCIIDOC) $(ASCIIDOCFLAGS) -b html4 -d manpage -f asciidoc.conf $< - -%.1: %.1.txt - $(A2X) $(A2XFLAGS) --asciidoc-opts="-f asciidoc.conf" $< - -%.3: %.3.txt - $(A2X) $(A2XFLAGS) --asciidoc-opts="-f asciidoc.conf" $< - -html: $(DOCS_HTML) - -CLEANFILES = *.1 *.3 *.html - -endif diff --git a/tools/audiofile-0.3.6/docs/Makefile.in b/tools/audiofile-0.3.6/docs/Makefile.in deleted file mode 100644 index 1ad566e2..00000000 --- a/tools/audiofile-0.3.6/docs/Makefile.in +++ /dev/null @@ -1,597 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = docs -DIST_COMMON = $(dist_man1_MANS) $(dist_man3_MANS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man1dir = $(mandir)/man1 -am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" -man3dir = $(mandir)/man3 -NROFF = nroff -MANS = $(dist_man1_MANS) $(dist_man3_MANS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -@ENABLE_DOCUMENTATION_TRUE@DOCS_TXT_MAN1 = \ -@ENABLE_DOCUMENTATION_TRUE@ sfconvert.1.txt \ -@ENABLE_DOCUMENTATION_TRUE@ sfinfo.1.txt - -@ENABLE_DOCUMENTATION_TRUE@DOCS_TXT_MAN3 = \ -@ENABLE_DOCUMENTATION_TRUE@ afCloseFile.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afGetFrameCount.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afGetFrameSize.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afInitAESChannelDataTo.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afInitCompression.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afInitFileFormat.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afInitSampleFormat.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afNewFileSetup.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afOpenFile.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afQuery.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afReadFrames.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afReadMisc.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afSeekFrame.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afSetErrorHandler.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afSetVirtualSampleFormat.3.txt \ -@ENABLE_DOCUMENTATION_TRUE@ afWriteFrames.3.txt - -@ENABLE_DOCUMENTATION_TRUE@DOCS_TXT = $(DOCS_TXT_MAN1) $(DOCS_TXT_MAN3) -@ENABLE_DOCUMENTATION_TRUE@EXTRA_DIST = \ -@ENABLE_DOCUMENTATION_TRUE@ $(DOCS_TXT) \ -@ENABLE_DOCUMENTATION_TRUE@ asciidoc.conf - -@ENABLE_DOCUMENTATION_TRUE@DOCS_MAN1 = $(DOCS_TXT_MAN1:.txt=) -@ENABLE_DOCUMENTATION_TRUE@DOCS_MAN3 = $(DOCS_TXT_MAN3:.txt=) -@ENABLE_DOCUMENTATION_TRUE@DOCS_MAN3_EXTRA = \ -@ENABLE_DOCUMENTATION_TRUE@ afInitAESChannelData.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afInitByteOrder.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afInitChannels.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afInitRate.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afGetDataOffset.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afGetTrackBytes.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afQueryLong.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afQueryDouble.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afQueryPointer.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afSeekMisc.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afSetVirtualByteOrder.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afSetVirtualChannels.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afSetVirtualPCMMapping.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afTellFrame.3 \ -@ENABLE_DOCUMENTATION_TRUE@ afWriteMisc.3 - -@ENABLE_DOCUMENTATION_TRUE@DOCS_HTML = $(DOCS_TXT:.txt=.html) -@ENABLE_DOCUMENTATION_TRUE@dist_man1_MANS = $(DOCS_MAN1) -@ENABLE_DOCUMENTATION_TRUE@dist_man3_MANS = $(DOCS_MAN3) $(DOCS_MAN3_EXTRA) -@ENABLE_DOCUMENTATION_TRUE@ASCIIDOCFLAGS = -arevnumber=$(VERSION) -amansource="Audio File Library" -@ENABLE_DOCUMENTATION_TRUE@A2XFLAGS = $(ASCIIDOCFLAGS) -d manpage -f manpage -@ENABLE_DOCUMENTATION_TRUE@CLEANFILES = *.1 *.3 *.html -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu docs/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(dist_man1_MANS) - @$(NORMAL_INSTALL) - @list1='$(dist_man1_MANS)'; \ - list2=''; \ - test -n "$(man1dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.1[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) -install-man3: $(dist_man3_MANS) - @$(NORMAL_INSTALL) - @list1='$(dist_man3_MANS)'; \ - list2=''; \ - test -n "$(man3dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.3[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ - done; } - -uninstall-man3: - @$(NORMAL_UNINSTALL) - @list='$(dist_man3_MANS)'; test -n "$(man3dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @list='$(MANS)'; if test -n "$$list"; then \ - list=`for p in $$list; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ - if test -n "$$list" && \ - grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ - echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ - grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ - echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ - echo " typically \`make maintainer-clean' will remove them" >&2; \ - exit 1; \ - else :; fi; \ - else :; fi - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(MANS) -installdirs: - for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -@ENABLE_DOCUMENTATION_FALSE@html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man1 install-man3 - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-man - -uninstall-man: uninstall-man1 uninstall-man3 - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-man1 \ - install-man3 install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am uninstall uninstall-am uninstall-man uninstall-man1 \ - uninstall-man3 - - -@ENABLE_DOCUMENTATION_TRUE@%.html: %.txt -@ENABLE_DOCUMENTATION_TRUE@ $(ASCIIDOC) $(ASCIIDOCFLAGS) -b html4 -d manpage -f asciidoc.conf $< - -@ENABLE_DOCUMENTATION_TRUE@%.1: %.1.txt -@ENABLE_DOCUMENTATION_TRUE@ $(A2X) $(A2XFLAGS) --asciidoc-opts="-f asciidoc.conf" $< - -@ENABLE_DOCUMENTATION_TRUE@%.3: %.3.txt -@ENABLE_DOCUMENTATION_TRUE@ $(A2X) $(A2XFLAGS) --asciidoc-opts="-f asciidoc.conf" $< - -@ENABLE_DOCUMENTATION_TRUE@html: $(DOCS_HTML) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/docs/afCloseFile.3.txt b/tools/audiofile-0.3.6/docs/afCloseFile.3.txt deleted file mode 100644 index 19b1fdde..00000000 --- a/tools/audiofile-0.3.6/docs/afCloseFile.3.txt +++ /dev/null @@ -1,42 +0,0 @@ -afCloseFile(3) -============== - -NAME ----- -afCloseFile - close an open audio file - -SYNOPSIS --------- - #include - - int afCloseFile(AFfilehandle file); - -PARAMETERS ----------- -`file` is a valid file handle created by linkaf:afOpenFile[3]. - -DESCRIPTION ------------ -`afCloseFile` closes the audio file 'file', updating the file if it was -opened for writing. - -RETURN VALUE ------------- -`afCloseFile` returns 0 if the file was closed properly and -1 if an -error occurred while closing the file. - -ERRORS ------- -`afCloseFile` can generate these possible errors: - -* `AF_BAD_FILEHANDLE` -* `AF_BAD_LSEEK` -* `AF_BAD_WRITE` - -SEE ALSO --------- -linkaf:afOpenFile[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afGetFrameCount.3.txt b/tools/audiofile-0.3.6/docs/afGetFrameCount.3.txt deleted file mode 100644 index 431391b0..00000000 --- a/tools/audiofile-0.3.6/docs/afGetFrameCount.3.txt +++ /dev/null @@ -1,63 +0,0 @@ -afGetFrameCount(3) -================== - -NAME ----- -afGetFrameCount, afGetTrackBytes, afGetDataOffset - get the total sample -frame count, length of audio track in bytes, offset of the audio track for a -track in an audio file - - -SYNOPSIS --------- - #include - - AFframecount afGetFrameCount (AFfilehandle file, int track); - - AFfileoffset afGetTrackBytes (AFfilehandle file, int track); - - AFfileoffset afGetDataOffset (AFfilehandle file, int track); - - -PARAMETERS ----------- -'file' is an audio file handle created by a previous call to -linkaf:afOpenFile[3]. - -'track' is an integer which specifies an audio track within 'file'. -All supported file formats contain exactly one audio track per file, -so the constant `AF_DEFAULT_TRACK` should always be used. - - -DESCRIPTION ------------ -`afGetFrameCount` returns the total number of sample frames contained -within the specified track of the specified file. - -Each sample frame of audio consists of a fixed number of samples -(equal to the number of audio channels in the track. For monaural data, -a sample frame consists of one audio sample. For stereophonic data, -a sample frame consists of a stereo pair. - -`afGetTrackBytes` returns the total number of bytes of raw audio data -(i.e., prior to decompression or conversion) in the track. - -`afGetDataOffset` returns the offset in bytes of the start of the audio -data contained within the specified track of the specified file. - - -RETURN VALUE ------------- -`afGetFrameCount` returns the total number of sample frames in 'track'. - -`afGetTrackBytes` returns the total number of bytes of audio data -in 'track'. - -`afGetDataOffset` returns the offset in bytes to the beginning of the -audio data in 'track'. - -Each of these routines returns -1 in case of error. - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afGetFrameSize.3.txt b/tools/audiofile-0.3.6/docs/afGetFrameSize.3.txt deleted file mode 100644 index f22f5c88..00000000 --- a/tools/audiofile-0.3.6/docs/afGetFrameSize.3.txt +++ /dev/null @@ -1,46 +0,0 @@ -afGetFrameSize(3) -================= - -NAME ----- -afGetFrameSize - calculate the frame size in bytes for an audio track - -SYNOPSIS --------- - #include - - float afGetFrameSize (AFfilehandle file, int track, int expand3to4); - -PARAMETERS ----------- -'file' is a valid AFfilehandle. - -'track' is an integer which refers to a specific audio track in the -file. At present no supported audio file format allows for more than -one audio track within a file, so track should always be -`AF_DEFAULT_TRACK`. - -'expand3to4' is a boolean-valued integer indicating whether frame size -calculation will treat 24-bit data as having a size of 3 bytes or 4 -bytes. - -DESCRIPTION ------------ -`afGetFrameSize` returns the number of bytes in a frame in a given -audio track. - -A sample frame consists of one or more samples. For a monaural track, -a sample frame will always contain one sample. For a stereophonic -track, a sample frame will always contain two samples, one for the left -channel and one for the right channel. - -A non-zero value of 'expand3to4' should be used when calculating the -frame size for storage in memory (since 24-bit audio data is presented -in memory as a 4-byte sign-extended integer), while a value of zero -should be used for calculating storage on disk where no padding is added. -The parameter 'expand3to4' is ignored unless the specified audio track -contains 24-bit audio data. - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afInitAESChannelDataTo.3.txt b/tools/audiofile-0.3.6/docs/afInitAESChannelDataTo.3.txt deleted file mode 100644 index 4afe8516..00000000 --- a/tools/audiofile-0.3.6/docs/afInitAESChannelDataTo.3.txt +++ /dev/null @@ -1,51 +0,0 @@ -afInitAESChannelDataTo(3) -========================= - -NAME ----- -afInitAESChannelDataTo, afInitAESChannelData - initialize AES non-audio -data in an audio file setup - -SYNOPSIS --------- - #include - - void afInitAESChannelDataTo(AFfilesetup setup, int track, int willHaveData); - void afInitAESChannelData(AFfilesetup setup, int track); - -PARAMETERS ----------- -`setup` is a valid file setup returned by linkaf:afNewFileSetup[3]. - -`track` specifies a track within the audio file setup. `track` is always -`AF_DEFAULT_TRACK` for all currently supported file formats. - -`willHaveData` is a boolean-valued integer indicating whether AES -non-audio data will be present. - -DESCRIPTION ------------ -Given an `AFfilesetup` structure created with linkaf:afNewFileSetup[3] -and a track identified by `track` (`AF_DEFAULT_TRACK` for all currently -supported file formats), `afInitAESChannelDataTo` initializes the track to -contain or not contain AES non-audio data. `afInitAESChannelData` behaves -similarly but always initializes the track to contain AES non-audio data. - -Currently only AIFF and AIFF-C file formats can store AES non-audio data; -this data is ignored in all other file formats. - -ERRORS ------- -`afInitAESChannelDataTo` and `afInitAESChannelData` can produce the -following errors: - -`AF_BAD_FILESETUP`:: `setup` represents an invalid file setup. -`AF_BAD_TRACKID`:: `track` represents an invalid track identifier. - -SEE ALSO --------- -linkaf:afNewFileSetup[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afInitCompression.3.txt b/tools/audiofile-0.3.6/docs/afInitCompression.3.txt deleted file mode 100644 index 90adeb3f..00000000 --- a/tools/audiofile-0.3.6/docs/afInitCompression.3.txt +++ /dev/null @@ -1,57 +0,0 @@ -afInitByteOrder(3) -================== - -NAME ----- -afInitCompression - initialize compression for a track in an audio -file setup - -SYNOPSIS --------- - #include - - void afInitCompression(AFfilesetup setup, int track, int compression); - -PARAMETERS ----------- -`setup` is a valid file setup returned by linkaf:afNewFileSetup[3]. - -`track` specifies a track within the audio file setup. `track` is always -`AF_DEFAULT_TRACK` for all currently supported file formats. - -`compression` is an identifier specifying the compression type (such as -`AF_COMPRESSION_G711_ULAW`) to be used for audio data in the track. - -DESCRIPTION ------------ -Given an `AFfilesetup` structure created with linkaf:afNewFileSetup[3] -and a track identified by `track` (`AF_DEFAULT_TRACK` for all currently -supported file formats), `afInitCompression` initializes the track to -the specified compression. - -The following compression types are currently supported: - -`AF_COMPRESSION_NONE`:: no compression -`AF_COMPRESSION_G711_ULAW`:: CCITT G.711 mu-law encoding -`AF_COMPRESSION_G711_ALAW`:: CCITT G.711 A-law encoding -`AF_COMPRESSION_IMA`:: IMA ADPCM encoding -`AF_COMPRESSION_MS_ADPCM`:: MS ADPCM encoding -`AF_COMPRESSION_FLAC`:: FLAC -`AF_COMPRESSION_ALAC`:: Apple Lossless Audio Codec - -ERRORS ------- -`afInitCompression` can produce the following errors: - -`AF_BAD_FILESETUP`:: `setup` represents an invalid file setup. -`AF_BAD_TRACKID`:: `track` represents an invalid track identifier. -`AF_BAD_COMPTYPE`:: `compression` represents an invalid compression type. - -SEE ALSO --------- -linkaf:afNewFileSetup[3], -linkaf:afInitSampleFormat[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afInitFileFormat.3.txt b/tools/audiofile-0.3.6/docs/afInitFileFormat.3.txt deleted file mode 100644 index c0b020e0..00000000 --- a/tools/audiofile-0.3.6/docs/afInitFileFormat.3.txt +++ /dev/null @@ -1,56 +0,0 @@ -afInitFileFormat(3) -=================== - -NAME ----- -afInitFileFormat - initialize file format of an audio file setup - -SYNOPSIS --------- - #include - - void afInitFileFormat(AFfilesetup setup, int fileFormat); - -PARAMETERS ----------- -`setup` is a valid file setup created by linkaf:afNewFileSetup[3]. - -`fileFormat` is an integer constant specifying a file format. - -DESCRIPTION ------------ -Given an `AFfilesetup` structure created with linkaf:afNewFileSetup[3], -`afInitFileFormat` initializes the file format to that specified by -`fileFormat`. - -The following file formats are currently supported: - -`AF_FILE_RAWDATA`:: raw audio data -`AF_FILE_AIFF`:: Audio Interchange File Format -`AF_FILE_AIFFC`:: Audio Interchange File Format AIFF-C -`AF_FILE_NEXTSND`:: NeXT .snd/Sun .au -`AF_FILE_WAVE`:: Microsoft RIFF WAVE -`AF_FILE_BICSF`:: Berkeley/IRCAM/CARL Sound File -`AF_FILE_AVR`:: Audio Visual Research -`AF_FILE_IFF_8SVX`:: Amiga IFF/8SVX -`AF_FILE_SAMPLEVISION`:: Sample Vision -`AF_FILE_VOC`:: Creative Voice File -`AF_FILE_NIST_SPHERE`:: NIST SPHERE -`AF_FILE_CAF`:: Core Audio Format - -ERRORS ------- -`afInitFileFormat` can produce the following errors: - -`AF_BAD_FILESETUP`:: `setup` represents an invalid file setup. -`AF_BAD_FILEFMT`:: `fileFormat` represents an unknown file format. -`AF_BAD_NOT_IMPLEMENTED`:: `fileFormat` represents a file format which -is not currently implemented. - -SEE ALSO --------- -linkaf:afNewFileSetup[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afInitSampleFormat.3.txt b/tools/audiofile-0.3.6/docs/afInitSampleFormat.3.txt deleted file mode 100644 index 6ff12351..00000000 --- a/tools/audiofile-0.3.6/docs/afInitSampleFormat.3.txt +++ /dev/null @@ -1,94 +0,0 @@ -afInitSampleFormat(3) -===================== - -NAME ----- -afInitSampleFormat, afInitByteOrder, afInitChannels, afInitRate - -initialize audio data format for a track in an audio file setup - -SYNOPSIS --------- - #include - - void afInitSampleFormat(AFfilesetup setup, int track, int sampleFormat, - int sampleWidth); - void afInitByteOrder(AFfilesetup setup, int track, int byteOrder); - void afInitChannels(AFfilesetup setup, int track, int channels); - void afInitRate(AFfilesetup setup, int track, double rate); - -PARAMETERS ----------- -`setup` is a valid file setup returned by linkaf:afNewFileSetup[3]. - -`track` specifies a track within the audio file setup. `track` is always -`AF_DEFAULT_TRACK` for all currently supported file formats. - -`sampleFormat` is a symbolic constant specifying the sample format -for the audio data in the track. `sampleFormat` must be one of -`AF_SAMPFMT_TWOSCOMP`, `AF_SAMPFMT_UNSIGNED`, `AF_SAMPFMT_FLOAT`, or -`AF_SAMPFMT_DOUBLE`. - -`sampleWidth` is a positive integer specifying the number of bits for -each sample in the track. - -`byteOrder` is a symbolic constant specifying the byte order of -the track. `byteOrder` must be one of `AF_BYTEORDER_BIGENDIAN` or -`AF_BYTEORDER_LITTLEENDIAN`. - -`channels` is a positive integer specifying the number of channels in -the track. - -`rate` is a positive double-precision floating-point number specifying -the sample rate of the track. - -DESCRIPTION ------------ -`afInitSampleFormat` initializes the track to the specified sample format -and sample width. - -`afInitByteOrder` initializes the track to the specified byte order. - -`afInitChannels` initializes the track to the specified number of channels. - -`afInitRate` initializes the track to the specified sample rate. - -ERRORS ------- -`afInitSampleFormat`, `afInitByteOrder`, `afInitChannels`, and -`afInitRate` can produce the following errors: - -[horizontal] -`AF_BAD_FILESETUP`:: `setup` represents an invalid file setup. -`AF_BAD_TRACK`:: `track` represents an invalid track identifier. - -`afInitSampleFormat` can also produce the following errors: - -[horizontal] -`AF_BAD_SAMPFMT`:: `sampleFormat` does not represent a valid sample format. -`AF_BAD_WIDTH`:: `sampleWidth` is not a valid sample width. - -`afInitByteOrder` can also produce the following error: - -[horizontal] -`AF_BAD_BYTEORDER`:: `byteOrder` does not represent a valid byte order. - -`afInitChannels` can also produce the following error: - -[horizontal] -`AF_BAD_CHANNELS`:: `channels` specifies an invalid number of channels. - -`afInitRate` can also produce the following error: - -[horizontal] -`AF_BAD_RATE`:: `rate` specifies an invalid sample rate. - -SEE ALSO --------- -linkaf:afNewFileSetup[3], -linkaf:afInitFileFormat[3], -linkaf:afInitCompression[3], -linkaf:afOpenFile[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afNewFileSetup.3.txt b/tools/audiofile-0.3.6/docs/afNewFileSetup.3.txt deleted file mode 100644 index ac660d1d..00000000 --- a/tools/audiofile-0.3.6/docs/afNewFileSetup.3.txt +++ /dev/null @@ -1,33 +0,0 @@ -afNewFileSetup(3) -================= - -NAME ----- -afNewFileSetup - create and initialize a new AFfilesetup structure - -SYNOPSIS --------- - #include - - AFfilesetup afNewFileSetup(void); - -RETURN VALUE ------------- -`afNewFileSetup` returns, upon success, a valid AFfilesetup structure. - -Upon failure, `afNewFileSetup` returns a null `AFfilesetup`. This case -should only occur when no memory is available. - -DESCRIPTION ------------ -The opaque `AFfilesetup` structure returned by `afNewFileSetup` can -be used to specify parameters for a file to be opened for writing by -linkaf:afOpenFile[3]. - -SEE ALSO --------- -linkaf:afOpenFile[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afOpenFile.3.txt b/tools/audiofile-0.3.6/docs/afOpenFile.3.txt deleted file mode 100644 index 4d56ab15..00000000 --- a/tools/audiofile-0.3.6/docs/afOpenFile.3.txt +++ /dev/null @@ -1,63 +0,0 @@ -afOpenFile(3) -============= - -NAME ----- -afOpenFile - open an audio file and create a file handle structure used -for subsequent calls to the Audio File Library - -SYNOPSIS --------- - #include - - AFfilehandle afOpenFile(const char *path, const char *mode, - AFfilesetup setup); - -PARAMETERS ----------- -'path' is the path to the file to be opened. - -'mode' specifies a mode for opening the file: `"r"` for reading or -`"w"` for writing. - -'setup' is an AFfilesetup created by linkaf:afNewFileSetup[3]. This value -is ignored for files opened for reading except when the file format is -`AF_FILE_RAWDATA`. - -RETURN VALUE ------------- -Upon success, `afOpenFile` returns a valid `AFfilehandle` which can -be used in subsequent calls to the Audio File Library. Upon failure, -`afOpenFile` returns NULL and generates an error. - -linkaf:afCloseFile[3] is used to close the file when it is no longer -needed. - -ERRORS ------- -`afOpenFile` can produce the following errors: - -`AF_BAD_OPEN`:: A call to `open` failed. -`AF_BAD_READ`:: A call to `read` failed -`AF_BAD_WRITE`:: A call to `write` failed. -`AF_BAD_LSEEK`:: A call to `lseek` failed. -`AF_BAD_MALLOC`:: Memory allocation failed. -`AF_BAD_FILEFMT`:: `setup` specifies a file format which is unsupported for `mode`. -`AF_BAD_SAMPFMT`:: The file's sample format is not supported. -`AF_BAD_WIDTH`:: The file's sample width is not supported. -`AF_BAD_RATE`:: The file's sample rate is not supported. -`AF_BAD_CHANNELS`:: The number of channels in the file is not supported. -`AF_BAD_FILESETUP`:: `setup` specifies an invalid or unsupported configuration. - -SEE ALSO --------- -linkaf:afCloseFile[3], -linkaf:afNewFileSetup[3], -linkaf:afInitFileFormat[3], -linkaf:afInitSampleFormat[3], -linkaf:afReadFrames[3], -linkaf:afWriteFrames[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afQuery.3.txt b/tools/audiofile-0.3.6/docs/afQuery.3.txt deleted file mode 100644 index 70c5fe88..00000000 --- a/tools/audiofile-0.3.6/docs/afQuery.3.txt +++ /dev/null @@ -1,124 +0,0 @@ -afQuery(3) -========== - -NAME ----- -afQuery, afQueryLong, afQueryDouble, afQueryPointer - query the -capabilities of the Audio File Library - -SYNOPSIS --------- - #include - - AUpvlist afQuery (int querytype, int arg1, int arg2, int arg3, int arg4); - - long afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4); - - double afQueryDouble (int querytype, int arg1, int arg2, int arg3, - int arg4); - - void *afQueryPointer (int querytype, int arg1, int arg2, int arg3, - int arg4); - -PARAMETERS ----------- -'querytype' can be one of the following: - -* `AF_QUERYTYPE_FILEFMT` -* `AF_QUERYTYPE_INST` -* `AF_QUERYTYPE_INSTPARAM` -* `AF_QUERYTYPE_COMPRESSION` -* `AF_QUERYTYPE_COMPRESSIONPARAM` -* `AF_QUERYTYPE_MISC` -* `AF_QUERYTYPE_MARK` -* `AF_QUERYTYPE_LOOP` - -'arg1', 'arg2', 'arg3', and 'arg4' are integer selectors whose -meaning depends upon 'querytype'. - - -RETURN VALUE ------------- -Upon success, `afQuery` will return a non-null `AUpvlist` value. -Upon failure, `afQuery` will return null while `afQueryLong` and -`afQueryDouble` will return -1 and `afQueryPointer` will return -null. - -Pointers representing character strings are owned by the Audio File -Library and must not be freed; all other pointer values must be -freed by the caller. - -DESCRIPTION ------------ -For `AF_QUERYTYPE_FILEFMT`, the following selectors are valid values for 'arg1': - -`AF_QUERY_LABEL`:: Request a short label string for the format (e.g., "aiff"). - -`AF_QUERY_NAME`:: Request a short name for the format (e.g., "MS RIFF WAVE"). - -`AF_QUERY_DESC`:: Request a descriptive name for the format (e.g., "Audio -Interchange File Format"). - -`AF_QUERY_IMPLEMENTED`:: Request a boolean value indicating whether the -format is implemented for reading and writing in the Audio File Library. - -`AF_QUERY_ID_COUNT`:: Request the total number of formats implemented. - -`AF_QUERY_IDS`:: Request an integer array of the id token values of all -implemented file formats. - -`AF_QUERY_COMPRESSION_TYPES`:: Used with the selector AF_QUERY_VALUE_COUNT -in 'arg2', this will return a long integer containing the number of -compression schemes available for use within the format specified in 'arg3'. -Used with selector `AF_QUERY_VALUES`, it returns a pointer to an integer -array containing the compression id values of the compression schemes -supported by the format specified in 'arg3'. - -`AF_QUERY_SAMPLE_FORMATS`:: Used with the selector AF_QUERY_DEFAULT in 'arg2', -this will return the default sample format for the file format specified in -'arg3'. - -`AF_QUERY_SAMPLE_SIZES`:: Used with selector AF_QUERY_DEFAULT in 'arg2', this -will return the default sample width for the file format specified in 'arg3'. - - -For `AF_QUERYTYPE_INST`, the following selectors are valid for 'arg1': - -`AF_QUERY_SUPPORTED`:: Request a boolean value indicating whether -the file format in 'arg2' supports instruments. - -`AF_QUERY_MAX_NUMBER`:: Request an integer value indicating the -maximum number of instruments supported by the file format in 'arg2'. - - -For `AF_QUERYTYPE_INSTPARAM`, the following selectors are valid for 'arg1': - -`AF_QUERY_SUPPORTED`:: Request a boolean value indicating whether -the file format in 'arg2' supports instrument parameters. - -`AF_QUERY_ID_COUNT`:: Request an integer value indicating the number -of instrument parameters supported by the file format in 'arg2'. - -`AF_QUERY_IDS`:: Request an integer array containing the instrument -parameter values for the file format in 'arg2'. - -`AF_QUERY_TYPE`:: For the file format in 'arg2', request the type -of the instrument parameter in 'arg3'. - -`AF_QUERY_NAME`:: For the file format in 'arg2', request the name -of the instrument parameter in 'arg3'. - -`AF_QUERY_DEFAULT`:: For the file format in 'arg2', request the -default value of the instrument parameter in 'arg3'. - - -ERRORS ------- -afQuery can produce the following errors: - -`AF_BAD_QUERYTYPE`:: The query type is unsupported. -`AF_BAD_QUERY`:: The arguments to the query are bad. - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afReadFrames.3.txt b/tools/audiofile-0.3.6/docs/afReadFrames.3.txt deleted file mode 100644 index 3c080ee3..00000000 --- a/tools/audiofile-0.3.6/docs/afReadFrames.3.txt +++ /dev/null @@ -1,49 +0,0 @@ -afReadFrames(3) -=============== - -NAME ----- -afReadFrames - read sample frames from a track in an audio file - -SYNOPSIS --------- - #include - - AFframecount afReadFrames(AFfilehandle file, int track, void *data, - int count); - -DESCRIPTION ------------ -`afReadFrames` attempts to read up to 'count' frames of audio data from -the audio file handle 'file' into the buffer at 'data'. - -PARAMETERS ----------- -'file' is a valid file handle returned by linkaf:afOpenFile[3]. - -'track' is always `AF_DEFAULT_TRACK` for all currently supported file formats. - -'data' is a buffer of storing 'count' frames of audio sample data. - -'count' is the number of sample frames to be read. - -RETURN VALUE ------------- -`afReadFrames` returns the number of frames successfully read from 'file'. - -ERRORS ------- -`afReadFrames` can produce these errors: - -`AF_BAD_FILEHANDLE`:: the file handle was invalid -`AF_BAD_TRACKID`:: the track parameter is not `AF_DEFAULT_TRACK` -`AF_BAD_READ`:: reading audio data from the file failed -`AF_BAD_LSEEK`:: seeking within the file failed - -SEE ALSO --------- -linkaf:afWriteFrames[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afReadMisc.3.txt b/tools/audiofile-0.3.6/docs/afReadMisc.3.txt deleted file mode 100644 index b89ac41e..00000000 --- a/tools/audiofile-0.3.6/docs/afReadMisc.3.txt +++ /dev/null @@ -1,55 +0,0 @@ -afReadMisc(3) -============= - -NAME ----- -afReadMisc, afWriteMisc, afSeekMisc - access miscellaneous metadata in an audio file - -SYNOPSIS --------- - #include - - int afReadMisc (AFfilehandle file, int miscid, void *buffer, int nbytes); - - int afWriteMisc (AFfilehandle file, int miscid, const void *buffer, int nbytes); - - int afSeekMisc (AFfilehandle file, int miscid, int offbytes); - -DESCRIPTION ------------ -`afReadMisc` reads up to 'nbytes' from the miscellaneous data chunk -identified by 'miscid' in 'file'. - -`afWriteMisc` writes up to 'nbytes' to the miscellaneous data chunk -identified by 'miscid' in 'file'. - -`afSeekMisc` changes the current offset within the miscellaneous data -chunk identified by 'miscid' to the offset 'offbytes'. - -RETURN VALUE ------------- -`afReadMisc` returns the number of bytes read from the specified -miscellaneous chunk into the buffer referred to by 'buffer'. - -`afWriteMisc` returns the number of bytes written to the specified -miscellaneous chunk from the buffer referred to by 'buffer'. - -`afSeekMisc` returns the new location of the logical data pointer as -measured as an offset in bytes from the beginning of the miscellaneous -chunk's data area. - -ERRORS ------- -`afReadMisc`, `afWriteMisc`, and `afSeekMisc` can produce the following -error codes: - -* `AF_BAD_READ` -* `AF_BAD_WRITE` -* `AF_BAD_MISCSEEK` -* `AF_BAD_MISCID` -* `AF_BAD_TRACKID` -* `AF_BAD_FILEHANDLE` - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afSeekFrame.3.txt b/tools/audiofile-0.3.6/docs/afSeekFrame.3.txt deleted file mode 100644 index 18e82617..00000000 --- a/tools/audiofile-0.3.6/docs/afSeekFrame.3.txt +++ /dev/null @@ -1,56 +0,0 @@ -afSeekFrame(3) -============== - -NAME ----- -afSeekFrame, afTellFrame - update or access the current sample frame -position for a track in an audio file - -SYNOPSIS --------- - #include - - AFframecount afSeekFrame(AFfilehandle file, int track, - AFframecount frameOffset); - - AFframecount afTellFrame(AFfilehandle file, int track); - -PARAMETERS ----------- -'file' is a valid audio file handle created by linkaf:afOpenFile[3]. - -'track' identifies an audio track within the file. `track` is always -`AF_DEFAULT_TRACK` for all currently supported audio file formats. - -'frameOffset' is a sample frame offset. Valid sample frame offsets must -be greater than or equal to zero and strictly less than the number of -sample frames contained within the specified audio track. The special -value `-1` is also allowed. - -DESCRIPTION ------------ -`afSeekFrame` moves the logical file position for a specified audio -track to a desired sample frame location. If `frameOffset` is `-1`, -`afSeekFrame` will not modify the current file offset and will instead -return the current file position. - -`afTellFrame` returns current file position in sample frames. - -RETURN VALUE ------------- -On success, `afSeekFrame` and `afTellFrame` will return the current file -position as measured in sample frames from the start of the audio -track. On failure, `afSeekFrame` and `afTellFrame` will return the value -`-1`. - -ERRORS ------- -The following errors can be generated by `afSeekFrame` or `afTellFrame`: - -`AF_BAD_FILEHANDLE`:: `file` does not represent a valid file handle. -`AF_BAD_TRACK`:: `track` does not identify a valid track. -`AF_BAD_LSEEK`:: A call to `lseek` failed. - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afSetErrorHandler.3.txt b/tools/audiofile-0.3.6/docs/afSetErrorHandler.3.txt deleted file mode 100644 index f41e292f..00000000 --- a/tools/audiofile-0.3.6/docs/afSetErrorHandler.3.txt +++ /dev/null @@ -1,30 +0,0 @@ -afSetErrorHandler(3) -==================== - -NAME ----- -afSetErrorHandler - install a custom error handling routine - -SYNOPSIS --------- - #include - - AFerrfunc afSetErrorHandler (AFerrfunc errorFunction); - -PARAMETERS ----------- -'errorFunction' is a pointer to an error handling function. - -DESCRIPTION ------------ -`afSetErrorHandler` allows the user to install an error handling function -overriding the default function. - -RETURN VALUE ------------- -The value returned from `afSetErrorHandler` is a pointer to the previous -error handling function. - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afSetVirtualSampleFormat.3.txt b/tools/audiofile-0.3.6/docs/afSetVirtualSampleFormat.3.txt deleted file mode 100644 index 766f67e3..00000000 --- a/tools/audiofile-0.3.6/docs/afSetVirtualSampleFormat.3.txt +++ /dev/null @@ -1,62 +0,0 @@ -afSetVirtualSampleFormat(3) -=========================== - -NAME ----- -afSetVirtualByteOrder, afSetVirtualChannels, afSetVirtualPCMMapping, -afSetVirtualSampleFormat - set the virtual data format for a track in -an audio file - -SYNOPSIS --------- - #include - - int afSetVirtualByteOrder (AFfilehandle file, int track, int byteOrder); - - int afSetVirtualChannels (AFfilehandle file, int track, int channels); - - int afSetVirtualSampleFormat (AFfilehandle file, int track, - int sampleFormat, int sampleWidth); - - int afSetVirtualPCMMapping (AFfilehandle file, int track, - double slope, double intercept, double minclip, double maxclip); - -PARAMETERS ----------- -* 'file' is an AFfilehandle which refers to an open audio file and is - usually created by afOpenFile. - -* 'track' is an integer which identifies a particular track in an open - audio file. The only valid track is `AF_DEFAULT_TRACK` for all - currently supported file formats. - -* 'sampleFormat' is an integer which denotes a virtual sample format. - Valid values are `AF_SAMPFMT_TWOSCOMP`, `AF_SAMPFMT_UNSIGNED`, - `AF_SAMPFMT_FLOAT`, and `AF_SAMPFMT_DOUBLE`. - -* 'sampleWidth' is a positive integer which specifies the number of bits - in a sample. - -* 'channels' is a positive integer which specifies the number of - interleaved audio channels in the given audio track. - -* 'byteOrder' is an integer which specifies the virtual byte order of - samples in the given audio track. 'byteOrder' can be either - `AF_BYTEORDER_BIGENDIAN` or `AF_BYTEORDER_LITTLEENDIAN`. - -* 'slope' and 'intercept' are double-precision floating point values which - indicate the audio data sample slope and zero-crossing value, - respectively, for the given sample format. - -* 'minclip' and 'maxclip' are double-precision floating point values - which indicates the minimum or maximum sample values to be returned. - Any values less than 'minclip' will be set to 'minclip', and any values - greater than 'maxclip' will be set to 'maxclip'. - -RETURN VALUE ------------- -These functions return 0 for success and -1 for failure. - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/afWriteFrames.3.txt b/tools/audiofile-0.3.6/docs/afWriteFrames.3.txt deleted file mode 100644 index 393d82e0..00000000 --- a/tools/audiofile-0.3.6/docs/afWriteFrames.3.txt +++ /dev/null @@ -1,50 +0,0 @@ -afWriteFrames(3) -================ - -NAME ----- -afWriteFrames - write sample frames to a track in an audio file - -SYNOPSIS --------- - #include - - AFframecount afWriteFrames(AFfilehandle file, int track, const void *data, - AFframecount count); - -DESCRIPTION ------------ -`afWriteFrames` attempts to write up to 'count' frames of audio data -from the buffer 'data' to the audio file handle 'file'. - -PARAMETERS ----------- -'file' is a valid file handle returned by linkaf:afOpenFile[3]. - -'track' is always `AF_DEFAULT_TRACK` for all currently supported file formats. - -'data' is a buffer of sample frames to be written to the file. - -'count' is the number of sample frames to be written. - -RETURN VALUE ------------- -`afWriteFrames` returns the number of sample frames successfully written -to 'file'. - -ERRORS ------- -`afWriteFrames` can produce these errors: - -`AF_BAD_FILEHANDLE`:: the file handle was invalid -`AF_BAD_TRACKID`:: the track is not `AF_DEFAULT_TRACK` -`AF_BAD_WRITE`:: writing audio data to the file failed -`AF_BAD_LSEEK`:: seeking within the file failed - -SEE ALSO --------- -linkaf:afReadFrames[3] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/asciidoc.conf b/tools/audiofile-0.3.6/docs/asciidoc.conf deleted file mode 100644 index 100932fd..00000000 --- a/tools/audiofile-0.3.6/docs/asciidoc.conf +++ /dev/null @@ -1,23 +0,0 @@ -# -# Usage: linkaf:command[manpage-section] -# -# Note, {0} is the manpage section, while {target} is the command. -# -# Show Audio File Library link as: (

); if section is -# defined, else just show the command. - -[macros] -(?su)[\\]?(?Plinkaf):(?P\S*?)\[(?P.*?)\]= - -ifdef::backend-docbook[] -[linkaf-inlinemacro] -{0%{target}} -{0#} -{0#{target}{0}} -{0#} -endif::backend-docbook[] - -ifdef::backend-html4[] -[linkaf-inlinemacro] -{target}({0}) -endif::backend-html4[] diff --git a/tools/audiofile-0.3.6/docs/sfconvert.1.txt b/tools/audiofile-0.3.6/docs/sfconvert.1.txt deleted file mode 100644 index c1a12841..00000000 --- a/tools/audiofile-0.3.6/docs/sfconvert.1.txt +++ /dev/null @@ -1,70 +0,0 @@ -sfconvert(1) -============ - -NAME ----- -sfconvert - convert audio files - -SYNOPSIS --------- -*sfconvert* 'infile' 'outfile' ['output options'] - -DESCRIPTION ------------ -The `sfconvert` command converts an audio file to another file format or data format. - -OPTIONS -------- -The following keywords specify the format of the output sound file: - -`format` 'f':: - Output file format. 'f' must be one of the following: -[horizontal] - `aiff`::: Audio Interchange File Format - `aifc`::: AIFF-C - `next`::: NeXT/Sun .snd/.au Format - `wave`::: MS RIFF WAVE - `bicsf`::: Berkeley/IRCAM/CARL Sound File Format - `smp`::: Sample Vision Format - `voc`::: Creative Voice File Format - `nist`::: NIST SPHERE Format - `caf`::: Core Audio Format - `flac`::: FLAC -`compression` 'c':: -[horizontal] - `ulaw`::: G.711 mu-law - `alaw`::: G.711 A-law - `ima`::: IMA ADPCM - `msadpcm`::: Microsoft ADPCM - `flac`::: FLAC - `alac`::: Apple Lossless Audio Codec -`byteorder` 'e':: - Output byte order. 'e' may be either `big` or `little`. -`channels` 'n':: - Number of output channels. 'n' is 1 for mono, and 2 for stereo. -`integer` 'n' 's':: - Convert to integer audio data. 'n' indicates the output sample width - in bits. 's' specifies the sample format and may be either `2scomp` - for 2's complement signed data or `unsigned` for unsigned data. -`float` 'm':: - Convert to floating-point audio data with a maximum amplitude of - 'm' (usually `1.0`). The `integer` and `float` options are mutually - exclusive. - -The following options take no additional arguments: - -`--help`:: -`-h`:: -Print help message. - -`--version`:: -`-v`:: -Print version information. - -SEE ALSO --------- -linkaf:sfinfo[1] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/docs/sfinfo.1.txt b/tools/audiofile-0.3.6/docs/sfinfo.1.txt deleted file mode 100644 index a8b101db..00000000 --- a/tools/audiofile-0.3.6/docs/sfinfo.1.txt +++ /dev/null @@ -1,76 +0,0 @@ -sfinfo(1) -========= - -NAME ----- -sfinfo - display information about audio files - -SYNOPSIS --------- -*sfinfo* ['options'] 'audio files'... - -DESCRIPTION ------------ -`sfinfo` prints information about the specified audio files, including -file format, sample rate, duration, and audio data format. - -By default `sfinfo` displays information in a longer, multi-line format; -specifying the --short or -s option produces a short, single-line summary. - -Any files which are not recognized as valid audio files will be ignored -unless the --reporterror or -r option is given. The file formats -currently supported by `sfinfo` are AIFF, AIFF-C, NeXT/Sun .snd/.au, -WAVE, Berkeley/IRCAM/CARL Sound File, AVR, Amiga IFF/8SVX, Sample Vision, -Creative Voice File, NIST SPHERE, and Core Audio Format. - -OPTIONS -------- - -`--short`:: -`-s`:: -Print short single-line summary of each recognized audio file. - -`--reporterror`:: -`-r`:: -Print an error message if any of the specified files are not recognized -as valid audio files. - -`--help`:: -`-h`:: -Print help message. - -`--version`:: -`-v`:: -Print version information. - -EXAMPLES --------- -Display summary of an audio file: - ----- -% sfinfo drum.aiff -File Name drum.aiff -File Format Audio Interchange File Format (aiff) -Data Format 16-bit integer (2's complement, big endian) -Audio Data 1569972 bytes begins at offset 54 (36 hex) - 2 channels, 392493 frames -Sampling Rate 44100.00 Hz -Duration 8.900 seconds ----- - -List all recognized audio files in the current directory using -the short output format: - ----- -% sfinfo -s * - 9.60s 44100.00 aiff 1ch 16b -- bass.aiff - 8.90s 44100.00 aiff 2ch 16b -- drum.aiff ----- - -SEE ALSO --------- -linkaf:sfconvert[1] - -AUTHOR ------- -Michael Pruett diff --git a/tools/audiofile-0.3.6/examples/.deps/adddcoffset.Po b/tools/audiofile-0.3.6/examples/.deps/adddcoffset.Po deleted file mode 100644 index fba7d664..00000000 --- a/tools/audiofile-0.3.6/examples/.deps/adddcoffset.Po +++ /dev/null @@ -1,52 +0,0 @@ -adddcoffset.o: adddcoffset.c \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - ../libaudiofile/audiofile.h ../libaudiofile/aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -../libaudiofile/audiofile.h: -../libaudiofile/aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: diff --git a/tools/audiofile-0.3.6/examples/.deps/alsaplay.Po b/tools/audiofile-0.3.6/examples/.deps/alsaplay.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/examples/.deps/alsaplay.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/examples/.deps/irixread.Po b/tools/audiofile-0.3.6/examples/.deps/irixread.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/examples/.deps/irixread.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/examples/.deps/irixtestloop.Po b/tools/audiofile-0.3.6/examples/.deps/irixtestloop.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/examples/.deps/irixtestloop.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/examples/.deps/linuxtest.Po b/tools/audiofile-0.3.6/examples/.deps/linuxtest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/examples/.deps/linuxtest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/examples/.deps/osxplay.Po b/tools/audiofile-0.3.6/examples/.deps/osxplay.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/examples/.deps/osxplay.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/examples/.deps/power.Po b/tools/audiofile-0.3.6/examples/.deps/power.Po deleted file mode 100644 index 394f2aa5..00000000 --- a/tools/audiofile-0.3.6/examples/.deps/power.Po +++ /dev/null @@ -1,55 +0,0 @@ -power.o: power.c ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h \ - ../libaudiofile/audiofile.h ../libaudiofile/aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h: -../libaudiofile/audiofile.h: -../libaudiofile/aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: diff --git a/tools/audiofile-0.3.6/examples/.deps/sgi.Po b/tools/audiofile-0.3.6/examples/.deps/sgi.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/examples/.deps/sgi.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/examples/.libs/adddcoffset_ltshwrapper b/tools/audiofile-0.3.6/examples/.libs/adddcoffset_ltshwrapper deleted file mode 100644 index 2c3f19c2..00000000 --- a/tools/audiofile-0.3.6/examples/.libs/adddcoffset_ltshwrapper +++ /dev/null @@ -1,213 +0,0 @@ -#! /bin/sh - -# adddcoffset - temporary wrapper script for .libs/adddcoffset.exe -# Generated by libtool (GNU libtool) 2.4.6 -# -# The adddcoffset program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command="" - -# This environment variable determines our operation mode. -if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then - # install mode needs the following variables: - generated_by_libtool_version='2.4.6' - notinst_deplibs=' ../libaudiofile/libaudiofile.la' -else - # When we are sourced in execute mode, $file and $ECHO are already set. - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - file="$0" - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - ECHO="printf %s\\n" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string --lt- -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's ../libtool value, followed by yes. -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=$0 - shift - for lt_opt - do - case "$lt_opt" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` - test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. - lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` - cat "$lt_dump_D/$lt_dump_F" - exit 0 - ;; - --lt-*) - $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n "$lt_option_debug"; then - echo "adddcoffset.exe:adddcoffset:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - $ECHO "adddcoffset.exe:adddcoffset:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" - lt_dump_args_N=`expr $lt_dump_args_N + 1` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ - - if test -n "$lt_option_debug"; then - $ECHO "adddcoffset.exe:adddcoffset:$LINENO: newargv[0]: $progdir/$program" 1>&2 - func_lt_dump_args ${1+"$@"} 1>&2 - fi - exec "$progdir/$program" ${1+"$@"} - - $ECHO "$0: cannot exec $program $*" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from $@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case " $* " in - *\ --lt-*) - for lt_wr_arg - do - case $lt_wr_arg in - --lt-*) ;; - *) set x "$@" "$lt_wr_arg"; shift;; - esac - shift - done ;; - esac - func_exec_program_core ${1+"$@"} -} - - # Parse options - func_parse_lt_options "$0" ${1+"$@"} - - # Find the directory that this script lives in. - thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` - test "x$thisdir" = "x$file" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` - while test -n "$file"; do - destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` - - # If there was a directory component, then change thisdir. - if test "x$destdir" != "x$file"; then - case "$destdir" in - [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; - *) thisdir="$thisdir/$destdir" ;; - esac - fi - - file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` - file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=yes - if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then - # special case for '.' - if test "$thisdir" = "."; then - thisdir=`pwd` - fi - # remove .libs from thisdir - case "$thisdir" in - *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; - .libs ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=`cd "$thisdir" && pwd` - test -n "$absdir" && thisdir="$absdir" - - program='adddcoffset.exe' - progdir="$thisdir/.libs" - - - if test -f "$progdir/$program"; then - # Add the dll search path components to the executable PATH - PATH=/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:/mingw64/lib:/mingw64/bin:$PATH - - # Add our own library path to PATH - PATH="/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:$PATH" - - # Some systems cannot cope with colon-terminated PATH - # The second colon is a workaround for a bug in BeOS R4 sed - PATH=`$ECHO "$PATH" | /usr/bin/sed 's/::*$//'` - - export PATH - - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - # Run the actual program with our arguments. - func_exec_program ${1+"$@"} - fi - else - # The program doesn't exist. - $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 - $ECHO "This script is just a wrapper for $program." 1>&2 - $ECHO "See the libtool documentation for more information." 1>&2 - exit 1 - fi -fi diff --git a/tools/audiofile-0.3.6/examples/.libs/lt-adddcoffset.c b/tools/audiofile-0.3.6/examples/.libs/lt-adddcoffset.c deleted file mode 100644 index 31f2fd79..00000000 --- a/tools/audiofile-0.3.6/examples/.libs/lt-adddcoffset.c +++ /dev/null @@ -1,1056 +0,0 @@ - -/* ./.libs/lt-adddcoffset.c - temporary wrapper executable for .libs/adddcoffset.exe - Generated by libtool (GNU libtool) 2.4.6 - - The adddcoffset program cannot be directly executed until all the libtool - libraries that it depends on are installed. - - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. -*/ -#ifdef _MSC_VER -# define _CRT_SECURE_NO_DEPRECATE 1 -#endif -#include -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# if defined(__STRICT_ANSI__) && !defined(__MINGW64_VERSION_MAJOR) || defined(_POSIX_) -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) -# define externally_visible volatile -#else -# define externally_visible __attribute__((externally_visible)) volatile -#endif -externally_visible const char * MAGIC_EXE = "%%%MAGIC EXE variable%%%"; -const char * LIB_PATH_VARNAME = "PATH"; -const char * LIB_PATH_VALUE = "I:\\Development\\sm64pc\\tools\\audiofile-0.3.6\\libaudiofile\\.libs;"; -const char * EXE_PATH_VARNAME = "PATH"; -const char * EXE_PATH_VALUE = "I:\\Development\\sm64pc\\tools\\audiofile-0.3.6\\libaudiofile\\.libs;I:\\Development\\MSYS2\\mingw64\\lib;I:\\Development\\MSYS2\\mingw64\\bin;"; -const char * TARGET_PROGRAM_NAME = "adddcoffset.exe"; /* hopefully, no .exe */ - -#define LTWRAPPER_OPTION_PREFIX "--lt-" - -static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; -static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; -static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; - -int -main (int argc, char *argv[]) -{ - char **newargz; - int newargc; - char *tmp_pathspec; - char *actual_cwrapper_path; - char *actual_cwrapper_name; - char *target_name; - char *lt_argv_zero; - int rval = 127; - - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - newargz = XMALLOC (char *, (size_t) argc + 1); - - /* very simple arg parsing; don't want to rely on getopt - * also, copy all non cwrapper options to newargz, except - * argz[0], which is handled differently - */ - newargc=0; - for (i = 1; i < argc; i++) - { - if (STREQ (argv[i], dumpscript_opt)) - { - setmode(1,_O_BINARY); - lt_dump_script (stdout); - return 0; - } - if (STREQ (argv[i], debug_opt)) - { - lt_debug = 1; - continue; - } - if (STREQ (argv[i], ltwrapper_option_prefix)) - { - /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX - namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then - report an error. Otherwise, targets might begin to believe - they are allowed to use options in the LTWRAPPER_OPTION_PREFIX - namespace. The first time any user complains about this, we'll - need to make LTWRAPPER_OPTION_PREFIX a configure-time option - or a configure.ac-settable value. - */ - lt_fatal (__FILE__, __LINE__, - "unrecognized %s option: '%s'", - ltwrapper_option_prefix, argv[i]); - } - /* otherwise ... */ - newargz[++newargc] = xstrdup (argv[i]); - } - newargz[++newargc] = NULL; - - /* The GNU banner must be the first non-error debug message */ - lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU libtool) 2.4.6\n"); - lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); - lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); - - tmp_pathspec = find_executable (argv[0]); - if (tmp_pathspec == NULL) - lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (before symlink chase) at: %s\n", - tmp_pathspec); - - actual_cwrapper_path = chase_symlinks (tmp_pathspec); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (after symlink chase) at: %s\n", - actual_cwrapper_path); - XFREE (tmp_pathspec); - - actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); - strendzap (actual_cwrapper_path, actual_cwrapper_name); - - /* wrapper name transforms */ - strendzap (actual_cwrapper_name, ".exe"); - tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); - XFREE (actual_cwrapper_name); - actual_cwrapper_name = tmp_pathspec; - tmp_pathspec = 0; - - /* target_name transforms -- use actual target program name; might have lt- prefix */ - target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); - strendzap (target_name, ".exe"); - tmp_pathspec = lt_extend_str (target_name, ".exe", 1); - XFREE (target_name); - target_name = tmp_pathspec; - tmp_pathspec = 0; - - lt_debugprintf (__FILE__, __LINE__, - "(main) libtool target name: %s\n", - target_name); - newargz[0] = - XMALLOC (char, (strlen (actual_cwrapper_path) + - strlen (".libs") + 1 + strlen (actual_cwrapper_name) + 1)); - strcpy (newargz[0], actual_cwrapper_path); - strcat (newargz[0], ".libs"); - strcat (newargz[0], "/"); - /* stop here, and copy so we don't have to do this twice */ - tmp_pathspec = xstrdup (newargz[0]); - - /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ - strcat (newargz[0], actual_cwrapper_name); - - /* DO want the lt- prefix here if it exists, so use target_name */ - lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); - XFREE (tmp_pathspec); - tmp_pathspec = NULL; - { - char* p; - while ((p = strchr (newargz[0], '\\')) != NULL) - { - *p = '/'; - } - while ((p = strchr (lt_argv_zero, '\\')) != NULL) - { - *p = '/'; - } - } - XFREE (target_name); - XFREE (actual_cwrapper_path); - XFREE (actual_cwrapper_name); - - lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ - lt_setenv ("DUALCASE", "1"); /* for MSK sh */ - /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must - be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) - because on Windows, both *_VARNAMEs are PATH but uninstalled - libraries must come first. */ - lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); - lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); - - lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", - nonnull (lt_argv_zero)); - for (i = 0; i < newargc; i++) - { - lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", - i, nonnull (newargz[i])); - } - - /* execv doesn't actually work on mingw as expected on unix */ - newargz = prepare_spawn (newargz); - rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ - lt_debugprintf (__FILE__, __LINE__, - "(main) failed to launch target \"%s\": %s\n", - lt_argv_zero, nonnull (strerror (errno))); - return 127; - } - return rval; -} - -void * -xmalloc (size_t num) -{ - void *p = (void *) malloc (num); - if (!p) - lt_fatal (__FILE__, __LINE__, "memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), - string) : NULL; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined HAVE_DOS_BASED_FILE_SYSTEM - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char) name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable (const char *path) -{ - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -void lt_dump_script (FILE* f) -{ - fputs ("#! /bin/sh\n", f); - fputs ("\n", f); - fputs ("# adddcoffset - temporary wrapper script for .libs/adddcoffset.exe\n", f); - fputs ("# Generated by libtool (GNU libtool) 2.4.6\n", f); - fputs ("#\n", f); - fputs ("# The adddcoffset program cannot be directly executed until all the libtool\n", f); - fputs ("# libraries that it depends on are installed.\n", f); - fputs ("#\n", f); - fputs ("# This wrapper script should never be moved out of the build directory.\n", f); - fputs ("# If it is, it will not operate correctly.\n", f); - fputs ("\n", f); - fputs ("# Sed substitution that helps us do robust quoting. It backslashifies\n", f); - fputs ("# metacharacters that are still active within double-quoted strings.\n", f); - fputs ("sed_quote_subst='s|\\([`\"$\\\\]\\)|\\\\\\1|g'\n", f); - fputs ("\n", f); - fputs ("# Be Bourne compatible\n", f); - fputs ("if test -n \"${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then\n", f); - fputs (" emulate sh\n", f); - fputs (" NULLCMD=:\n", f); - fputs (" # Zsh 3.x and 4.x performs word splitting on ${1+\"$@\"}, which\n", f); - fputs (" # is contrary to our usage. Disable this feature.\n", f); - fputs (" alias -g '${1+\"$@\"}'='\"$@\"'\n", f); - fputs (" setopt NO_GLOB_SUBST\n", f); - fputs ("else\n", f); - fputs (" case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac\n", f); - fputs ("fi\n", f); - fputs ("BIN_SH=xpg4; export BIN_SH # for Tru64\n", f); - fputs ("DUALCASE=1; export DUALCASE # for MKS sh\n", f); - fputs ("\n", f); - fputs ("# The HP-UX ksh and POSIX shell print the target directory to stdout\n", f); - fputs ("# if CDPATH is set.\n", f); - fputs ("(unset CDPATH) >/dev/null 2>&1 && unset CDPATH\n", f); - fputs ("\n", f); - fputs ("relink_command=\"\"\n", f); - fputs ("\n", f); - fputs ("# This environment variable determines our operation mode.\n", f); - fputs ("if test \"$libtool_install_magic\" = \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" # install mode needs the following variables:\n", f); - fputs (" generated_by_libtool_version='2.4.6'\n", f); - fputs (" notinst_deplibs=' ../libaudiofile/libaudiofile.la'\n", f); - fputs ("else\n", f); - fputs (" # When we are sourced in execute mode, $file and $ECHO are already set.\n", f); - fputs (" if test \"$libtool_execute_magic\" != \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" file=\"$0\"\n", f); - fputs ("\n", f); - fputs ("# A function that is used when there is no print builtin or printf.\n", f); - fputs ("func_fallback_echo ()\n", f); - fputs ("{\n", f); - fputs (" eval 'cat <<_LTECHO_EOF\n", f); - fputs ("$1\n", f); - fputs ("_LTECHO_EOF'\n", f); - fputs ("}\n", f); - fputs (" ECHO=\"printf %s\\\\n\"\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs ("# Very basic option parsing. These options are (a) specific to\n", f); - fputs ("# the libtool wrapper, (b) are identical between the wrapper\n", f); - fputs ("# /script/ and the wrapper /executable/ that is used only on\n", f); - fputs ("# windows platforms, and (c) all begin with the string --lt-\n", f); - fputs ("# (application programs are unlikely to have options that match\n", f); - fputs ("# this pattern).\n", f); - fputs ("#\n", f); - fputs ("# There are only two supported options: --lt-debug and\n", f); - fputs ("# --lt-dump-script. There is, deliberately, no --lt-help.\n", f); - fputs ("#\n", f); - fputs ("# The first argument to this parsing function should be the\n", f); - fputs ("# script's ../libtool value, followed by yes.\n", f); - fputs ("lt_option_debug=\n", f); - fputs ("func_parse_lt_options ()\n", f); - fputs ("{\n", f); - fputs (" lt_script_arg0=$0\n", f); - fputs (" shift\n", f); - fputs (" for lt_opt\n", f); - fputs (" do\n", f); - fputs (" case \"$lt_opt\" in\n", f); - fputs (" --lt-debug) lt_option_debug=1 ;;\n", f); - fputs (" --lt-dump-script)\n", f); - fputs (" lt_dump_D=`$ECHO \"X$lt_script_arg0\" | /usr/bin/sed -e 's/^X//' -e 's%/[", f); - fputs ("^/]*$%%'`\n", f); - fputs (" test \"X$lt_dump_D\" = \"X$lt_script_arg0\" && lt_dump_D=.\n", f); - fputs (" lt_dump_F=`$ECHO \"X$lt_script_arg0\" | /usr/bin/sed -e 's/^X//' -e 's%^.", f); - fputs ("*/%%'`\n", f); - fputs (" cat \"$lt_dump_D/$lt_dump_F\"\n", f); - fputs (" exit 0\n", f); - fputs (" ;;\n", f); - fputs (" --lt-*)\n", f); - fputs (" $ECHO \"Unrecognized --lt- option: '$lt_opt'\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs (" ;;\n", f); - fputs (" esac\n", f); - fputs (" done\n", f); - fputs ("\n", f); - fputs (" # Print the debug banner immediately:\n", f); - fputs (" if test -n \"$lt_option_debug\"; then\n", f); - fputs (" echo \"adddcoffset.exe:adddcoffset:$LINENO: libtool wrapper (GNU libtool) 2.", f); - fputs ("4.6\" 1>&2\n", f); - fputs (" fi\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# Used when --lt-debug. Prints its arguments to stdout\n", f); - fputs ("# (redirection is the responsibility of the caller)\n", f); - fputs ("func_lt_dump_args ()\n", f); - fputs ("{\n", f); - fputs (" lt_dump_args_N=1;\n", f); - fputs (" for lt_arg\n", f); - fputs (" do\n", f); - fputs (" $ECHO \"adddcoffset.exe:adddcoffset:$LINENO: newargv[$lt_dump_args_N]: $lt_a", f); - fputs ("rg\"\n", f); - fputs (" lt_dump_args_N=`expr $lt_dump_args_N + 1`\n", f); - fputs (" done\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# Core function for launching the target application\n", f); - fputs ("func_exec_program_core ()\n", f); - fputs ("{\n", f); - fputs ("\n", f); - fputs (" if test -n \"$lt_option_debug\"; then\n", f); - fputs (" $ECHO \"adddcoffset.exe:adddcoffset:$LINENO: newargv[0]: $progdir/$progr", f); - fputs ("am\" 1>&2\n", f); - fputs (" func_lt_dump_args ${1+\"$@\"} 1>&2\n", f); - fputs (" fi\n", f); - fputs (" exec \"$progdir/$program\" ${1+\"$@\"}\n", f); - fputs ("\n", f); - fputs (" $ECHO \"$0: cannot exec $program $*\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# A function to encapsulate launching the target application\n", f); - fputs ("# Strips options in the --lt-* namespace from $@ and\n", f); - fputs ("# launches target application with the remaining arguments.\n", f); - fputs ("func_exec_program ()\n", f); - fputs ("{\n", f); - fputs (" case \" $* \" in\n", f); - fputs (" *\\ --lt-*)\n", f); - fputs (" for lt_wr_arg\n", f); - fputs (" do\n", f); - fputs (" case $lt_wr_arg in\n", f); - fputs (" --lt-*) ;;\n", f); - fputs (" *) set x \"$@\" \"$lt_wr_arg\"; shift;;\n", f); - fputs (" esac\n", f); - fputs (" shift\n", f); - fputs (" done ;;\n", f); - fputs (" esac\n", f); - fputs (" func_exec_program_core ${1+\"$@\"}\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs (" # Parse options\n", f); - fputs (" func_parse_lt_options \"$0\" ${1+\"$@\"}\n", f); - fputs ("\n", f); - fputs (" # Find the directory that this script lives in.\n", f); - fputs (" thisdir=`$ECHO \"$file\" | /usr/bin/sed 's%/[^/]*$%%'`\n", f); - fputs (" test \"x$thisdir\" = \"x$file\" && thisdir=.\n", f); - fputs ("\n", f); - fputs (" # Follow symbolic links until we get to the real thisdir.\n", f); - fputs (" file=`ls -ld \"$file\" | /usr/bin/sed -n 's/.*-> //p'`\n", f); - fputs (" while test -n \"$file\"; do\n", f); - fputs (" destdir=`$ECHO \"$file\" | /usr/bin/sed 's%/[^/]*$%%'`\n", f); - fputs ("\n", f); - fputs (" # If there was a directory component, then change thisdir.\n", f); - fputs (" if test \"x$destdir\" != \"x$file\"; then\n", f); - fputs (" case \"$destdir\" in\n", f); - fputs (" [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"$destdir\" ;;\n", f); - fputs (" *) thisdir=\"$thisdir/$destdir\" ;;\n", f); - fputs (" esac\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs (" file=`$ECHO \"$file\" | /usr/bin/sed 's%^.*/%%'`\n", f); - fputs (" file=`ls -ld \"$thisdir/$file\" | /usr/bin/sed -n 's/.*-> //p'`\n", f); - fputs (" done\n", f); - fputs ("\n", f); - fputs (" # Usually 'no', except on cygwin/mingw when embedded into\n", f); - fputs (" # the cwrapper.\n", f); - fputs (" WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=yes\n", f); - fputs (" if test \"$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then\n", f); - fputs (" # special case for '.'\n", f); - fputs (" if test \"$thisdir\" = \".\"; then\n", f); - fputs (" thisdir=`pwd`\n", f); - fputs (" fi\n", f); - fputs (" # remove .libs from thisdir\n", f); - fputs (" case \"$thisdir\" in\n", f); - fputs (" *[\\\\/].libs ) thisdir=`$ECHO \"$thisdir\" | /usr/bin/sed 's%[\\\\/][^\\\\/]*$%%'`", f); - fputs (" ;;\n", f); - fputs (" .libs ) thisdir=. ;;\n", f); - fputs (" esac\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs (" # Try to get the absolute directory name.\n", f); - fputs (" absdir=`cd \"$thisdir\" && pwd`\n", f); - fputs (" test -n \"$absdir\" && thisdir=\"$absdir\"\n", f); - fputs ("\n", f); - fputs (" program='adddcoffset.exe'\n", f); - fputs (" progdir=\"$thisdir/.libs\"\n", f); - fputs ("\n", f); - fputs ("\n", f); - fputs (" if test -f \"$progdir/$program\"; then\n", f); - fputs (" # Add the dll search path components to the executable PATH\n", f); - fputs (" PATH=/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:/mingw6", f); - fputs ("4/lib:/mingw64/bin:$PATH\n", f); - fputs ("\n", f); - fputs (" # Add our own library path to PATH\n", f); - fputs (" PATH=\"/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:$PATH\"\n", f); - fputs ("\n", f); - fputs (" # Some systems cannot cope with colon-terminated PATH\n", f); - fputs (" # The second colon is a workaround for a bug in BeOS R4 sed\n", f); - fputs (" PATH=`$ECHO \"$PATH\" | /usr/bin/sed 's/::*$//'`\n", f); - fputs ("\n", f); - fputs (" export PATH\n", f); - fputs ("\n", f); - fputs (" if test \"$libtool_execute_magic\" != \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" # Run the actual program with our arguments.\n", f); - fputs (" func_exec_program ${1+\"$@\"}\n", f); - fputs (" fi\n", f); - fputs (" else\n", f); - fputs (" # The program doesn't exist.\n", f); - fputs (" $ECHO \"$0: error: '$progdir/$program' does not exist\" 1>&2\n", f); - fputs (" $ECHO \"This script is just a wrapper for $program.\" 1>&2\n", f); - fputs (" $ECHO \"See the libtool documentation for more information.\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs (" fi\n", f); - fputs ("fi\n", f); -} diff --git a/tools/audiofile-0.3.6/examples/.libs/lt-power.c b/tools/audiofile-0.3.6/examples/.libs/lt-power.c deleted file mode 100644 index 85f388f0..00000000 --- a/tools/audiofile-0.3.6/examples/.libs/lt-power.c +++ /dev/null @@ -1,1053 +0,0 @@ - -/* ./.libs/lt-power.c - temporary wrapper executable for .libs/power.exe - Generated by libtool (GNU libtool) 2.4.6 - - The power program cannot be directly executed until all the libtool - libraries that it depends on are installed. - - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. -*/ -#ifdef _MSC_VER -# define _CRT_SECURE_NO_DEPRECATE 1 -#endif -#include -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# if defined(__STRICT_ANSI__) && !defined(__MINGW64_VERSION_MAJOR) || defined(_POSIX_) -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) -# define externally_visible volatile -#else -# define externally_visible __attribute__((externally_visible)) volatile -#endif -externally_visible const char * MAGIC_EXE = "%%%MAGIC EXE variable%%%"; -const char * LIB_PATH_VARNAME = "PATH"; -const char * LIB_PATH_VALUE = "I:\\Development\\sm64pc\\tools\\audiofile-0.3.6\\libaudiofile\\.libs;"; -const char * EXE_PATH_VARNAME = "PATH"; -const char * EXE_PATH_VALUE = "I:\\Development\\sm64pc\\tools\\audiofile-0.3.6\\libaudiofile\\.libs;I:\\Development\\MSYS2\\mingw64\\lib;I:\\Development\\MSYS2\\mingw64\\bin;"; -const char * TARGET_PROGRAM_NAME = "power.exe"; /* hopefully, no .exe */ - -#define LTWRAPPER_OPTION_PREFIX "--lt-" - -static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; -static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; -static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; - -int -main (int argc, char *argv[]) -{ - char **newargz; - int newargc; - char *tmp_pathspec; - char *actual_cwrapper_path; - char *actual_cwrapper_name; - char *target_name; - char *lt_argv_zero; - int rval = 127; - - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - newargz = XMALLOC (char *, (size_t) argc + 1); - - /* very simple arg parsing; don't want to rely on getopt - * also, copy all non cwrapper options to newargz, except - * argz[0], which is handled differently - */ - newargc=0; - for (i = 1; i < argc; i++) - { - if (STREQ (argv[i], dumpscript_opt)) - { - setmode(1,_O_BINARY); - lt_dump_script (stdout); - return 0; - } - if (STREQ (argv[i], debug_opt)) - { - lt_debug = 1; - continue; - } - if (STREQ (argv[i], ltwrapper_option_prefix)) - { - /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX - namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then - report an error. Otherwise, targets might begin to believe - they are allowed to use options in the LTWRAPPER_OPTION_PREFIX - namespace. The first time any user complains about this, we'll - need to make LTWRAPPER_OPTION_PREFIX a configure-time option - or a configure.ac-settable value. - */ - lt_fatal (__FILE__, __LINE__, - "unrecognized %s option: '%s'", - ltwrapper_option_prefix, argv[i]); - } - /* otherwise ... */ - newargz[++newargc] = xstrdup (argv[i]); - } - newargz[++newargc] = NULL; - - /* The GNU banner must be the first non-error debug message */ - lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU libtool) 2.4.6\n"); - lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); - lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); - - tmp_pathspec = find_executable (argv[0]); - if (tmp_pathspec == NULL) - lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (before symlink chase) at: %s\n", - tmp_pathspec); - - actual_cwrapper_path = chase_symlinks (tmp_pathspec); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (after symlink chase) at: %s\n", - actual_cwrapper_path); - XFREE (tmp_pathspec); - - actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); - strendzap (actual_cwrapper_path, actual_cwrapper_name); - - /* wrapper name transforms */ - strendzap (actual_cwrapper_name, ".exe"); - tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); - XFREE (actual_cwrapper_name); - actual_cwrapper_name = tmp_pathspec; - tmp_pathspec = 0; - - /* target_name transforms -- use actual target program name; might have lt- prefix */ - target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); - strendzap (target_name, ".exe"); - tmp_pathspec = lt_extend_str (target_name, ".exe", 1); - XFREE (target_name); - target_name = tmp_pathspec; - tmp_pathspec = 0; - - lt_debugprintf (__FILE__, __LINE__, - "(main) libtool target name: %s\n", - target_name); - newargz[0] = - XMALLOC (char, (strlen (actual_cwrapper_path) + - strlen (".libs") + 1 + strlen (actual_cwrapper_name) + 1)); - strcpy (newargz[0], actual_cwrapper_path); - strcat (newargz[0], ".libs"); - strcat (newargz[0], "/"); - /* stop here, and copy so we don't have to do this twice */ - tmp_pathspec = xstrdup (newargz[0]); - - /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ - strcat (newargz[0], actual_cwrapper_name); - - /* DO want the lt- prefix here if it exists, so use target_name */ - lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); - XFREE (tmp_pathspec); - tmp_pathspec = NULL; - { - char* p; - while ((p = strchr (newargz[0], '\\')) != NULL) - { - *p = '/'; - } - while ((p = strchr (lt_argv_zero, '\\')) != NULL) - { - *p = '/'; - } - } - XFREE (target_name); - XFREE (actual_cwrapper_path); - XFREE (actual_cwrapper_name); - - lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ - lt_setenv ("DUALCASE", "1"); /* for MSK sh */ - /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must - be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) - because on Windows, both *_VARNAMEs are PATH but uninstalled - libraries must come first. */ - lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); - lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); - - lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", - nonnull (lt_argv_zero)); - for (i = 0; i < newargc; i++) - { - lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", - i, nonnull (newargz[i])); - } - - /* execv doesn't actually work on mingw as expected on unix */ - newargz = prepare_spawn (newargz); - rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ - lt_debugprintf (__FILE__, __LINE__, - "(main) failed to launch target \"%s\": %s\n", - lt_argv_zero, nonnull (strerror (errno))); - return 127; - } - return rval; -} - -void * -xmalloc (size_t num) -{ - void *p = (void *) malloc (num); - if (!p) - lt_fatal (__FILE__, __LINE__, "memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), - string) : NULL; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined HAVE_DOS_BASED_FILE_SYSTEM - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char) name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable (const char *path) -{ - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -void lt_dump_script (FILE* f) -{ - fputs ("#! /bin/sh\n", f); - fputs ("\n", f); - fputs ("# power - temporary wrapper script for .libs/power.exe\n", f); - fputs ("# Generated by libtool (GNU libtool) 2.4.6\n", f); - fputs ("#\n", f); - fputs ("# The power program cannot be directly executed until all the libtool\n", f); - fputs ("# libraries that it depends on are installed.\n", f); - fputs ("#\n", f); - fputs ("# This wrapper script should never be moved out of the build directory.\n", f); - fputs ("# If it is, it will not operate correctly.\n", f); - fputs ("\n", f); - fputs ("# Sed substitution that helps us do robust quoting. It backslashifies\n", f); - fputs ("# metacharacters that are still active within double-quoted strings.\n", f); - fputs ("sed_quote_subst='s|\\([`\"$\\\\]\\)|\\\\\\1|g'\n", f); - fputs ("\n", f); - fputs ("# Be Bourne compatible\n", f); - fputs ("if test -n \"${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then\n", f); - fputs (" emulate sh\n", f); - fputs (" NULLCMD=:\n", f); - fputs (" # Zsh 3.x and 4.x performs word splitting on ${1+\"$@\"}, which\n", f); - fputs (" # is contrary to our usage. Disable this feature.\n", f); - fputs (" alias -g '${1+\"$@\"}'='\"$@\"'\n", f); - fputs (" setopt NO_GLOB_SUBST\n", f); - fputs ("else\n", f); - fputs (" case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac\n", f); - fputs ("fi\n", f); - fputs ("BIN_SH=xpg4; export BIN_SH # for Tru64\n", f); - fputs ("DUALCASE=1; export DUALCASE # for MKS sh\n", f); - fputs ("\n", f); - fputs ("# The HP-UX ksh and POSIX shell print the target directory to stdout\n", f); - fputs ("# if CDPATH is set.\n", f); - fputs ("(unset CDPATH) >/dev/null 2>&1 && unset CDPATH\n", f); - fputs ("\n", f); - fputs ("relink_command=\"\"\n", f); - fputs ("\n", f); - fputs ("# This environment variable determines our operation mode.\n", f); - fputs ("if test \"$libtool_install_magic\" = \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" # install mode needs the following variables:\n", f); - fputs (" generated_by_libtool_version='2.4.6'\n", f); - fputs (" notinst_deplibs=' ../libaudiofile/libaudiofile.la'\n", f); - fputs ("else\n", f); - fputs (" # When we are sourced in execute mode, $file and $ECHO are already set.\n", f); - fputs (" if test \"$libtool_execute_magic\" != \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" file=\"$0\"\n", f); - fputs ("\n", f); - fputs ("# A function that is used when there is no print builtin or printf.\n", f); - fputs ("func_fallback_echo ()\n", f); - fputs ("{\n", f); - fputs (" eval 'cat <<_LTECHO_EOF\n", f); - fputs ("$1\n", f); - fputs ("_LTECHO_EOF'\n", f); - fputs ("}\n", f); - fputs (" ECHO=\"printf %s\\\\n\"\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs ("# Very basic option parsing. These options are (a) specific to\n", f); - fputs ("# the libtool wrapper, (b) are identical between the wrapper\n", f); - fputs ("# /script/ and the wrapper /executable/ that is used only on\n", f); - fputs ("# windows platforms, and (c) all begin with the string --lt-\n", f); - fputs ("# (application programs are unlikely to have options that match\n", f); - fputs ("# this pattern).\n", f); - fputs ("#\n", f); - fputs ("# There are only two supported options: --lt-debug and\n", f); - fputs ("# --lt-dump-script. There is, deliberately, no --lt-help.\n", f); - fputs ("#\n", f); - fputs ("# The first argument to this parsing function should be the\n", f); - fputs ("# script's ../libtool value, followed by yes.\n", f); - fputs ("lt_option_debug=\n", f); - fputs ("func_parse_lt_options ()\n", f); - fputs ("{\n", f); - fputs (" lt_script_arg0=$0\n", f); - fputs (" shift\n", f); - fputs (" for lt_opt\n", f); - fputs (" do\n", f); - fputs (" case \"$lt_opt\" in\n", f); - fputs (" --lt-debug) lt_option_debug=1 ;;\n", f); - fputs (" --lt-dump-script)\n", f); - fputs (" lt_dump_D=`$ECHO \"X$lt_script_arg0\" | /usr/bin/sed -e 's/^X//' -e 's%/[", f); - fputs ("^/]*$%%'`\n", f); - fputs (" test \"X$lt_dump_D\" = \"X$lt_script_arg0\" && lt_dump_D=.\n", f); - fputs (" lt_dump_F=`$ECHO \"X$lt_script_arg0\" | /usr/bin/sed -e 's/^X//' -e 's%^.", f); - fputs ("*/%%'`\n", f); - fputs (" cat \"$lt_dump_D/$lt_dump_F\"\n", f); - fputs (" exit 0\n", f); - fputs (" ;;\n", f); - fputs (" --lt-*)\n", f); - fputs (" $ECHO \"Unrecognized --lt- option: '$lt_opt'\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs (" ;;\n", f); - fputs (" esac\n", f); - fputs (" done\n", f); - fputs ("\n", f); - fputs (" # Print the debug banner immediately:\n", f); - fputs (" if test -n \"$lt_option_debug\"; then\n", f); - fputs (" echo \"power.exe:power:$LINENO: libtool wrapper (GNU libtool) 2.4.6\" 1>&2\n", f); - fputs (" fi\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# Used when --lt-debug. Prints its arguments to stdout\n", f); - fputs ("# (redirection is the responsibility of the caller)\n", f); - fputs ("func_lt_dump_args ()\n", f); - fputs ("{\n", f); - fputs (" lt_dump_args_N=1;\n", f); - fputs (" for lt_arg\n", f); - fputs (" do\n", f); - fputs (" $ECHO \"power.exe:power:$LINENO: newargv[$lt_dump_args_N]: $lt_arg\"\n", f); - fputs (" lt_dump_args_N=`expr $lt_dump_args_N + 1`\n", f); - fputs (" done\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# Core function for launching the target application\n", f); - fputs ("func_exec_program_core ()\n", f); - fputs ("{\n", f); - fputs ("\n", f); - fputs (" if test -n \"$lt_option_debug\"; then\n", f); - fputs (" $ECHO \"power.exe:power:$LINENO: newargv[0]: $progdir/$program\" 1>&2\n", f); - fputs (" func_lt_dump_args ${1+\"$@\"} 1>&2\n", f); - fputs (" fi\n", f); - fputs (" exec \"$progdir/$program\" ${1+\"$@\"}\n", f); - fputs ("\n", f); - fputs (" $ECHO \"$0: cannot exec $program $*\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# A function to encapsulate launching the target application\n", f); - fputs ("# Strips options in the --lt-* namespace from $@ and\n", f); - fputs ("# launches target application with the remaining arguments.\n", f); - fputs ("func_exec_program ()\n", f); - fputs ("{\n", f); - fputs (" case \" $* \" in\n", f); - fputs (" *\\ --lt-*)\n", f); - fputs (" for lt_wr_arg\n", f); - fputs (" do\n", f); - fputs (" case $lt_wr_arg in\n", f); - fputs (" --lt-*) ;;\n", f); - fputs (" *) set x \"$@\" \"$lt_wr_arg\"; shift;;\n", f); - fputs (" esac\n", f); - fputs (" shift\n", f); - fputs (" done ;;\n", f); - fputs (" esac\n", f); - fputs (" func_exec_program_core ${1+\"$@\"}\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs (" # Parse options\n", f); - fputs (" func_parse_lt_options \"$0\" ${1+\"$@\"}\n", f); - fputs ("\n", f); - fputs (" # Find the directory that this script lives in.\n", f); - fputs (" thisdir=`$ECHO \"$file\" | /usr/bin/sed 's%/[^/]*$%%'`\n", f); - fputs (" test \"x$thisdir\" = \"x$file\" && thisdir=.\n", f); - fputs ("\n", f); - fputs (" # Follow symbolic links until we get to the real thisdir.\n", f); - fputs (" file=`ls -ld \"$file\" | /usr/bin/sed -n 's/.*-> //p'`\n", f); - fputs (" while test -n \"$file\"; do\n", f); - fputs (" destdir=`$ECHO \"$file\" | /usr/bin/sed 's%/[^/]*$%%'`\n", f); - fputs ("\n", f); - fputs (" # If there was a directory component, then change thisdir.\n", f); - fputs (" if test \"x$destdir\" != \"x$file\"; then\n", f); - fputs (" case \"$destdir\" in\n", f); - fputs (" [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"$destdir\" ;;\n", f); - fputs (" *) thisdir=\"$thisdir/$destdir\" ;;\n", f); - fputs (" esac\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs (" file=`$ECHO \"$file\" | /usr/bin/sed 's%^.*/%%'`\n", f); - fputs (" file=`ls -ld \"$thisdir/$file\" | /usr/bin/sed -n 's/.*-> //p'`\n", f); - fputs (" done\n", f); - fputs ("\n", f); - fputs (" # Usually 'no', except on cygwin/mingw when embedded into\n", f); - fputs (" # the cwrapper.\n", f); - fputs (" WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=yes\n", f); - fputs (" if test \"$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then\n", f); - fputs (" # special case for '.'\n", f); - fputs (" if test \"$thisdir\" = \".\"; then\n", f); - fputs (" thisdir=`pwd`\n", f); - fputs (" fi\n", f); - fputs (" # remove .libs from thisdir\n", f); - fputs (" case \"$thisdir\" in\n", f); - fputs (" *[\\\\/].libs ) thisdir=`$ECHO \"$thisdir\" | /usr/bin/sed 's%[\\\\/][^\\\\/]*$%%'`", f); - fputs (" ;;\n", f); - fputs (" .libs ) thisdir=. ;;\n", f); - fputs (" esac\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs (" # Try to get the absolute directory name.\n", f); - fputs (" absdir=`cd \"$thisdir\" && pwd`\n", f); - fputs (" test -n \"$absdir\" && thisdir=\"$absdir\"\n", f); - fputs ("\n", f); - fputs (" program='power.exe'\n", f); - fputs (" progdir=\"$thisdir/.libs\"\n", f); - fputs ("\n", f); - fputs ("\n", f); - fputs (" if test -f \"$progdir/$program\"; then\n", f); - fputs (" # Add the dll search path components to the executable PATH\n", f); - fputs (" PATH=/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:/mingw6", f); - fputs ("4/lib:/mingw64/bin:$PATH\n", f); - fputs ("\n", f); - fputs (" # Add our own library path to PATH\n", f); - fputs (" PATH=\"/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:$PATH\"\n", f); - fputs ("\n", f); - fputs (" # Some systems cannot cope with colon-terminated PATH\n", f); - fputs (" # The second colon is a workaround for a bug in BeOS R4 sed\n", f); - fputs (" PATH=`$ECHO \"$PATH\" | /usr/bin/sed 's/::*$//'`\n", f); - fputs ("\n", f); - fputs (" export PATH\n", f); - fputs ("\n", f); - fputs (" if test \"$libtool_execute_magic\" != \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" # Run the actual program with our arguments.\n", f); - fputs (" func_exec_program ${1+\"$@\"}\n", f); - fputs (" fi\n", f); - fputs (" else\n", f); - fputs (" # The program doesn't exist.\n", f); - fputs (" $ECHO \"$0: error: '$progdir/$program' does not exist\" 1>&2\n", f); - fputs (" $ECHO \"This script is just a wrapper for $program.\" 1>&2\n", f); - fputs (" $ECHO \"See the libtool documentation for more information.\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs (" fi\n", f); - fputs ("fi\n", f); -} diff --git a/tools/audiofile-0.3.6/examples/.libs/power_ltshwrapper b/tools/audiofile-0.3.6/examples/.libs/power_ltshwrapper deleted file mode 100644 index 48fb0c7f..00000000 --- a/tools/audiofile-0.3.6/examples/.libs/power_ltshwrapper +++ /dev/null @@ -1,213 +0,0 @@ -#! /bin/sh - -# power - temporary wrapper script for .libs/power.exe -# Generated by libtool (GNU libtool) 2.4.6 -# -# The power program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command="" - -# This environment variable determines our operation mode. -if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then - # install mode needs the following variables: - generated_by_libtool_version='2.4.6' - notinst_deplibs=' ../libaudiofile/libaudiofile.la' -else - # When we are sourced in execute mode, $file and $ECHO are already set. - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - file="$0" - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - ECHO="printf %s\\n" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string --lt- -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's ../libtool value, followed by yes. -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=$0 - shift - for lt_opt - do - case "$lt_opt" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` - test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. - lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` - cat "$lt_dump_D/$lt_dump_F" - exit 0 - ;; - --lt-*) - $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n "$lt_option_debug"; then - echo "power.exe:power:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - $ECHO "power.exe:power:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" - lt_dump_args_N=`expr $lt_dump_args_N + 1` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ - - if test -n "$lt_option_debug"; then - $ECHO "power.exe:power:$LINENO: newargv[0]: $progdir/$program" 1>&2 - func_lt_dump_args ${1+"$@"} 1>&2 - fi - exec "$progdir/$program" ${1+"$@"} - - $ECHO "$0: cannot exec $program $*" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from $@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case " $* " in - *\ --lt-*) - for lt_wr_arg - do - case $lt_wr_arg in - --lt-*) ;; - *) set x "$@" "$lt_wr_arg"; shift;; - esac - shift - done ;; - esac - func_exec_program_core ${1+"$@"} -} - - # Parse options - func_parse_lt_options "$0" ${1+"$@"} - - # Find the directory that this script lives in. - thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` - test "x$thisdir" = "x$file" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` - while test -n "$file"; do - destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` - - # If there was a directory component, then change thisdir. - if test "x$destdir" != "x$file"; then - case "$destdir" in - [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; - *) thisdir="$thisdir/$destdir" ;; - esac - fi - - file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` - file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=yes - if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then - # special case for '.' - if test "$thisdir" = "."; then - thisdir=`pwd` - fi - # remove .libs from thisdir - case "$thisdir" in - *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; - .libs ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=`cd "$thisdir" && pwd` - test -n "$absdir" && thisdir="$absdir" - - program='power.exe' - progdir="$thisdir/.libs" - - - if test -f "$progdir/$program"; then - # Add the dll search path components to the executable PATH - PATH=/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:/mingw64/lib:/mingw64/bin:$PATH - - # Add our own library path to PATH - PATH="/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:$PATH" - - # Some systems cannot cope with colon-terminated PATH - # The second colon is a workaround for a bug in BeOS R4 sed - PATH=`$ECHO "$PATH" | /usr/bin/sed 's/::*$//'` - - export PATH - - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - # Run the actual program with our arguments. - func_exec_program ${1+"$@"} - fi - else - # The program doesn't exist. - $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 - $ECHO "This script is just a wrapper for $program." 1>&2 - $ECHO "See the libtool documentation for more information." 1>&2 - exit 1 - fi -fi diff --git a/tools/audiofile-0.3.6/examples/Makefile b/tools/audiofile-0.3.6/examples/Makefile deleted file mode 100644 index 8f19df78..00000000 --- a/tools/audiofile-0.3.6/examples/Makefile +++ /dev/null @@ -1,614 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# examples/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -noinst_PROGRAMS = adddcoffset$(EXEEXT) power$(EXEEXT) -EXTRA_PROGRAMS = alsaplay$(EXEEXT) irixread$(EXEEXT) \ - irixtestloop$(EXEEXT) linuxtest$(EXEEXT) osxplay$(EXEEXT) -subdir = examples -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -adddcoffset_SOURCES = adddcoffset.c -adddcoffset_OBJECTS = adddcoffset.$(OBJEXT) -adddcoffset_LDADD = $(LDADD) -adddcoffset_DEPENDENCIES = $(LIBAUDIOFILE) -am_alsaplay_OBJECTS = alsaplay.$(OBJEXT) -alsaplay_OBJECTS = $(am_alsaplay_OBJECTS) -alsaplay_DEPENDENCIES = $(LIBAUDIOFILE) -am_irixread_OBJECTS = irixread.$(OBJEXT) sgi.$(OBJEXT) -irixread_OBJECTS = $(am_irixread_OBJECTS) -irixread_DEPENDENCIES = $(LIBAUDIOFILE) -am_irixtestloop_OBJECTS = irixtestloop.$(OBJEXT) sgi.$(OBJEXT) -irixtestloop_OBJECTS = $(am_irixtestloop_OBJECTS) -irixtestloop_DEPENDENCIES = $(LIBAUDIOFILE) -am_linuxtest_OBJECTS = linuxtest.$(OBJEXT) -linuxtest_OBJECTS = $(am_linuxtest_OBJECTS) -linuxtest_LDADD = $(LDADD) -linuxtest_DEPENDENCIES = $(LIBAUDIOFILE) -am_osxplay_OBJECTS = osxplay.$(OBJEXT) -osxplay_OBJECTS = $(am_osxplay_OBJECTS) -osxplay_LDADD = $(LDADD) -osxplay_DEPENDENCIES = $(LIBAUDIOFILE) -osxplay_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(osxplay_LDFLAGS) \ - $(LDFLAGS) -o $@ -am_power_OBJECTS = power.$(OBJEXT) -power_OBJECTS = $(am_power_OBJECTS) -power_DEPENDENCIES = $(LIBAUDIOFILE) -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = adddcoffset.c $(alsaplay_SOURCES) $(irixread_SOURCES) \ - $(irixtestloop_SOURCES) $(linuxtest_SOURCES) \ - $(osxplay_SOURCES) $(power_SOURCES) -DIST_SOURCES = adddcoffset.c $(alsaplay_SOURCES) $(irixread_SOURCES) \ - $(irixtestloop_SOURCES) $(linuxtest_SOURCES) \ - $(osxplay_SOURCES) $(power_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6/examples -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6/examples -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -INCLUDES = -I$(top_srcdir)/libaudiofile -LIBAUDIOFILE = $(top_builddir)/libaudiofile/libaudiofile.la -alsaplay_SOURCES = alsaplay.cpp -alsaplay_LDADD = $(LIBAUDIOFILE) -lasound -irixread_SOURCES = irixread.c sgi.c sgi.h -irixread_LDADD = $(LIBAUDIOFILE) -laudio -irixtestloop_SOURCES = irixtestloop.c sgi.c sgi.h -irixtestloop_LDADD = $(LIBAUDIOFILE) -laudio -linuxtest_SOURCES = linuxtest.c -osxplay_SOURCES = osxplay.c -osxplay_LDFLAGS = -framework AudioUnit -framework CoreServices -power_SOURCES = power.c -power_LDADD = $(LIBAUDIOFILE) -lm -LDADD = $(LIBAUDIOFILE) -DEPENDENCIES = $(LIBAUDIOFILE) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu examples/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -adddcoffset$(EXEEXT): $(adddcoffset_OBJECTS) $(adddcoffset_DEPENDENCIES) $(EXTRA_adddcoffset_DEPENDENCIES) - @rm -f adddcoffset$(EXEEXT) - $(LINK) $(adddcoffset_OBJECTS) $(adddcoffset_LDADD) $(LIBS) -alsaplay$(EXEEXT): $(alsaplay_OBJECTS) $(alsaplay_DEPENDENCIES) $(EXTRA_alsaplay_DEPENDENCIES) - @rm -f alsaplay$(EXEEXT) - $(CXXLINK) $(alsaplay_OBJECTS) $(alsaplay_LDADD) $(LIBS) -irixread$(EXEEXT): $(irixread_OBJECTS) $(irixread_DEPENDENCIES) $(EXTRA_irixread_DEPENDENCIES) - @rm -f irixread$(EXEEXT) - $(LINK) $(irixread_OBJECTS) $(irixread_LDADD) $(LIBS) -irixtestloop$(EXEEXT): $(irixtestloop_OBJECTS) $(irixtestloop_DEPENDENCIES) $(EXTRA_irixtestloop_DEPENDENCIES) - @rm -f irixtestloop$(EXEEXT) - $(LINK) $(irixtestloop_OBJECTS) $(irixtestloop_LDADD) $(LIBS) -linuxtest$(EXEEXT): $(linuxtest_OBJECTS) $(linuxtest_DEPENDENCIES) $(EXTRA_linuxtest_DEPENDENCIES) - @rm -f linuxtest$(EXEEXT) - $(LINK) $(linuxtest_OBJECTS) $(linuxtest_LDADD) $(LIBS) -osxplay$(EXEEXT): $(osxplay_OBJECTS) $(osxplay_DEPENDENCIES) $(EXTRA_osxplay_DEPENDENCIES) - @rm -f osxplay$(EXEEXT) - $(osxplay_LINK) $(osxplay_OBJECTS) $(osxplay_LDADD) $(LIBS) -power$(EXEEXT): $(power_OBJECTS) $(power_DEPENDENCIES) $(EXTRA_power_DEPENDENCIES) - @rm -f power$(EXEEXT) - $(LINK) $(power_OBJECTS) $(power_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/adddcoffset.Po -include ./$(DEPDIR)/alsaplay.Po -include ./$(DEPDIR)/irixread.Po -include ./$(DEPDIR)/irixtestloop.Po -include ./$(DEPDIR)/linuxtest.Po -include ./$(DEPDIR)/osxplay.Po -include ./$(DEPDIR)/power.Po -include ./$(DEPDIR)/sgi.Po - -.c.o: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: - $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LTCOMPILE) -c -o $@ $< - -.cpp.o: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: - $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/examples/Makefile.am b/tools/audiofile-0.3.6/examples/Makefile.am deleted file mode 100644 index f80f8475..00000000 --- a/tools/audiofile-0.3.6/examples/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -INCLUDES = -I$(top_srcdir)/libaudiofile - -noinst_PROGRAMS = \ - adddcoffset \ - power \ - @TEST_BIN@ - -EXTRA_PROGRAMS = alsaplay irixread irixtestloop linuxtest osxplay - -LIBAUDIOFILE = $(top_builddir)/libaudiofile/libaudiofile.la - -alsaplay_SOURCES = alsaplay.cpp -alsaplay_LDADD = $(LIBAUDIOFILE) -lasound - -irixread_SOURCES = irixread.c sgi.c sgi.h -irixread_LDADD = $(LIBAUDIOFILE) -laudio - -irixtestloop_SOURCES = irixtestloop.c sgi.c sgi.h -irixtestloop_LDADD = $(LIBAUDIOFILE) -laudio - -linuxtest_SOURCES = linuxtest.c - -osxplay_SOURCES = osxplay.c -osxplay_LDFLAGS = -framework AudioUnit -framework CoreServices - -power_SOURCES = power.c -power_LDADD = $(LIBAUDIOFILE) -lm - -LDADD = $(LIBAUDIOFILE) - -DEPENDENCIES = $(LIBAUDIOFILE) diff --git a/tools/audiofile-0.3.6/examples/Makefile.in b/tools/audiofile-0.3.6/examples/Makefile.in deleted file mode 100644 index 6d7beb69..00000000 --- a/tools/audiofile-0.3.6/examples/Makefile.in +++ /dev/null @@ -1,614 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = adddcoffset$(EXEEXT) power$(EXEEXT) @TEST_BIN@ -EXTRA_PROGRAMS = alsaplay$(EXEEXT) irixread$(EXEEXT) \ - irixtestloop$(EXEEXT) linuxtest$(EXEEXT) osxplay$(EXEEXT) -subdir = examples -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -adddcoffset_SOURCES = adddcoffset.c -adddcoffset_OBJECTS = adddcoffset.$(OBJEXT) -adddcoffset_LDADD = $(LDADD) -adddcoffset_DEPENDENCIES = $(LIBAUDIOFILE) -am_alsaplay_OBJECTS = alsaplay.$(OBJEXT) -alsaplay_OBJECTS = $(am_alsaplay_OBJECTS) -alsaplay_DEPENDENCIES = $(LIBAUDIOFILE) -am_irixread_OBJECTS = irixread.$(OBJEXT) sgi.$(OBJEXT) -irixread_OBJECTS = $(am_irixread_OBJECTS) -irixread_DEPENDENCIES = $(LIBAUDIOFILE) -am_irixtestloop_OBJECTS = irixtestloop.$(OBJEXT) sgi.$(OBJEXT) -irixtestloop_OBJECTS = $(am_irixtestloop_OBJECTS) -irixtestloop_DEPENDENCIES = $(LIBAUDIOFILE) -am_linuxtest_OBJECTS = linuxtest.$(OBJEXT) -linuxtest_OBJECTS = $(am_linuxtest_OBJECTS) -linuxtest_LDADD = $(LDADD) -linuxtest_DEPENDENCIES = $(LIBAUDIOFILE) -am_osxplay_OBJECTS = osxplay.$(OBJEXT) -osxplay_OBJECTS = $(am_osxplay_OBJECTS) -osxplay_LDADD = $(LDADD) -osxplay_DEPENDENCIES = $(LIBAUDIOFILE) -osxplay_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(osxplay_LDFLAGS) \ - $(LDFLAGS) -o $@ -am_power_OBJECTS = power.$(OBJEXT) -power_OBJECTS = $(am_power_OBJECTS) -power_DEPENDENCIES = $(LIBAUDIOFILE) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = adddcoffset.c $(alsaplay_SOURCES) $(irixread_SOURCES) \ - $(irixtestloop_SOURCES) $(linuxtest_SOURCES) \ - $(osxplay_SOURCES) $(power_SOURCES) -DIST_SOURCES = adddcoffset.c $(alsaplay_SOURCES) $(irixread_SOURCES) \ - $(irixtestloop_SOURCES) $(linuxtest_SOURCES) \ - $(osxplay_SOURCES) $(power_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir)/libaudiofile -LIBAUDIOFILE = $(top_builddir)/libaudiofile/libaudiofile.la -alsaplay_SOURCES = alsaplay.cpp -alsaplay_LDADD = $(LIBAUDIOFILE) -lasound -irixread_SOURCES = irixread.c sgi.c sgi.h -irixread_LDADD = $(LIBAUDIOFILE) -laudio -irixtestloop_SOURCES = irixtestloop.c sgi.c sgi.h -irixtestloop_LDADD = $(LIBAUDIOFILE) -laudio -linuxtest_SOURCES = linuxtest.c -osxplay_SOURCES = osxplay.c -osxplay_LDFLAGS = -framework AudioUnit -framework CoreServices -power_SOURCES = power.c -power_LDADD = $(LIBAUDIOFILE) -lm -LDADD = $(LIBAUDIOFILE) -DEPENDENCIES = $(LIBAUDIOFILE) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu examples/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -adddcoffset$(EXEEXT): $(adddcoffset_OBJECTS) $(adddcoffset_DEPENDENCIES) $(EXTRA_adddcoffset_DEPENDENCIES) - @rm -f adddcoffset$(EXEEXT) - $(LINK) $(adddcoffset_OBJECTS) $(adddcoffset_LDADD) $(LIBS) -alsaplay$(EXEEXT): $(alsaplay_OBJECTS) $(alsaplay_DEPENDENCIES) $(EXTRA_alsaplay_DEPENDENCIES) - @rm -f alsaplay$(EXEEXT) - $(CXXLINK) $(alsaplay_OBJECTS) $(alsaplay_LDADD) $(LIBS) -irixread$(EXEEXT): $(irixread_OBJECTS) $(irixread_DEPENDENCIES) $(EXTRA_irixread_DEPENDENCIES) - @rm -f irixread$(EXEEXT) - $(LINK) $(irixread_OBJECTS) $(irixread_LDADD) $(LIBS) -irixtestloop$(EXEEXT): $(irixtestloop_OBJECTS) $(irixtestloop_DEPENDENCIES) $(EXTRA_irixtestloop_DEPENDENCIES) - @rm -f irixtestloop$(EXEEXT) - $(LINK) $(irixtestloop_OBJECTS) $(irixtestloop_LDADD) $(LIBS) -linuxtest$(EXEEXT): $(linuxtest_OBJECTS) $(linuxtest_DEPENDENCIES) $(EXTRA_linuxtest_DEPENDENCIES) - @rm -f linuxtest$(EXEEXT) - $(LINK) $(linuxtest_OBJECTS) $(linuxtest_LDADD) $(LIBS) -osxplay$(EXEEXT): $(osxplay_OBJECTS) $(osxplay_DEPENDENCIES) $(EXTRA_osxplay_DEPENDENCIES) - @rm -f osxplay$(EXEEXT) - $(osxplay_LINK) $(osxplay_OBJECTS) $(osxplay_LDADD) $(LIBS) -power$(EXEEXT): $(power_OBJECTS) $(power_DEPENDENCIES) $(EXTRA_power_DEPENDENCIES) - @rm -f power$(EXEEXT) - $(LINK) $(power_OBJECTS) $(power_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adddcoffset.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alsaplay.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irixread.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irixtestloop.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linuxtest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osxplay.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgi.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/examples/adddcoffset.c b/tools/audiofile-0.3.6/examples/adddcoffset.c deleted file mode 100644 index 594004f0..00000000 --- a/tools/audiofile-0.3.6/examples/adddcoffset.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - Audio File Library - - Copyright 1998, Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - adddcoffset.c - - This program adds a user-specified DC offset term to a sound file. - It's not very useful. -*/ - -#include -#include - -#ifdef __USE_SGI_HEADERS__ -#include -#else -#include "audiofile.h" -#endif - -void adddcoffset (float offset, char *infilename, char *outfilename); -void usageerror (void); - -int main (int ac, char **av) -{ - float offset; - - if (ac != 4) - usageerror(); - - offset = atof(av[1]); - adddcoffset(offset, av[2], av[3]); - return 0; -} - -void adddcoffset (float offset, char *infilename, char *outfilename) -{ - AFfilehandle infile = afOpenFile(infilename, "r", NULL); - int channelCount, frameCount; - short *buffer; - int i; - - AFfilesetup outfilesetup = afNewFileSetup(); - AFfilehandle outfile; - - frameCount = afGetFrameCount(infile, AF_DEFAULT_TRACK); - channelCount = afGetChannels(infile, AF_DEFAULT_TRACK); - - afInitFileFormat(outfilesetup, AF_FILE_AIFF); - afInitByteOrder(outfilesetup, AF_DEFAULT_TRACK, AF_BYTEORDER_BIGENDIAN); - afInitChannels(outfilesetup, AF_DEFAULT_TRACK, channelCount); - afInitRate(outfilesetup, AF_DEFAULT_TRACK, 44100.0); - afInitSampleFormat(outfilesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - - outfile = afOpenFile(outfilename, "w", outfilesetup); - - if (infile == NULL) - { - printf("unable to open input file '%s'.\n", infilename); - return; - } - - printf("afGetFrameCount: %d\n", (int)afGetFrameCount(infile, AF_DEFAULT_TRACK)); - printf("afGetChannels: %d\n", afGetChannels(infile, AF_DEFAULT_TRACK)); - - buffer = (short *) malloc(frameCount * channelCount * sizeof (short)); - afReadFrames(infile, AF_DEFAULT_TRACK, (void *) buffer, frameCount); - - for (i=0; i -#include -#include -#include - -int main(int argc, char **argv) -{ - if (argc != 2) - { - fprintf(stderr, "usage: %s filename\n", argv[0]); - exit(EXIT_FAILURE); - } - - AFfilehandle file = afOpenFile(argv[1], "r", AF_NULL_FILESETUP); - if (!file) - { - fprintf(stderr, "Could not open '%s'.\n", argv[1]); - exit(EXIT_FAILURE); - } - - int channels = afGetChannels(file, AF_DEFAULT_TRACK); - double rate = afGetRate(file, AF_DEFAULT_TRACK); - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - - int err; - snd_pcm_t *handle; - if ((err = snd_pcm_open(&handle, "default", SND_PCM_STREAM_PLAYBACK, 0)) < 0) - { - fprintf(stderr, "Could not open audio output: %s\n", snd_strerror(err)); - exit(EXIT_FAILURE); - } - - if ((err = snd_pcm_set_params(handle, SND_PCM_FORMAT_S16, - SND_PCM_ACCESS_RW_INTERLEAVED, channels, rate, 1, 500000)) < 0) - { - fprintf(stderr, "Could not set audio output parameters: %s\n", snd_strerror(err)); - exit(EXIT_FAILURE); - } - - const int bufferFrames = 4096; - int16_t *buffer = new int16_t[bufferFrames * channels]; - - while (true) - { - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, buffer, bufferFrames); - if (framesRead <= 0) - break; - - snd_pcm_sframes_t framesWritten = snd_pcm_writei(handle, buffer, bufferFrames); - if (framesWritten < 0) - framesWritten = snd_pcm_recover(handle, framesWritten, 0); - if (framesWritten < 0) - { - fprintf(stderr, "Could not write audio data to output device: %s\n", - snd_strerror(err)); - break; - } - } - - snd_pcm_drain(handle); - snd_pcm_close(handle); - delete [] buffer; - - afCloseFile(file); - - return 0; -} diff --git a/tools/audiofile-0.3.6/examples/irixread.c b/tools/audiofile-0.3.6/examples/irixread.c deleted file mode 100644 index 9bc36845..00000000 --- a/tools/audiofile-0.3.6/examples/irixread.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - Audio File Library - - Copyright (C) 1998-1999, Michael Pruett - Copyright (C) 2001, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - irixread.c - - This program reads and plays a given audio file using Irix's - default audio output device. This file will not work on any - operating system other than Irix. - - The only difference between this program and irixtest is that this - program does not load the entire audio track into memory at once. - Only a small number of frames are read into a buffer and then - written to the audio port. While there are more frames to be - read, this process is repeated. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include - -#include "sgi.h" - -const int BUFFERED_FRAME_COUNT = 65536; - -void usage (void) -{ - fprintf(stderr, "usage: irixread filename\n"); - exit(EXIT_FAILURE); -} - -main (int argc, char **argv) -{ - AFfilehandle file; - AFframecount count, frameCount; - int channelCount, sampleFormat, sampleWidth; - float frameSize; - void *buffer; - double sampleRate; - - ALport outport; - ALconfig outportconfig; - - if (argc < 2) - usage(); - - file = afOpenFile(argv[1], "r", NULL); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "Could not open file %s.\n", argv[1]); - exit(EXIT_FAILURE); - } - - frameCount = afGetFrameCount(file, AF_DEFAULT_TRACK); - frameSize = afGetVirtualFrameSize(file, AF_DEFAULT_TRACK, 1); - channelCount = afGetVirtualChannels(file, AF_DEFAULT_TRACK); - sampleRate = afGetRate(file, AF_DEFAULT_TRACK); - afGetVirtualSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, - &sampleWidth); - - if (sampleFormat == AF_SAMPFMT_UNSIGNED) - { - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, - AF_SAMPFMT_TWOSCOMP, sampleWidth); - } - - printf("frame count: %lld\n", frameCount); - printf("frame size: %d bytes\n", (int) frameSize); - printf("channel count: %d\n", channelCount); - printf("sample rate: %.2f Hz\n", sampleRate); - buffer = malloc(BUFFERED_FRAME_COUNT * frameSize); - - outportconfig = alNewConfig(); - setwidth(outportconfig, sampleWidth); - setsampleformat(outportconfig, sampleFormat); - alSetChannels(outportconfig, channelCount); - - count = afReadFrames(file, AF_DEFAULT_TRACK, buffer, BUFFERED_FRAME_COUNT); - - outport = alOpenPort("irixread", "w", outportconfig); - setrate(outport, sampleRate); - - do - { - printf("count = %lld\n", count); - alWriteFrames(outport, buffer, count); - - count = afReadFrames(file, AF_DEFAULT_TRACK, buffer, - BUFFERED_FRAME_COUNT); - } while (count > 0); - - waitport(outport); - - alClosePort(outport); - alFreeConfig(outportconfig); - - afCloseFile(file); -} diff --git a/tools/audiofile-0.3.6/examples/irixtestloop.c b/tools/audiofile-0.3.6/examples/irixtestloop.c deleted file mode 100644 index 688da391..00000000 --- a/tools/audiofile-0.3.6/examples/irixtestloop.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - Audio File Library - - Copyright (C) 1998-1999, Michael Pruett - Copyright (C) 2001, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - irixtestloop.c - - This file reads the loop points from a file (presumably AIFF) and - loops that part of the file several times. Audio output is routed - to IRIX's default audio output device. This program will not - compile on any platform other than IRIX. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include - -#include "sgi.h" - -const int REPEAT_COUNT = 3; - -void usage (void) -{ - printf("usage: irixtestloop file\n"); - printf("where file is of a format which contains a loop (e.g. AIFF)\n"); - exit(EXIT_FAILURE); -} - -main (int argc, char **argv) -{ - AFfilehandle file; - void *buffer; - - AFframecount frameCount; - int sampleFormat, sampleWidth, channelCount; - float frameSize; - double sampleRate; - - int *loopids, *markids; - int i, loopCount, markCount; - int startmarkid, endmarkid; - AFframecount startloop, endloop; - - ALport outport; - ALconfig outportconfig; - - if (argc < 2) - usage(); - - file = afOpenFile(argv[1], "r", NULL); - frameCount = afGetFrameCount(file, AF_DEFAULT_TRACK); - frameSize = afGetVirtualFrameSize(file, AF_DEFAULT_TRACK, 1); - channelCount = afGetVirtualChannels(file, AF_DEFAULT_TRACK); - afGetVirtualSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - sampleRate = afGetRate(file, AF_DEFAULT_TRACK); - - /* - If the file's sample format is unsigned integer data, - change the virtual sample format to two's complement - since the SGI Audio Library won't accept unsigned - data. - */ - if (sampleFormat == AF_SAMPFMT_UNSIGNED) - { - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, - AF_SAMPFMT_TWOSCOMP, sampleWidth); - } - - printf("frame count: %lld\n", frameCount); - printf("frame size: %d bytes\n", frameSize); - printf("channel count: %d\n", channelCount); - printf("sample rate: %.2f Hz\n", sampleRate); - - buffer = malloc(frameCount * frameSize); - afReadFrames(file, AF_DEFAULT_TRACK, buffer, frameCount); - - loopCount = afGetLoopIDs(file, AF_DEFAULT_INST, NULL); - loopids = malloc(sizeof (int) * loopCount); - afGetLoopIDs(file, AF_DEFAULT_INST, loopids); - - markCount = afGetMarkIDs(file, AF_DEFAULT_TRACK, NULL); - markids = malloc(sizeof (int) * markCount); - afGetMarkIDs(file, AF_DEFAULT_TRACK, markids); - - printf("loop ids:"); - for (i=0; i - Copyright (c) 2001, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - linuxtest.c - - This file plays a 16-bit, 44.1 kHz monophonic or stereophonic - audio file through a PC sound card on a Linux system. This file - will not compile under any operating system that does not support - the Open Sound System API. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#ifdef HAVE_CONFIG_H -#include -#endif - -/* - If it's not defined already, define the native audio hardware - byte order. -*/ - -#ifndef AFMT_S16_NE -#ifdef WORDS_BIGENDIAN /* defined in config.h */ -#define AFMT_S16_NE AFMT_S16_BE -#else -#define AFMT_S16_NE AFMT_S16_LE -#endif /* WORDS_BIGENDIAN */ -#endif /* AFMT_S16_NE */ - -void setupdsp (int audiofd, int channelCount, int frequency); -void usage (void); - -/* BUFFER_FRAMES represents the size of the buffer in frames. */ -#define BUFFER_FRAMES 4096 - -int main (int argc, char **argv) -{ - if (argc != 2) - usage(); - - AFfilehandle file = afOpenFile(argv[1], "r", NULL); - AFframecount frameCount = afGetFrameCount(file, AF_DEFAULT_TRACK); - printf("frame count: %jd\n", (intmax_t) frameCount); - - int channelCount = afGetVirtualChannels(file, AF_DEFAULT_TRACK); - int sampleFormat, sampleWidth; - afGetVirtualSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, - &sampleWidth); - double frequency = afGetRate(file, AF_DEFAULT_TRACK); - - float frameSize = afGetVirtualFrameSize(file, AF_DEFAULT_TRACK, 1); - - printf("sample format: %d, sample width: %d, channels: %d\n", - sampleFormat, sampleWidth, channelCount); - - if ((sampleFormat != AF_SAMPFMT_TWOSCOMP) && - (sampleFormat != AF_SAMPFMT_UNSIGNED)) - { - fprintf(stderr, "The audio file must contain integer data in two's complement or unsigned format.\n"); - exit(EXIT_FAILURE); - } - - if ((sampleWidth != 16) || (channelCount > 2)) - { - fprintf(stderr, "The audio file must be of a 16-bit monophonic or stereophonic format.\n"); - exit(EXIT_FAILURE); - } - - void *buffer = malloc(BUFFER_FRAMES * frameSize); - - int audiofd = open("/dev/dsp", O_WRONLY); - if (audiofd < 0) - { - perror("open"); - exit(EXIT_FAILURE); - } - - setupdsp(audiofd, channelCount, frequency); - - while (1) - { - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, buffer, - BUFFER_FRAMES); - if (framesRead <= 0) - break; - - printf("read %jd frames\n", (intmax_t) framesRead); - - ssize_t bytesWritten = write(audiofd, buffer, framesRead * frameSize); - if (bytesWritten < 0) - break; - } - - close(audiofd); - free(buffer); - - return 0; -} - -void setupdsp (int audiofd, int channelCount, int frequency) -{ - int format = AFMT_S16_NE; - if (ioctl(audiofd, SNDCTL_DSP_SETFMT, &format) == -1) - { - perror("set format"); - exit(EXIT_FAILURE); - } - - if (format != AFMT_S16_NE) - { - fprintf(stderr, "format not correct.\n"); - exit(EXIT_FAILURE); - } - - if (ioctl(audiofd, SNDCTL_DSP_CHANNELS, &channelCount) == -1) - { - perror("set channels"); - exit(EXIT_FAILURE); - } - - if (ioctl(audiofd, SNDCTL_DSP_SPEED, &frequency) == -1) - { - perror("set frequency"); - exit(EXIT_FAILURE); - } -} - -void usage (void) -{ - fprintf(stderr, "usage: linuxtest file\n"); - fprintf(stderr, - "where file refers to a 16-bit monophonic or stereophonic 44.1 kHz audio file\n"); - exit(EXIT_FAILURE); -} diff --git a/tools/audiofile-0.3.6/examples/osxplay.c b/tools/audiofile-0.3.6/examples/osxplay.c deleted file mode 100644 index 6c9b6178..00000000 --- a/tools/audiofile-0.3.6/examples/osxplay.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - Audio File Library - - Copyright (c) 2003, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, are permitted provided that the following - conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - 3. The name of the author may not be used to endorse or promote - products derived from this software without specific prior - written permission. - - THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - osxplay.c - - This program demonstrates audio file playback using the Audio - File Library and Core Audio. -*/ - -#include -#include -#include -#include - -#include -#include -#include - -#define BUFFER_FRAME_COUNT 1024 - -int isPlaying = 1; -void *buffer = NULL; - -void getASBDForFile (AFfilehandle file, int track, - AudioStreamBasicDescription *asbd) -{ - int sampleFormat, sampleWidth, channelCount; - double rate; - - afGetVirtualSampleFormat(file, track, &sampleFormat, &sampleWidth); - channelCount = afGetChannels(file, track); - rate = afGetRate(file, track); - - asbd->mSampleRate = rate; - asbd->mFormatID = kAudioFormatLinearPCM; - switch (sampleFormat) - { - case AF_SAMPFMT_TWOSCOMP: - asbd->mFormatFlags = kAudioFormatFlagIsSignedInteger; - asbd->mBitsPerChannel = sampleWidth; - break; - case AF_SAMPFMT_UNSIGNED: - asbd->mFormatFlags = 0; - asbd->mBitsPerChannel = sampleWidth; - break; - case AF_SAMPFMT_FLOAT: - asbd->mFormatFlags = kAudioFormatFlagIsFloat; - asbd->mBitsPerChannel = 32; - break; - case AF_SAMPFMT_DOUBLE: - asbd->mFormatFlags = kAudioFormatFlagIsFloat; - asbd->mBitsPerChannel = 64; - break; - } - - asbd->mChannelsPerFrame = channelCount; - asbd->mFramesPerPacket = 1; - asbd->mBytesPerFrame = ceilf(afGetVirtualFrameSize(file, track, 1)); - asbd->mBytesPerPacket = asbd->mBytesPerFrame; - - if (afGetVirtualByteOrder(file, track) == AF_BYTEORDER_BIGENDIAN) - asbd->mFormatFlags |= kAudioFormatFlagIsBigEndian; -} - -OSStatus openOutput (AudioUnit *outputUnit) -{ - OSStatus status = noErr; - ComponentDescription description; - Component component; - - description.componentType = kAudioUnitType_Output; - description.componentSubType = kAudioUnitSubType_DefaultOutput; - description.componentManufacturer = kAudioUnitManufacturer_Apple; - description.componentFlags = 0; - description.componentFlagsMask = 0; - - component = FindNextComponent(NULL, &description); - if (component == NULL) - { - fprintf(stderr, "Could not find audio output device.\n"); - exit(EXIT_FAILURE); - } - - status = OpenAComponent(component, outputUnit); - if (status != noErr) - { - fprintf(stderr, "Could not open audio output device.\n"); - exit(EXIT_FAILURE); - } - - status = AudioUnitInitialize(*outputUnit); - if (status != noErr) - { - fprintf(stderr, "Could not initialize audio output device.\n"); - exit(EXIT_FAILURE); - } - - return status; -} - -OSStatus fileRenderProc (void *inRefCon, - AudioUnitRenderActionFlags *inActionFlags, - const AudioTimeStamp *inTimeStamp, - UInt32 inBusNumber, - UInt32 inNumFrames, - AudioBufferList *ioData) -{ - AFfilehandle file = (AFfilehandle) inRefCon; - AFframecount framesToRead, framesRead; - - framesToRead = inNumFrames; - if (framesToRead > BUFFER_FRAME_COUNT) - framesToRead = BUFFER_FRAME_COUNT; - - framesRead = afReadFrames(file, AF_DEFAULT_TRACK, - buffer, framesToRead); - if (framesRead > 0) - { - ioData->mBuffers[0].mData = buffer; - ioData->mBuffers[0].mDataByteSize = framesRead * - afGetVirtualFrameSize(file, AF_DEFAULT_TRACK, 1); - } - else - isPlaying = 0; - - return noErr; -} - -OSStatus setupOutput (AudioUnit *outputUnit, AFfilehandle file) -{ - OSStatus status = noErr; - UInt32 size; - Boolean outWritable; - - AudioStreamBasicDescription fileASBD, inputASBD, outputASBD; - AURenderCallbackStruct renderCallback; - - /* Set virtual sample format to single-precision floating-point. */ - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_FLOAT, 32); - - /* Get ASBD for virtual sample format. */ - getASBDForFile(file, AF_DEFAULT_TRACK, &fileASBD); - - status = AudioUnitGetPropertyInfo(*outputUnit, - kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, - 0, &size, &outWritable); - - status = AudioUnitGetProperty(*outputUnit, - kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, - 0, &outputASBD, &size); - - if (outWritable) - { - outputASBD = fileASBD; - - status = AudioUnitSetProperty(*outputUnit, - kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, - 0, &outputASBD, size); - } - - inputASBD = fileASBD; - - status = AudioUnitSetProperty(*outputUnit, - kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, - 0, &inputASBD, size); - if (status != noErr) - { - fprintf(stderr, "Could not set input stream format.\n"); - exit(EXIT_FAILURE); - } - - /* - Set the render callback to a procedure which will - read from the file. - */ - renderCallback.inputProc = fileRenderProc; - renderCallback.inputProcRefCon = file; - - status = AudioUnitSetProperty(*outputUnit, - kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, 0, - &renderCallback, sizeof (AURenderCallbackStruct)); - if (status != noErr) - { - fprintf(stderr, "Could not set render callback.\n"); - exit(EXIT_FAILURE); - } - - return status; -} - -int main (int argc, char **argv) -{ - AFfilehandle file; - AudioUnit outputUnit; - - if (argc < 2) - { - fprintf(stderr, "usage: %s filename\n", argv[0]); - exit(EXIT_FAILURE); - } - - file = afOpenFile(argv[1], "r", AF_NULL_FILESETUP); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "Could not open file '%s' for reading.\n", argv[1]); - exit(EXIT_FAILURE); - } - - openOutput(&outputUnit); - setupOutput(&outputUnit, file); - AudioOutputUnitStart(outputUnit); - - buffer = malloc(BUFFER_FRAME_COUNT * - afGetVirtualFrameSize(file, AF_DEFAULT_TRACK, 1)); - - while (isPlaying) - usleep(250000); - - AudioOutputUnitStop(outputUnit); - AudioUnitUninitialize(outputUnit); - CloseComponent(outputUnit); - - free(buffer); - - afCloseFile(file); -} diff --git a/tools/audiofile-0.3.6/examples/power.c b/tools/audiofile-0.3.6/examples/power.c deleted file mode 100644 index ec789ace..00000000 --- a/tools/audiofile-0.3.6/examples/power.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - This program is derived from Chris Vaill's normalize program - and has been modified to use the Audio File Library for file - reading and audio data conversion. - - Copyright (C) 2001, Silicon Graphics, Inc. - Copyright (C) 1999-2001, Chris Vaill - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - power.c - - Calculate the power and peak amplitudes of an audio file. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -struct smooth -{ - double *buf; - int length, start, n; -}; - -static double get_smoothed_data (struct smooth *s) -{ - int i; - double smoothed; - - smoothed = 0; - for (i = 0; i < s->n; i++) - smoothed += s->buf[i]; - smoothed = smoothed / s->n; - - return smoothed; -} - -void print_power (char *filename); - -int main (int argc, char **argv) -{ - int i; - - if (argc < 2) - { - fprintf(stderr, "usage: %s filename [more filenames...]\n", - argv[0]); - exit(EXIT_FAILURE); - } - - for (i=1; i= frameCount) - { - winEnd = frameCount; - lastWindow = TRUE; - } - - afReadFrames(file, AF_DEFAULT_TRACK, frames, windowSize); - - for (c=0; c maxSample) - maxSample = sample; - if (sample < minSample) - minSample = sample; - } - } - - /* Compute power for each channel. */ - for (c=0; c maxpow) - maxpow = pow; - } - else - { - powsmooth[c].n++; - } - } - - winStart += windowSize; - } while (!lastWindow); - - for (c = 0; c < channelCount; c++) - { - pow = get_smoothed_data(&powsmooth[c]); - if (pow > maxpow) - maxpow = pow; - } - - free(sums); - free(frames); - for (c=0; c - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - sgi.c - - These routines are used in SGI-specific test programs. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include - -#include - -#include - -/* - Set the sample width of an audio configuration. -*/ -void setwidth (ALconfig config, int sampleWidth) -{ - if (sampleWidth <= 8) - { - printf("setting width to 8\n"); - alSetWidth(config, AL_SAMPLE_8); - } - else if (sampleWidth <= 16) - { - printf("setting width to 16\n"); - alSetWidth(config, AL_SAMPLE_16); - } - else if (sampleWidth <= 24) - { - printf("setting width to 24\n"); - alSetWidth(config, AL_SAMPLE_24); - } -} - -/* - Set the sample format of an audio configuration. -*/ -void setsampleformat (ALconfig config, int audioFileSampleFormat) -{ - if (audioFileSampleFormat == AF_SAMPFMT_TWOSCOMP) - { - printf("setting sample format to 2's complement\n"); - alSetSampFmt(config, AL_SAMPFMT_TWOSCOMP); - } - else if (audioFileSampleFormat == AF_SAMPFMT_FLOAT) - { - printf("setting sample format to float\n"); - alSetSampFmt(config, AL_SAMPFMT_FLOAT); - } - else if (audioFileSampleFormat == AF_SAMPFMT_DOUBLE) - { - printf("setting sample format to double\n"); - alSetSampFmt(config, AL_SAMPFMT_DOUBLE); - } -} - -/* - Set the sample rate of an audio port. -*/ -void setrate (ALport port, double rate) -{ - int rv; - ALpv params; - - rv = alGetResource(port); - - params.param = AL_RATE; - params.value.ll = alDoubleToFixed(rate); - - if (alSetParams(rv, ¶ms, 1) < 0) - { - printf("alSetParams failed: %s\n", alGetErrorString(oserror())); - } -} - -/* - Wait until the audio port has no more samples to play. -*/ -void waitport (ALport port) -{ - while (alGetFilled(port) > 0) - sginap(1); -} diff --git a/tools/audiofile-0.3.6/examples/sgi.h b/tools/audiofile-0.3.6/examples/sgi.h deleted file mode 100644 index 3f66dbb5..00000000 --- a/tools/audiofile-0.3.6/examples/sgi.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - Audio File Library - - Copyright 1998-1999, Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - sgi.h - - These routines are used in SGI-specific test programs. -*/ - -#ifndef SGI_H -#define SGI_H - -#include - -/* - Set the sample width of an audio configuration. -*/ -void setwidth (ALconfig config, int width); - -/* - Set the sample format of an audio configuration. -*/ -void setsampleformat (ALconfig config, int width); - -/* - Set the sample rate of an audio port. -*/ -void setrate (ALport port, double rate); - -/* - Wait until the audio port has no more samples to play. -*/ -void waitport (ALport port); - -#endif diff --git a/tools/audiofile-0.3.6/gtest/.deps/libgtest_la-gtest-all.Plo b/tools/audiofile-0.3.6/gtest/.deps/libgtest_la-gtest-all.Plo deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/gtest/.deps/libgtest_la-gtest-all.Plo +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/gtest/Makefile b/tools/audiofile-0.3.6/gtest/Makefile deleted file mode 100644 index 494ffda2..00000000 --- a/tools/audiofile-0.3.6/gtest/Makefile +++ /dev/null @@ -1,536 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# gtest/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -subdir = gtest -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -libgtest_la_DEPENDENCIES = -am_libgtest_la_OBJECTS = libgtest_la-gtest-all.lo -libgtest_la_OBJECTS = $(am_libgtest_la_OBJECTS) -libgtest_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libgtest_la_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libgtest_la_SOURCES) -DIST_SOURCES = $(libgtest_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6/gtest -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6/gtest -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -check_LTLIBRARIES = libgtest.la -libgtest_la_SOURCES = gtest-all.cpp gtest.h -libgtest_la_LIBADD = -lpthread -libgtest_la_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 -EXTRA_DIST = README.audiofile -all: all-am - -.SUFFIXES: -.SUFFIXES: .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gtest/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu gtest/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-checkLTLIBRARIES: - -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) - @list='$(check_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libgtest.la: $(libgtest_la_OBJECTS) $(libgtest_la_DEPENDENCIES) $(EXTRA_libgtest_la_DEPENDENCIES) - $(libgtest_la_LINK) $(libgtest_la_OBJECTS) $(libgtest_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/libgtest_la-gtest-all.Plo - -.cpp.o: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: - $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(LTCXXCOMPILE) -c -o $@ $< - -libgtest_la-gtest-all.lo: gtest-all.cpp - $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgtest_la_CXXFLAGS) $(CXXFLAGS) -MT libgtest_la-gtest-all.lo -MD -MP -MF $(DEPDIR)/libgtest_la-gtest-all.Tpo -c -o libgtest_la-gtest-all.lo `test -f 'gtest-all.cpp' || echo '$(srcdir)/'`gtest-all.cpp - $(am__mv) $(DEPDIR)/libgtest_la-gtest-all.Tpo $(DEPDIR)/libgtest_la-gtest-all.Plo -# source='gtest-all.cpp' object='libgtest_la-gtest-all.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgtest_la_CXXFLAGS) $(CXXFLAGS) -c -o libgtest_la-gtest-all.lo `test -f 'gtest-all.cpp' || echo '$(srcdir)/'`gtest-all.cpp - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkLTLIBRARIES clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean \ - clean-checkLTLIBRARIES clean-generic clean-libtool ctags \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/gtest/Makefile.am b/tools/audiofile-0.3.6/gtest/Makefile.am deleted file mode 100644 index 882e3418..00000000 --- a/tools/audiofile-0.3.6/gtest/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -check_LTLIBRARIES = libgtest.la -libgtest_la_SOURCES = gtest-all.cpp gtest.h -libgtest_la_LIBADD = -lpthread -libgtest_la_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 -EXTRA_DIST = README.audiofile diff --git a/tools/audiofile-0.3.6/gtest/Makefile.in b/tools/audiofile-0.3.6/gtest/Makefile.in deleted file mode 100644 index 7e9b7d80..00000000 --- a/tools/audiofile-0.3.6/gtest/Makefile.in +++ /dev/null @@ -1,536 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = gtest -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -libgtest_la_DEPENDENCIES = -am_libgtest_la_OBJECTS = libgtest_la-gtest-all.lo -libgtest_la_OBJECTS = $(am_libgtest_la_OBJECTS) -libgtest_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libgtest_la_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libgtest_la_SOURCES) -DIST_SOURCES = $(libgtest_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -check_LTLIBRARIES = libgtest.la -libgtest_la_SOURCES = gtest-all.cpp gtest.h -libgtest_la_LIBADD = -lpthread -libgtest_la_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 -EXTRA_DIST = README.audiofile -all: all-am - -.SUFFIXES: -.SUFFIXES: .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gtest/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu gtest/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-checkLTLIBRARIES: - -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) - @list='$(check_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libgtest.la: $(libgtest_la_OBJECTS) $(libgtest_la_DEPENDENCIES) $(EXTRA_libgtest_la_DEPENDENCIES) - $(libgtest_la_LINK) $(libgtest_la_OBJECTS) $(libgtest_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgtest_la-gtest-all.Plo@am__quote@ - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< - -libgtest_la-gtest-all.lo: gtest-all.cpp -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgtest_la_CXXFLAGS) $(CXXFLAGS) -MT libgtest_la-gtest-all.lo -MD -MP -MF $(DEPDIR)/libgtest_la-gtest-all.Tpo -c -o libgtest_la-gtest-all.lo `test -f 'gtest-all.cpp' || echo '$(srcdir)/'`gtest-all.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libgtest_la-gtest-all.Tpo $(DEPDIR)/libgtest_la-gtest-all.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gtest-all.cpp' object='libgtest_la-gtest-all.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgtest_la_CXXFLAGS) $(CXXFLAGS) -c -o libgtest_la-gtest-all.lo `test -f 'gtest-all.cpp' || echo '$(srcdir)/'`gtest-all.cpp - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkLTLIBRARIES clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean \ - clean-checkLTLIBRARIES clean-generic clean-libtool ctags \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/gtest/README.audiofile b/tools/audiofile-0.3.6/gtest/README.audiofile deleted file mode 100644 index 25304a8d..00000000 --- a/tools/audiofile-0.3.6/gtest/README.audiofile +++ /dev/null @@ -1,4 +0,0 @@ -This directory contains Google Test version 1.6.0. The fused-source -implementation is used here for simplicity and compactness. - -http://code.google.com/p/googletest/ diff --git a/tools/audiofile-0.3.6/gtest/gtest-all.cpp b/tools/audiofile-0.3.6/gtest/gtest-all.cpp deleted file mode 100644 index 25ebbc3d..00000000 --- a/tools/audiofile-0.3.6/gtest/gtest-all.cpp +++ /dev/null @@ -1,9118 +0,0 @@ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: mheule@google.com (Markus Heule) -// -// Google C++ Testing Framework (Google Test) -// -// Sometimes it's desirable to build Google Test by compiling a single file. -// This file serves this purpose. - -// This line ensures that gtest.h can be compiled on its own, even -// when it's fused. -#include "gtest.h" - -// The following lines pull in the real gtest *.cc files. -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) -// -// The Google C++ Testing Framework (Google Test) - -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) -// -// Utilities for testing Google Test itself and code that uses Google Test -// (e.g. frameworks built on top of Google Test). - -#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_ -#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_ - - -namespace testing { - -// This helper class can be used to mock out Google Test failure reporting -// so that we can test Google Test or code that builds on Google Test. -// -// An object of this class appends a TestPartResult object to the -// TestPartResultArray object given in the constructor whenever a Google Test -// failure is reported. It can either intercept only failures that are -// generated in the same thread that created this object or it can intercept -// all generated failures. The scope of this mock object can be controlled with -// the second argument to the two arguments constructor. -class GTEST_API_ ScopedFakeTestPartResultReporter - : public TestPartResultReporterInterface { - public: - // The two possible mocking modes of this object. - enum InterceptMode { - INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures. - INTERCEPT_ALL_THREADS // Intercepts all failures. - }; - - // The c'tor sets this object as the test part result reporter used - // by Google Test. The 'result' parameter specifies where to report the - // results. This reporter will only catch failures generated in the current - // thread. DEPRECATED - explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result); - - // Same as above, but you can choose the interception scope of this object. - ScopedFakeTestPartResultReporter(InterceptMode intercept_mode, - TestPartResultArray* result); - - // The d'tor restores the previous test part result reporter. - virtual ~ScopedFakeTestPartResultReporter(); - - // Appends the TestPartResult object to the TestPartResultArray - // received in the constructor. - // - // This method is from the TestPartResultReporterInterface - // interface. - virtual void ReportTestPartResult(const TestPartResult& result); - private: - void Init(); - - const InterceptMode intercept_mode_; - TestPartResultReporterInterface* old_reporter_; - TestPartResultArray* const result_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter); -}; - -namespace internal { - -// A helper class for implementing EXPECT_FATAL_FAILURE() and -// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given -// TestPartResultArray contains exactly one failure that has the given -// type and contains the given substring. If that's not the case, a -// non-fatal failure will be generated. -class GTEST_API_ SingleFailureChecker { - public: - // The constructor remembers the arguments. - SingleFailureChecker(const TestPartResultArray* results, - TestPartResult::Type type, - const string& substr); - ~SingleFailureChecker(); - private: - const TestPartResultArray* const results_; - const TestPartResult::Type type_; - const string substr_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker); -}; - -} // namespace internal - -} // namespace testing - -// A set of macros for testing Google Test assertions or code that's expected -// to generate Google Test fatal failures. It verifies that the given -// statement will cause exactly one fatal Google Test failure with 'substr' -// being part of the failure message. -// -// There are two different versions of this macro. EXPECT_FATAL_FAILURE only -// affects and considers failures generated in the current thread and -// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. -// -// The verification of the assertion is done correctly even when the statement -// throws an exception or aborts the current function. -// -// Known restrictions: -// - 'statement' cannot reference local non-static variables or -// non-static members of the current object. -// - 'statement' cannot return a value. -// - You cannot stream a failure message to this macro. -// -// Note that even though the implementations of the following two -// macros are much alike, we cannot refactor them to use a common -// helper macro, due to some peculiarity in how the preprocessor -// works. The AcceptsMacroThatExpandsToUnprotectedComma test in -// gtest_unittest.cc will fail to compile if we do that. -#define EXPECT_FATAL_FAILURE(statement, substr) \ - do { \ - class GTestExpectFatalFailureHelper {\ - public:\ - static void Execute() { statement; }\ - };\ - ::testing::TestPartResultArray gtest_failures;\ - ::testing::internal::SingleFailureChecker gtest_checker(\ - >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ - {\ - ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ - ::testing::ScopedFakeTestPartResultReporter:: \ - INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ - GTestExpectFatalFailureHelper::Execute();\ - }\ - } while (::testing::internal::AlwaysFalse()) - -#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ - do { \ - class GTestExpectFatalFailureHelper {\ - public:\ - static void Execute() { statement; }\ - };\ - ::testing::TestPartResultArray gtest_failures;\ - ::testing::internal::SingleFailureChecker gtest_checker(\ - >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ - {\ - ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ - ::testing::ScopedFakeTestPartResultReporter:: \ - INTERCEPT_ALL_THREADS, >est_failures);\ - GTestExpectFatalFailureHelper::Execute();\ - }\ - } while (::testing::internal::AlwaysFalse()) - -// A macro for testing Google Test assertions or code that's expected to -// generate Google Test non-fatal failures. It asserts that the given -// statement will cause exactly one non-fatal Google Test failure with 'substr' -// being part of the failure message. -// -// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only -// affects and considers failures generated in the current thread and -// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. -// -// 'statement' is allowed to reference local variables and members of -// the current object. -// -// The verification of the assertion is done correctly even when the statement -// throws an exception or aborts the current function. -// -// Known restrictions: -// - You cannot stream a failure message to this macro. -// -// Note that even though the implementations of the following two -// macros are much alike, we cannot refactor them to use a common -// helper macro, due to some peculiarity in how the preprocessor -// works. If we do that, the code won't compile when the user gives -// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that -// expands to code containing an unprotected comma. The -// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc -// catches that. -// -// For the same reason, we have to write -// if (::testing::internal::AlwaysTrue()) { statement; } -// instead of -// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) -// to avoid an MSVC warning on unreachable code. -#define EXPECT_NONFATAL_FAILURE(statement, substr) \ - do {\ - ::testing::TestPartResultArray gtest_failures;\ - ::testing::internal::SingleFailureChecker gtest_checker(\ - >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ - (substr));\ - {\ - ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ - ::testing::ScopedFakeTestPartResultReporter:: \ - INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ - if (::testing::internal::AlwaysTrue()) { statement; }\ - }\ - } while (::testing::internal::AlwaysFalse()) - -#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ - do {\ - ::testing::TestPartResultArray gtest_failures;\ - ::testing::internal::SingleFailureChecker gtest_checker(\ - >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ - (substr));\ - {\ - ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ - ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS,\ - >est_failures);\ - if (::testing::internal::AlwaysTrue()) { statement; }\ - }\ - } while (::testing::internal::AlwaysFalse()) - -#endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include // NOLINT -#include -#include - -#if GTEST_OS_LINUX - -// TODO(kenton@google.com): Use autoconf to detect availability of -// gettimeofday(). -# define GTEST_HAS_GETTIMEOFDAY_ 1 - -# include // NOLINT -# include // NOLINT -# include // NOLINT -// Declares vsnprintf(). This header is not available on Windows. -# include // NOLINT -# include // NOLINT -# include // NOLINT -# include // NOLINT -# include - -#elif GTEST_OS_SYMBIAN -# define GTEST_HAS_GETTIMEOFDAY_ 1 -# include // NOLINT - -#elif GTEST_OS_ZOS -# define GTEST_HAS_GETTIMEOFDAY_ 1 -# include // NOLINT - -// On z/OS we additionally need strings.h for strcasecmp. -# include // NOLINT - -#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE. - -# include // NOLINT - -#elif GTEST_OS_WINDOWS // We are on Windows proper. - -# include // NOLINT -# include // NOLINT -# include // NOLINT -# include // NOLINT - -# if GTEST_OS_WINDOWS_MINGW -// MinGW has gettimeofday() but not _ftime64(). -// TODO(kenton@google.com): Use autoconf to detect availability of -// gettimeofday(). -// TODO(kenton@google.com): There are other ways to get the time on -// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW -// supports these. consider using them instead. -# define GTEST_HAS_GETTIMEOFDAY_ 1 -# include // NOLINT -# endif // GTEST_OS_WINDOWS_MINGW - -// cpplint thinks that the header is already included, so we want to -// silence it. -# include // NOLINT - -#else - -// Assume other platforms have gettimeofday(). -// TODO(kenton@google.com): Use autoconf to detect availability of -// gettimeofday(). -# define GTEST_HAS_GETTIMEOFDAY_ 1 - -// cpplint thinks that the header is already included, so we want to -// silence it. -# include // NOLINT -# include // NOLINT - -#endif // GTEST_OS_LINUX - -#if GTEST_HAS_EXCEPTIONS -# include -#endif - -#if GTEST_CAN_STREAM_RESULTS_ -# include // NOLINT -# include // NOLINT -#endif - -// Indicates that this translation unit is part of Google Test's -// implementation. It must come before gtest-internal-inl.h is -// included, or there will be a compiler error. This trick is to -// prevent a user from accidentally including gtest-internal-inl.h in -// his code. -#define GTEST_IMPLEMENTATION_ 1 -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Utility functions and classes used by the Google C++ testing framework. -// -// Author: wan@google.com (Zhanyong Wan) -// -// This file contains purely Google Test's internal implementation. Please -// DO NOT #INCLUDE IT IN A USER PROGRAM. - -#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_ -#define GTEST_SRC_GTEST_INTERNAL_INL_H_ - -// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is -// part of Google Test's implementation; otherwise it's undefined. -#if !GTEST_IMPLEMENTATION_ -// A user is trying to include this from his code - just say no. -# error "gtest-internal-inl.h is part of Google Test's internal implementation." -# error "It must not be included except by Google Test itself." -#endif // GTEST_IMPLEMENTATION_ - -#ifndef _WIN32_WCE -# include -#endif // !_WIN32_WCE -#include -#include // For strtoll/_strtoul64/malloc/free. -#include // For memmove. - -#include -#include -#include - - -#if GTEST_OS_WINDOWS -# include // NOLINT -#endif // GTEST_OS_WINDOWS - - -namespace testing { - -// Declares the flags. -// -// We don't want the users to modify this flag in the code, but want -// Google Test's own unit tests to be able to access it. Therefore we -// declare it here as opposed to in gtest.h. -GTEST_DECLARE_bool_(death_test_use_fork); - -namespace internal { - -// The value of GetTestTypeId() as seen from within the Google Test -// library. This is solely for testing GetTestTypeId(). -GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest; - -// Names of the flags (needed for parsing Google Test flags). -const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests"; -const char kBreakOnFailureFlag[] = "break_on_failure"; -const char kCatchExceptionsFlag[] = "catch_exceptions"; -const char kColorFlag[] = "color"; -const char kFilterFlag[] = "filter"; -const char kListTestsFlag[] = "list_tests"; -const char kOutputFlag[] = "output"; -const char kPrintTimeFlag[] = "print_time"; -const char kRandomSeedFlag[] = "random_seed"; -const char kRepeatFlag[] = "repeat"; -const char kShuffleFlag[] = "shuffle"; -const char kStackTraceDepthFlag[] = "stack_trace_depth"; -const char kStreamResultToFlag[] = "stream_result_to"; -const char kThrowOnFailureFlag[] = "throw_on_failure"; - -// A valid random seed must be in [1, kMaxRandomSeed]. -const int kMaxRandomSeed = 99999; - -// g_help_flag is true iff the --help flag or an equivalent form is -// specified on the command line. -GTEST_API_ extern bool g_help_flag; - -// Returns the current time in milliseconds. -GTEST_API_ TimeInMillis GetTimeInMillis(); - -// Returns true iff Google Test should use colors in the output. -GTEST_API_ bool ShouldUseColor(bool stdout_is_tty); - -// Formats the given time in milliseconds as seconds. -GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms); - -// Parses a string for an Int32 flag, in the form of "--flag=value". -// -// On success, stores the value of the flag in *value, and returns -// true. On failure, returns false without changing *value. -GTEST_API_ bool ParseInt32Flag( - const char* str, const char* flag, Int32* value); - -// Returns a random seed in range [1, kMaxRandomSeed] based on the -// given --gtest_random_seed flag value. -inline int GetRandomSeedFromFlag(Int32 random_seed_flag) { - const unsigned int raw_seed = (random_seed_flag == 0) ? - static_cast(GetTimeInMillis()) : - static_cast(random_seed_flag); - - // Normalizes the actual seed to range [1, kMaxRandomSeed] such that - // it's easy to type. - const int normalized_seed = - static_cast((raw_seed - 1U) % - static_cast(kMaxRandomSeed)) + 1; - return normalized_seed; -} - -// Returns the first valid random seed after 'seed'. The behavior is -// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is -// considered to be 1. -inline int GetNextRandomSeed(int seed) { - GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed) - << "Invalid random seed " << seed << " - must be in [1, " - << kMaxRandomSeed << "]."; - const int next_seed = seed + 1; - return (next_seed > kMaxRandomSeed) ? 1 : next_seed; -} - -// This class saves the values of all Google Test flags in its c'tor, and -// restores them in its d'tor. -class GTestFlagSaver { - public: - // The c'tor. - GTestFlagSaver() { - also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests); - break_on_failure_ = GTEST_FLAG(break_on_failure); - catch_exceptions_ = GTEST_FLAG(catch_exceptions); - color_ = GTEST_FLAG(color); - death_test_style_ = GTEST_FLAG(death_test_style); - death_test_use_fork_ = GTEST_FLAG(death_test_use_fork); - filter_ = GTEST_FLAG(filter); - internal_run_death_test_ = GTEST_FLAG(internal_run_death_test); - list_tests_ = GTEST_FLAG(list_tests); - output_ = GTEST_FLAG(output); - print_time_ = GTEST_FLAG(print_time); - random_seed_ = GTEST_FLAG(random_seed); - repeat_ = GTEST_FLAG(repeat); - shuffle_ = GTEST_FLAG(shuffle); - stack_trace_depth_ = GTEST_FLAG(stack_trace_depth); - stream_result_to_ = GTEST_FLAG(stream_result_to); - throw_on_failure_ = GTEST_FLAG(throw_on_failure); - } - - // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS. - ~GTestFlagSaver() { - GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_; - GTEST_FLAG(break_on_failure) = break_on_failure_; - GTEST_FLAG(catch_exceptions) = catch_exceptions_; - GTEST_FLAG(color) = color_; - GTEST_FLAG(death_test_style) = death_test_style_; - GTEST_FLAG(death_test_use_fork) = death_test_use_fork_; - GTEST_FLAG(filter) = filter_; - GTEST_FLAG(internal_run_death_test) = internal_run_death_test_; - GTEST_FLAG(list_tests) = list_tests_; - GTEST_FLAG(output) = output_; - GTEST_FLAG(print_time) = print_time_; - GTEST_FLAG(random_seed) = random_seed_; - GTEST_FLAG(repeat) = repeat_; - GTEST_FLAG(shuffle) = shuffle_; - GTEST_FLAG(stack_trace_depth) = stack_trace_depth_; - GTEST_FLAG(stream_result_to) = stream_result_to_; - GTEST_FLAG(throw_on_failure) = throw_on_failure_; - } - private: - // Fields for saving the original values of flags. - bool also_run_disabled_tests_; - bool break_on_failure_; - bool catch_exceptions_; - String color_; - String death_test_style_; - bool death_test_use_fork_; - String filter_; - String internal_run_death_test_; - bool list_tests_; - String output_; - bool print_time_; - bool pretty_; - internal::Int32 random_seed_; - internal::Int32 repeat_; - bool shuffle_; - internal::Int32 stack_trace_depth_; - String stream_result_to_; - bool throw_on_failure_; -} GTEST_ATTRIBUTE_UNUSED_; - -// Converts a Unicode code point to a narrow string in UTF-8 encoding. -// code_point parameter is of type UInt32 because wchar_t may not be -// wide enough to contain a code point. -// The output buffer str must containt at least 32 characters. -// The function returns the address of the output buffer. -// If the code_point is not a valid Unicode code point -// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output -// as '(Invalid Unicode 0xXXXXXXXX)'. -GTEST_API_ char* CodePointToUtf8(UInt32 code_point, char* str); - -// Converts a wide string to a narrow string in UTF-8 encoding. -// The wide string is assumed to have the following encoding: -// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) -// UTF-32 if sizeof(wchar_t) == 4 (on Linux) -// Parameter str points to a null-terminated wide string. -// Parameter num_chars may additionally limit the number -// of wchar_t characters processed. -1 is used when the entire string -// should be processed. -// If the string contains code points that are not valid Unicode code points -// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output -// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding -// and contains invalid UTF-16 surrogate pairs, values in those pairs -// will be encoded as individual Unicode characters from Basic Normal Plane. -GTEST_API_ String WideStringToUtf8(const wchar_t* str, int num_chars); - -// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file -// if the variable is present. If a file already exists at this location, this -// function will write over it. If the variable is present, but the file cannot -// be created, prints an error and exits. -void WriteToShardStatusFileIfNeeded(); - -// Checks whether sharding is enabled by examining the relevant -// environment variable values. If the variables are present, -// but inconsistent (e.g., shard_index >= total_shards), prints -// an error and exits. If in_subprocess_for_death_test, sharding is -// disabled because it must only be applied to the original test -// process. Otherwise, we could filter out death tests we intended to execute. -GTEST_API_ bool ShouldShard(const char* total_shards_str, - const char* shard_index_str, - bool in_subprocess_for_death_test); - -// Parses the environment variable var as an Int32. If it is unset, -// returns default_val. If it is not an Int32, prints an error and -// and aborts. -GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val); - -// Given the total number of shards, the shard index, and the test id, -// returns true iff the test should be run on this shard. The test id is -// some arbitrary but unique non-negative integer assigned to each test -// method. Assumes that 0 <= shard_index < total_shards. -GTEST_API_ bool ShouldRunTestOnShard( - int total_shards, int shard_index, int test_id); - -// STL container utilities. - -// Returns the number of elements in the given container that satisfy -// the given predicate. -template -inline int CountIf(const Container& c, Predicate predicate) { - // Implemented as an explicit loop since std::count_if() in libCstd on - // Solaris has a non-standard signature. - int count = 0; - for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) { - if (predicate(*it)) - ++count; - } - return count; -} - -// Applies a function/functor to each element in the container. -template -void ForEach(const Container& c, Functor functor) { - std::for_each(c.begin(), c.end(), functor); -} - -// Returns the i-th element of the vector, or default_value if i is not -// in range [0, v.size()). -template -inline E GetElementOr(const std::vector& v, int i, E default_value) { - return (i < 0 || i >= static_cast(v.size())) ? default_value : v[i]; -} - -// Performs an in-place shuffle of a range of the vector's elements. -// 'begin' and 'end' are element indices as an STL-style range; -// i.e. [begin, end) are shuffled, where 'end' == size() means to -// shuffle to the end of the vector. -template -void ShuffleRange(internal::Random* random, int begin, int end, - std::vector* v) { - const int size = static_cast(v->size()); - GTEST_CHECK_(0 <= begin && begin <= size) - << "Invalid shuffle range start " << begin << ": must be in range [0, " - << size << "]."; - GTEST_CHECK_(begin <= end && end <= size) - << "Invalid shuffle range finish " << end << ": must be in range [" - << begin << ", " << size << "]."; - - // Fisher-Yates shuffle, from - // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle - for (int range_width = end - begin; range_width >= 2; range_width--) { - const int last_in_range = begin + range_width - 1; - const int selected = begin + random->Generate(range_width); - std::swap((*v)[selected], (*v)[last_in_range]); - } -} - -// Performs an in-place shuffle of the vector's elements. -template -inline void Shuffle(internal::Random* random, std::vector* v) { - ShuffleRange(random, 0, static_cast(v->size()), v); -} - -// A function for deleting an object. Handy for being used as a -// functor. -template -static void Delete(T* x) { - delete x; -} - -// A predicate that checks the key of a TestProperty against a known key. -// -// TestPropertyKeyIs is copyable. -class TestPropertyKeyIs { - public: - // Constructor. - // - // TestPropertyKeyIs has NO default constructor. - explicit TestPropertyKeyIs(const char* key) - : key_(key) {} - - // Returns true iff the test name of test property matches on key_. - bool operator()(const TestProperty& test_property) const { - return String(test_property.key()).Compare(key_) == 0; - } - - private: - String key_; -}; - -// Class UnitTestOptions. -// -// This class contains functions for processing options the user -// specifies when running the tests. It has only static members. -// -// In most cases, the user can specify an option using either an -// environment variable or a command line flag. E.g. you can set the -// test filter using either GTEST_FILTER or --gtest_filter. If both -// the variable and the flag are present, the latter overrides the -// former. -class GTEST_API_ UnitTestOptions { - public: - // Functions for processing the gtest_output flag. - - // Returns the output format, or "" for normal printed output. - static String GetOutputFormat(); - - // Returns the absolute path of the requested output file, or the - // default (test_detail.xml in the original working directory) if - // none was explicitly specified. - static String GetAbsolutePathToOutputFile(); - - // Functions for processing the gtest_filter flag. - - // Returns true iff the wildcard pattern matches the string. The - // first ':' or '\0' character in pattern marks the end of it. - // - // This recursive algorithm isn't very efficient, but is clear and - // works well enough for matching test names, which are short. - static bool PatternMatchesString(const char *pattern, const char *str); - - // Returns true iff the user-specified filter matches the test case - // name and the test name. - static bool FilterMatchesTest(const String &test_case_name, - const String &test_name); - -#if GTEST_OS_WINDOWS - // Function for supporting the gtest_catch_exception flag. - - // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the - // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. - // This function is useful as an __except condition. - static int GTestShouldProcessSEH(DWORD exception_code); -#endif // GTEST_OS_WINDOWS - - // Returns true if "name" matches the ':' separated list of glob-style - // filters in "filter". - static bool MatchesFilter(const String& name, const char* filter); -}; - -// Returns the current application's name, removing directory path if that -// is present. Used by UnitTestOptions::GetOutputFile. -GTEST_API_ FilePath GetCurrentExecutableName(); - -// The role interface for getting the OS stack trace as a string. -class OsStackTraceGetterInterface { - public: - OsStackTraceGetterInterface() {} - virtual ~OsStackTraceGetterInterface() {} - - // Returns the current OS stack trace as a String. Parameters: - // - // max_depth - the maximum number of stack frames to be included - // in the trace. - // skip_count - the number of top frames to be skipped; doesn't count - // against max_depth. - virtual String CurrentStackTrace(int max_depth, int skip_count) = 0; - - // UponLeavingGTest() should be called immediately before Google Test calls - // user code. It saves some information about the current stack that - // CurrentStackTrace() will use to find and hide Google Test stack frames. - virtual void UponLeavingGTest() = 0; - - private: - GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface); -}; - -// A working implementation of the OsStackTraceGetterInterface interface. -class OsStackTraceGetter : public OsStackTraceGetterInterface { - public: - OsStackTraceGetter() : caller_frame_(NULL) {} - virtual String CurrentStackTrace(int max_depth, int skip_count); - virtual void UponLeavingGTest(); - - // This string is inserted in place of stack frames that are part of - // Google Test's implementation. - static const char* const kElidedFramesMarker; - - private: - Mutex mutex_; // protects all internal state - - // We save the stack frame below the frame that calls user code. - // We do this because the address of the frame immediately below - // the user code changes between the call to UponLeavingGTest() - // and any calls to CurrentStackTrace() from within the user code. - void* caller_frame_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter); -}; - -// Information about a Google Test trace point. -struct TraceInfo { - const char* file; - int line; - String message; -}; - -// This is the default global test part result reporter used in UnitTestImpl. -// This class should only be used by UnitTestImpl. -class DefaultGlobalTestPartResultReporter - : public TestPartResultReporterInterface { - public: - explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test); - // Implements the TestPartResultReporterInterface. Reports the test part - // result in the current test. - virtual void ReportTestPartResult(const TestPartResult& result); - - private: - UnitTestImpl* const unit_test_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter); -}; - -// This is the default per thread test part result reporter used in -// UnitTestImpl. This class should only be used by UnitTestImpl. -class DefaultPerThreadTestPartResultReporter - : public TestPartResultReporterInterface { - public: - explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test); - // Implements the TestPartResultReporterInterface. The implementation just - // delegates to the current global test part result reporter of *unit_test_. - virtual void ReportTestPartResult(const TestPartResult& result); - - private: - UnitTestImpl* const unit_test_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter); -}; - -// The private implementation of the UnitTest class. We don't protect -// the methods under a mutex, as this class is not accessible by a -// user and the UnitTest class that delegates work to this class does -// proper locking. -class GTEST_API_ UnitTestImpl { - public: - explicit UnitTestImpl(UnitTest* parent); - virtual ~UnitTestImpl(); - - // There are two different ways to register your own TestPartResultReporter. - // You can register your own repoter to listen either only for test results - // from the current thread or for results from all threads. - // By default, each per-thread test result repoter just passes a new - // TestPartResult to the global test result reporter, which registers the - // test part result for the currently running test. - - // Returns the global test part result reporter. - TestPartResultReporterInterface* GetGlobalTestPartResultReporter(); - - // Sets the global test part result reporter. - void SetGlobalTestPartResultReporter( - TestPartResultReporterInterface* reporter); - - // Returns the test part result reporter for the current thread. - TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread(); - - // Sets the test part result reporter for the current thread. - void SetTestPartResultReporterForCurrentThread( - TestPartResultReporterInterface* reporter); - - // Gets the number of successful test cases. - int successful_test_case_count() const; - - // Gets the number of failed test cases. - int failed_test_case_count() const; - - // Gets the number of all test cases. - int total_test_case_count() const; - - // Gets the number of all test cases that contain at least one test - // that should run. - int test_case_to_run_count() const; - - // Gets the number of successful tests. - int successful_test_count() const; - - // Gets the number of failed tests. - int failed_test_count() const; - - // Gets the number of disabled tests. - int disabled_test_count() const; - - // Gets the number of all tests. - int total_test_count() const; - - // Gets the number of tests that should run. - int test_to_run_count() const; - - // Gets the elapsed time, in milliseconds. - TimeInMillis elapsed_time() const { return elapsed_time_; } - - // Returns true iff the unit test passed (i.e. all test cases passed). - bool Passed() const { return !Failed(); } - - // Returns true iff the unit test failed (i.e. some test case failed - // or something outside of all tests failed). - bool Failed() const { - return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); - } - - // Gets the i-th test case among all the test cases. i can range from 0 to - // total_test_case_count() - 1. If i is not in that range, returns NULL. - const TestCase* GetTestCase(int i) const { - const int index = GetElementOr(test_case_indices_, i, -1); - return index < 0 ? NULL : test_cases_[i]; - } - - // Gets the i-th test case among all the test cases. i can range from 0 to - // total_test_case_count() - 1. If i is not in that range, returns NULL. - TestCase* GetMutableTestCase(int i) { - const int index = GetElementOr(test_case_indices_, i, -1); - return index < 0 ? NULL : test_cases_[index]; - } - - // Provides access to the event listener list. - TestEventListeners* listeners() { return &listeners_; } - - // Returns the TestResult for the test that's currently running, or - // the TestResult for the ad hoc test if no test is running. - TestResult* current_test_result(); - - // Returns the TestResult for the ad hoc test. - const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } - - // Sets the OS stack trace getter. - // - // Does nothing if the input and the current OS stack trace getter - // are the same; otherwise, deletes the old getter and makes the - // input the current getter. - void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); - - // Returns the current OS stack trace getter if it is not NULL; - // otherwise, creates an OsStackTraceGetter, makes it the current - // getter, and returns it. - OsStackTraceGetterInterface* os_stack_trace_getter(); - - // Returns the current OS stack trace as a String. - // - // The maximum number of stack frames to be included is specified by - // the gtest_stack_trace_depth flag. The skip_count parameter - // specifies the number of top frames to be skipped, which doesn't - // count against the number of frames to be included. - // - // For example, if Foo() calls Bar(), which in turn calls - // CurrentOsStackTraceExceptTop(1), Foo() will be included in the - // trace but Bar() and CurrentOsStackTraceExceptTop() won't. - String CurrentOsStackTraceExceptTop(int skip_count); - - // Finds and returns a TestCase with the given name. If one doesn't - // exist, creates one and returns it. - // - // Arguments: - // - // test_case_name: name of the test case - // type_param: the name of the test's type parameter, or NULL if - // this is not a typed or a type-parameterized test. - // set_up_tc: pointer to the function that sets up the test case - // tear_down_tc: pointer to the function that tears down the test case - TestCase* GetTestCase(const char* test_case_name, - const char* type_param, - Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc); - - // Adds a TestInfo to the unit test. - // - // Arguments: - // - // set_up_tc: pointer to the function that sets up the test case - // tear_down_tc: pointer to the function that tears down the test case - // test_info: the TestInfo object - void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc, - TestInfo* test_info) { - // In order to support thread-safe death tests, we need to - // remember the original working directory when the test program - // was first invoked. We cannot do this in RUN_ALL_TESTS(), as - // the user may have changed the current directory before calling - // RUN_ALL_TESTS(). Therefore we capture the current directory in - // AddTestInfo(), which is called to register a TEST or TEST_F - // before main() is reached. - if (original_working_dir_.IsEmpty()) { - original_working_dir_.Set(FilePath::GetCurrentDir()); - GTEST_CHECK_(!original_working_dir_.IsEmpty()) - << "Failed to get the current working directory."; - } - - GetTestCase(test_info->test_case_name(), - test_info->type_param(), - set_up_tc, - tear_down_tc)->AddTestInfo(test_info); - } - -#if GTEST_HAS_PARAM_TEST - // Returns ParameterizedTestCaseRegistry object used to keep track of - // value-parameterized tests and instantiate and register them. - internal::ParameterizedTestCaseRegistry& parameterized_test_registry() { - return parameterized_test_registry_; - } -#endif // GTEST_HAS_PARAM_TEST - - // Sets the TestCase object for the test that's currently running. - void set_current_test_case(TestCase* a_current_test_case) { - current_test_case_ = a_current_test_case; - } - - // Sets the TestInfo object for the test that's currently running. If - // current_test_info is NULL, the assertion results will be stored in - // ad_hoc_test_result_. - void set_current_test_info(TestInfo* a_current_test_info) { - current_test_info_ = a_current_test_info; - } - - // Registers all parameterized tests defined using TEST_P and - // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter - // combination. This method can be called more then once; it has guards - // protecting from registering the tests more then once. If - // value-parameterized tests are disabled, RegisterParameterizedTests is - // present but does nothing. - void RegisterParameterizedTests(); - - // Runs all tests in this UnitTest object, prints the result, and - // returns true if all tests are successful. If any exception is - // thrown during a test, this test is considered to be failed, but - // the rest of the tests will still be run. - bool RunAllTests(); - - // Clears the results of all tests, except the ad hoc tests. - void ClearNonAdHocTestResult() { - ForEach(test_cases_, TestCase::ClearTestCaseResult); - } - - // Clears the results of ad-hoc test assertions. - void ClearAdHocTestResult() { - ad_hoc_test_result_.Clear(); - } - - enum ReactionToSharding { - HONOR_SHARDING_PROTOCOL, - IGNORE_SHARDING_PROTOCOL - }; - - // Matches the full name of each test against the user-specified - // filter to decide whether the test should run, then records the - // result in each TestCase and TestInfo object. - // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests - // based on sharding variables in the environment. - // Returns the number of tests that should run. - int FilterTests(ReactionToSharding shard_tests); - - // Prints the names of the tests matching the user-specified filter flag. - void ListTestsMatchingFilter(); - - const TestCase* current_test_case() const { return current_test_case_; } - TestInfo* current_test_info() { return current_test_info_; } - const TestInfo* current_test_info() const { return current_test_info_; } - - // Returns the vector of environments that need to be set-up/torn-down - // before/after the tests are run. - std::vector& environments() { return environments_; } - - // Getters for the per-thread Google Test trace stack. - std::vector& gtest_trace_stack() { - return *(gtest_trace_stack_.pointer()); - } - const std::vector& gtest_trace_stack() const { - return gtest_trace_stack_.get(); - } - -#if GTEST_HAS_DEATH_TEST - void InitDeathTestSubprocessControlInfo() { - internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag()); - } - // Returns a pointer to the parsed --gtest_internal_run_death_test - // flag, or NULL if that flag was not specified. - // This information is useful only in a death test child process. - // Must not be called before a call to InitGoogleTest. - const InternalRunDeathTestFlag* internal_run_death_test_flag() const { - return internal_run_death_test_flag_.get(); - } - - // Returns a pointer to the current death test factory. - internal::DeathTestFactory* death_test_factory() { - return death_test_factory_.get(); - } - - void SuppressTestEventsIfInSubprocess(); - - friend class ReplaceDeathTestFactory; -#endif // GTEST_HAS_DEATH_TEST - - // Initializes the event listener performing XML output as specified by - // UnitTestOptions. Must not be called before InitGoogleTest. - void ConfigureXmlOutput(); - -#if GTEST_CAN_STREAM_RESULTS_ - // Initializes the event listener for streaming test results to a socket. - // Must not be called before InitGoogleTest. - void ConfigureStreamingOutput(); -#endif - - // Performs initialization dependent upon flag values obtained in - // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to - // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest - // this function is also called from RunAllTests. Since this function can be - // called more than once, it has to be idempotent. - void PostFlagParsingInit(); - - // Gets the random seed used at the start of the current test iteration. - int random_seed() const { return random_seed_; } - - // Gets the random number generator. - internal::Random* random() { return &random_; } - - // Shuffles all test cases, and the tests within each test case, - // making sure that death tests are still run first. - void ShuffleTests(); - - // Restores the test cases and tests to their order before the first shuffle. - void UnshuffleTests(); - - // Returns the value of GTEST_FLAG(catch_exceptions) at the moment - // UnitTest::Run() starts. - bool catch_exceptions() const { return catch_exceptions_; } - - private: - friend class ::testing::UnitTest; - - // Used by UnitTest::Run() to capture the state of - // GTEST_FLAG(catch_exceptions) at the moment it starts. - void set_catch_exceptions(bool value) { catch_exceptions_ = value; } - - // The UnitTest object that owns this implementation object. - UnitTest* const parent_; - - // The working directory when the first TEST() or TEST_F() was - // executed. - internal::FilePath original_working_dir_; - - // The default test part result reporters. - DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_; - DefaultPerThreadTestPartResultReporter - default_per_thread_test_part_result_reporter_; - - // Points to (but doesn't own) the global test part result reporter. - TestPartResultReporterInterface* global_test_part_result_repoter_; - - // Protects read and write access to global_test_part_result_reporter_. - internal::Mutex global_test_part_result_reporter_mutex_; - - // Points to (but doesn't own) the per-thread test part result reporter. - internal::ThreadLocal - per_thread_test_part_result_reporter_; - - // The vector of environments that need to be set-up/torn-down - // before/after the tests are run. - std::vector environments_; - - // The vector of TestCases in their original order. It owns the - // elements in the vector. - std::vector test_cases_; - - // Provides a level of indirection for the test case list to allow - // easy shuffling and restoring the test case order. The i-th - // element of this vector is the index of the i-th test case in the - // shuffled order. - std::vector test_case_indices_; - -#if GTEST_HAS_PARAM_TEST - // ParameterizedTestRegistry object used to register value-parameterized - // tests. - internal::ParameterizedTestCaseRegistry parameterized_test_registry_; - - // Indicates whether RegisterParameterizedTests() has been called already. - bool parameterized_tests_registered_; -#endif // GTEST_HAS_PARAM_TEST - - // Index of the last death test case registered. Initially -1. - int last_death_test_case_; - - // This points to the TestCase for the currently running test. It - // changes as Google Test goes through one test case after another. - // When no test is running, this is set to NULL and Google Test - // stores assertion results in ad_hoc_test_result_. Initially NULL. - TestCase* current_test_case_; - - // This points to the TestInfo for the currently running test. It - // changes as Google Test goes through one test after another. When - // no test is running, this is set to NULL and Google Test stores - // assertion results in ad_hoc_test_result_. Initially NULL. - TestInfo* current_test_info_; - - // Normally, a user only writes assertions inside a TEST or TEST_F, - // or inside a function called by a TEST or TEST_F. Since Google - // Test keeps track of which test is current running, it can - // associate such an assertion with the test it belongs to. - // - // If an assertion is encountered when no TEST or TEST_F is running, - // Google Test attributes the assertion result to an imaginary "ad hoc" - // test, and records the result in ad_hoc_test_result_. - TestResult ad_hoc_test_result_; - - // The list of event listeners that can be used to track events inside - // Google Test. - TestEventListeners listeners_; - - // The OS stack trace getter. Will be deleted when the UnitTest - // object is destructed. By default, an OsStackTraceGetter is used, - // but the user can set this field to use a custom getter if that is - // desired. - OsStackTraceGetterInterface* os_stack_trace_getter_; - - // True iff PostFlagParsingInit() has been called. - bool post_flag_parse_init_performed_; - - // The random number seed used at the beginning of the test run. - int random_seed_; - - // Our random number generator. - internal::Random random_; - - // How long the test took to run, in milliseconds. - TimeInMillis elapsed_time_; - -#if GTEST_HAS_DEATH_TEST - // The decomposed components of the gtest_internal_run_death_test flag, - // parsed when RUN_ALL_TESTS is called. - internal::scoped_ptr internal_run_death_test_flag_; - internal::scoped_ptr death_test_factory_; -#endif // GTEST_HAS_DEATH_TEST - - // A per-thread stack of traces created by the SCOPED_TRACE() macro. - internal::ThreadLocal > gtest_trace_stack_; - - // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests() - // starts. - bool catch_exceptions_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl); -}; // class UnitTestImpl - -// Convenience function for accessing the global UnitTest -// implementation object. -inline UnitTestImpl* GetUnitTestImpl() { - return UnitTest::GetInstance()->impl(); -} - -#if GTEST_USES_SIMPLE_RE - -// Internal helper functions for implementing the simple regular -// expression matcher. -GTEST_API_ bool IsInSet(char ch, const char* str); -GTEST_API_ bool IsAsciiDigit(char ch); -GTEST_API_ bool IsAsciiPunct(char ch); -GTEST_API_ bool IsRepeat(char ch); -GTEST_API_ bool IsAsciiWhiteSpace(char ch); -GTEST_API_ bool IsAsciiWordChar(char ch); -GTEST_API_ bool IsValidEscape(char ch); -GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch); -GTEST_API_ bool ValidateRegex(const char* regex); -GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str); -GTEST_API_ bool MatchRepetitionAndRegexAtHead( - bool escaped, char ch, char repeat, const char* regex, const char* str); -GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str); - -#endif // GTEST_USES_SIMPLE_RE - -// Parses the command line for Google Test flags, without initializing -// other parts of Google Test. -GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv); -GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv); - -#if GTEST_HAS_DEATH_TEST - -// Returns the message describing the last system error, regardless of the -// platform. -GTEST_API_ String GetLastErrnoDescription(); - -# if GTEST_OS_WINDOWS -// Provides leak-safe Windows kernel handle ownership. -class AutoHandle { - public: - AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} - explicit AutoHandle(HANDLE handle) : handle_(handle) {} - - ~AutoHandle() { Reset(); } - - HANDLE Get() const { return handle_; } - void Reset() { Reset(INVALID_HANDLE_VALUE); } - void Reset(HANDLE handle) { - if (handle != handle_) { - if (handle_ != INVALID_HANDLE_VALUE) - ::CloseHandle(handle_); - handle_ = handle; - } - } - - private: - HANDLE handle_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle); -}; -# endif // GTEST_OS_WINDOWS - -// Attempts to parse a string into a positive integer pointed to by the -// number parameter. Returns true if that is possible. -// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use -// it here. -template -bool ParseNaturalNumber(const ::std::string& str, Integer* number) { - // Fail fast if the given string does not begin with a digit; - // this bypasses strtoXXX's "optional leading whitespace and plus - // or minus sign" semantics, which are undesirable here. - if (str.empty() || !IsDigit(str[0])) { - return false; - } - errno = 0; - - char* end; - // BiggestConvertible is the largest integer type that system-provided - // string-to-number conversion routines can return. - -# if GTEST_OS_WINDOWS && !defined(__GNUC__) - - // MSVC and C++ Builder define __int64 instead of the standard long long. - typedef unsigned __int64 BiggestConvertible; - const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); - -# else - - typedef unsigned long long BiggestConvertible; // NOLINT - const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); - -# endif // GTEST_OS_WINDOWS && !defined(__GNUC__) - - const bool parse_success = *end == '\0' && errno == 0; - - // TODO(vladl@google.com): Convert this to compile time assertion when it is - // available. - GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); - - const Integer result = static_cast(parsed); - if (parse_success && static_cast(result) == parsed) { - *number = result; - return true; - } - return false; -} -#endif // GTEST_HAS_DEATH_TEST - -// TestResult contains some private methods that should be hidden from -// Google Test user but are required for testing. This class allow our tests -// to access them. -// -// This class is supplied only for the purpose of testing Google Test's own -// constructs. Do not use it in user tests, either directly or indirectly. -class TestResultAccessor { - public: - static void RecordProperty(TestResult* test_result, - const TestProperty& property) { - test_result->RecordProperty(property); - } - - static void ClearTestPartResults(TestResult* test_result) { - test_result->ClearTestPartResults(); - } - - static const std::vector& test_part_results( - const TestResult& test_result) { - return test_result.test_part_results(); - } -}; - -} // namespace internal -} // namespace testing - -#endif // GTEST_SRC_GTEST_INTERNAL_INL_H_ -#undef GTEST_IMPLEMENTATION_ - -#if GTEST_OS_WINDOWS -# define vsnprintf _vsnprintf -#endif // GTEST_OS_WINDOWS - -namespace testing { - -using internal::CountIf; -using internal::ForEach; -using internal::GetElementOr; -using internal::Shuffle; - -// Constants. - -// A test whose test case name or test name matches this filter is -// disabled and not run. -static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*"; - -// A test case whose name matches this filter is considered a death -// test case and will be run before test cases whose name doesn't -// match this filter. -static const char kDeathTestCaseFilter[] = "*DeathTest:*DeathTest/*"; - -// A test filter that matches everything. -static const char kUniversalFilter[] = "*"; - -// The default output file for XML output. -static const char kDefaultOutputFile[] = "test_detail.xml"; - -// The environment variable name for the test shard index. -static const char kTestShardIndex[] = "GTEST_SHARD_INDEX"; -// The environment variable name for the total number of test shards. -static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS"; -// The environment variable name for the test shard status file. -static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE"; - -namespace internal { - -// The text used in failure messages to indicate the start of the -// stack trace. -const char kStackTraceMarker[] = "\nStack trace:\n"; - -// g_help_flag is true iff the --help flag or an equivalent form is -// specified on the command line. -bool g_help_flag = false; - -} // namespace internal - -GTEST_DEFINE_bool_( - also_run_disabled_tests, - internal::BoolFromGTestEnv("also_run_disabled_tests", false), - "Run disabled tests too, in addition to the tests normally being run."); - -GTEST_DEFINE_bool_( - break_on_failure, - internal::BoolFromGTestEnv("break_on_failure", false), - "True iff a failed assertion should be a debugger break-point."); - -GTEST_DEFINE_bool_( - catch_exceptions, - internal::BoolFromGTestEnv("catch_exceptions", true), - "True iff " GTEST_NAME_ - " should catch exceptions and treat them as test failures."); - -GTEST_DEFINE_string_( - color, - internal::StringFromGTestEnv("color", "auto"), - "Whether to use colors in the output. Valid values: yes, no, " - "and auto. 'auto' means to use colors if the output is " - "being sent to a terminal and the TERM environment variable " - "is set to xterm, xterm-color, xterm-256color, linux or cygwin."); - -GTEST_DEFINE_string_( - filter, - internal::StringFromGTestEnv("filter", kUniversalFilter), - "A colon-separated list of glob (not regex) patterns " - "for filtering the tests to run, optionally followed by a " - "'-' and a : separated list of negative patterns (tests to " - "exclude). A test is run if it matches one of the positive " - "patterns and does not match any of the negative patterns."); - -GTEST_DEFINE_bool_(list_tests, false, - "List all tests without running them."); - -GTEST_DEFINE_string_( - output, - internal::StringFromGTestEnv("output", ""), - "A format (currently must be \"xml\"), optionally followed " - "by a colon and an output file name or directory. A directory " - "is indicated by a trailing pathname separator. " - "Examples: \"xml:filename.xml\", \"xml::directoryname/\". " - "If a directory is specified, output files will be created " - "within that directory, with file-names based on the test " - "executable's name and, if necessary, made unique by adding " - "digits."); - -GTEST_DEFINE_bool_( - print_time, - internal::BoolFromGTestEnv("print_time", true), - "True iff " GTEST_NAME_ - " should display elapsed time in text output."); - -GTEST_DEFINE_int32_( - random_seed, - internal::Int32FromGTestEnv("random_seed", 0), - "Random number seed to use when shuffling test orders. Must be in range " - "[1, 99999], or 0 to use a seed based on the current time."); - -GTEST_DEFINE_int32_( - repeat, - internal::Int32FromGTestEnv("repeat", 1), - "How many times to repeat each test. Specify a negative number " - "for repeating forever. Useful for shaking out flaky tests."); - -GTEST_DEFINE_bool_( - show_internal_stack_frames, false, - "True iff " GTEST_NAME_ " should include internal stack frames when " - "printing test failure stack traces."); - -GTEST_DEFINE_bool_( - shuffle, - internal::BoolFromGTestEnv("shuffle", false), - "True iff " GTEST_NAME_ - " should randomize tests' order on every run."); - -GTEST_DEFINE_int32_( - stack_trace_depth, - internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth), - "The maximum number of stack frames to print when an " - "assertion fails. The valid range is 0 through 100, inclusive."); - -GTEST_DEFINE_string_( - stream_result_to, - internal::StringFromGTestEnv("stream_result_to", ""), - "This flag specifies the host name and the port number on which to stream " - "test results. Example: \"localhost:555\". The flag is effective only on " - "Linux."); - -GTEST_DEFINE_bool_( - throw_on_failure, - internal::BoolFromGTestEnv("throw_on_failure", false), - "When this flag is specified, a failed assertion will throw an exception " - "if exceptions are enabled or exit the program with a non-zero code " - "otherwise."); - -namespace internal { - -// Generates a random number from [0, range), using a Linear -// Congruential Generator (LCG). Crashes if 'range' is 0 or greater -// than kMaxRange. -UInt32 Random::Generate(UInt32 range) { - // These constants are the same as are used in glibc's rand(3). - state_ = (1103515245U*state_ + 12345U) % kMaxRange; - - GTEST_CHECK_(range > 0) - << "Cannot generate a number in the range [0, 0)."; - GTEST_CHECK_(range <= kMaxRange) - << "Generation of a number in [0, " << range << ") was requested, " - << "but this can only generate numbers in [0, " << kMaxRange << ")."; - - // Converting via modulus introduces a bit of downward bias, but - // it's simple, and a linear congruential generator isn't too good - // to begin with. - return state_ % range; -} - -// GTestIsInitialized() returns true iff the user has initialized -// Google Test. Useful for catching the user mistake of not initializing -// Google Test before calling RUN_ALL_TESTS(). -// -// A user must call testing::InitGoogleTest() to initialize Google -// Test. g_init_gtest_count is set to the number of times -// InitGoogleTest() has been called. We don't protect this variable -// under a mutex as it is only accessed in the main thread. -int g_init_gtest_count = 0; -static bool GTestIsInitialized() { return g_init_gtest_count != 0; } - -// Iterates over a vector of TestCases, keeping a running sum of the -// results of calling a given int-returning method on each. -// Returns the sum. -static int SumOverTestCaseList(const std::vector& case_list, - int (TestCase::*method)() const) { - int sum = 0; - for (size_t i = 0; i < case_list.size(); i++) { - sum += (case_list[i]->*method)(); - } - return sum; -} - -// Returns true iff the test case passed. -static bool TestCasePassed(const TestCase* test_case) { - return test_case->should_run() && test_case->Passed(); -} - -// Returns true iff the test case failed. -static bool TestCaseFailed(const TestCase* test_case) { - return test_case->should_run() && test_case->Failed(); -} - -// Returns true iff test_case contains at least one test that should -// run. -static bool ShouldRunTestCase(const TestCase* test_case) { - return test_case->should_run(); -} - -// AssertHelper constructor. -AssertHelper::AssertHelper(TestPartResult::Type type, - const char* file, - int line, - const char* message) - : data_(new AssertHelperData(type, file, line, message)) { -} - -AssertHelper::~AssertHelper() { - delete data_; -} - -// Message assignment, for assertion streaming support. -void AssertHelper::operator=(const Message& message) const { - UnitTest::GetInstance()-> - AddTestPartResult(data_->type, data_->file, data_->line, - AppendUserMessage(data_->message, message), - UnitTest::GetInstance()->impl() - ->CurrentOsStackTraceExceptTop(1) - // Skips the stack frame for this function itself. - ); // NOLINT -} - -// Mutex for linked pointers. -GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex); - -// Application pathname gotten in InitGoogleTest. -String g_executable_path; - -// Returns the current application's name, removing directory path if that -// is present. -FilePath GetCurrentExecutableName() { - FilePath result; - -#if GTEST_OS_WINDOWS - result.Set(FilePath(g_executable_path).RemoveExtension("exe")); -#else - result.Set(FilePath(g_executable_path)); -#endif // GTEST_OS_WINDOWS - - return result.RemoveDirectoryName(); -} - -// Functions for processing the gtest_output flag. - -// Returns the output format, or "" for normal printed output. -String UnitTestOptions::GetOutputFormat() { - const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); - if (gtest_output_flag == NULL) return String(""); - - const char* const colon = strchr(gtest_output_flag, ':'); - return (colon == NULL) ? - String(gtest_output_flag) : - String(gtest_output_flag, colon - gtest_output_flag); -} - -// Returns the name of the requested output file, or the default if none -// was explicitly specified. -String UnitTestOptions::GetAbsolutePathToOutputFile() { - const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); - if (gtest_output_flag == NULL) - return String(""); - - const char* const colon = strchr(gtest_output_flag, ':'); - if (colon == NULL) - return String(internal::FilePath::ConcatPaths( - internal::FilePath( - UnitTest::GetInstance()->original_working_dir()), - internal::FilePath(kDefaultOutputFile)).ToString() ); - - internal::FilePath output_name(colon + 1); - if (!output_name.IsAbsolutePath()) - // TODO(wan@google.com): on Windows \some\path is not an absolute - // path (as its meaning depends on the current drive), yet the - // following logic for turning it into an absolute path is wrong. - // Fix it. - output_name = internal::FilePath::ConcatPaths( - internal::FilePath(UnitTest::GetInstance()->original_working_dir()), - internal::FilePath(colon + 1)); - - if (!output_name.IsDirectory()) - return output_name.ToString(); - - internal::FilePath result(internal::FilePath::GenerateUniqueFileName( - output_name, internal::GetCurrentExecutableName(), - GetOutputFormat().c_str())); - return result.ToString(); -} - -// Returns true iff the wildcard pattern matches the string. The -// first ':' or '\0' character in pattern marks the end of it. -// -// This recursive algorithm isn't very efficient, but is clear and -// works well enough for matching test names, which are short. -bool UnitTestOptions::PatternMatchesString(const char *pattern, - const char *str) { - switch (*pattern) { - case '\0': - case ':': // Either ':' or '\0' marks the end of the pattern. - return *str == '\0'; - case '?': // Matches any single character. - return *str != '\0' && PatternMatchesString(pattern + 1, str + 1); - case '*': // Matches any string (possibly empty) of characters. - return (*str != '\0' && PatternMatchesString(pattern, str + 1)) || - PatternMatchesString(pattern + 1, str); - default: // Non-special character. Matches itself. - return *pattern == *str && - PatternMatchesString(pattern + 1, str + 1); - } -} - -bool UnitTestOptions::MatchesFilter(const String& name, const char* filter) { - const char *cur_pattern = filter; - for (;;) { - if (PatternMatchesString(cur_pattern, name.c_str())) { - return true; - } - - // Finds the next pattern in the filter. - cur_pattern = strchr(cur_pattern, ':'); - - // Returns if no more pattern can be found. - if (cur_pattern == NULL) { - return false; - } - - // Skips the pattern separater (the ':' character). - cur_pattern++; - } -} - -// TODO(keithray): move String function implementations to gtest-string.cc. - -// Returns true iff the user-specified filter matches the test case -// name and the test name. -bool UnitTestOptions::FilterMatchesTest(const String &test_case_name, - const String &test_name) { - const String& full_name = String::Format("%s.%s", - test_case_name.c_str(), - test_name.c_str()); - - // Split --gtest_filter at '-', if there is one, to separate into - // positive filter and negative filter portions - const char* const p = GTEST_FLAG(filter).c_str(); - const char* const dash = strchr(p, '-'); - String positive; - String negative; - if (dash == NULL) { - positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter - negative = String(""); - } else { - positive = String(p, dash - p); // Everything up to the dash - negative = String(dash+1); // Everything after the dash - if (positive.empty()) { - // Treat '-test1' as the same as '*-test1' - positive = kUniversalFilter; - } - } - - // A filter is a colon-separated list of patterns. It matches a - // test if any pattern in it matches the test. - return (MatchesFilter(full_name, positive.c_str()) && - !MatchesFilter(full_name, negative.c_str())); -} - -#if GTEST_HAS_SEH -// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the -// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. -// This function is useful as an __except condition. -int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) { - // Google Test should handle a SEH exception if: - // 1. the user wants it to, AND - // 2. this is not a breakpoint exception, AND - // 3. this is not a C++ exception (VC++ implements them via SEH, - // apparently). - // - // SEH exception code for C++ exceptions. - // (see http://support.microsoft.com/kb/185294 for more information). - const DWORD kCxxExceptionCode = 0xe06d7363; - - bool should_handle = true; - - if (!GTEST_FLAG(catch_exceptions)) - should_handle = false; - else if (exception_code == EXCEPTION_BREAKPOINT) - should_handle = false; - else if (exception_code == kCxxExceptionCode) - should_handle = false; - - return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH; -} -#endif // GTEST_HAS_SEH - -} // namespace internal - -// The c'tor sets this object as the test part result reporter used by -// Google Test. The 'result' parameter specifies where to report the -// results. Intercepts only failures from the current thread. -ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( - TestPartResultArray* result) - : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD), - result_(result) { - Init(); -} - -// The c'tor sets this object as the test part result reporter used by -// Google Test. The 'result' parameter specifies where to report the -// results. -ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( - InterceptMode intercept_mode, TestPartResultArray* result) - : intercept_mode_(intercept_mode), - result_(result) { - Init(); -} - -void ScopedFakeTestPartResultReporter::Init() { - internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); - if (intercept_mode_ == INTERCEPT_ALL_THREADS) { - old_reporter_ = impl->GetGlobalTestPartResultReporter(); - impl->SetGlobalTestPartResultReporter(this); - } else { - old_reporter_ = impl->GetTestPartResultReporterForCurrentThread(); - impl->SetTestPartResultReporterForCurrentThread(this); - } -} - -// The d'tor restores the test part result reporter used by Google Test -// before. -ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() { - internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); - if (intercept_mode_ == INTERCEPT_ALL_THREADS) { - impl->SetGlobalTestPartResultReporter(old_reporter_); - } else { - impl->SetTestPartResultReporterForCurrentThread(old_reporter_); - } -} - -// Increments the test part result count and remembers the result. -// This method is from the TestPartResultReporterInterface interface. -void ScopedFakeTestPartResultReporter::ReportTestPartResult( - const TestPartResult& result) { - result_->Append(result); -} - -namespace internal { - -// Returns the type ID of ::testing::Test. We should always call this -// instead of GetTypeId< ::testing::Test>() to get the type ID of -// testing::Test. This is to work around a suspected linker bug when -// using Google Test as a framework on Mac OS X. The bug causes -// GetTypeId< ::testing::Test>() to return different values depending -// on whether the call is from the Google Test framework itself or -// from user test code. GetTestTypeId() is guaranteed to always -// return the same value, as it always calls GetTypeId<>() from the -// gtest.cc, which is within the Google Test framework. -TypeId GetTestTypeId() { - return GetTypeId(); -} - -// The value of GetTestTypeId() as seen from within the Google Test -// library. This is solely for testing GetTestTypeId(). -extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); - -// This predicate-formatter checks that 'results' contains a test part -// failure of the given type and that the failure message contains the -// given substring. -AssertionResult HasOneFailure(const char* /* results_expr */, - const char* /* type_expr */, - const char* /* substr_expr */, - const TestPartResultArray& results, - TestPartResult::Type type, - const string& substr) { - const String expected(type == TestPartResult::kFatalFailure ? - "1 fatal failure" : - "1 non-fatal failure"); - Message msg; - if (results.size() != 1) { - msg << "Expected: " << expected << "\n" - << " Actual: " << results.size() << " failures"; - for (int i = 0; i < results.size(); i++) { - msg << "\n" << results.GetTestPartResult(i); - } - return AssertionFailure() << msg; - } - - const TestPartResult& r = results.GetTestPartResult(0); - if (r.type() != type) { - return AssertionFailure() << "Expected: " << expected << "\n" - << " Actual:\n" - << r; - } - - if (strstr(r.message(), substr.c_str()) == NULL) { - return AssertionFailure() << "Expected: " << expected << " containing \"" - << substr << "\"\n" - << " Actual:\n" - << r; - } - - return AssertionSuccess(); -} - -// The constructor of SingleFailureChecker remembers where to look up -// test part results, what type of failure we expect, and what -// substring the failure message should contain. -SingleFailureChecker:: SingleFailureChecker( - const TestPartResultArray* results, - TestPartResult::Type type, - const string& substr) - : results_(results), - type_(type), - substr_(substr) {} - -// The destructor of SingleFailureChecker verifies that the given -// TestPartResultArray contains exactly one failure that has the given -// type and contains the given substring. If that's not the case, a -// non-fatal failure will be generated. -SingleFailureChecker::~SingleFailureChecker() { - EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); -} - -DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter( - UnitTestImpl* unit_test) : unit_test_(unit_test) {} - -void DefaultGlobalTestPartResultReporter::ReportTestPartResult( - const TestPartResult& result) { - unit_test_->current_test_result()->AddTestPartResult(result); - unit_test_->listeners()->repeater()->OnTestPartResult(result); -} - -DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter( - UnitTestImpl* unit_test) : unit_test_(unit_test) {} - -void DefaultPerThreadTestPartResultReporter::ReportTestPartResult( - const TestPartResult& result) { - unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result); -} - -// Returns the global test part result reporter. -TestPartResultReporterInterface* -UnitTestImpl::GetGlobalTestPartResultReporter() { - internal::MutexLock lock(&global_test_part_result_reporter_mutex_); - return global_test_part_result_repoter_; -} - -// Sets the global test part result reporter. -void UnitTestImpl::SetGlobalTestPartResultReporter( - TestPartResultReporterInterface* reporter) { - internal::MutexLock lock(&global_test_part_result_reporter_mutex_); - global_test_part_result_repoter_ = reporter; -} - -// Returns the test part result reporter for the current thread. -TestPartResultReporterInterface* -UnitTestImpl::GetTestPartResultReporterForCurrentThread() { - return per_thread_test_part_result_reporter_.get(); -} - -// Sets the test part result reporter for the current thread. -void UnitTestImpl::SetTestPartResultReporterForCurrentThread( - TestPartResultReporterInterface* reporter) { - per_thread_test_part_result_reporter_.set(reporter); -} - -// Gets the number of successful test cases. -int UnitTestImpl::successful_test_case_count() const { - return CountIf(test_cases_, TestCasePassed); -} - -// Gets the number of failed test cases. -int UnitTestImpl::failed_test_case_count() const { - return CountIf(test_cases_, TestCaseFailed); -} - -// Gets the number of all test cases. -int UnitTestImpl::total_test_case_count() const { - return static_cast(test_cases_.size()); -} - -// Gets the number of all test cases that contain at least one test -// that should run. -int UnitTestImpl::test_case_to_run_count() const { - return CountIf(test_cases_, ShouldRunTestCase); -} - -// Gets the number of successful tests. -int UnitTestImpl::successful_test_count() const { - return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count); -} - -// Gets the number of failed tests. -int UnitTestImpl::failed_test_count() const { - return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count); -} - -// Gets the number of disabled tests. -int UnitTestImpl::disabled_test_count() const { - return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count); -} - -// Gets the number of all tests. -int UnitTestImpl::total_test_count() const { - return SumOverTestCaseList(test_cases_, &TestCase::total_test_count); -} - -// Gets the number of tests that should run. -int UnitTestImpl::test_to_run_count() const { - return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count); -} - -// Returns the current OS stack trace as a String. -// -// The maximum number of stack frames to be included is specified by -// the gtest_stack_trace_depth flag. The skip_count parameter -// specifies the number of top frames to be skipped, which doesn't -// count against the number of frames to be included. -// -// For example, if Foo() calls Bar(), which in turn calls -// CurrentOsStackTraceExceptTop(1), Foo() will be included in the -// trace but Bar() and CurrentOsStackTraceExceptTop() won't. -String UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) { - (void)skip_count; - return String(""); -} - -// Returns the current time in milliseconds. -TimeInMillis GetTimeInMillis() { -#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__) - // Difference between 1970-01-01 and 1601-01-01 in milliseconds. - // http://analogous.blogspot.com/2005/04/epoch.html - const TimeInMillis kJavaEpochToWinFileTimeDelta = - static_cast(116444736UL) * 100000UL; - const DWORD kTenthMicrosInMilliSecond = 10000; - - SYSTEMTIME now_systime; - FILETIME now_filetime; - ULARGE_INTEGER now_int64; - // TODO(kenton@google.com): Shouldn't this just use - // GetSystemTimeAsFileTime()? - GetSystemTime(&now_systime); - if (SystemTimeToFileTime(&now_systime, &now_filetime)) { - now_int64.LowPart = now_filetime.dwLowDateTime; - now_int64.HighPart = now_filetime.dwHighDateTime; - now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) - - kJavaEpochToWinFileTimeDelta; - return now_int64.QuadPart; - } - return 0; -#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_ - __timeb64 now; - -# ifdef _MSC_VER - - // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996 - // (deprecated function) there. - // TODO(kenton@google.com): Use GetTickCount()? Or use - // SystemTimeToFileTime() -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4996) // Temporarily disables warning 4996. - _ftime64(&now); -# pragma warning(pop) // Restores the warning state. -# else - - _ftime64(&now); - -# endif // _MSC_VER - - return static_cast(now.time) * 1000 + now.millitm; -#elif GTEST_HAS_GETTIMEOFDAY_ - struct timeval now; - gettimeofday(&now, NULL); - return static_cast(now.tv_sec) * 1000 + now.tv_usec / 1000; -#else -# error "Don't know how to get the current time on your system." -#endif -} - -// Utilities - -// class String - -// Returns the input enclosed in double quotes if it's not NULL; -// otherwise returns "(null)". For example, "\"Hello\"" is returned -// for input "Hello". -// -// This is useful for printing a C string in the syntax of a literal. -// -// Known issue: escape sequences are not handled yet. -String String::ShowCStringQuoted(const char* c_str) { - return c_str ? String::Format("\"%s\"", c_str) : String("(null)"); -} - -// Copies at most length characters from str into a newly-allocated -// piece of memory of size length+1. The memory is allocated with new[]. -// A terminating null byte is written to the memory, and a pointer to it -// is returned. If str is NULL, NULL is returned. -static char* CloneString(const char* str, size_t length) { - if (str == NULL) { - return NULL; - } else { - char* const clone = new char[length + 1]; - posix::StrNCpy(clone, str, length); - clone[length] = '\0'; - return clone; - } -} - -// Clones a 0-terminated C string, allocating memory using new. The -// caller is responsible for deleting[] the return value. Returns the -// cloned string, or NULL if the input is NULL. -const char * String::CloneCString(const char* c_str) { - return (c_str == NULL) ? - NULL : CloneString(c_str, strlen(c_str)); -} - -#if GTEST_OS_WINDOWS_MOBILE -// Creates a UTF-16 wide string from the given ANSI string, allocating -// memory using new. The caller is responsible for deleting the return -// value using delete[]. Returns the wide string, or NULL if the -// input is NULL. -LPCWSTR String::AnsiToUtf16(const char* ansi) { - if (!ansi) return NULL; - const int length = strlen(ansi); - const int unicode_length = - MultiByteToWideChar(CP_ACP, 0, ansi, length, - NULL, 0); - WCHAR* unicode = new WCHAR[unicode_length + 1]; - MultiByteToWideChar(CP_ACP, 0, ansi, length, - unicode, unicode_length); - unicode[unicode_length] = 0; - return unicode; -} - -// Creates an ANSI string from the given wide string, allocating -// memory using new. The caller is responsible for deleting the return -// value using delete[]. Returns the ANSI string, or NULL if the -// input is NULL. -const char* String::Utf16ToAnsi(LPCWSTR utf16_str) { - if (!utf16_str) return NULL; - const int ansi_length = - WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, - NULL, 0, NULL, NULL); - char* ansi = new char[ansi_length + 1]; - WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, - ansi, ansi_length, NULL, NULL); - ansi[ansi_length] = 0; - return ansi; -} - -#endif // GTEST_OS_WINDOWS_MOBILE - -// Compares two C strings. Returns true iff they have the same content. -// -// Unlike strcmp(), this function can handle NULL argument(s). A NULL -// C string is considered different to any non-NULL C string, -// including the empty string. -bool String::CStringEquals(const char * lhs, const char * rhs) { - if ( lhs == NULL ) return rhs == NULL; - - if ( rhs == NULL ) return false; - - return strcmp(lhs, rhs) == 0; -} - -#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING - -// Converts an array of wide chars to a narrow string using the UTF-8 -// encoding, and streams the result to the given Message object. -static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length, - Message* msg) { - // TODO(wan): consider allowing a testing::String object to - // contain '\0'. This will make it behave more like std::string, - // and will allow ToUtf8String() to return the correct encoding - // for '\0' s.t. we can get rid of the conditional here (and in - // several other places). - for (size_t i = 0; i != length; ) { // NOLINT - if (wstr[i] != L'\0') { - *msg << WideStringToUtf8(wstr + i, static_cast(length - i)); - while (i != length && wstr[i] != L'\0') - i++; - } else { - *msg << '\0'; - i++; - } - } -} - -#endif // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING - -} // namespace internal - -#if GTEST_HAS_STD_WSTRING -// Converts the given wide string to a narrow string using the UTF-8 -// encoding, and streams the result to this Message object. -Message& Message::operator <<(const ::std::wstring& wstr) { - internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); - return *this; -} -#endif // GTEST_HAS_STD_WSTRING - -#if GTEST_HAS_GLOBAL_WSTRING -// Converts the given wide string to a narrow string using the UTF-8 -// encoding, and streams the result to this Message object. -Message& Message::operator <<(const ::wstring& wstr) { - internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); - return *this; -} -#endif // GTEST_HAS_GLOBAL_WSTRING - -// AssertionResult constructors. -// Used in EXPECT_TRUE/FALSE(assertion_result). -AssertionResult::AssertionResult(const AssertionResult& other) - : success_(other.success_), - message_(other.message_.get() != NULL ? - new ::std::string(*other.message_) : - static_cast< ::std::string*>(NULL)) { -} - -// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. -AssertionResult AssertionResult::operator!() const { - AssertionResult negation(!success_); - if (message_.get() != NULL) - negation << *message_; - return negation; -} - -// Makes a successful assertion result. -AssertionResult AssertionSuccess() { - return AssertionResult(true); -} - -// Makes a failed assertion result. -AssertionResult AssertionFailure() { - return AssertionResult(false); -} - -// Makes a failed assertion result with the given failure message. -// Deprecated; use AssertionFailure() << message. -AssertionResult AssertionFailure(const Message& message) { - return AssertionFailure() << message; -} - -namespace internal { - -// Constructs and returns the message for an equality assertion -// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. -// -// The first four parameters are the expressions used in the assertion -// and their values, as strings. For example, for ASSERT_EQ(foo, bar) -// where foo is 5 and bar is 6, we have: -// -// expected_expression: "foo" -// actual_expression: "bar" -// expected_value: "5" -// actual_value: "6" -// -// The ignoring_case parameter is true iff the assertion is a -// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will -// be inserted into the message. -AssertionResult EqFailure(const char* expected_expression, - const char* actual_expression, - const String& expected_value, - const String& actual_value, - bool ignoring_case) { - Message msg; - msg << "Value of: " << actual_expression; - if (actual_value != actual_expression) { - msg << "\n Actual: " << actual_value; - } - - msg << "\nExpected: " << expected_expression; - if (ignoring_case) { - msg << " (ignoring case)"; - } - if (expected_value != expected_expression) { - msg << "\nWhich is: " << expected_value; - } - - return AssertionFailure() << msg; -} - -// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. -String GetBoolAssertionFailureMessage(const AssertionResult& assertion_result, - const char* expression_text, - const char* actual_predicate_value, - const char* expected_predicate_value) { - const char* actual_message = assertion_result.message(); - Message msg; - msg << "Value of: " << expression_text - << "\n Actual: " << actual_predicate_value; - if (actual_message[0] != '\0') - msg << " (" << actual_message << ")"; - msg << "\nExpected: " << expected_predicate_value; - return msg.GetString(); -} - -// Helper function for implementing ASSERT_NEAR. -AssertionResult DoubleNearPredFormat(const char* expr1, - const char* expr2, - const char* abs_error_expr, - double val1, - double val2, - double abs_error) { - const double diff = fabs(val1 - val2); - if (diff <= abs_error) return AssertionSuccess(); - - // TODO(wan): do not print the value of an expression if it's - // already a literal. - return AssertionFailure() - << "The difference between " << expr1 << " and " << expr2 - << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n" - << expr1 << " evaluates to " << val1 << ",\n" - << expr2 << " evaluates to " << val2 << ", and\n" - << abs_error_expr << " evaluates to " << abs_error << "."; -} - - -// Helper template for implementing FloatLE() and DoubleLE(). -template -AssertionResult FloatingPointLE(const char* expr1, - const char* expr2, - RawType val1, - RawType val2) { - // Returns success if val1 is less than val2, - if (val1 < val2) { - return AssertionSuccess(); - } - - // or if val1 is almost equal to val2. - const FloatingPoint lhs(val1), rhs(val2); - if (lhs.AlmostEquals(rhs)) { - return AssertionSuccess(); - } - - // Note that the above two checks will both fail if either val1 or - // val2 is NaN, as the IEEE floating-point standard requires that - // any predicate involving a NaN must return false. - - ::std::stringstream val1_ss; - val1_ss << std::setprecision(std::numeric_limits::digits10 + 2) - << val1; - - ::std::stringstream val2_ss; - val2_ss << std::setprecision(std::numeric_limits::digits10 + 2) - << val2; - - return AssertionFailure() - << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n" - << " Actual: " << StringStreamToString(&val1_ss) << " vs " - << StringStreamToString(&val2_ss); -} - -} // namespace internal - -// Asserts that val1 is less than, or almost equal to, val2. Fails -// otherwise. In particular, it fails if either val1 or val2 is NaN. -AssertionResult FloatLE(const char* expr1, const char* expr2, - float val1, float val2) { - return internal::FloatingPointLE(expr1, expr2, val1, val2); -} - -// Asserts that val1 is less than, or almost equal to, val2. Fails -// otherwise. In particular, it fails if either val1 or val2 is NaN. -AssertionResult DoubleLE(const char* expr1, const char* expr2, - double val1, double val2) { - return internal::FloatingPointLE(expr1, expr2, val1, val2); -} - -namespace internal { - -// The helper function for {ASSERT|EXPECT}_EQ with int or enum -// arguments. -AssertionResult CmpHelperEQ(const char* expected_expression, - const char* actual_expression, - BiggestInt expected, - BiggestInt actual) { - if (expected == actual) { - return AssertionSuccess(); - } - - return EqFailure(expected_expression, - actual_expression, - FormatForComparisonFailureMessage(expected, actual), - FormatForComparisonFailureMessage(actual, expected), - false); -} - -// A macro for implementing the helper functions needed to implement -// ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here -// just to avoid copy-and-paste of similar code. -#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ -AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ - BiggestInt val1, BiggestInt val2) {\ - if (val1 op val2) {\ - return AssertionSuccess();\ - } else {\ - return AssertionFailure() \ - << "Expected: (" << expr1 << ") " #op " (" << expr2\ - << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ - << " vs " << FormatForComparisonFailureMessage(val2, val1);\ - }\ -} - -// Implements the helper function for {ASSERT|EXPECT}_NE with int or -// enum arguments. -GTEST_IMPL_CMP_HELPER_(NE, !=) -// Implements the helper function for {ASSERT|EXPECT}_LE with int or -// enum arguments. -GTEST_IMPL_CMP_HELPER_(LE, <=) -// Implements the helper function for {ASSERT|EXPECT}_LT with int or -// enum arguments. -GTEST_IMPL_CMP_HELPER_(LT, < ) -// Implements the helper function for {ASSERT|EXPECT}_GE with int or -// enum arguments. -GTEST_IMPL_CMP_HELPER_(GE, >=) -// Implements the helper function for {ASSERT|EXPECT}_GT with int or -// enum arguments. -GTEST_IMPL_CMP_HELPER_(GT, > ) - -#undef GTEST_IMPL_CMP_HELPER_ - -// The helper function for {ASSERT|EXPECT}_STREQ. -AssertionResult CmpHelperSTREQ(const char* expected_expression, - const char* actual_expression, - const char* expected, - const char* actual) { - if (String::CStringEquals(expected, actual)) { - return AssertionSuccess(); - } - - return EqFailure(expected_expression, - actual_expression, - String::ShowCStringQuoted(expected), - String::ShowCStringQuoted(actual), - false); -} - -// The helper function for {ASSERT|EXPECT}_STRCASEEQ. -AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, - const char* actual_expression, - const char* expected, - const char* actual) { - if (String::CaseInsensitiveCStringEquals(expected, actual)) { - return AssertionSuccess(); - } - - return EqFailure(expected_expression, - actual_expression, - String::ShowCStringQuoted(expected), - String::ShowCStringQuoted(actual), - true); -} - -// The helper function for {ASSERT|EXPECT}_STRNE. -AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2) { - if (!String::CStringEquals(s1, s2)) { - return AssertionSuccess(); - } else { - return AssertionFailure() << "Expected: (" << s1_expression << ") != (" - << s2_expression << "), actual: \"" - << s1 << "\" vs \"" << s2 << "\""; - } -} - -// The helper function for {ASSERT|EXPECT}_STRCASENE. -AssertionResult CmpHelperSTRCASENE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2) { - if (!String::CaseInsensitiveCStringEquals(s1, s2)) { - return AssertionSuccess(); - } else { - return AssertionFailure() - << "Expected: (" << s1_expression << ") != (" - << s2_expression << ") (ignoring case), actual: \"" - << s1 << "\" vs \"" << s2 << "\""; - } -} - -} // namespace internal - -namespace { - -// Helper functions for implementing IsSubString() and IsNotSubstring(). - -// This group of overloaded functions return true iff needle is a -// substring of haystack. NULL is considered a substring of itself -// only. - -bool IsSubstringPred(const char* needle, const char* haystack) { - if (needle == NULL || haystack == NULL) - return needle == haystack; - - return strstr(haystack, needle) != NULL; -} - -bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) { - if (needle == NULL || haystack == NULL) - return needle == haystack; - - return wcsstr(haystack, needle) != NULL; -} - -// StringType here can be either ::std::string or ::std::wstring. -template -bool IsSubstringPred(const StringType& needle, - const StringType& haystack) { - return haystack.find(needle) != StringType::npos; -} - -// This function implements either IsSubstring() or IsNotSubstring(), -// depending on the value of the expected_to_be_substring parameter. -// StringType here can be const char*, const wchar_t*, ::std::string, -// or ::std::wstring. -template -AssertionResult IsSubstringImpl( - bool expected_to_be_substring, - const char* needle_expr, const char* haystack_expr, - const StringType& needle, const StringType& haystack) { - if (IsSubstringPred(needle, haystack) == expected_to_be_substring) - return AssertionSuccess(); - - const bool is_wide_string = sizeof(needle[0]) > 1; - const char* const begin_string_quote = is_wide_string ? "L\"" : "\""; - return AssertionFailure() - << "Value of: " << needle_expr << "\n" - << " Actual: " << begin_string_quote << needle << "\"\n" - << "Expected: " << (expected_to_be_substring ? "" : "not ") - << "a substring of " << haystack_expr << "\n" - << "Which is: " << begin_string_quote << haystack << "\""; -} - -} // namespace - -// IsSubstring() and IsNotSubstring() check whether needle is a -// substring of haystack (NULL is considered a substring of itself -// only), and return an appropriate error message when they fail. - -AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const char* needle, const char* haystack) { - return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); -} - -AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const wchar_t* needle, const wchar_t* haystack) { - return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); -} - -AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const char* needle, const char* haystack) { - return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); -} - -AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const wchar_t* needle, const wchar_t* haystack) { - return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); -} - -AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::string& needle, const ::std::string& haystack) { - return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); -} - -AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::string& needle, const ::std::string& haystack) { - return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); -} - -#if GTEST_HAS_STD_WSTRING -AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::wstring& needle, const ::std::wstring& haystack) { - return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); -} - -AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::wstring& needle, const ::std::wstring& haystack) { - return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); -} -#endif // GTEST_HAS_STD_WSTRING - -namespace internal { - -#if GTEST_OS_WINDOWS - -namespace { - -// Helper function for IsHRESULT{SuccessFailure} predicates -AssertionResult HRESULTFailureHelper(const char* expr, - const char* expected, - long hr) { // NOLINT -# if GTEST_OS_WINDOWS_MOBILE - - // Windows CE doesn't support FormatMessage. - const char error_text[] = ""; - -# else - - // Looks up the human-readable system message for the HRESULT code - // and since we're not passing any params to FormatMessage, we don't - // want inserts expanded. - const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS; - const DWORD kBufSize = 4096; // String::Format can't exceed this length. - // Gets the system's human readable message string for this HRESULT. - char error_text[kBufSize] = { '\0' }; - DWORD message_length = ::FormatMessageA(kFlags, - 0, // no source, we're asking system - hr, // the error - 0, // no line width restrictions - error_text, // output buffer - kBufSize, // buf size - NULL); // no arguments for inserts - // Trims tailing white space (FormatMessage leaves a trailing cr-lf) - for (; message_length && IsSpace(error_text[message_length - 1]); - --message_length) { - error_text[message_length - 1] = '\0'; - } - -# endif // GTEST_OS_WINDOWS_MOBILE - - const String error_hex(String::Format("0x%08X ", hr)); - return ::testing::AssertionFailure() - << "Expected: " << expr << " " << expected << ".\n" - << " Actual: " << error_hex << error_text << "\n"; -} - -} // namespace - -AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT - if (SUCCEEDED(hr)) { - return AssertionSuccess(); - } - return HRESULTFailureHelper(expr, "succeeds", hr); -} - -AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT - if (FAILED(hr)) { - return AssertionSuccess(); - } - return HRESULTFailureHelper(expr, "fails", hr); -} - -#endif // GTEST_OS_WINDOWS - -// Utility functions for encoding Unicode text (wide strings) in -// UTF-8. - -// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8 -// like this: -// -// Code-point length Encoding -// 0 - 7 bits 0xxxxxxx -// 8 - 11 bits 110xxxxx 10xxxxxx -// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx -// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - -// The maximum code-point a one-byte UTF-8 sequence can represent. -const UInt32 kMaxCodePoint1 = (static_cast(1) << 7) - 1; - -// The maximum code-point a two-byte UTF-8 sequence can represent. -const UInt32 kMaxCodePoint2 = (static_cast(1) << (5 + 6)) - 1; - -// The maximum code-point a three-byte UTF-8 sequence can represent. -const UInt32 kMaxCodePoint3 = (static_cast(1) << (4 + 2*6)) - 1; - -// The maximum code-point a four-byte UTF-8 sequence can represent. -const UInt32 kMaxCodePoint4 = (static_cast(1) << (3 + 3*6)) - 1; - -// Chops off the n lowest bits from a bit pattern. Returns the n -// lowest bits. As a side effect, the original bit pattern will be -// shifted to the right by n bits. -inline UInt32 ChopLowBits(UInt32* bits, int n) { - const UInt32 low_bits = *bits & ((static_cast(1) << n) - 1); - *bits >>= n; - return low_bits; -} - -// Converts a Unicode code point to a narrow string in UTF-8 encoding. -// code_point parameter is of type UInt32 because wchar_t may not be -// wide enough to contain a code point. -// The output buffer str must containt at least 32 characters. -// The function returns the address of the output buffer. -// If the code_point is not a valid Unicode code point -// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output -// as '(Invalid Unicode 0xXXXXXXXX)'. -char* CodePointToUtf8(UInt32 code_point, char* str) { - if (code_point <= kMaxCodePoint1) { - str[1] = '\0'; - str[0] = static_cast(code_point); // 0xxxxxxx - } else if (code_point <= kMaxCodePoint2) { - str[2] = '\0'; - str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx - str[0] = static_cast(0xC0 | code_point); // 110xxxxx - } else if (code_point <= kMaxCodePoint3) { - str[3] = '\0'; - str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx - str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx - str[0] = static_cast(0xE0 | code_point); // 1110xxxx - } else if (code_point <= kMaxCodePoint4) { - str[4] = '\0'; - str[3] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx - str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx - str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx - str[0] = static_cast(0xF0 | code_point); // 11110xxx - } else { - // The longest string String::Format can produce when invoked - // with these parameters is 28 character long (not including - // the terminating nul character). We are asking for 32 character - // buffer just in case. This is also enough for strncpy to - // null-terminate the destination string. - posix::StrNCpy( - str, String::Format("(Invalid Unicode 0x%X)", code_point).c_str(), 32); - str[31] = '\0'; // Makes sure no change in the format to strncpy leaves - // the result unterminated. - } - return str; -} - -// The following two functions only make sense if the the system -// uses UTF-16 for wide string encoding. All supported systems -// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. - -// Determines if the arguments constitute UTF-16 surrogate pair -// and thus should be combined into a single Unicode code point -// using CreateCodePointFromUtf16SurrogatePair. -inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) { - return sizeof(wchar_t) == 2 && - (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; -} - -// Creates a Unicode code point from UTF16 surrogate pair. -inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, - wchar_t second) { - const UInt32 mask = (1 << 10) - 1; - return (sizeof(wchar_t) == 2) ? - (((first & mask) << 10) | (second & mask)) + 0x10000 : - // This function should not be called when the condition is - // false, but we provide a sensible default in case it is. - static_cast(first); -} - -// Converts a wide string to a narrow string in UTF-8 encoding. -// The wide string is assumed to have the following encoding: -// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) -// UTF-32 if sizeof(wchar_t) == 4 (on Linux) -// Parameter str points to a null-terminated wide string. -// Parameter num_chars may additionally limit the number -// of wchar_t characters processed. -1 is used when the entire string -// should be processed. -// If the string contains code points that are not valid Unicode code points -// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output -// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding -// and contains invalid UTF-16 surrogate pairs, values in those pairs -// will be encoded as individual Unicode characters from Basic Normal Plane. -String WideStringToUtf8(const wchar_t* str, int num_chars) { - if (num_chars == -1) - num_chars = static_cast(wcslen(str)); - - ::std::stringstream stream; - for (int i = 0; i < num_chars; ++i) { - UInt32 unicode_code_point; - - if (str[i] == L'\0') { - break; - } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) { - unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i], - str[i + 1]); - i++; - } else { - unicode_code_point = static_cast(str[i]); - } - - char buffer[32]; // CodePointToUtf8 requires a buffer this big. - stream << CodePointToUtf8(unicode_code_point, buffer); - } - return StringStreamToString(&stream); -} - -// Converts a wide C string to a String using the UTF-8 encoding. -// NULL will be converted to "(null)". -String String::ShowWideCString(const wchar_t * wide_c_str) { - if (wide_c_str == NULL) return String("(null)"); - - return String(internal::WideStringToUtf8(wide_c_str, -1).c_str()); -} - -// Similar to ShowWideCString(), except that this function encloses -// the converted string in double quotes. -String String::ShowWideCStringQuoted(const wchar_t* wide_c_str) { - if (wide_c_str == NULL) return String("(null)"); - - return String::Format("L\"%s\"", - String::ShowWideCString(wide_c_str).c_str()); -} - -// Compares two wide C strings. Returns true iff they have the same -// content. -// -// Unlike wcscmp(), this function can handle NULL argument(s). A NULL -// C string is considered different to any non-NULL C string, -// including the empty string. -bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) { - if (lhs == NULL) return rhs == NULL; - - if (rhs == NULL) return false; - - return wcscmp(lhs, rhs) == 0; -} - -// Helper function for *_STREQ on wide strings. -AssertionResult CmpHelperSTREQ(const char* expected_expression, - const char* actual_expression, - const wchar_t* expected, - const wchar_t* actual) { - if (String::WideCStringEquals(expected, actual)) { - return AssertionSuccess(); - } - - return EqFailure(expected_expression, - actual_expression, - String::ShowWideCStringQuoted(expected), - String::ShowWideCStringQuoted(actual), - false); -} - -// Helper function for *_STRNE on wide strings. -AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const wchar_t* s1, - const wchar_t* s2) { - if (!String::WideCStringEquals(s1, s2)) { - return AssertionSuccess(); - } - - return AssertionFailure() << "Expected: (" << s1_expression << ") != (" - << s2_expression << "), actual: " - << String::ShowWideCStringQuoted(s1) - << " vs " << String::ShowWideCStringQuoted(s2); -} - -// Compares two C strings, ignoring case. Returns true iff they have -// the same content. -// -// Unlike strcasecmp(), this function can handle NULL argument(s). A -// NULL C string is considered different to any non-NULL C string, -// including the empty string. -bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) { - if (lhs == NULL) - return rhs == NULL; - if (rhs == NULL) - return false; - return posix::StrCaseCmp(lhs, rhs) == 0; -} - - // Compares two wide C strings, ignoring case. Returns true iff they - // have the same content. - // - // Unlike wcscasecmp(), this function can handle NULL argument(s). - // A NULL C string is considered different to any non-NULL wide C string, - // including the empty string. - // NB: The implementations on different platforms slightly differ. - // On windows, this method uses _wcsicmp which compares according to LC_CTYPE - // environment variable. On GNU platform this method uses wcscasecmp - // which compares according to LC_CTYPE category of the current locale. - // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the - // current locale. -bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs, - const wchar_t* rhs) { - if (lhs == NULL) return rhs == NULL; - - if (rhs == NULL) return false; - -#if GTEST_OS_WINDOWS - return _wcsicmp(lhs, rhs) == 0; -#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID - return wcscasecmp(lhs, rhs) == 0; -#else - // Android, Mac OS X and Cygwin don't define wcscasecmp. - // Other unknown OSes may not define it either. - wint_t left, right; - do { - left = towlower(*lhs++); - right = towlower(*rhs++); - } while (left && left == right); - return left == right; -#endif // OS selector -} - -// Compares this with another String. -// Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0 -// if this is greater than rhs. -int String::Compare(const String & rhs) const { - const char* const lhs_c_str = c_str(); - const char* const rhs_c_str = rhs.c_str(); - - if (lhs_c_str == NULL) { - return rhs_c_str == NULL ? 0 : -1; // NULL < anything except NULL - } else if (rhs_c_str == NULL) { - return 1; - } - - const size_t shorter_str_len = - length() <= rhs.length() ? length() : rhs.length(); - for (size_t i = 0; i != shorter_str_len; i++) { - if (lhs_c_str[i] < rhs_c_str[i]) { - return -1; - } else if (lhs_c_str[i] > rhs_c_str[i]) { - return 1; - } - } - return (length() < rhs.length()) ? -1 : - (length() > rhs.length()) ? 1 : 0; -} - -// Returns true iff this String ends with the given suffix. *Any* -// String is considered to end with a NULL or empty suffix. -bool String::EndsWith(const char* suffix) const { - if (suffix == NULL || CStringEquals(suffix, "")) return true; - - if (c_str() == NULL) return false; - - const size_t this_len = strlen(c_str()); - const size_t suffix_len = strlen(suffix); - return (this_len >= suffix_len) && - CStringEquals(c_str() + this_len - suffix_len, suffix); -} - -// Returns true iff this String ends with the given suffix, ignoring case. -// Any String is considered to end with a NULL or empty suffix. -bool String::EndsWithCaseInsensitive(const char* suffix) const { - if (suffix == NULL || CStringEquals(suffix, "")) return true; - - if (c_str() == NULL) return false; - - const size_t this_len = strlen(c_str()); - const size_t suffix_len = strlen(suffix); - return (this_len >= suffix_len) && - CaseInsensitiveCStringEquals(c_str() + this_len - suffix_len, suffix); -} - -// Formats a list of arguments to a String, using the same format -// spec string as for printf. -// -// We do not use the StringPrintf class as it is not universally -// available. -// -// The result is limited to 4096 characters (including the tailing 0). -// If 4096 characters are not enough to format the input, or if -// there's an error, "" is -// returned. -String String::Format(const char * format, ...) { - va_list args; - va_start(args, format); - - char buffer[4096]; - const int kBufferSize = sizeof(buffer)/sizeof(buffer[0]); - - // MSVC 8 deprecates vsnprintf(), so we want to suppress warning - // 4996 (deprecated function) there. -#ifdef _MSC_VER // We are using MSVC. -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4996) // Temporarily disables warning 4996. - - const int size = vsnprintf(buffer, kBufferSize, format, args); - -# pragma warning(pop) // Restores the warning state. -#else // We are not using MSVC. - const int size = vsnprintf(buffer, kBufferSize, format, args); -#endif // _MSC_VER - va_end(args); - - // vsnprintf()'s behavior is not portable. When the buffer is not - // big enough, it returns a negative value in MSVC, and returns the - // needed buffer size on Linux. When there is an output error, it - // always returns a negative value. For simplicity, we lump the two - // error cases together. - if (size < 0 || size >= kBufferSize) { - return String(""); - } else { - return String(buffer, size); - } -} - -// Converts the buffer in a stringstream to a String, converting NUL -// bytes to "\\0" along the way. -String StringStreamToString(::std::stringstream* ss) { - const ::std::string& str = ss->str(); - const char* const start = str.c_str(); - const char* const end = start + str.length(); - - // We need to use a helper stringstream to do this transformation - // because String doesn't support push_back(). - ::std::stringstream helper; - for (const char* ch = start; ch != end; ++ch) { - if (*ch == '\0') { - helper << "\\0"; // Replaces NUL with "\\0"; - } else { - helper.put(*ch); - } - } - - return String(helper.str().c_str()); -} - -// Appends the user-supplied message to the Google-Test-generated message. -String AppendUserMessage(const String& gtest_msg, - const Message& user_msg) { - // Appends the user message if it's non-empty. - const String user_msg_string = user_msg.GetString(); - if (user_msg_string.empty()) { - return gtest_msg; - } - - Message msg; - msg << gtest_msg << "\n" << user_msg_string; - - return msg.GetString(); -} - -} // namespace internal - -// class TestResult - -// Creates an empty TestResult. -TestResult::TestResult() - : death_test_count_(0), - elapsed_time_(0) { -} - -// D'tor. -TestResult::~TestResult() { -} - -// Returns the i-th test part result among all the results. i can -// range from 0 to total_part_count() - 1. If i is not in that range, -// aborts the program. -const TestPartResult& TestResult::GetTestPartResult(int i) const { - if (i < 0 || i >= total_part_count()) - internal::posix::Abort(); - return test_part_results_.at(i); -} - -// Returns the i-th test property. i can range from 0 to -// test_property_count() - 1. If i is not in that range, aborts the -// program. -const TestProperty& TestResult::GetTestProperty(int i) const { - if (i < 0 || i >= test_property_count()) - internal::posix::Abort(); - return test_properties_.at(i); -} - -// Clears the test part results. -void TestResult::ClearTestPartResults() { - test_part_results_.clear(); -} - -// Adds a test part result to the list. -void TestResult::AddTestPartResult(const TestPartResult& test_part_result) { - test_part_results_.push_back(test_part_result); -} - -// Adds a test property to the list. If a property with the same key as the -// supplied property is already represented, the value of this test_property -// replaces the old value for that key. -void TestResult::RecordProperty(const TestProperty& test_property) { - if (!ValidateTestProperty(test_property)) { - return; - } - internal::MutexLock lock(&test_properites_mutex_); - const std::vector::iterator property_with_matching_key = - std::find_if(test_properties_.begin(), test_properties_.end(), - internal::TestPropertyKeyIs(test_property.key())); - if (property_with_matching_key == test_properties_.end()) { - test_properties_.push_back(test_property); - return; - } - property_with_matching_key->SetValue(test_property.value()); -} - -// Adds a failure if the key is a reserved attribute of Google Test -// testcase tags. Returns true if the property is valid. -bool TestResult::ValidateTestProperty(const TestProperty& test_property) { - internal::String key(test_property.key()); - if (key == "name" || key == "status" || key == "time" || key == "classname") { - ADD_FAILURE() - << "Reserved key used in RecordProperty(): " - << key - << " ('name', 'status', 'time', and 'classname' are reserved by " - << GTEST_NAME_ << ")"; - return false; - } - return true; -} - -// Clears the object. -void TestResult::Clear() { - test_part_results_.clear(); - test_properties_.clear(); - death_test_count_ = 0; - elapsed_time_ = 0; -} - -// Returns true iff the test failed. -bool TestResult::Failed() const { - for (int i = 0; i < total_part_count(); ++i) { - if (GetTestPartResult(i).failed()) - return true; - } - return false; -} - -// Returns true iff the test part fatally failed. -static bool TestPartFatallyFailed(const TestPartResult& result) { - return result.fatally_failed(); -} - -// Returns true iff the test fatally failed. -bool TestResult::HasFatalFailure() const { - return CountIf(test_part_results_, TestPartFatallyFailed) > 0; -} - -// Returns true iff the test part non-fatally failed. -static bool TestPartNonfatallyFailed(const TestPartResult& result) { - return result.nonfatally_failed(); -} - -// Returns true iff the test has a non-fatal failure. -bool TestResult::HasNonfatalFailure() const { - return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0; -} - -// Gets the number of all test parts. This is the sum of the number -// of successful test parts and the number of failed test parts. -int TestResult::total_part_count() const { - return static_cast(test_part_results_.size()); -} - -// Returns the number of the test properties. -int TestResult::test_property_count() const { - return static_cast(test_properties_.size()); -} - -// class Test - -// Creates a Test object. - -// The c'tor saves the values of all Google Test flags. -Test::Test() - : gtest_flag_saver_(new internal::GTestFlagSaver) { -} - -// The d'tor restores the values of all Google Test flags. -Test::~Test() { - delete gtest_flag_saver_; -} - -// Sets up the test fixture. -// -// A sub-class may override this. -void Test::SetUp() { -} - -// Tears down the test fixture. -// -// A sub-class may override this. -void Test::TearDown() { -} - -// Allows user supplied key value pairs to be recorded for later output. -void Test::RecordProperty(const char* key, const char* value) { - UnitTest::GetInstance()->RecordPropertyForCurrentTest(key, value); -} - -// Allows user supplied key value pairs to be recorded for later output. -void Test::RecordProperty(const char* key, int value) { - Message value_message; - value_message << value; - RecordProperty(key, value_message.GetString().c_str()); -} - -namespace internal { - -void ReportFailureInUnknownLocation(TestPartResult::Type result_type, - const String& message) { - // This function is a friend of UnitTest and as such has access to - // AddTestPartResult. - UnitTest::GetInstance()->AddTestPartResult( - result_type, - NULL, // No info about the source file where the exception occurred. - -1, // We have no info on which line caused the exception. - message, - String()); // No stack trace, either. -} - -} // namespace internal - -// Google Test requires all tests in the same test case to use the same test -// fixture class. This function checks if the current test has the -// same fixture class as the first test in the current test case. If -// yes, it returns true; otherwise it generates a Google Test failure and -// returns false. -bool Test::HasSameFixtureClass() { - internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); - const TestCase* const test_case = impl->current_test_case(); - - // Info about the first test in the current test case. - const TestInfo* const first_test_info = test_case->test_info_list()[0]; - const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_; - const char* const first_test_name = first_test_info->name(); - - // Info about the current test. - const TestInfo* const this_test_info = impl->current_test_info(); - const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_; - const char* const this_test_name = this_test_info->name(); - - if (this_fixture_id != first_fixture_id) { - // Is the first test defined using TEST? - const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId(); - // Is this test defined using TEST? - const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId(); - - if (first_is_TEST || this_is_TEST) { - // The user mixed TEST and TEST_F in this test case - we'll tell - // him/her how to fix it. - - // Gets the name of the TEST and the name of the TEST_F. Note - // that first_is_TEST and this_is_TEST cannot both be true, as - // the fixture IDs are different for the two tests. - const char* const TEST_name = - first_is_TEST ? first_test_name : this_test_name; - const char* const TEST_F_name = - first_is_TEST ? this_test_name : first_test_name; - - ADD_FAILURE() - << "All tests in the same test case must use the same test fixture\n" - << "class, so mixing TEST_F and TEST in the same test case is\n" - << "illegal. In test case " << this_test_info->test_case_name() - << ",\n" - << "test " << TEST_F_name << " is defined using TEST_F but\n" - << "test " << TEST_name << " is defined using TEST. You probably\n" - << "want to change the TEST to TEST_F or move it to another test\n" - << "case."; - } else { - // The user defined two fixture classes with the same name in - // two namespaces - we'll tell him/her how to fix it. - ADD_FAILURE() - << "All tests in the same test case must use the same test fixture\n" - << "class. However, in test case " - << this_test_info->test_case_name() << ",\n" - << "you defined test " << first_test_name - << " and test " << this_test_name << "\n" - << "using two different test fixture classes. This can happen if\n" - << "the two classes are from different namespaces or translation\n" - << "units and have the same name. You should probably rename one\n" - << "of the classes to put the tests into different test cases."; - } - return false; - } - - return true; -} - -#if GTEST_HAS_SEH - -// Adds an "exception thrown" fatal failure to the current test. This -// function returns its result via an output parameter pointer because VC++ -// prohibits creation of objects with destructors on stack in functions -// using __try (see error C2712). -static internal::String* FormatSehExceptionMessage(DWORD exception_code, - const char* location) { - Message message; - message << "SEH exception with code 0x" << std::setbase(16) << - exception_code << std::setbase(10) << " thrown in " << location << "."; - - return new internal::String(message.GetString()); -} - -#endif // GTEST_HAS_SEH - -#if GTEST_HAS_EXCEPTIONS - -// Adds an "exception thrown" fatal failure to the current test. -static internal::String FormatCxxExceptionMessage(const char* description, - const char* location) { - Message message; - if (description != NULL) { - message << "C++ exception with description \"" << description << "\""; - } else { - message << "Unknown C++ exception"; - } - message << " thrown in " << location << "."; - - return message.GetString(); -} - -static internal::String PrintTestPartResultToString( - const TestPartResult& test_part_result); - -// A failed Google Test assertion will throw an exception of this type when -// GTEST_FLAG(throw_on_failure) is true (if exceptions are enabled). We -// derive it from std::runtime_error, which is for errors presumably -// detectable only at run time. Since std::runtime_error inherits from -// std::exception, many testing frameworks know how to extract and print the -// message inside it. -class GoogleTestFailureException : public ::std::runtime_error { - public: - explicit GoogleTestFailureException(const TestPartResult& failure) - : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {} -}; -#endif // GTEST_HAS_EXCEPTIONS - -namespace internal { -// We put these helper functions in the internal namespace as IBM's xlC -// compiler rejects the code if they were declared static. - -// Runs the given method and handles SEH exceptions it throws, when -// SEH is supported; returns the 0-value for type Result in case of an -// SEH exception. (Microsoft compilers cannot handle SEH and C++ -// exceptions in the same function. Therefore, we provide a separate -// wrapper function for handling SEH exceptions.) -template -Result HandleSehExceptionsInMethodIfSupported( - T* object, Result (T::*method)(), const char* location) { -#if GTEST_HAS_SEH - __try { - return (object->*method)(); - } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT - GetExceptionCode())) { - // We create the exception message on the heap because VC++ prohibits - // creation of objects with destructors on stack in functions using __try - // (see error C2712). - internal::String* exception_message = FormatSehExceptionMessage( - GetExceptionCode(), location); - internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure, - *exception_message); - delete exception_message; - return static_cast(0); - } -#else - (void)location; - return (object->*method)(); -#endif // GTEST_HAS_SEH -} - -// Runs the given method and catches and reports C++ and/or SEH-style -// exceptions, if they are supported; returns the 0-value for type -// Result in case of an SEH exception. -template -Result HandleExceptionsInMethodIfSupported( - T* object, Result (T::*method)(), const char* location) { - // NOTE: The user code can affect the way in which Google Test handles - // exceptions by setting GTEST_FLAG(catch_exceptions), but only before - // RUN_ALL_TESTS() starts. It is technically possible to check the flag - // after the exception is caught and either report or re-throw the - // exception based on the flag's value: - // - // try { - // // Perform the test method. - // } catch (...) { - // if (GTEST_FLAG(catch_exceptions)) - // // Report the exception as failure. - // else - // throw; // Re-throws the original exception. - // } - // - // However, the purpose of this flag is to allow the program to drop into - // the debugger when the exception is thrown. On most platforms, once the - // control enters the catch block, the exception origin information is - // lost and the debugger will stop the program at the point of the - // re-throw in this function -- instead of at the point of the original - // throw statement in the code under test. For this reason, we perform - // the check early, sacrificing the ability to affect Google Test's - // exception handling in the method where the exception is thrown. - if (internal::GetUnitTestImpl()->catch_exceptions()) { -#if GTEST_HAS_EXCEPTIONS - try { - return HandleSehExceptionsInMethodIfSupported(object, method, location); - } catch (const GoogleTestFailureException&) { // NOLINT - // This exception doesn't originate in code under test. It makes no - // sense to report it as a test failure. - throw; - } catch (const std::exception& e) { // NOLINT - internal::ReportFailureInUnknownLocation( - TestPartResult::kFatalFailure, - FormatCxxExceptionMessage(e.what(), location)); - } catch (...) { // NOLINT - internal::ReportFailureInUnknownLocation( - TestPartResult::kFatalFailure, - FormatCxxExceptionMessage(NULL, location)); - } - return static_cast(0); -#else - return HandleSehExceptionsInMethodIfSupported(object, method, location); -#endif // GTEST_HAS_EXCEPTIONS - } else { - return (object->*method)(); - } -} - -} // namespace internal - -// Runs the test and updates the test result. -void Test::Run() { - if (!HasSameFixtureClass()) return; - - internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); - impl->os_stack_trace_getter()->UponLeavingGTest(); - internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()"); - // We will run the test only if SetUp() was successful. - if (!HasFatalFailure()) { - impl->os_stack_trace_getter()->UponLeavingGTest(); - internal::HandleExceptionsInMethodIfSupported( - this, &Test::TestBody, "the test body"); - } - - // However, we want to clean up as much as possible. Hence we will - // always call TearDown(), even if SetUp() or the test body has - // failed. - impl->os_stack_trace_getter()->UponLeavingGTest(); - internal::HandleExceptionsInMethodIfSupported( - this, &Test::TearDown, "TearDown()"); -} - -// Returns true iff the current test has a fatal failure. -bool Test::HasFatalFailure() { - return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure(); -} - -// Returns true iff the current test has a non-fatal failure. -bool Test::HasNonfatalFailure() { - return internal::GetUnitTestImpl()->current_test_result()-> - HasNonfatalFailure(); -} - -// class TestInfo - -// Constructs a TestInfo object. It assumes ownership of the test factory -// object. -// TODO(vladl@google.com): Make a_test_case_name and a_name const string&'s -// to signify they cannot be NULLs. -TestInfo::TestInfo(const char* a_test_case_name, - const char* a_name, - const char* a_type_param, - const char* a_value_param, - internal::TypeId fixture_class_id, - internal::TestFactoryBase* factory) - : test_case_name_(a_test_case_name), - name_(a_name), - type_param_(a_type_param ? new std::string(a_type_param) : NULL), - value_param_(a_value_param ? new std::string(a_value_param) : NULL), - fixture_class_id_(fixture_class_id), - should_run_(false), - is_disabled_(false), - matches_filter_(false), - factory_(factory), - result_() {} - -// Destructs a TestInfo object. -TestInfo::~TestInfo() { delete factory_; } - -namespace internal { - -// Creates a new TestInfo object and registers it with Google Test; -// returns the created object. -// -// Arguments: -// -// test_case_name: name of the test case -// name: name of the test -// type_param: the name of the test's type parameter, or NULL if -// this is not a typed or a type-parameterized test. -// value_param: text representation of the test's value parameter, -// or NULL if this is not a value-parameterized test. -// fixture_class_id: ID of the test fixture class -// set_up_tc: pointer to the function that sets up the test case -// tear_down_tc: pointer to the function that tears down the test case -// factory: pointer to the factory that creates a test object. -// The newly created TestInfo instance will assume -// ownership of the factory object. -TestInfo* MakeAndRegisterTestInfo( - const char* test_case_name, const char* name, - const char* type_param, - const char* value_param, - TypeId fixture_class_id, - SetUpTestCaseFunc set_up_tc, - TearDownTestCaseFunc tear_down_tc, - TestFactoryBase* factory) { - TestInfo* const test_info = - new TestInfo(test_case_name, name, type_param, value_param, - fixture_class_id, factory); - GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info); - return test_info; -} - -#if GTEST_HAS_PARAM_TEST -void ReportInvalidTestCaseType(const char* test_case_name, - const char* file, int line) { - Message errors; - errors - << "Attempted redefinition of test case " << test_case_name << ".\n" - << "All tests in the same test case must use the same test fixture\n" - << "class. However, in test case " << test_case_name << ", you tried\n" - << "to define a test using a fixture class different from the one\n" - << "used earlier. This can happen if the two fixture classes are\n" - << "from different namespaces and have the same name. You should\n" - << "probably rename one of the classes to put the tests into different\n" - << "test cases."; - - fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), - errors.GetString().c_str()); -} -#endif // GTEST_HAS_PARAM_TEST - -} // namespace internal - -namespace { - -// A predicate that checks the test name of a TestInfo against a known -// value. -// -// This is used for implementation of the TestCase class only. We put -// it in the anonymous namespace to prevent polluting the outer -// namespace. -// -// TestNameIs is copyable. -class TestNameIs { - public: - // Constructor. - // - // TestNameIs has NO default constructor. - explicit TestNameIs(const char* name) - : name_(name) {} - - // Returns true iff the test name of test_info matches name_. - bool operator()(const TestInfo * test_info) const { - return test_info && internal::String(test_info->name()).Compare(name_) == 0; - } - - private: - internal::String name_; -}; - -} // namespace - -namespace internal { - -// This method expands all parameterized tests registered with macros TEST_P -// and INSTANTIATE_TEST_CASE_P into regular tests and registers those. -// This will be done just once during the program runtime. -void UnitTestImpl::RegisterParameterizedTests() { -#if GTEST_HAS_PARAM_TEST - if (!parameterized_tests_registered_) { - parameterized_test_registry_.RegisterTests(); - parameterized_tests_registered_ = true; - } -#endif -} - -} // namespace internal - -// Creates the test object, runs it, records its result, and then -// deletes it. -void TestInfo::Run() { - if (!should_run_) return; - - // Tells UnitTest where to store test result. - internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); - impl->set_current_test_info(this); - - TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); - - // Notifies the unit test event listeners that a test is about to start. - repeater->OnTestStart(*this); - - const TimeInMillis start = internal::GetTimeInMillis(); - - impl->os_stack_trace_getter()->UponLeavingGTest(); - - // Creates the test object. - Test* const test = internal::HandleExceptionsInMethodIfSupported( - factory_, &internal::TestFactoryBase::CreateTest, - "the test fixture's constructor"); - - // Runs the test only if the test object was created and its - // constructor didn't generate a fatal failure. - if ((test != NULL) && !Test::HasFatalFailure()) { - // This doesn't throw as all user code that can throw are wrapped into - // exception handling code. - test->Run(); - } - - // Deletes the test object. - impl->os_stack_trace_getter()->UponLeavingGTest(); - internal::HandleExceptionsInMethodIfSupported( - test, &Test::DeleteSelf_, "the test fixture's destructor"); - - result_.set_elapsed_time(internal::GetTimeInMillis() - start); - - // Notifies the unit test event listener that a test has just finished. - repeater->OnTestEnd(*this); - - // Tells UnitTest to stop associating assertion results to this - // test. - impl->set_current_test_info(NULL); -} - -// class TestCase - -// Gets the number of successful tests in this test case. -int TestCase::successful_test_count() const { - return CountIf(test_info_list_, TestPassed); -} - -// Gets the number of failed tests in this test case. -int TestCase::failed_test_count() const { - return CountIf(test_info_list_, TestFailed); -} - -int TestCase::disabled_test_count() const { - return CountIf(test_info_list_, TestDisabled); -} - -// Get the number of tests in this test case that should run. -int TestCase::test_to_run_count() const { - return CountIf(test_info_list_, ShouldRunTest); -} - -// Gets the number of all tests. -int TestCase::total_test_count() const { - return static_cast(test_info_list_.size()); -} - -// Creates a TestCase with the given name. -// -// Arguments: -// -// name: name of the test case -// a_type_param: the name of the test case's type parameter, or NULL if -// this is not a typed or a type-parameterized test case. -// set_up_tc: pointer to the function that sets up the test case -// tear_down_tc: pointer to the function that tears down the test case -TestCase::TestCase(const char* a_name, const char* a_type_param, - Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc) - : name_(a_name), - type_param_(a_type_param ? new std::string(a_type_param) : NULL), - set_up_tc_(set_up_tc), - tear_down_tc_(tear_down_tc), - should_run_(false), - elapsed_time_(0) { -} - -// Destructor of TestCase. -TestCase::~TestCase() { - // Deletes every Test in the collection. - ForEach(test_info_list_, internal::Delete); -} - -// Returns the i-th test among all the tests. i can range from 0 to -// total_test_count() - 1. If i is not in that range, returns NULL. -const TestInfo* TestCase::GetTestInfo(int i) const { - const int index = GetElementOr(test_indices_, i, -1); - return index < 0 ? NULL : test_info_list_[index]; -} - -// Returns the i-th test among all the tests. i can range from 0 to -// total_test_count() - 1. If i is not in that range, returns NULL. -TestInfo* TestCase::GetMutableTestInfo(int i) { - const int index = GetElementOr(test_indices_, i, -1); - return index < 0 ? NULL : test_info_list_[index]; -} - -// Adds a test to this test case. Will delete the test upon -// destruction of the TestCase object. -void TestCase::AddTestInfo(TestInfo * test_info) { - test_info_list_.push_back(test_info); - test_indices_.push_back(static_cast(test_indices_.size())); -} - -// Runs every test in this TestCase. -void TestCase::Run() { - if (!should_run_) return; - - internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); - impl->set_current_test_case(this); - - TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); - - repeater->OnTestCaseStart(*this); - impl->os_stack_trace_getter()->UponLeavingGTest(); - internal::HandleExceptionsInMethodIfSupported( - this, &TestCase::RunSetUpTestCase, "SetUpTestCase()"); - - const internal::TimeInMillis start = internal::GetTimeInMillis(); - for (int i = 0; i < total_test_count(); i++) { - GetMutableTestInfo(i)->Run(); - } - elapsed_time_ = internal::GetTimeInMillis() - start; - - impl->os_stack_trace_getter()->UponLeavingGTest(); - internal::HandleExceptionsInMethodIfSupported( - this, &TestCase::RunTearDownTestCase, "TearDownTestCase()"); - - repeater->OnTestCaseEnd(*this); - impl->set_current_test_case(NULL); -} - -// Clears the results of all tests in this test case. -void TestCase::ClearResult() { - ForEach(test_info_list_, TestInfo::ClearTestResult); -} - -// Shuffles the tests in this test case. -void TestCase::ShuffleTests(internal::Random* random) { - Shuffle(random, &test_indices_); -} - -// Restores the test order to before the first shuffle. -void TestCase::UnshuffleTests() { - for (size_t i = 0; i < test_indices_.size(); i++) { - test_indices_[i] = static_cast(i); - } -} - -// Formats a countable noun. Depending on its quantity, either the -// singular form or the plural form is used. e.g. -// -// FormatCountableNoun(1, "formula", "formuli") returns "1 formula". -// FormatCountableNoun(5, "book", "books") returns "5 books". -static internal::String FormatCountableNoun(int count, - const char * singular_form, - const char * plural_form) { - return internal::String::Format("%d %s", count, - count == 1 ? singular_form : plural_form); -} - -// Formats the count of tests. -static internal::String FormatTestCount(int test_count) { - return FormatCountableNoun(test_count, "test", "tests"); -} - -// Formats the count of test cases. -static internal::String FormatTestCaseCount(int test_case_count) { - return FormatCountableNoun(test_case_count, "test case", "test cases"); -} - -// Converts a TestPartResult::Type enum to human-friendly string -// representation. Both kNonFatalFailure and kFatalFailure are translated -// to "Failure", as the user usually doesn't care about the difference -// between the two when viewing the test result. -static const char * TestPartResultTypeToString(TestPartResult::Type type) { - switch (type) { - case TestPartResult::kSuccess: - return "Success"; - - case TestPartResult::kNonFatalFailure: - case TestPartResult::kFatalFailure: -#ifdef _MSC_VER - return "error: "; -#else - return "Failure\n"; -#endif - default: - return "Unknown result type"; - } -} - -// Prints a TestPartResult to a String. -static internal::String PrintTestPartResultToString( - const TestPartResult& test_part_result) { - return (Message() - << internal::FormatFileLocation(test_part_result.file_name(), - test_part_result.line_number()) - << " " << TestPartResultTypeToString(test_part_result.type()) - << test_part_result.message()).GetString(); -} - -// Prints a TestPartResult. -static void PrintTestPartResult(const TestPartResult& test_part_result) { - const internal::String& result = - PrintTestPartResultToString(test_part_result); - printf("%s\n", result.c_str()); - fflush(stdout); - // If the test program runs in Visual Studio or a debugger, the - // following statements add the test part result message to the Output - // window such that the user can double-click on it to jump to the - // corresponding source code location; otherwise they do nothing. -#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE - // We don't call OutputDebugString*() on Windows Mobile, as printing - // to stdout is done by OutputDebugString() there already - we don't - // want the same message printed twice. - ::OutputDebugStringA(result.c_str()); - ::OutputDebugStringA("\n"); -#endif -} - -// class PrettyUnitTestResultPrinter - -namespace internal { - -enum GTestColor { - COLOR_DEFAULT, - COLOR_RED, - COLOR_GREEN, - COLOR_YELLOW -}; - -#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE - -// Returns the character attribute for the given color. -WORD GetColorAttribute(GTestColor color) { - switch (color) { - case COLOR_RED: return FOREGROUND_RED; - case COLOR_GREEN: return FOREGROUND_GREEN; - case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN; - default: return 0; - } -} - -#else - -// Returns the ANSI color code for the given color. COLOR_DEFAULT is -// an invalid input. -const char* GetAnsiColorCode(GTestColor color) { - switch (color) { - case COLOR_RED: return "1"; - case COLOR_GREEN: return "2"; - case COLOR_YELLOW: return "3"; - default: return NULL; - }; -} - -#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE - -// Returns true iff Google Test should use colors in the output. -bool ShouldUseColor(bool stdout_is_tty) { - const char* const gtest_color = GTEST_FLAG(color).c_str(); - - if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) { -#if GTEST_OS_WINDOWS - // On Windows the TERM variable is usually not set, but the - // console there does support colors. - return stdout_is_tty; -#else - // On non-Windows platforms, we rely on the TERM variable. - const char* const term = posix::GetEnv("TERM"); - const bool term_supports_color = - String::CStringEquals(term, "xterm") || - String::CStringEquals(term, "xterm-color") || - String::CStringEquals(term, "xterm-256color") || - String::CStringEquals(term, "screen") || - String::CStringEquals(term, "linux") || - String::CStringEquals(term, "cygwin"); - return stdout_is_tty && term_supports_color; -#endif // GTEST_OS_WINDOWS - } - - return String::CaseInsensitiveCStringEquals(gtest_color, "yes") || - String::CaseInsensitiveCStringEquals(gtest_color, "true") || - String::CaseInsensitiveCStringEquals(gtest_color, "t") || - String::CStringEquals(gtest_color, "1"); - // We take "yes", "true", "t", and "1" as meaning "yes". If the - // value is neither one of these nor "auto", we treat it as "no" to - // be conservative. -} - -// Helpers for printing colored strings to stdout. Note that on Windows, we -// cannot simply emit special characters and have the terminal change colors. -// This routine must actually emit the characters rather than return a string -// that would be colored when printed, as can be done on Linux. -void ColoredPrintf(GTestColor color, const char* fmt, ...) { - va_list args; - va_start(args, fmt); - -#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS - const bool use_color = false; -#else - static const bool in_color_mode = - ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0); - const bool use_color = in_color_mode && (color != COLOR_DEFAULT); -#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS - // The '!= 0' comparison is necessary to satisfy MSVC 7.1. - - if (!use_color) { - vprintf(fmt, args); - va_end(args); - return; - } - -#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE - const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE); - - // Gets the current text color. - CONSOLE_SCREEN_BUFFER_INFO buffer_info; - GetConsoleScreenBufferInfo(stdout_handle, &buffer_info); - const WORD old_color_attrs = buffer_info.wAttributes; - - // We need to flush the stream buffers into the console before each - // SetConsoleTextAttribute call lest it affect the text that is already - // printed but has not yet reached the console. - fflush(stdout); - SetConsoleTextAttribute(stdout_handle, - GetColorAttribute(color) | FOREGROUND_INTENSITY); - vprintf(fmt, args); - - fflush(stdout); - // Restores the text color. - SetConsoleTextAttribute(stdout_handle, old_color_attrs); -#else - printf("\033[0;3%sm", GetAnsiColorCode(color)); - vprintf(fmt, args); - printf("\033[m"); // Resets the terminal to default. -#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE - va_end(args); -} - -void PrintFullTestCommentIfPresent(const TestInfo& test_info) { - const char* const type_param = test_info.type_param(); - const char* const value_param = test_info.value_param(); - - if (type_param != NULL || value_param != NULL) { - printf(", where "); - if (type_param != NULL) { - printf("TypeParam = %s", type_param); - if (value_param != NULL) - printf(" and "); - } - if (value_param != NULL) { - printf("GetParam() = %s", value_param); - } - } -} - -// This class implements the TestEventListener interface. -// -// Class PrettyUnitTestResultPrinter is copyable. -class PrettyUnitTestResultPrinter : public TestEventListener { - public: - PrettyUnitTestResultPrinter() {} - static void PrintTestName(const char * test_case, const char * test) { - printf("%s.%s", test_case, test); - } - - // The following methods override what's in the TestEventListener class. - virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); - virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); - virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestCaseStart(const TestCase& test_case); - virtual void OnTestStart(const TestInfo& test_info); - virtual void OnTestPartResult(const TestPartResult& result); - virtual void OnTestEnd(const TestInfo& test_info); - virtual void OnTestCaseEnd(const TestCase& test_case); - virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); - virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); - virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} - - private: - static void PrintFailedTests(const UnitTest& unit_test); - - internal::String test_case_name_; -}; - - // Fired before each iteration of tests starts. -void PrettyUnitTestResultPrinter::OnTestIterationStart( - const UnitTest& unit_test, int iteration) { - if (GTEST_FLAG(repeat) != 1) - printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1); - - const char* const filter = GTEST_FLAG(filter).c_str(); - - // Prints the filter if it's not *. This reminds the user that some - // tests may be skipped. - if (!internal::String::CStringEquals(filter, kUniversalFilter)) { - ColoredPrintf(COLOR_YELLOW, - "Note: %s filter = %s\n", GTEST_NAME_, filter); - } - - if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) { - const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1); - ColoredPrintf(COLOR_YELLOW, - "Note: This is test shard %d of %s.\n", - static_cast(shard_index) + 1, - internal::posix::GetEnv(kTestTotalShards)); - } - - if (GTEST_FLAG(shuffle)) { - ColoredPrintf(COLOR_YELLOW, - "Note: Randomizing tests' orders with a seed of %d .\n", - unit_test.random_seed()); - } - - ColoredPrintf(COLOR_GREEN, "[==========] "); - printf("Running %s from %s.\n", - FormatTestCount(unit_test.test_to_run_count()).c_str(), - FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); - fflush(stdout); -} - -void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart( - const UnitTest& /*unit_test*/) { - ColoredPrintf(COLOR_GREEN, "[----------] "); - printf("Global test environment set-up.\n"); - fflush(stdout); -} - -void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) { - test_case_name_ = test_case.name(); - const internal::String counts = - FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); - ColoredPrintf(COLOR_GREEN, "[----------] "); - printf("%s from %s", counts.c_str(), test_case_name_.c_str()); - if (test_case.type_param() == NULL) { - printf("\n"); - } else { - printf(", where TypeParam = %s\n", test_case.type_param()); - } - fflush(stdout); -} - -void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) { - ColoredPrintf(COLOR_GREEN, "[ RUN ] "); - PrintTestName(test_case_name_.c_str(), test_info.name()); - printf("\n"); - fflush(stdout); -} - -// Called after an assertion failure. -void PrettyUnitTestResultPrinter::OnTestPartResult( - const TestPartResult& result) { - // If the test part succeeded, we don't need to do anything. - if (result.type() == TestPartResult::kSuccess) - return; - - // Print failure message from the assertion (e.g. expected this and got that). - PrintTestPartResult(result); - fflush(stdout); -} - -void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) { - if (test_info.result()->Passed()) { - ColoredPrintf(COLOR_GREEN, "[ OK ] "); - } else { - ColoredPrintf(COLOR_RED, "[ FAILED ] "); - } - PrintTestName(test_case_name_.c_str(), test_info.name()); - if (test_info.result()->Failed()) - PrintFullTestCommentIfPresent(test_info); - - if (GTEST_FLAG(print_time)) { - printf(" (%s ms)\n", internal::StreamableToString( - test_info.result()->elapsed_time()).c_str()); - } else { - printf("\n"); - } - fflush(stdout); -} - -void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) { - if (!GTEST_FLAG(print_time)) return; - - test_case_name_ = test_case.name(); - const internal::String counts = - FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); - ColoredPrintf(COLOR_GREEN, "[----------] "); - printf("%s from %s (%s ms total)\n\n", - counts.c_str(), test_case_name_.c_str(), - internal::StreamableToString(test_case.elapsed_time()).c_str()); - fflush(stdout); -} - -void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart( - const UnitTest& /*unit_test*/) { - ColoredPrintf(COLOR_GREEN, "[----------] "); - printf("Global test environment tear-down\n"); - fflush(stdout); -} - -// Internal helper for printing the list of failed tests. -void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) { - const int failed_test_count = unit_test.failed_test_count(); - if (failed_test_count == 0) { - return; - } - - for (int i = 0; i < unit_test.total_test_case_count(); ++i) { - const TestCase& test_case = *unit_test.GetTestCase(i); - if (!test_case.should_run() || (test_case.failed_test_count() == 0)) { - continue; - } - for (int j = 0; j < test_case.total_test_count(); ++j) { - const TestInfo& test_info = *test_case.GetTestInfo(j); - if (!test_info.should_run() || test_info.result()->Passed()) { - continue; - } - ColoredPrintf(COLOR_RED, "[ FAILED ] "); - printf("%s.%s", test_case.name(), test_info.name()); - PrintFullTestCommentIfPresent(test_info); - printf("\n"); - } - } -} - -void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, - int /*iteration*/) { - ColoredPrintf(COLOR_GREEN, "[==========] "); - printf("%s from %s ran.", - FormatTestCount(unit_test.test_to_run_count()).c_str(), - FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); - if (GTEST_FLAG(print_time)) { - printf(" (%s ms total)", - internal::StreamableToString(unit_test.elapsed_time()).c_str()); - } - printf("\n"); - ColoredPrintf(COLOR_GREEN, "[ PASSED ] "); - printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str()); - - int num_failures = unit_test.failed_test_count(); - if (!unit_test.Passed()) { - const int failed_test_count = unit_test.failed_test_count(); - ColoredPrintf(COLOR_RED, "[ FAILED ] "); - printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str()); - PrintFailedTests(unit_test); - printf("\n%2d FAILED %s\n", num_failures, - num_failures == 1 ? "TEST" : "TESTS"); - } - - int num_disabled = unit_test.disabled_test_count(); - if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) { - if (!num_failures) { - printf("\n"); // Add a spacer if no FAILURE banner is displayed. - } - ColoredPrintf(COLOR_YELLOW, - " YOU HAVE %d DISABLED %s\n\n", - num_disabled, - num_disabled == 1 ? "TEST" : "TESTS"); - } - // Ensure that Google Test output is printed before, e.g., heapchecker output. - fflush(stdout); -} - -// End PrettyUnitTestResultPrinter - -// class TestEventRepeater -// -// This class forwards events to other event listeners. -class TestEventRepeater : public TestEventListener { - public: - TestEventRepeater() : forwarding_enabled_(true) {} - virtual ~TestEventRepeater(); - void Append(TestEventListener *listener); - TestEventListener* Release(TestEventListener* listener); - - // Controls whether events will be forwarded to listeners_. Set to false - // in death test child processes. - bool forwarding_enabled() const { return forwarding_enabled_; } - void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; } - - virtual void OnTestProgramStart(const UnitTest& unit_test); - virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); - virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); - virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test); - virtual void OnTestCaseStart(const TestCase& test_case); - virtual void OnTestStart(const TestInfo& test_info); - virtual void OnTestPartResult(const TestPartResult& result); - virtual void OnTestEnd(const TestInfo& test_info); - virtual void OnTestCaseEnd(const TestCase& test_case); - virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); - virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test); - virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); - virtual void OnTestProgramEnd(const UnitTest& unit_test); - - private: - // Controls whether events will be forwarded to listeners_. Set to false - // in death test child processes. - bool forwarding_enabled_; - // The list of listeners that receive events. - std::vector listeners_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater); -}; - -TestEventRepeater::~TestEventRepeater() { - ForEach(listeners_, Delete); -} - -void TestEventRepeater::Append(TestEventListener *listener) { - listeners_.push_back(listener); -} - -// TODO(vladl@google.com): Factor the search functionality into Vector::Find. -TestEventListener* TestEventRepeater::Release(TestEventListener *listener) { - for (size_t i = 0; i < listeners_.size(); ++i) { - if (listeners_[i] == listener) { - listeners_.erase(listeners_.begin() + i); - return listener; - } - } - - return NULL; -} - -// Since most methods are very similar, use macros to reduce boilerplate. -// This defines a member that forwards the call to all listeners. -#define GTEST_REPEATER_METHOD_(Name, Type) \ -void TestEventRepeater::Name(const Type& parameter) { \ - if (forwarding_enabled_) { \ - for (size_t i = 0; i < listeners_.size(); i++) { \ - listeners_[i]->Name(parameter); \ - } \ - } \ -} -// This defines a member that forwards the call to all listeners in reverse -// order. -#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \ -void TestEventRepeater::Name(const Type& parameter) { \ - if (forwarding_enabled_) { \ - for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { \ - listeners_[i]->Name(parameter); \ - } \ - } \ -} - -GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest) -GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest) -GTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase) -GTEST_REPEATER_METHOD_(OnTestStart, TestInfo) -GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult) -GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest) -GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest) -GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest) -GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo) -GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase) -GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest) - -#undef GTEST_REPEATER_METHOD_ -#undef GTEST_REVERSE_REPEATER_METHOD_ - -void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test, - int iteration) { - if (forwarding_enabled_) { - for (size_t i = 0; i < listeners_.size(); i++) { - listeners_[i]->OnTestIterationStart(unit_test, iteration); - } - } -} - -void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test, - int iteration) { - if (forwarding_enabled_) { - for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { - listeners_[i]->OnTestIterationEnd(unit_test, iteration); - } - } -} - -// End TestEventRepeater - -// This class generates an XML output file. -class XmlUnitTestResultPrinter : public EmptyTestEventListener { - public: - explicit XmlUnitTestResultPrinter(const char* output_file); - - virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); - - private: - // Is c a whitespace character that is normalized to a space character - // when it appears in an XML attribute value? - static bool IsNormalizableWhitespace(char c) { - return c == 0x9 || c == 0xA || c == 0xD; - } - - // May c appear in a well-formed XML document? - static bool IsValidXmlCharacter(char c) { - return IsNormalizableWhitespace(c) || c >= 0x20; - } - - // Returns an XML-escaped copy of the input string str. If - // is_attribute is true, the text is meant to appear as an attribute - // value, and normalizable whitespace is preserved by replacing it - // with character references. - static String EscapeXml(const char* str, bool is_attribute); - - // Returns the given string with all characters invalid in XML removed. - static string RemoveInvalidXmlCharacters(const string& str); - - // Convenience wrapper around EscapeXml when str is an attribute value. - static String EscapeXmlAttribute(const char* str) { - return EscapeXml(str, true); - } - - // Convenience wrapper around EscapeXml when str is not an attribute value. - static String EscapeXmlText(const char* str) { return EscapeXml(str, false); } - - // Streams an XML CDATA section, escaping invalid CDATA sequences as needed. - static void OutputXmlCDataSection(::std::ostream* stream, const char* data); - - // Streams an XML representation of a TestInfo object. - static void OutputXmlTestInfo(::std::ostream* stream, - const char* test_case_name, - const TestInfo& test_info); - - // Prints an XML representation of a TestCase object - static void PrintXmlTestCase(FILE* out, const TestCase& test_case); - - // Prints an XML summary of unit_test to output stream out. - static void PrintXmlUnitTest(FILE* out, const UnitTest& unit_test); - - // Produces a string representing the test properties in a result as space - // delimited XML attributes based on the property key="value" pairs. - // When the String is not empty, it includes a space at the beginning, - // to delimit this attribute from prior attributes. - static String TestPropertiesAsXmlAttributes(const TestResult& result); - - // The output file. - const String output_file_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter); -}; - -// Creates a new XmlUnitTestResultPrinter. -XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file) - : output_file_(output_file) { - if (output_file_.c_str() == NULL || output_file_.empty()) { - fprintf(stderr, "XML output file may not be null\n"); - fflush(stderr); - exit(EXIT_FAILURE); - } -} - -// Called after the unit test ends. -void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, - int /*iteration*/) { - FILE* xmlout = NULL; - FilePath output_file(output_file_); - FilePath output_dir(output_file.RemoveFileName()); - - if (output_dir.CreateDirectoriesRecursively()) { - xmlout = posix::FOpen(output_file_.c_str(), "w"); - } - if (xmlout == NULL) { - // TODO(wan): report the reason of the failure. - // - // We don't do it for now as: - // - // 1. There is no urgent need for it. - // 2. It's a bit involved to make the errno variable thread-safe on - // all three operating systems (Linux, Windows, and Mac OS). - // 3. To interpret the meaning of errno in a thread-safe way, - // we need the strerror_r() function, which is not available on - // Windows. - fprintf(stderr, - "Unable to open file \"%s\"\n", - output_file_.c_str()); - fflush(stderr); - exit(EXIT_FAILURE); - } - PrintXmlUnitTest(xmlout, unit_test); - fclose(xmlout); -} - -// Returns an XML-escaped copy of the input string str. If is_attribute -// is true, the text is meant to appear as an attribute value, and -// normalizable whitespace is preserved by replacing it with character -// references. -// -// Invalid XML characters in str, if any, are stripped from the output. -// It is expected that most, if not all, of the text processed by this -// module will consist of ordinary English text. -// If this module is ever modified to produce version 1.1 XML output, -// most invalid characters can be retained using character references. -// TODO(wan): It might be nice to have a minimally invasive, human-readable -// escaping scheme for invalid characters, rather than dropping them. -String XmlUnitTestResultPrinter::EscapeXml(const char* str, bool is_attribute) { - Message m; - - if (str != NULL) { - for (const char* src = str; *src; ++src) { - switch (*src) { - case '<': - m << "<"; - break; - case '>': - m << ">"; - break; - case '&': - m << "&"; - break; - case '\'': - if (is_attribute) - m << "'"; - else - m << '\''; - break; - case '"': - if (is_attribute) - m << """; - else - m << '"'; - break; - default: - if (IsValidXmlCharacter(*src)) { - if (is_attribute && IsNormalizableWhitespace(*src)) - m << String::Format("&#x%02X;", unsigned(*src)); - else - m << *src; - } - break; - } - } - } - - return m.GetString(); -} - -// Returns the given string with all characters invalid in XML removed. -// Currently invalid characters are dropped from the string. An -// alternative is to replace them with certain characters such as . or ?. -string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const string& str) { - string output; - output.reserve(str.size()); - for (string::const_iterator it = str.begin(); it != str.end(); ++it) - if (IsValidXmlCharacter(*it)) - output.push_back(*it); - - return output; -} - -// The following routines generate an XML representation of a UnitTest -// object. -// -// This is how Google Test concepts map to the DTD: -// -// <-- corresponds to a UnitTest object -// <-- corresponds to a TestCase object -// <-- corresponds to a TestInfo object -// ... -// ... -// ... -// <-- individual assertion failures -// -// -// - -// Formats the given time in milliseconds as seconds. -std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) { - ::std::stringstream ss; - ss << ms/1000.0; - return ss.str(); -} - -// Streams an XML CDATA section, escaping invalid CDATA sequences as needed. -void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream, - const char* data) { - const char* segment = data; - *stream << ""); - if (next_segment != NULL) { - stream->write( - segment, static_cast(next_segment - segment)); - *stream << "]]>]]>"); - } else { - *stream << segment; - break; - } - } - *stream << "]]>"; -} - -// Prints an XML representation of a TestInfo object. -// TODO(wan): There is also value in printing properties with the plain printer. -void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream, - const char* test_case_name, - const TestInfo& test_info) { - const TestResult& result = *test_info.result(); - *stream << " \n"; - *stream << " "; - const string location = internal::FormatCompilerIndependentFileLocation( - part.file_name(), part.line_number()); - const string message = location + "\n" + part.message(); - OutputXmlCDataSection(stream, - RemoveInvalidXmlCharacters(message).c_str()); - *stream << "\n"; - } - } - - if (failures == 0) - *stream << " />\n"; - else - *stream << " \n"; -} - -// Prints an XML representation of a TestCase object -void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out, - const TestCase& test_case) { - fprintf(out, - " \n", - FormatTimeInMillisAsSeconds(test_case.elapsed_time()).c_str()); - for (int i = 0; i < test_case.total_test_count(); ++i) { - ::std::stringstream stream; - OutputXmlTestInfo(&stream, test_case.name(), *test_case.GetTestInfo(i)); - fprintf(out, "%s", StringStreamToString(&stream).c_str()); - } - fprintf(out, " \n"); -} - -// Prints an XML summary of unit_test to output stream out. -void XmlUnitTestResultPrinter::PrintXmlUnitTest(FILE* out, - const UnitTest& unit_test) { - fprintf(out, "\n"); - fprintf(out, - "\n"); - for (int i = 0; i < unit_test.total_test_case_count(); ++i) - PrintXmlTestCase(out, *unit_test.GetTestCase(i)); - fprintf(out, "\n"); -} - -// Produces a string representing the test properties in a result as space -// delimited XML attributes based on the property key="value" pairs. -String XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes( - const TestResult& result) { - Message attributes; - for (int i = 0; i < result.test_property_count(); ++i) { - const TestProperty& property = result.GetTestProperty(i); - attributes << " " << property.key() << "=" - << "\"" << EscapeXmlAttribute(property.value()) << "\""; - } - return attributes.GetString(); -} - -// End XmlUnitTestResultPrinter - -#if GTEST_CAN_STREAM_RESULTS_ - -// Streams test results to the given port on the given host machine. -class StreamingListener : public EmptyTestEventListener { - public: - // Escapes '=', '&', '%', and '\n' characters in str as "%xx". - static string UrlEncode(const char* str); - - StreamingListener(const string& host, const string& port) - : sockfd_(-1), host_name_(host), port_num_(port) { - MakeConnection(); - Send("gtest_streaming_protocol_version=1.0\n"); - } - - virtual ~StreamingListener() { - if (sockfd_ != -1) - CloseConnection(); - } - - void OnTestProgramStart(const UnitTest& /* unit_test */) { - Send("event=TestProgramStart\n"); - } - - void OnTestProgramEnd(const UnitTest& unit_test) { - // Note that Google Test current only report elapsed time for each - // test iteration, not for the entire test program. - Send(String::Format("event=TestProgramEnd&passed=%d\n", - unit_test.Passed())); - - // Notify the streaming server to stop. - CloseConnection(); - } - - void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) { - Send(String::Format("event=TestIterationStart&iteration=%d\n", - iteration)); - } - - void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) { - Send(String::Format("event=TestIterationEnd&passed=%d&elapsed_time=%sms\n", - unit_test.Passed(), - StreamableToString(unit_test.elapsed_time()).c_str())); - } - - void OnTestCaseStart(const TestCase& test_case) { - Send(String::Format("event=TestCaseStart&name=%s\n", test_case.name())); - } - - void OnTestCaseEnd(const TestCase& test_case) { - Send(String::Format("event=TestCaseEnd&passed=%d&elapsed_time=%sms\n", - test_case.Passed(), - StreamableToString(test_case.elapsed_time()).c_str())); - } - - void OnTestStart(const TestInfo& test_info) { - Send(String::Format("event=TestStart&name=%s\n", test_info.name())); - } - - void OnTestEnd(const TestInfo& test_info) { - Send(String::Format( - "event=TestEnd&passed=%d&elapsed_time=%sms\n", - (test_info.result())->Passed(), - StreamableToString((test_info.result())->elapsed_time()).c_str())); - } - - void OnTestPartResult(const TestPartResult& test_part_result) { - const char* file_name = test_part_result.file_name(); - if (file_name == NULL) - file_name = ""; - Send(String::Format("event=TestPartResult&file=%s&line=%d&message=", - UrlEncode(file_name).c_str(), - test_part_result.line_number())); - Send(UrlEncode(test_part_result.message()) + "\n"); - } - - private: - // Creates a client socket and connects to the server. - void MakeConnection(); - - // Closes the socket. - void CloseConnection() { - GTEST_CHECK_(sockfd_ != -1) - << "CloseConnection() can be called only when there is a connection."; - - close(sockfd_); - sockfd_ = -1; - } - - // Sends a string to the socket. - void Send(const string& message) { - GTEST_CHECK_(sockfd_ != -1) - << "Send() can be called only when there is a connection."; - - const int len = static_cast(message.length()); - if (write(sockfd_, message.c_str(), len) != len) { - GTEST_LOG_(WARNING) - << "stream_result_to: failed to stream to " - << host_name_ << ":" << port_num_; - } - } - - int sockfd_; // socket file descriptor - const string host_name_; - const string port_num_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener); -}; // class StreamingListener - -// Checks if str contains '=', '&', '%' or '\n' characters. If yes, -// replaces them by "%xx" where xx is their hexadecimal value. For -// example, replaces "=" with "%3D". This algorithm is O(strlen(str)) -// in both time and space -- important as the input str may contain an -// arbitrarily long test failure message and stack trace. -string StreamingListener::UrlEncode(const char* str) { - string result; - result.reserve(strlen(str) + 1); - for (char ch = *str; ch != '\0'; ch = *++str) { - switch (ch) { - case '%': - case '=': - case '&': - case '\n': - result.append(String::Format("%%%02x", static_cast(ch))); - break; - default: - result.push_back(ch); - break; - } - } - return result; -} - -void StreamingListener::MakeConnection() { - GTEST_CHECK_(sockfd_ == -1) - << "MakeConnection() can't be called when there is already a connection."; - - addrinfo hints; - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses. - hints.ai_socktype = SOCK_STREAM; - addrinfo* servinfo = NULL; - - // Use the getaddrinfo() to get a linked list of IP addresses for - // the given host name. - const int error_num = getaddrinfo( - host_name_.c_str(), port_num_.c_str(), &hints, &servinfo); - if (error_num != 0) { - GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: " - << gai_strerror(error_num); - } - - // Loop through all the results and connect to the first we can. - for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL; - cur_addr = cur_addr->ai_next) { - sockfd_ = socket( - cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol); - if (sockfd_ != -1) { - // Connect the client socket to the server socket. - if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) { - close(sockfd_); - sockfd_ = -1; - } - } - } - - freeaddrinfo(servinfo); // all done with this structure - - if (sockfd_ == -1) { - GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to " - << host_name_ << ":" << port_num_; - } -} - -// End of class Streaming Listener -#endif // GTEST_CAN_STREAM_RESULTS__ - -// Class ScopedTrace - -// Pushes the given source file location and message onto a per-thread -// trace stack maintained by Google Test. -// L < UnitTest::mutex_ -ScopedTrace::ScopedTrace(const char* file, int line, const Message& message) { - TraceInfo trace; - trace.file = file; - trace.line = line; - trace.message = message.GetString(); - - UnitTest::GetInstance()->PushGTestTrace(trace); -} - -// Pops the info pushed by the c'tor. -// L < UnitTest::mutex_ -ScopedTrace::~ScopedTrace() { - UnitTest::GetInstance()->PopGTestTrace(); -} - - -// class OsStackTraceGetter - -// Returns the current OS stack trace as a String. Parameters: -// -// max_depth - the maximum number of stack frames to be included -// in the trace. -// skip_count - the number of top frames to be skipped; doesn't count -// against max_depth. -// -// L < mutex_ -// We use "L < mutex_" to denote that the function may acquire mutex_. -String OsStackTraceGetter::CurrentStackTrace(int, int) { - return String(""); -} - -// L < mutex_ -void OsStackTraceGetter::UponLeavingGTest() { -} - -const char* const -OsStackTraceGetter::kElidedFramesMarker = - "... " GTEST_NAME_ " internal frames ..."; - -} // namespace internal - -// class TestEventListeners - -TestEventListeners::TestEventListeners() - : repeater_(new internal::TestEventRepeater()), - default_result_printer_(NULL), - default_xml_generator_(NULL) { -} - -TestEventListeners::~TestEventListeners() { delete repeater_; } - -// Returns the standard listener responsible for the default console -// output. Can be removed from the listeners list to shut down default -// console output. Note that removing this object from the listener list -// with Release transfers its ownership to the user. -void TestEventListeners::Append(TestEventListener* listener) { - repeater_->Append(listener); -} - -// Removes the given event listener from the list and returns it. It then -// becomes the caller's responsibility to delete the listener. Returns -// NULL if the listener is not found in the list. -TestEventListener* TestEventListeners::Release(TestEventListener* listener) { - if (listener == default_result_printer_) - default_result_printer_ = NULL; - else if (listener == default_xml_generator_) - default_xml_generator_ = NULL; - return repeater_->Release(listener); -} - -// Returns repeater that broadcasts the TestEventListener events to all -// subscribers. -TestEventListener* TestEventListeners::repeater() { return repeater_; } - -// Sets the default_result_printer attribute to the provided listener. -// The listener is also added to the listener list and previous -// default_result_printer is removed from it and deleted. The listener can -// also be NULL in which case it will not be added to the list. Does -// nothing if the previous and the current listener objects are the same. -void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) { - if (default_result_printer_ != listener) { - // It is an error to pass this method a listener that is already in the - // list. - delete Release(default_result_printer_); - default_result_printer_ = listener; - if (listener != NULL) - Append(listener); - } -} - -// Sets the default_xml_generator attribute to the provided listener. The -// listener is also added to the listener list and previous -// default_xml_generator is removed from it and deleted. The listener can -// also be NULL in which case it will not be added to the list. Does -// nothing if the previous and the current listener objects are the same. -void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) { - if (default_xml_generator_ != listener) { - // It is an error to pass this method a listener that is already in the - // list. - delete Release(default_xml_generator_); - default_xml_generator_ = listener; - if (listener != NULL) - Append(listener); - } -} - -// Controls whether events will be forwarded by the repeater to the -// listeners in the list. -bool TestEventListeners::EventForwardingEnabled() const { - return repeater_->forwarding_enabled(); -} - -void TestEventListeners::SuppressEventForwarding() { - repeater_->set_forwarding_enabled(false); -} - -// class UnitTest - -// Gets the singleton UnitTest object. The first time this method is -// called, a UnitTest object is constructed and returned. Consecutive -// calls will return the same object. -// -// We don't protect this under mutex_ as a user is not supposed to -// call this before main() starts, from which point on the return -// value will never change. -UnitTest * UnitTest::GetInstance() { - // When compiled with MSVC 7.1 in optimized mode, destroying the - // UnitTest object upon exiting the program messes up the exit code, - // causing successful tests to appear failed. We have to use a - // different implementation in this case to bypass the compiler bug. - // This implementation makes the compiler happy, at the cost of - // leaking the UnitTest object. - - // CodeGear C++Builder insists on a public destructor for the - // default implementation. Use this implementation to keep good OO - // design with private destructor. - -#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) - static UnitTest* const instance = new UnitTest; - return instance; -#else - static UnitTest instance; - return &instance; -#endif // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) -} - -// Gets the number of successful test cases. -int UnitTest::successful_test_case_count() const { - return impl()->successful_test_case_count(); -} - -// Gets the number of failed test cases. -int UnitTest::failed_test_case_count() const { - return impl()->failed_test_case_count(); -} - -// Gets the number of all test cases. -int UnitTest::total_test_case_count() const { - return impl()->total_test_case_count(); -} - -// Gets the number of all test cases that contain at least one test -// that should run. -int UnitTest::test_case_to_run_count() const { - return impl()->test_case_to_run_count(); -} - -// Gets the number of successful tests. -int UnitTest::successful_test_count() const { - return impl()->successful_test_count(); -} - -// Gets the number of failed tests. -int UnitTest::failed_test_count() const { return impl()->failed_test_count(); } - -// Gets the number of disabled tests. -int UnitTest::disabled_test_count() const { - return impl()->disabled_test_count(); -} - -// Gets the number of all tests. -int UnitTest::total_test_count() const { return impl()->total_test_count(); } - -// Gets the number of tests that should run. -int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); } - -// Gets the elapsed time, in milliseconds. -internal::TimeInMillis UnitTest::elapsed_time() const { - return impl()->elapsed_time(); -} - -// Returns true iff the unit test passed (i.e. all test cases passed). -bool UnitTest::Passed() const { return impl()->Passed(); } - -// Returns true iff the unit test failed (i.e. some test case failed -// or something outside of all tests failed). -bool UnitTest::Failed() const { return impl()->Failed(); } - -// Gets the i-th test case among all the test cases. i can range from 0 to -// total_test_case_count() - 1. If i is not in that range, returns NULL. -const TestCase* UnitTest::GetTestCase(int i) const { - return impl()->GetTestCase(i); -} - -// Gets the i-th test case among all the test cases. i can range from 0 to -// total_test_case_count() - 1. If i is not in that range, returns NULL. -TestCase* UnitTest::GetMutableTestCase(int i) { - return impl()->GetMutableTestCase(i); -} - -// Returns the list of event listeners that can be used to track events -// inside Google Test. -TestEventListeners& UnitTest::listeners() { - return *impl()->listeners(); -} - -// Registers and returns a global test environment. When a test -// program is run, all global test environments will be set-up in the -// order they were registered. After all tests in the program have -// finished, all global test environments will be torn-down in the -// *reverse* order they were registered. -// -// The UnitTest object takes ownership of the given environment. -// -// We don't protect this under mutex_, as we only support calling it -// from the main thread. -Environment* UnitTest::AddEnvironment(Environment* env) { - if (env == NULL) { - return NULL; - } - - impl_->environments().push_back(env); - return env; -} - -// Adds a TestPartResult to the current TestResult object. All Google Test -// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call -// this to report their results. The user code should use the -// assertion macros instead of calling this directly. -// L < mutex_ -void UnitTest::AddTestPartResult(TestPartResult::Type result_type, - const char* file_name, - int line_number, - const internal::String& message, - const internal::String& os_stack_trace) { - Message msg; - msg << message; - - internal::MutexLock lock(&mutex_); - if (impl_->gtest_trace_stack().size() > 0) { - msg << "\n" << GTEST_NAME_ << " trace:"; - - for (int i = static_cast(impl_->gtest_trace_stack().size()); - i > 0; --i) { - const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; - msg << "\n" << internal::FormatFileLocation(trace.file, trace.line) - << " " << trace.message; - } - } - - if (os_stack_trace.c_str() != NULL && !os_stack_trace.empty()) { - msg << internal::kStackTraceMarker << os_stack_trace; - } - - const TestPartResult result = - TestPartResult(result_type, file_name, line_number, - msg.GetString().c_str()); - impl_->GetTestPartResultReporterForCurrentThread()-> - ReportTestPartResult(result); - - if (result_type != TestPartResult::kSuccess) { - // gtest_break_on_failure takes precedence over - // gtest_throw_on_failure. This allows a user to set the latter - // in the code (perhaps in order to use Google Test assertions - // with another testing framework) and specify the former on the - // command line for debugging. - if (GTEST_FLAG(break_on_failure)) { -#if GTEST_OS_WINDOWS - // Using DebugBreak on Windows allows gtest to still break into a debugger - // when a failure happens and both the --gtest_break_on_failure and - // the --gtest_catch_exceptions flags are specified. - DebugBreak(); -#else - // Dereference NULL through a volatile pointer to prevent the compiler - // from removing. We use this rather than abort() or __builtin_trap() for - // portability: Symbian doesn't implement abort() well, and some debuggers - // don't correctly trap abort(). - *static_cast(NULL) = 1; -#endif // GTEST_OS_WINDOWS - } else if (GTEST_FLAG(throw_on_failure)) { -#if GTEST_HAS_EXCEPTIONS - throw GoogleTestFailureException(result); -#else - // We cannot call abort() as it generates a pop-up in debug mode - // that cannot be suppressed in VC 7.1 or below. - exit(1); -#endif - } - } -} - -// Creates and adds a property to the current TestResult. If a property matching -// the supplied value already exists, updates its value instead. -void UnitTest::RecordPropertyForCurrentTest(const char* key, - const char* value) { - const TestProperty test_property(key, value); - impl_->current_test_result()->RecordProperty(test_property); -} - -// Runs all tests in this UnitTest object and prints the result. -// Returns 0 if successful, or 1 otherwise. -// -// We don't protect this under mutex_, as we only support calling it -// from the main thread. -int UnitTest::Run() { - // Captures the value of GTEST_FLAG(catch_exceptions). This value will be - // used for the duration of the program. - impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions)); - -#if GTEST_HAS_SEH - const bool in_death_test_child_process = - internal::GTEST_FLAG(internal_run_death_test).length() > 0; - - // Either the user wants Google Test to catch exceptions thrown by the - // tests or this is executing in the context of death test child - // process. In either case the user does not want to see pop-up dialogs - // about crashes - they are expected. - if (impl()->catch_exceptions() || in_death_test_child_process) { - -# if !GTEST_OS_WINDOWS_MOBILE - // SetErrorMode doesn't exist on CE. - SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT | - SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); -# endif // !GTEST_OS_WINDOWS_MOBILE - -# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE - // Death test children can be terminated with _abort(). On Windows, - // _abort() can show a dialog with a warning message. This forces the - // abort message to go to stderr instead. - _set_error_mode(_OUT_TO_STDERR); -# endif - -# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE - // In the debug version, Visual Studio pops up a separate dialog - // offering a choice to debug the aborted program. We need to suppress - // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement - // executed. Google Test will notify the user of any unexpected - // failure via stderr. - // - // VC++ doesn't define _set_abort_behavior() prior to the version 8.0. - // Users of prior VC versions shall suffer the agony and pain of - // clicking through the countless debug dialogs. - // TODO(vladl@google.com): find a way to suppress the abort dialog() in the - // debug mode when compiled with VC 7.1 or lower. - if (!GTEST_FLAG(break_on_failure)) - _set_abort_behavior( - 0x0, // Clear the following flags: - _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump. -# endif - - } -#endif // GTEST_HAS_SEH - - return internal::HandleExceptionsInMethodIfSupported( - impl(), - &internal::UnitTestImpl::RunAllTests, - "auxiliary test code (environments or event listeners)") ? 0 : 1; -} - -// Returns the working directory when the first TEST() or TEST_F() was -// executed. -const char* UnitTest::original_working_dir() const { - return impl_->original_working_dir_.c_str(); -} - -// Returns the TestCase object for the test that's currently running, -// or NULL if no test is running. -// L < mutex_ -const TestCase* UnitTest::current_test_case() const { - internal::MutexLock lock(&mutex_); - return impl_->current_test_case(); -} - -// Returns the TestInfo object for the test that's currently running, -// or NULL if no test is running. -// L < mutex_ -const TestInfo* UnitTest::current_test_info() const { - internal::MutexLock lock(&mutex_); - return impl_->current_test_info(); -} - -// Returns the random seed used at the start of the current test run. -int UnitTest::random_seed() const { return impl_->random_seed(); } - -#if GTEST_HAS_PARAM_TEST -// Returns ParameterizedTestCaseRegistry object used to keep track of -// value-parameterized tests and instantiate and register them. -// L < mutex_ -internal::ParameterizedTestCaseRegistry& - UnitTest::parameterized_test_registry() { - return impl_->parameterized_test_registry(); -} -#endif // GTEST_HAS_PARAM_TEST - -// Creates an empty UnitTest. -UnitTest::UnitTest() { - impl_ = new internal::UnitTestImpl(this); -} - -// Destructor of UnitTest. -UnitTest::~UnitTest() { - delete impl_; -} - -// Pushes a trace defined by SCOPED_TRACE() on to the per-thread -// Google Test trace stack. -// L < mutex_ -void UnitTest::PushGTestTrace(const internal::TraceInfo& trace) { - internal::MutexLock lock(&mutex_); - impl_->gtest_trace_stack().push_back(trace); -} - -// Pops a trace from the per-thread Google Test trace stack. -// L < mutex_ -void UnitTest::PopGTestTrace() { - internal::MutexLock lock(&mutex_); - impl_->gtest_trace_stack().pop_back(); -} - -namespace internal { - -UnitTestImpl::UnitTestImpl(UnitTest* parent) - : parent_(parent), -#ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4355) // Temporarily disables warning 4355 - // (using this in initializer). - default_global_test_part_result_reporter_(this), - default_per_thread_test_part_result_reporter_(this), -# pragma warning(pop) // Restores the warning state again. -#else - default_global_test_part_result_reporter_(this), - default_per_thread_test_part_result_reporter_(this), -#endif // _MSC_VER - global_test_part_result_repoter_( - &default_global_test_part_result_reporter_), - per_thread_test_part_result_reporter_( - &default_per_thread_test_part_result_reporter_), -#if GTEST_HAS_PARAM_TEST - parameterized_test_registry_(), - parameterized_tests_registered_(false), -#endif // GTEST_HAS_PARAM_TEST - last_death_test_case_(-1), - current_test_case_(NULL), - current_test_info_(NULL), - ad_hoc_test_result_(), - os_stack_trace_getter_(NULL), - post_flag_parse_init_performed_(false), - random_seed_(0), // Will be overridden by the flag before first use. - random_(0), // Will be reseeded before first use. - elapsed_time_(0), -#if GTEST_HAS_DEATH_TEST - internal_run_death_test_flag_(NULL), - death_test_factory_(new DefaultDeathTestFactory), -#endif - // Will be overridden by the flag before first use. - catch_exceptions_(false) { - listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter); -} - -UnitTestImpl::~UnitTestImpl() { - // Deletes every TestCase. - ForEach(test_cases_, internal::Delete); - - // Deletes every Environment. - ForEach(environments_, internal::Delete); - - delete os_stack_trace_getter_; -} - -#if GTEST_HAS_DEATH_TEST -// Disables event forwarding if the control is currently in a death test -// subprocess. Must not be called before InitGoogleTest. -void UnitTestImpl::SuppressTestEventsIfInSubprocess() { - if (internal_run_death_test_flag_.get() != NULL) - listeners()->SuppressEventForwarding(); -} -#endif // GTEST_HAS_DEATH_TEST - -// Initializes event listeners performing XML output as specified by -// UnitTestOptions. Must not be called before InitGoogleTest. -void UnitTestImpl::ConfigureXmlOutput() { - const String& output_format = UnitTestOptions::GetOutputFormat(); - if (output_format == "xml") { - listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter( - UnitTestOptions::GetAbsolutePathToOutputFile().c_str())); - } else if (output_format != "") { - printf("WARNING: unrecognized output format \"%s\" ignored.\n", - output_format.c_str()); - fflush(stdout); - } -} - -#if GTEST_CAN_STREAM_RESULTS_ -// Initializes event listeners for streaming test results in String form. -// Must not be called before InitGoogleTest. -void UnitTestImpl::ConfigureStreamingOutput() { - const string& target = GTEST_FLAG(stream_result_to); - if (!target.empty()) { - const size_t pos = target.find(':'); - if (pos != string::npos) { - listeners()->Append(new StreamingListener(target.substr(0, pos), - target.substr(pos+1))); - } else { - printf("WARNING: unrecognized streaming target \"%s\" ignored.\n", - target.c_str()); - fflush(stdout); - } - } -} -#endif // GTEST_CAN_STREAM_RESULTS_ - -// Performs initialization dependent upon flag values obtained in -// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to -// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest -// this function is also called from RunAllTests. Since this function can be -// called more than once, it has to be idempotent. -void UnitTestImpl::PostFlagParsingInit() { - // Ensures that this function does not execute more than once. - if (!post_flag_parse_init_performed_) { - post_flag_parse_init_performed_ = true; - -#if GTEST_HAS_DEATH_TEST - InitDeathTestSubprocessControlInfo(); - SuppressTestEventsIfInSubprocess(); -#endif // GTEST_HAS_DEATH_TEST - - // Registers parameterized tests. This makes parameterized tests - // available to the UnitTest reflection API without running - // RUN_ALL_TESTS. - RegisterParameterizedTests(); - - // Configures listeners for XML output. This makes it possible for users - // to shut down the default XML output before invoking RUN_ALL_TESTS. - ConfigureXmlOutput(); - -#if GTEST_CAN_STREAM_RESULTS_ - // Configures listeners for streaming test results to the specified server. - ConfigureStreamingOutput(); -#endif // GTEST_CAN_STREAM_RESULTS_ - } -} - -// A predicate that checks the name of a TestCase against a known -// value. -// -// This is used for implementation of the UnitTest class only. We put -// it in the anonymous namespace to prevent polluting the outer -// namespace. -// -// TestCaseNameIs is copyable. -class TestCaseNameIs { - public: - // Constructor. - explicit TestCaseNameIs(const String& name) - : name_(name) {} - - // Returns true iff the name of test_case matches name_. - bool operator()(const TestCase* test_case) const { - return test_case != NULL && strcmp(test_case->name(), name_.c_str()) == 0; - } - - private: - String name_; -}; - -// Finds and returns a TestCase with the given name. If one doesn't -// exist, creates one and returns it. It's the CALLER'S -// RESPONSIBILITY to ensure that this function is only called WHEN THE -// TESTS ARE NOT SHUFFLED. -// -// Arguments: -// -// test_case_name: name of the test case -// type_param: the name of the test case's type parameter, or NULL if -// this is not a typed or a type-parameterized test case. -// set_up_tc: pointer to the function that sets up the test case -// tear_down_tc: pointer to the function that tears down the test case -TestCase* UnitTestImpl::GetTestCase(const char* test_case_name, - const char* type_param, - Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc) { - // Can we find a TestCase with the given name? - const std::vector::const_iterator test_case = - std::find_if(test_cases_.begin(), test_cases_.end(), - TestCaseNameIs(test_case_name)); - - if (test_case != test_cases_.end()) - return *test_case; - - // No. Let's create one. - TestCase* const new_test_case = - new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc); - - // Is this a death test case? - if (internal::UnitTestOptions::MatchesFilter(String(test_case_name), - kDeathTestCaseFilter)) { - // Yes. Inserts the test case after the last death test case - // defined so far. This only works when the test cases haven't - // been shuffled. Otherwise we may end up running a death test - // after a non-death test. - ++last_death_test_case_; - test_cases_.insert(test_cases_.begin() + last_death_test_case_, - new_test_case); - } else { - // No. Appends to the end of the list. - test_cases_.push_back(new_test_case); - } - - test_case_indices_.push_back(static_cast(test_case_indices_.size())); - return new_test_case; -} - -// Helpers for setting up / tearing down the given environment. They -// are for use in the ForEach() function. -static void SetUpEnvironment(Environment* env) { env->SetUp(); } -static void TearDownEnvironment(Environment* env) { env->TearDown(); } - -// Runs all tests in this UnitTest object, prints the result, and -// returns true if all tests are successful. If any exception is -// thrown during a test, the test is considered to be failed, but the -// rest of the tests will still be run. -// -// When parameterized tests are enabled, it expands and registers -// parameterized tests first in RegisterParameterizedTests(). -// All other functions called from RunAllTests() may safely assume that -// parameterized tests are ready to be counted and run. -bool UnitTestImpl::RunAllTests() { - // Makes sure InitGoogleTest() was called. - if (!GTestIsInitialized()) { - printf("%s", - "\nThis test program did NOT call ::testing::InitGoogleTest " - "before calling RUN_ALL_TESTS(). Please fix it.\n"); - return false; - } - - // Do not run any test if the --help flag was specified. - if (g_help_flag) - return true; - - // Repeats the call to the post-flag parsing initialization in case the - // user didn't call InitGoogleTest. - PostFlagParsingInit(); - - // Even if sharding is not on, test runners may want to use the - // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding - // protocol. - internal::WriteToShardStatusFileIfNeeded(); - - // True iff we are in a subprocess for running a thread-safe-style - // death test. - bool in_subprocess_for_death_test = false; - -#if GTEST_HAS_DEATH_TEST - in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != NULL); -#endif // GTEST_HAS_DEATH_TEST - - const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex, - in_subprocess_for_death_test); - - // Compares the full test names with the filter to decide which - // tests to run. - const bool has_tests_to_run = FilterTests(should_shard - ? HONOR_SHARDING_PROTOCOL - : IGNORE_SHARDING_PROTOCOL) > 0; - - // Lists the tests and exits if the --gtest_list_tests flag was specified. - if (GTEST_FLAG(list_tests)) { - // This must be called *after* FilterTests() has been called. - ListTestsMatchingFilter(); - return true; - } - - random_seed_ = GTEST_FLAG(shuffle) ? - GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0; - - // True iff at least one test has failed. - bool failed = false; - - TestEventListener* repeater = listeners()->repeater(); - - repeater->OnTestProgramStart(*parent_); - - // How many times to repeat the tests? We don't want to repeat them - // when we are inside the subprocess of a death test. - const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat); - // Repeats forever if the repeat count is negative. - const bool forever = repeat < 0; - for (int i = 0; forever || i != repeat; i++) { - // We want to preserve failures generated by ad-hoc test - // assertions executed before RUN_ALL_TESTS(). - ClearNonAdHocTestResult(); - - const TimeInMillis start = GetTimeInMillis(); - - // Shuffles test cases and tests if requested. - if (has_tests_to_run && GTEST_FLAG(shuffle)) { - random()->Reseed(random_seed_); - // This should be done before calling OnTestIterationStart(), - // such that a test event listener can see the actual test order - // in the event. - ShuffleTests(); - } - - // Tells the unit test event listeners that the tests are about to start. - repeater->OnTestIterationStart(*parent_, i); - - // Runs each test case if there is at least one test to run. - if (has_tests_to_run) { - // Sets up all environments beforehand. - repeater->OnEnvironmentsSetUpStart(*parent_); - ForEach(environments_, SetUpEnvironment); - repeater->OnEnvironmentsSetUpEnd(*parent_); - - // Runs the tests only if there was no fatal failure during global - // set-up. - if (!Test::HasFatalFailure()) { - for (int test_index = 0; test_index < total_test_case_count(); - test_index++) { - GetMutableTestCase(test_index)->Run(); - } - } - - // Tears down all environments in reverse order afterwards. - repeater->OnEnvironmentsTearDownStart(*parent_); - std::for_each(environments_.rbegin(), environments_.rend(), - TearDownEnvironment); - repeater->OnEnvironmentsTearDownEnd(*parent_); - } - - elapsed_time_ = GetTimeInMillis() - start; - - // Tells the unit test event listener that the tests have just finished. - repeater->OnTestIterationEnd(*parent_, i); - - // Gets the result and clears it. - if (!Passed()) { - failed = true; - } - - // Restores the original test order after the iteration. This - // allows the user to quickly repro a failure that happens in the - // N-th iteration without repeating the first (N - 1) iterations. - // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in - // case the user somehow changes the value of the flag somewhere - // (it's always safe to unshuffle the tests). - UnshuffleTests(); - - if (GTEST_FLAG(shuffle)) { - // Picks a new random seed for each iteration. - random_seed_ = GetNextRandomSeed(random_seed_); - } - } - - repeater->OnTestProgramEnd(*parent_); - - return !failed; -} - -// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file -// if the variable is present. If a file already exists at this location, this -// function will write over it. If the variable is present, but the file cannot -// be created, prints an error and exits. -void WriteToShardStatusFileIfNeeded() { - const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); - if (test_shard_file != NULL) { - FILE* const file = posix::FOpen(test_shard_file, "w"); - if (file == NULL) { - ColoredPrintf(COLOR_RED, - "Could not write to the test shard status file \"%s\" " - "specified by the %s environment variable.\n", - test_shard_file, kTestShardStatusFile); - fflush(stdout); - exit(EXIT_FAILURE); - } - fclose(file); - } -} - -// Checks whether sharding is enabled by examining the relevant -// environment variable values. If the variables are present, -// but inconsistent (i.e., shard_index >= total_shards), prints -// an error and exits. If in_subprocess_for_death_test, sharding is -// disabled because it must only be applied to the original test -// process. Otherwise, we could filter out death tests we intended to execute. -bool ShouldShard(const char* total_shards_env, - const char* shard_index_env, - bool in_subprocess_for_death_test) { - if (in_subprocess_for_death_test) { - return false; - } - - const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1); - const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1); - - if (total_shards == -1 && shard_index == -1) { - return false; - } else if (total_shards == -1 && shard_index != -1) { - const Message msg = Message() - << "Invalid environment variables: you have " - << kTestShardIndex << " = " << shard_index - << ", but have left " << kTestTotalShards << " unset.\n"; - ColoredPrintf(COLOR_RED, msg.GetString().c_str()); - fflush(stdout); - exit(EXIT_FAILURE); - } else if (total_shards != -1 && shard_index == -1) { - const Message msg = Message() - << "Invalid environment variables: you have " - << kTestTotalShards << " = " << total_shards - << ", but have left " << kTestShardIndex << " unset.\n"; - ColoredPrintf(COLOR_RED, msg.GetString().c_str()); - fflush(stdout); - exit(EXIT_FAILURE); - } else if (shard_index < 0 || shard_index >= total_shards) { - const Message msg = Message() - << "Invalid environment variables: we require 0 <= " - << kTestShardIndex << " < " << kTestTotalShards - << ", but you have " << kTestShardIndex << "=" << shard_index - << ", " << kTestTotalShards << "=" << total_shards << ".\n"; - ColoredPrintf(COLOR_RED, msg.GetString().c_str()); - fflush(stdout); - exit(EXIT_FAILURE); - } - - return total_shards > 1; -} - -// Parses the environment variable var as an Int32. If it is unset, -// returns default_val. If it is not an Int32, prints an error -// and aborts. -Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) { - const char* str_val = posix::GetEnv(var); - if (str_val == NULL) { - return default_val; - } - - Int32 result; - if (!ParseInt32(Message() << "The value of environment variable " << var, - str_val, &result)) { - exit(EXIT_FAILURE); - } - return result; -} - -// Given the total number of shards, the shard index, and the test id, -// returns true iff the test should be run on this shard. The test id is -// some arbitrary but unique non-negative integer assigned to each test -// method. Assumes that 0 <= shard_index < total_shards. -bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) { - return (test_id % total_shards) == shard_index; -} - -// Compares the name of each test with the user-specified filter to -// decide whether the test should be run, then records the result in -// each TestCase and TestInfo object. -// If shard_tests == true, further filters tests based on sharding -// variables in the environment - see -// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. -// Returns the number of tests that should run. -int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { - const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? - Int32FromEnvOrDie(kTestTotalShards, -1) : -1; - const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? - Int32FromEnvOrDie(kTestShardIndex, -1) : -1; - - // num_runnable_tests are the number of tests that will - // run across all shards (i.e., match filter and are not disabled). - // num_selected_tests are the number of tests to be run on - // this shard. - int num_runnable_tests = 0; - int num_selected_tests = 0; - for (size_t i = 0; i < test_cases_.size(); i++) { - TestCase* const test_case = test_cases_[i]; - const String &test_case_name = test_case->name(); - test_case->set_should_run(false); - - for (size_t j = 0; j < test_case->test_info_list().size(); j++) { - TestInfo* const test_info = test_case->test_info_list()[j]; - const String test_name(test_info->name()); - // A test is disabled if test case name or test name matches - // kDisableTestFilter. - const bool is_disabled = - internal::UnitTestOptions::MatchesFilter(test_case_name, - kDisableTestFilter) || - internal::UnitTestOptions::MatchesFilter(test_name, - kDisableTestFilter); - test_info->is_disabled_ = is_disabled; - - const bool matches_filter = - internal::UnitTestOptions::FilterMatchesTest(test_case_name, - test_name); - test_info->matches_filter_ = matches_filter; - - const bool is_runnable = - (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) && - matches_filter; - - const bool is_selected = is_runnable && - (shard_tests == IGNORE_SHARDING_PROTOCOL || - ShouldRunTestOnShard(total_shards, shard_index, - num_runnable_tests)); - - num_runnable_tests += is_runnable; - num_selected_tests += is_selected; - - test_info->should_run_ = is_selected; - test_case->set_should_run(test_case->should_run() || is_selected); - } - } - return num_selected_tests; -} - -// Prints the names of the tests matching the user-specified filter flag. -void UnitTestImpl::ListTestsMatchingFilter() { - for (size_t i = 0; i < test_cases_.size(); i++) { - const TestCase* const test_case = test_cases_[i]; - bool printed_test_case_name = false; - - for (size_t j = 0; j < test_case->test_info_list().size(); j++) { - const TestInfo* const test_info = - test_case->test_info_list()[j]; - if (test_info->matches_filter_) { - if (!printed_test_case_name) { - printed_test_case_name = true; - printf("%s.\n", test_case->name()); - } - printf(" %s\n", test_info->name()); - } - } - } - fflush(stdout); -} - -// Sets the OS stack trace getter. -// -// Does nothing if the input and the current OS stack trace getter are -// the same; otherwise, deletes the old getter and makes the input the -// current getter. -void UnitTestImpl::set_os_stack_trace_getter( - OsStackTraceGetterInterface* getter) { - if (os_stack_trace_getter_ != getter) { - delete os_stack_trace_getter_; - os_stack_trace_getter_ = getter; - } -} - -// Returns the current OS stack trace getter if it is not NULL; -// otherwise, creates an OsStackTraceGetter, makes it the current -// getter, and returns it. -OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() { - if (os_stack_trace_getter_ == NULL) { - os_stack_trace_getter_ = new OsStackTraceGetter; - } - - return os_stack_trace_getter_; -} - -// Returns the TestResult for the test that's currently running, or -// the TestResult for the ad hoc test if no test is running. -TestResult* UnitTestImpl::current_test_result() { - return current_test_info_ ? - &(current_test_info_->result_) : &ad_hoc_test_result_; -} - -// Shuffles all test cases, and the tests within each test case, -// making sure that death tests are still run first. -void UnitTestImpl::ShuffleTests() { - // Shuffles the death test cases. - ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_); - - // Shuffles the non-death test cases. - ShuffleRange(random(), last_death_test_case_ + 1, - static_cast(test_cases_.size()), &test_case_indices_); - - // Shuffles the tests inside each test case. - for (size_t i = 0; i < test_cases_.size(); i++) { - test_cases_[i]->ShuffleTests(random()); - } -} - -// Restores the test cases and tests to their order before the first shuffle. -void UnitTestImpl::UnshuffleTests() { - for (size_t i = 0; i < test_cases_.size(); i++) { - // Unshuffles the tests in each test case. - test_cases_[i]->UnshuffleTests(); - // Resets the index of each test case. - test_case_indices_[i] = static_cast(i); - } -} - -// Returns the current OS stack trace as a String. -// -// The maximum number of stack frames to be included is specified by -// the gtest_stack_trace_depth flag. The skip_count parameter -// specifies the number of top frames to be skipped, which doesn't -// count against the number of frames to be included. -// -// For example, if Foo() calls Bar(), which in turn calls -// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in -// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. -String GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/, - int skip_count) { - // We pass skip_count + 1 to skip this wrapper function in addition - // to what the user really wants to skip. - return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1); -} - -// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to -// suppress unreachable code warnings. -namespace { -class ClassUniqueToAlwaysTrue {}; -} - -bool IsTrue(bool condition) { return condition; } - -bool AlwaysTrue() { -#if GTEST_HAS_EXCEPTIONS - // This condition is always false so AlwaysTrue() never actually throws, - // but it makes the compiler think that it may throw. - if (IsTrue(false)) - throw ClassUniqueToAlwaysTrue(); -#endif // GTEST_HAS_EXCEPTIONS - return true; -} - -// If *pstr starts with the given prefix, modifies *pstr to be right -// past the prefix and returns true; otherwise leaves *pstr unchanged -// and returns false. None of pstr, *pstr, and prefix can be NULL. -bool SkipPrefix(const char* prefix, const char** pstr) { - const size_t prefix_len = strlen(prefix); - if (strncmp(*pstr, prefix, prefix_len) == 0) { - *pstr += prefix_len; - return true; - } - return false; -} - -// Parses a string as a command line flag. The string should have -// the format "--flag=value". When def_optional is true, the "=value" -// part can be omitted. -// -// Returns the value of the flag, or NULL if the parsing failed. -const char* ParseFlagValue(const char* str, - const char* flag, - bool def_optional) { - // str and flag must not be NULL. - if (str == NULL || flag == NULL) return NULL; - - // The flag must start with "--" followed by GTEST_FLAG_PREFIX_. - const String flag_str = String::Format("--%s%s", GTEST_FLAG_PREFIX_, flag); - const size_t flag_len = flag_str.length(); - if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL; - - // Skips the flag name. - const char* flag_end = str + flag_len; - - // When def_optional is true, it's OK to not have a "=value" part. - if (def_optional && (flag_end[0] == '\0')) { - return flag_end; - } - - // If def_optional is true and there are more characters after the - // flag name, or if def_optional is false, there must be a '=' after - // the flag name. - if (flag_end[0] != '=') return NULL; - - // Returns the string after "=". - return flag_end + 1; -} - -// Parses a string for a bool flag, in the form of either -// "--flag=value" or "--flag". -// -// In the former case, the value is taken as true as long as it does -// not start with '0', 'f', or 'F'. -// -// In the latter case, the value is taken as true. -// -// On success, stores the value of the flag in *value, and returns -// true. On failure, returns false without changing *value. -bool ParseBoolFlag(const char* str, const char* flag, bool* value) { - // Gets the value of the flag as a string. - const char* const value_str = ParseFlagValue(str, flag, true); - - // Aborts if the parsing failed. - if (value_str == NULL) return false; - - // Converts the string value to a bool. - *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F'); - return true; -} - -// Parses a string for an Int32 flag, in the form of -// "--flag=value". -// -// On success, stores the value of the flag in *value, and returns -// true. On failure, returns false without changing *value. -bool ParseInt32Flag(const char* str, const char* flag, Int32* value) { - // Gets the value of the flag as a string. - const char* const value_str = ParseFlagValue(str, flag, false); - - // Aborts if the parsing failed. - if (value_str == NULL) return false; - - // Sets *value to the value of the flag. - return ParseInt32(Message() << "The value of flag --" << flag, - value_str, value); -} - -// Parses a string for a string flag, in the form of -// "--flag=value". -// -// On success, stores the value of the flag in *value, and returns -// true. On failure, returns false without changing *value. -bool ParseStringFlag(const char* str, const char* flag, String* value) { - // Gets the value of the flag as a string. - const char* const value_str = ParseFlagValue(str, flag, false); - - // Aborts if the parsing failed. - if (value_str == NULL) return false; - - // Sets *value to the value of the flag. - *value = value_str; - return true; -} - -// Determines whether a string has a prefix that Google Test uses for its -// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_. -// If Google Test detects that a command line flag has its prefix but is not -// recognized, it will print its help message. Flags starting with -// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test -// internal flags and do not trigger the help message. -static bool HasGoogleTestFlagPrefix(const char* str) { - return (SkipPrefix("--", &str) || - SkipPrefix("-", &str) || - SkipPrefix("/", &str)) && - !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) && - (SkipPrefix(GTEST_FLAG_PREFIX_, &str) || - SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str)); -} - -// Prints a string containing code-encoded text. The following escape -// sequences can be used in the string to control the text color: -// -// @@ prints a single '@' character. -// @R changes the color to red. -// @G changes the color to green. -// @Y changes the color to yellow. -// @D changes to the default terminal text color. -// -// TODO(wan@google.com): Write tests for this once we add stdout -// capturing to Google Test. -static void PrintColorEncoded(const char* str) { - GTestColor color = COLOR_DEFAULT; // The current color. - - // Conceptually, we split the string into segments divided by escape - // sequences. Then we print one segment at a time. At the end of - // each iteration, the str pointer advances to the beginning of the - // next segment. - for (;;) { - const char* p = strchr(str, '@'); - if (p == NULL) { - ColoredPrintf(color, "%s", str); - return; - } - - ColoredPrintf(color, "%s", String(str, p - str).c_str()); - - const char ch = p[1]; - str = p + 2; - if (ch == '@') { - ColoredPrintf(color, "@"); - } else if (ch == 'D') { - color = COLOR_DEFAULT; - } else if (ch == 'R') { - color = COLOR_RED; - } else if (ch == 'G') { - color = COLOR_GREEN; - } else if (ch == 'Y') { - color = COLOR_YELLOW; - } else { - --str; - } - } -} - -static const char kColorEncodedHelpMessage[] = -"This program contains tests written using " GTEST_NAME_ ". You can use the\n" -"following command line flags to control its behavior:\n" -"\n" -"Test Selection:\n" -" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n" -" List the names of all tests instead of running them. The name of\n" -" TEST(Foo, Bar) is \"Foo.Bar\".\n" -" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS" - "[@G-@YNEGATIVE_PATTERNS]@D\n" -" Run only the tests whose name matches one of the positive patterns but\n" -" none of the negative patterns. '?' matches any single character; '*'\n" -" matches any substring; ':' separates two patterns.\n" -" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n" -" Run all disabled tests too.\n" -"\n" -"Test Execution:\n" -" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n" -" Run the tests repeatedly; use a negative count to repeat forever.\n" -" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n" -" Randomize tests' orders on every iteration.\n" -" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n" -" Random number seed to use for shuffling test orders (between 1 and\n" -" 99999, or 0 to use a seed based on the current time).\n" -"\n" -"Test Output:\n" -" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n" -" Enable/disable colored output. The default is @Gauto@D.\n" -" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n" -" Don't print the elapsed time of each test.\n" -" @G--" GTEST_FLAG_PREFIX_ "output=xml@Y[@G:@YDIRECTORY_PATH@G" - GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n" -" Generate an XML report in the given directory or with the given file\n" -" name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n" -#if GTEST_CAN_STREAM_RESULTS_ -" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n" -" Stream test results to the given server.\n" -#endif // GTEST_CAN_STREAM_RESULTS_ -"\n" -"Assertion Behavior:\n" -#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS -" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n" -" Set the default death test style.\n" -#endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS -" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n" -" Turn assertion failures into debugger break-points.\n" -" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n" -" Turn assertion failures into C++ exceptions.\n" -" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n" -" Do not report exceptions as test failures. Instead, allow them\n" -" to crash the program or throw a pop-up (on Windows).\n" -"\n" -"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set " - "the corresponding\n" -"environment variable of a flag (all letters in upper-case). For example, to\n" -"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_ - "color=no@D or set\n" -"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n" -"\n" -"For more information, please read the " GTEST_NAME_ " documentation at\n" -"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n" -"(not one in your own code or tests), please report it to\n" -"@G<" GTEST_DEV_EMAIL_ ">@D.\n"; - -// Parses the command line for Google Test flags, without initializing -// other parts of Google Test. The type parameter CharType can be -// instantiated to either char or wchar_t. -template -void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { - for (int i = 1; i < *argc; i++) { - const String arg_string = StreamableToString(argv[i]); - const char* const arg = arg_string.c_str(); - - using internal::ParseBoolFlag; - using internal::ParseInt32Flag; - using internal::ParseStringFlag; - - // Do we see a Google Test flag? - if (ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag, - >EST_FLAG(also_run_disabled_tests)) || - ParseBoolFlag(arg, kBreakOnFailureFlag, - >EST_FLAG(break_on_failure)) || - ParseBoolFlag(arg, kCatchExceptionsFlag, - >EST_FLAG(catch_exceptions)) || - ParseStringFlag(arg, kColorFlag, >EST_FLAG(color)) || - ParseStringFlag(arg, kDeathTestStyleFlag, - >EST_FLAG(death_test_style)) || - ParseBoolFlag(arg, kDeathTestUseFork, - >EST_FLAG(death_test_use_fork)) || - ParseStringFlag(arg, kFilterFlag, >EST_FLAG(filter)) || - ParseStringFlag(arg, kInternalRunDeathTestFlag, - >EST_FLAG(internal_run_death_test)) || - ParseBoolFlag(arg, kListTestsFlag, >EST_FLAG(list_tests)) || - ParseStringFlag(arg, kOutputFlag, >EST_FLAG(output)) || - ParseBoolFlag(arg, kPrintTimeFlag, >EST_FLAG(print_time)) || - ParseInt32Flag(arg, kRandomSeedFlag, >EST_FLAG(random_seed)) || - ParseInt32Flag(arg, kRepeatFlag, >EST_FLAG(repeat)) || - ParseBoolFlag(arg, kShuffleFlag, >EST_FLAG(shuffle)) || - ParseInt32Flag(arg, kStackTraceDepthFlag, - >EST_FLAG(stack_trace_depth)) || - ParseStringFlag(arg, kStreamResultToFlag, - >EST_FLAG(stream_result_to)) || - ParseBoolFlag(arg, kThrowOnFailureFlag, - >EST_FLAG(throw_on_failure)) - ) { - // Yes. Shift the remainder of the argv list left by one. Note - // that argv has (*argc + 1) elements, the last one always being - // NULL. The following loop moves the trailing NULL element as - // well. - for (int j = i; j != *argc; j++) { - argv[j] = argv[j + 1]; - } - - // Decrements the argument count. - (*argc)--; - - // We also need to decrement the iterator as we just removed - // an element. - i--; - } else if (arg_string == "--help" || arg_string == "-h" || - arg_string == "-?" || arg_string == "/?" || - HasGoogleTestFlagPrefix(arg)) { - // Both help flag and unrecognized Google Test flags (excluding - // internal ones) trigger help display. - g_help_flag = true; - } - } - - if (g_help_flag) { - // We print the help here instead of in RUN_ALL_TESTS(), as the - // latter may not be called at all if the user is using Google - // Test with another testing framework. - PrintColorEncoded(kColorEncodedHelpMessage); - } -} - -// Parses the command line for Google Test flags, without initializing -// other parts of Google Test. -void ParseGoogleTestFlagsOnly(int* argc, char** argv) { - ParseGoogleTestFlagsOnlyImpl(argc, argv); -} -void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) { - ParseGoogleTestFlagsOnlyImpl(argc, argv); -} - -// The internal implementation of InitGoogleTest(). -// -// The type parameter CharType can be instantiated to either char or -// wchar_t. -template -void InitGoogleTestImpl(int* argc, CharType** argv) { - g_init_gtest_count++; - - // We don't want to run the initialization code twice. - if (g_init_gtest_count != 1) return; - - if (*argc <= 0) return; - - internal::g_executable_path = internal::StreamableToString(argv[0]); - -#if GTEST_HAS_DEATH_TEST - - g_argvs.clear(); - for (int i = 0; i != *argc; i++) { - g_argvs.push_back(StreamableToString(argv[i])); - } - -#endif // GTEST_HAS_DEATH_TEST - - ParseGoogleTestFlagsOnly(argc, argv); - GetUnitTestImpl()->PostFlagParsingInit(); -} - -} // namespace internal - -// Initializes Google Test. This must be called before calling -// RUN_ALL_TESTS(). In particular, it parses a command line for the -// flags that Google Test recognizes. Whenever a Google Test flag is -// seen, it is removed from argv, and *argc is decremented. -// -// No value is returned. Instead, the Google Test flag variables are -// updated. -// -// Calling the function for the second time has no user-visible effect. -void InitGoogleTest(int* argc, char** argv) { - internal::InitGoogleTestImpl(argc, argv); -} - -// This overloaded version can be used in Windows programs compiled in -// UNICODE mode. -void InitGoogleTest(int* argc, wchar_t** argv) { - internal::InitGoogleTestImpl(argc, argv); -} - -} // namespace testing -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev) -// -// This file implements death tests. - - -#if GTEST_HAS_DEATH_TEST - -# if GTEST_OS_MAC -# include -# endif // GTEST_OS_MAC - -# include -# include -# include -# include - -# if GTEST_OS_WINDOWS -# include -# else -# include -# include -# endif // GTEST_OS_WINDOWS - -#endif // GTEST_HAS_DEATH_TEST - - -// Indicates that this translation unit is part of Google Test's -// implementation. It must come before gtest-internal-inl.h is -// included, or there will be a compiler error. This trick is to -// prevent a user from accidentally including gtest-internal-inl.h in -// his code. -#define GTEST_IMPLEMENTATION_ 1 -#undef GTEST_IMPLEMENTATION_ - -namespace testing { - -// Constants. - -// The default death test style. -static const char kDefaultDeathTestStyle[] = "fast"; - -GTEST_DEFINE_string_( - death_test_style, - internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle), - "Indicates how to run a death test in a forked child process: " - "\"threadsafe\" (child process re-executes the test binary " - "from the beginning, running only the specific death test) or " - "\"fast\" (child process runs the death test immediately " - "after forking)."); - -GTEST_DEFINE_bool_( - death_test_use_fork, - internal::BoolFromGTestEnv("death_test_use_fork", false), - "Instructs to use fork()/_exit() instead of clone() in death tests. " - "Ignored and always uses fork() on POSIX systems where clone() is not " - "implemented. Useful when running under valgrind or similar tools if " - "those do not support clone(). Valgrind 3.3.1 will just fail if " - "it sees an unsupported combination of clone() flags. " - "It is not recommended to use this flag w/o valgrind though it will " - "work in 99% of the cases. Once valgrind is fixed, this flag will " - "most likely be removed."); - -namespace internal { -GTEST_DEFINE_string_( - internal_run_death_test, "", - "Indicates the file, line number, temporal index of " - "the single death test to run, and a file descriptor to " - "which a success code may be sent, all separated by " - "colons. This flag is specified if and only if the current " - "process is a sub-process launched for running a thread-safe " - "death test. FOR INTERNAL USE ONLY."); -} // namespace internal - -#if GTEST_HAS_DEATH_TEST - -// ExitedWithCode constructor. -ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) { -} - -// ExitedWithCode function-call operator. -bool ExitedWithCode::operator()(int exit_status) const { -# if GTEST_OS_WINDOWS - - return exit_status == exit_code_; - -# else - - return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_; - -# endif // GTEST_OS_WINDOWS -} - -# if !GTEST_OS_WINDOWS -// KilledBySignal constructor. -KilledBySignal::KilledBySignal(int signum) : signum_(signum) { -} - -// KilledBySignal function-call operator. -bool KilledBySignal::operator()(int exit_status) const { - return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_; -} -# endif // !GTEST_OS_WINDOWS - -namespace internal { - -// Utilities needed for death tests. - -// Generates a textual description of a given exit code, in the format -// specified by wait(2). -static String ExitSummary(int exit_code) { - Message m; - -# if GTEST_OS_WINDOWS - - m << "Exited with exit status " << exit_code; - -# else - - if (WIFEXITED(exit_code)) { - m << "Exited with exit status " << WEXITSTATUS(exit_code); - } else if (WIFSIGNALED(exit_code)) { - m << "Terminated by signal " << WTERMSIG(exit_code); - } -# ifdef WCOREDUMP - if (WCOREDUMP(exit_code)) { - m << " (core dumped)"; - } -# endif -# endif // GTEST_OS_WINDOWS - - return m.GetString(); -} - -// Returns true if exit_status describes a process that was terminated -// by a signal, or exited normally with a nonzero exit code. -bool ExitedUnsuccessfully(int exit_status) { - return !ExitedWithCode(0)(exit_status); -} - -# if !GTEST_OS_WINDOWS -// Generates a textual failure message when a death test finds more than -// one thread running, or cannot determine the number of threads, prior -// to executing the given statement. It is the responsibility of the -// caller not to pass a thread_count of 1. -static String DeathTestThreadWarning(size_t thread_count) { - Message msg; - msg << "Death tests use fork(), which is unsafe particularly" - << " in a threaded context. For this test, " << GTEST_NAME_ << " "; - if (thread_count == 0) - msg << "couldn't detect the number of threads."; - else - msg << "detected " << thread_count << " threads."; - return msg.GetString(); -} -# endif // !GTEST_OS_WINDOWS - -// Flag characters for reporting a death test that did not die. -static const char kDeathTestLived = 'L'; -static const char kDeathTestReturned = 'R'; -static const char kDeathTestThrew = 'T'; -static const char kDeathTestInternalError = 'I'; - -// An enumeration describing all of the possible ways that a death test can -// conclude. DIED means that the process died while executing the test -// code; LIVED means that process lived beyond the end of the test code; -// RETURNED means that the test statement attempted to execute a return -// statement, which is not allowed; THREW means that the test statement -// returned control by throwing an exception. IN_PROGRESS means the test -// has not yet concluded. -// TODO(vladl@google.com): Unify names and possibly values for -// AbortReason, DeathTestOutcome, and flag characters above. -enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW }; - -// Routine for aborting the program which is safe to call from an -// exec-style death test child process, in which case the error -// message is propagated back to the parent process. Otherwise, the -// message is simply printed to stderr. In either case, the program -// then exits with status 1. -void DeathTestAbort(const String& message) { - // On a POSIX system, this function may be called from a threadsafe-style - // death test child process, which operates on a very small stack. Use - // the heap for any additional non-minuscule memory requirements. - const InternalRunDeathTestFlag* const flag = - GetUnitTestImpl()->internal_run_death_test_flag(); - if (flag != NULL) { - FILE* parent = posix::FDOpen(flag->write_fd(), "w"); - fputc(kDeathTestInternalError, parent); - fprintf(parent, "%s", message.c_str()); - fflush(parent); - _exit(1); - } else { - fprintf(stderr, "%s", message.c_str()); - fflush(stderr); - posix::Abort(); - } -} - -// A replacement for CHECK that calls DeathTestAbort if the assertion -// fails. -# define GTEST_DEATH_TEST_CHECK_(expression) \ - do { \ - if (!::testing::internal::IsTrue(expression)) { \ - DeathTestAbort(::testing::internal::String::Format( \ - "CHECK failed: File %s, line %d: %s", \ - __FILE__, __LINE__, #expression)); \ - } \ - } while (::testing::internal::AlwaysFalse()) - -// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for -// evaluating any system call that fulfills two conditions: it must return -// -1 on failure, and set errno to EINTR when it is interrupted and -// should be tried again. The macro expands to a loop that repeatedly -// evaluates the expression as long as it evaluates to -1 and sets -// errno to EINTR. If the expression evaluates to -1 but errno is -// something other than EINTR, DeathTestAbort is called. -# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \ - do { \ - int gtest_retval; \ - do { \ - gtest_retval = (expression); \ - } while (gtest_retval == -1 && errno == EINTR); \ - if (gtest_retval == -1) { \ - DeathTestAbort(::testing::internal::String::Format( \ - "CHECK failed: File %s, line %d: %s != -1", \ - __FILE__, __LINE__, #expression)); \ - } \ - } while (::testing::internal::AlwaysFalse()) - -// Returns the message describing the last system error in errno. -String GetLastErrnoDescription() { - return String(errno == 0 ? "" : posix::StrError(errno)); -} - -// This is called from a death test parent process to read a failure -// message from the death test child process and log it with the FATAL -// severity. On Windows, the message is read from a pipe handle. On other -// platforms, it is read from a file descriptor. -static void FailFromInternalError(int fd) { - Message error; - char buffer[256]; - int num_read; - - do { - while ((num_read = posix::Read(fd, buffer, 255)) > 0) { - buffer[num_read] = '\0'; - error << buffer; - } - } while (num_read == -1 && errno == EINTR); - - if (num_read == 0) { - GTEST_LOG_(FATAL) << error.GetString(); - } else { - const int last_error = errno; - GTEST_LOG_(FATAL) << "Error while reading death test internal: " - << GetLastErrnoDescription() << " [" << last_error << "]"; - } -} - -// Death test constructor. Increments the running death test count -// for the current test. -DeathTest::DeathTest() { - TestInfo* const info = GetUnitTestImpl()->current_test_info(); - if (info == NULL) { - DeathTestAbort("Cannot run a death test outside of a TEST or " - "TEST_F construct"); - } -} - -// Creates and returns a death test by dispatching to the current -// death test factory. -bool DeathTest::Create(const char* statement, const RE* regex, - const char* file, int line, DeathTest** test) { - return GetUnitTestImpl()->death_test_factory()->Create( - statement, regex, file, line, test); -} - -const char* DeathTest::LastMessage() { - return last_death_test_message_.c_str(); -} - -void DeathTest::set_last_death_test_message(const String& message) { - last_death_test_message_ = message; -} - -String DeathTest::last_death_test_message_; - -// Provides cross platform implementation for some death functionality. -class DeathTestImpl : public DeathTest { - protected: - DeathTestImpl(const char* a_statement, const RE* a_regex) - : statement_(a_statement), - regex_(a_regex), - spawned_(false), - status_(-1), - outcome_(IN_PROGRESS), - read_fd_(-1), - write_fd_(-1) {} - - // read_fd_ is expected to be closed and cleared by a derived class. - ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } - - void Abort(AbortReason reason); - virtual bool Passed(bool status_ok); - - const char* statement() const { return statement_; } - const RE* regex() const { return regex_; } - bool spawned() const { return spawned_; } - void set_spawned(bool is_spawned) { spawned_ = is_spawned; } - int status() const { return status_; } - void set_status(int a_status) { status_ = a_status; } - DeathTestOutcome outcome() const { return outcome_; } - void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } - int read_fd() const { return read_fd_; } - void set_read_fd(int fd) { read_fd_ = fd; } - int write_fd() const { return write_fd_; } - void set_write_fd(int fd) { write_fd_ = fd; } - - // Called in the parent process only. Reads the result code of the death - // test child process via a pipe, interprets it to set the outcome_ - // member, and closes read_fd_. Outputs diagnostics and terminates in - // case of unexpected codes. - void ReadAndInterpretStatusByte(); - - private: - // The textual content of the code this object is testing. This class - // doesn't own this string and should not attempt to delete it. - const char* const statement_; - // The regular expression which test output must match. DeathTestImpl - // doesn't own this object and should not attempt to delete it. - const RE* const regex_; - // True if the death test child process has been successfully spawned. - bool spawned_; - // The exit status of the child process. - int status_; - // How the death test concluded. - DeathTestOutcome outcome_; - // Descriptor to the read end of the pipe to the child process. It is - // always -1 in the child process. The child keeps its write end of the - // pipe in write_fd_. - int read_fd_; - // Descriptor to the child's write end of the pipe to the parent process. - // It is always -1 in the parent process. The parent keeps its end of the - // pipe in read_fd_. - int write_fd_; -}; - -// Called in the parent process only. Reads the result code of the death -// test child process via a pipe, interprets it to set the outcome_ -// member, and closes read_fd_. Outputs diagnostics and terminates in -// case of unexpected codes. -void DeathTestImpl::ReadAndInterpretStatusByte() { - char flag; - int bytes_read; - - // The read() here blocks until data is available (signifying the - // failure of the death test) or until the pipe is closed (signifying - // its success), so it's okay to call this in the parent before - // the child process has exited. - do { - bytes_read = posix::Read(read_fd(), &flag, 1); - } while (bytes_read == -1 && errno == EINTR); - - if (bytes_read == 0) { - set_outcome(DIED); - } else if (bytes_read == 1) { - switch (flag) { - case kDeathTestReturned: - set_outcome(RETURNED); - break; - case kDeathTestThrew: - set_outcome(THREW); - break; - case kDeathTestLived: - set_outcome(LIVED); - break; - case kDeathTestInternalError: - FailFromInternalError(read_fd()); // Does not return. - break; - default: - GTEST_LOG_(FATAL) << "Death test child process reported " - << "unexpected status byte (" - << static_cast(flag) << ")"; - } - } else { - GTEST_LOG_(FATAL) << "Read from death test child process failed: " - << GetLastErrnoDescription(); - } - GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd())); - set_read_fd(-1); -} - -// Signals that the death test code which should have exited, didn't. -// Should be called only in a death test child process. -// Writes a status byte to the child's status file descriptor, then -// calls _exit(1). -void DeathTestImpl::Abort(AbortReason reason) { - // The parent process considers the death test to be a failure if - // it finds any data in our pipe. So, here we write a single flag byte - // to the pipe, then exit. - const char status_ch = - reason == TEST_DID_NOT_DIE ? kDeathTestLived : - reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned; - - GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1)); - // We are leaking the descriptor here because on some platforms (i.e., - // when built as Windows DLL), destructors of global objects will still - // run after calling _exit(). On such systems, write_fd_ will be - // indirectly closed from the destructor of UnitTestImpl, causing double - // close if it is also closed here. On debug configurations, double close - // may assert. As there are no in-process buffers to flush here, we are - // relying on the OS to close the descriptor after the process terminates - // when the destructors are not run. - _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash) -} - -// Returns an indented copy of stderr output for a death test. -// This makes distinguishing death test output lines from regular log lines -// much easier. -static ::std::string FormatDeathTestOutput(const ::std::string& output) { - ::std::string ret; - for (size_t at = 0; ; ) { - const size_t line_end = output.find('\n', at); - ret += "[ DEATH ] "; - if (line_end == ::std::string::npos) { - ret += output.substr(at); - break; - } - ret += output.substr(at, line_end + 1 - at); - at = line_end + 1; - } - return ret; -} - -// Assesses the success or failure of a death test, using both private -// members which have previously been set, and one argument: -// -// Private data members: -// outcome: An enumeration describing how the death test -// concluded: DIED, LIVED, THREW, or RETURNED. The death test -// fails in the latter three cases. -// status: The exit status of the child process. On *nix, it is in the -// in the format specified by wait(2). On Windows, this is the -// value supplied to the ExitProcess() API or a numeric code -// of the exception that terminated the program. -// regex: A regular expression object to be applied to -// the test's captured standard error output; the death test -// fails if it does not match. -// -// Argument: -// status_ok: true if exit_status is acceptable in the context of -// this particular death test, which fails if it is false -// -// Returns true iff all of the above conditions are met. Otherwise, the -// first failing condition, in the order given above, is the one that is -// reported. Also sets the last death test message string. -bool DeathTestImpl::Passed(bool status_ok) { - if (!spawned()) - return false; - - const String error_message = GetCapturedStderr(); - - bool success = false; - Message buffer; - - buffer << "Death test: " << statement() << "\n"; - switch (outcome()) { - case LIVED: - buffer << " Result: failed to die.\n" - << " Error msg:\n" << FormatDeathTestOutput(error_message); - break; - case THREW: - buffer << " Result: threw an exception.\n" - << " Error msg:\n" << FormatDeathTestOutput(error_message); - break; - case RETURNED: - buffer << " Result: illegal return in test statement.\n" - << " Error msg:\n" << FormatDeathTestOutput(error_message); - break; - case DIED: - if (status_ok) { - const bool matched = RE::PartialMatch(error_message.c_str(), *regex()); - if (matched) { - success = true; - } else { - buffer << " Result: died but not with expected error.\n" - << " Expected: " << regex()->pattern() << "\n" - << "Actual msg:\n" << FormatDeathTestOutput(error_message); - } - } else { - buffer << " Result: died but not with expected exit code:\n" - << " " << ExitSummary(status()) << "\n" - << "Actual msg:\n" << FormatDeathTestOutput(error_message); - } - break; - case IN_PROGRESS: - default: - GTEST_LOG_(FATAL) - << "DeathTest::Passed somehow called before conclusion of test"; - } - - DeathTest::set_last_death_test_message(buffer.GetString()); - return success; -} - -# if GTEST_OS_WINDOWS -// WindowsDeathTest implements death tests on Windows. Due to the -// specifics of starting new processes on Windows, death tests there are -// always threadsafe, and Google Test considers the -// --gtest_death_test_style=fast setting to be equivalent to -// --gtest_death_test_style=threadsafe there. -// -// A few implementation notes: Like the Linux version, the Windows -// implementation uses pipes for child-to-parent communication. But due to -// the specifics of pipes on Windows, some extra steps are required: -// -// 1. The parent creates a communication pipe and stores handles to both -// ends of it. -// 2. The parent starts the child and provides it with the information -// necessary to acquire the handle to the write end of the pipe. -// 3. The child acquires the write end of the pipe and signals the parent -// using a Windows event. -// 4. Now the parent can release the write end of the pipe on its side. If -// this is done before step 3, the object's reference count goes down to -// 0 and it is destroyed, preventing the child from acquiring it. The -// parent now has to release it, or read operations on the read end of -// the pipe will not return when the child terminates. -// 5. The parent reads child's output through the pipe (outcome code and -// any possible error messages) from the pipe, and its stderr and then -// determines whether to fail the test. -// -// Note: to distinguish Win32 API calls from the local method and function -// calls, the former are explicitly resolved in the global namespace. -// -class WindowsDeathTest : public DeathTestImpl { - public: - WindowsDeathTest(const char* a_statement, - const RE* a_regex, - const char* file, - int line) - : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {} - - // All of these virtual functions are inherited from DeathTest. - virtual int Wait(); - virtual TestRole AssumeRole(); - - private: - // The name of the file in which the death test is located. - const char* const file_; - // The line number on which the death test is located. - const int line_; - // Handle to the write end of the pipe to the child process. - AutoHandle write_handle_; - // Child process handle. - AutoHandle child_handle_; - // Event the child process uses to signal the parent that it has - // acquired the handle to the write end of the pipe. After seeing this - // event the parent can release its own handles to make sure its - // ReadFile() calls return when the child terminates. - AutoHandle event_handle_; -}; - -// Waits for the child in a death test to exit, returning its exit -// status, or 0 if no child process exists. As a side effect, sets the -// outcome data member. -int WindowsDeathTest::Wait() { - if (!spawned()) - return 0; - - // Wait until the child either signals that it has acquired the write end - // of the pipe or it dies. - const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() }; - switch (::WaitForMultipleObjects(2, - wait_handles, - FALSE, // Waits for any of the handles. - INFINITE)) { - case WAIT_OBJECT_0: - case WAIT_OBJECT_0 + 1: - break; - default: - GTEST_DEATH_TEST_CHECK_(false); // Should not get here. - } - - // The child has acquired the write end of the pipe or exited. - // We release the handle on our side and continue. - write_handle_.Reset(); - event_handle_.Reset(); - - ReadAndInterpretStatusByte(); - - // Waits for the child process to exit if it haven't already. This - // returns immediately if the child has already exited, regardless of - // whether previous calls to WaitForMultipleObjects synchronized on this - // handle or not. - GTEST_DEATH_TEST_CHECK_( - WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(), - INFINITE)); - DWORD status_code; - GTEST_DEATH_TEST_CHECK_( - ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE); - child_handle_.Reset(); - set_status(static_cast(status_code)); - return status(); -} - -// The AssumeRole process for a Windows death test. It creates a child -// process with the same executable as the current process to run the -// death test. The child process is given the --gtest_filter and -// --gtest_internal_run_death_test flags such that it knows to run the -// current death test only. -DeathTest::TestRole WindowsDeathTest::AssumeRole() { - const UnitTestImpl* const impl = GetUnitTestImpl(); - const InternalRunDeathTestFlag* const flag = - impl->internal_run_death_test_flag(); - const TestInfo* const info = impl->current_test_info(); - const int death_test_index = info->result()->death_test_count(); - - if (flag != NULL) { - // ParseInternalRunDeathTestFlag() has performed all the necessary - // processing. - set_write_fd(flag->write_fd()); - return EXECUTE_TEST; - } - - // WindowsDeathTest uses an anonymous pipe to communicate results of - // a death test. - SECURITY_ATTRIBUTES handles_are_inheritable = { - sizeof(SECURITY_ATTRIBUTES), NULL, TRUE }; - HANDLE read_handle, write_handle; - GTEST_DEATH_TEST_CHECK_( - ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable, - 0) // Default buffer size. - != FALSE); - set_read_fd(::_open_osfhandle(reinterpret_cast(read_handle), - O_RDONLY)); - write_handle_.Reset(write_handle); - event_handle_.Reset(::CreateEvent( - &handles_are_inheritable, - TRUE, // The event will automatically reset to non-signaled state. - FALSE, // The initial state is non-signalled. - NULL)); // The even is unnamed. - GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL); - const String filter_flag = String::Format("--%s%s=%s.%s", - GTEST_FLAG_PREFIX_, kFilterFlag, - info->test_case_name(), - info->name()); - const String internal_flag = String::Format( - "--%s%s=%s|%d|%d|%u|%Iu|%Iu", - GTEST_FLAG_PREFIX_, - kInternalRunDeathTestFlag, - file_, line_, - death_test_index, - static_cast(::GetCurrentProcessId()), - // size_t has the same with as pointers on both 32-bit and 64-bit - // Windows platforms. - // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx. - reinterpret_cast(write_handle), - reinterpret_cast(event_handle_.Get())); - - char executable_path[_MAX_PATH + 1]; // NOLINT - GTEST_DEATH_TEST_CHECK_( - _MAX_PATH + 1 != ::GetModuleFileNameA(NULL, - executable_path, - _MAX_PATH)); - - String command_line = String::Format("%s %s \"%s\"", - ::GetCommandLineA(), - filter_flag.c_str(), - internal_flag.c_str()); - - DeathTest::set_last_death_test_message(""); - - CaptureStderr(); - // Flush the log buffers since the log streams are shared with the child. - FlushInfoLog(); - - // The child process will share the standard handles with the parent. - STARTUPINFOA startup_info; - memset(&startup_info, 0, sizeof(STARTUPINFO)); - startup_info.dwFlags = STARTF_USESTDHANDLES; - startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE); - startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE); - startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE); - - PROCESS_INFORMATION process_info; - GTEST_DEATH_TEST_CHECK_(::CreateProcessA( - executable_path, - const_cast(command_line.c_str()), - NULL, // Retuned process handle is not inheritable. - NULL, // Retuned thread handle is not inheritable. - TRUE, // Child inherits all inheritable handles (for write_handle_). - 0x0, // Default creation flags. - NULL, // Inherit the parent's environment. - UnitTest::GetInstance()->original_working_dir(), - &startup_info, - &process_info) != FALSE); - child_handle_.Reset(process_info.hProcess); - ::CloseHandle(process_info.hThread); - set_spawned(true); - return OVERSEE_TEST; -} -# else // We are not on Windows. - -// ForkingDeathTest provides implementations for most of the abstract -// methods of the DeathTest interface. Only the AssumeRole method is -// left undefined. -class ForkingDeathTest : public DeathTestImpl { - public: - ForkingDeathTest(const char* statement, const RE* regex); - - // All of these virtual functions are inherited from DeathTest. - virtual int Wait(); - - protected: - void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; } - - private: - // PID of child process during death test; 0 in the child process itself. - pid_t child_pid_; -}; - -// Constructs a ForkingDeathTest. -ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex) - : DeathTestImpl(a_statement, a_regex), - child_pid_(-1) {} - -// Waits for the child in a death test to exit, returning its exit -// status, or 0 if no child process exists. As a side effect, sets the -// outcome data member. -int ForkingDeathTest::Wait() { - if (!spawned()) - return 0; - - ReadAndInterpretStatusByte(); - - int status_value; - GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0)); - set_status(status_value); - return status_value; -} - -// A concrete death test class that forks, then immediately runs the test -// in the child process. -class NoExecDeathTest : public ForkingDeathTest { - public: - NoExecDeathTest(const char* a_statement, const RE* a_regex) : - ForkingDeathTest(a_statement, a_regex) { } - virtual TestRole AssumeRole(); -}; - -// The AssumeRole process for a fork-and-run death test. It implements a -// straightforward fork, with a simple pipe to transmit the status byte. -DeathTest::TestRole NoExecDeathTest::AssumeRole() { - const size_t thread_count = GetThreadCount(); - if (thread_count != 1) { - GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count); - } - - int pipe_fd[2]; - GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); - - DeathTest::set_last_death_test_message(""); - CaptureStderr(); - // When we fork the process below, the log file buffers are copied, but the - // file descriptors are shared. We flush all log files here so that closing - // the file descriptors in the child process doesn't throw off the - // synchronization between descriptors and buffers in the parent process. - // This is as close to the fork as possible to avoid a race condition in case - // there are multiple threads running before the death test, and another - // thread writes to the log file. - FlushInfoLog(); - - const pid_t child_pid = fork(); - GTEST_DEATH_TEST_CHECK_(child_pid != -1); - set_child_pid(child_pid); - if (child_pid == 0) { - GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0])); - set_write_fd(pipe_fd[1]); - // Redirects all logging to stderr in the child process to prevent - // concurrent writes to the log files. We capture stderr in the parent - // process and append the child process' output to a log. - LogToStderr(); - // Event forwarding to the listeners of event listener API mush be shut - // down in death test subprocesses. - GetUnitTestImpl()->listeners()->SuppressEventForwarding(); - return EXECUTE_TEST; - } else { - GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); - set_read_fd(pipe_fd[0]); - set_spawned(true); - return OVERSEE_TEST; - } -} - -// A concrete death test class that forks and re-executes the main -// program from the beginning, with command-line flags set that cause -// only this specific death test to be run. -class ExecDeathTest : public ForkingDeathTest { - public: - ExecDeathTest(const char* a_statement, const RE* a_regex, - const char* file, int line) : - ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { } - virtual TestRole AssumeRole(); - private: - // The name of the file in which the death test is located. - const char* const file_; - // The line number on which the death test is located. - const int line_; -}; - -// Utility class for accumulating command-line arguments. -class Arguments { - public: - Arguments() { - args_.push_back(NULL); - } - - ~Arguments() { - for (std::vector::iterator i = args_.begin(); i != args_.end(); - ++i) { - free(*i); - } - } - void AddArgument(const char* argument) { - args_.insert(args_.end() - 1, posix::StrDup(argument)); - } - - template - void AddArguments(const ::std::vector& arguments) { - for (typename ::std::vector::const_iterator i = arguments.begin(); - i != arguments.end(); - ++i) { - args_.insert(args_.end() - 1, posix::StrDup(i->c_str())); - } - } - char* const* Argv() { - return &args_[0]; - } - private: - std::vector args_; -}; - -// A struct that encompasses the arguments to the child process of a -// threadsafe-style death test process. -struct ExecDeathTestArgs { - char* const* argv; // Command-line arguments for the child's call to exec - int close_fd; // File descriptor to close; the read end of a pipe -}; - -# if GTEST_OS_MAC -inline char** GetEnviron() { - // When Google Test is built as a framework on MacOS X, the environ variable - // is unavailable. Apple's documentation (man environ) recommends using - // _NSGetEnviron() instead. - return *_NSGetEnviron(); -} -# else -// Some POSIX platforms expect you to declare environ. extern "C" makes -// it reside in the global namespace. -extern "C" char** environ; -inline char** GetEnviron() { return environ; } -# endif // GTEST_OS_MAC - -// The main function for a threadsafe-style death test child process. -// This function is called in a clone()-ed process and thus must avoid -// any potentially unsafe operations like malloc or libc functions. -static int ExecDeathTestChildMain(void* child_arg) { - ExecDeathTestArgs* const args = static_cast(child_arg); - GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd)); - - // We need to execute the test program in the same environment where - // it was originally invoked. Therefore we change to the original - // working directory first. - const char* const original_dir = - UnitTest::GetInstance()->original_working_dir(); - // We can safely call chdir() as it's a direct system call. - if (chdir(original_dir) != 0) { - DeathTestAbort(String::Format("chdir(\"%s\") failed: %s", - original_dir, - GetLastErrnoDescription().c_str())); - return EXIT_FAILURE; - } - - // We can safely call execve() as it's a direct system call. We - // cannot use execvp() as it's a libc function and thus potentially - // unsafe. Since execve() doesn't search the PATH, the user must - // invoke the test program via a valid path that contains at least - // one path separator. - execve(args->argv[0], args->argv, GetEnviron()); - DeathTestAbort(String::Format("execve(%s, ...) in %s failed: %s", - args->argv[0], - original_dir, - GetLastErrnoDescription().c_str())); - return EXIT_FAILURE; -} - -// Two utility routines that together determine the direction the stack -// grows. -// This could be accomplished more elegantly by a single recursive -// function, but we want to guard against the unlikely possibility of -// a smart compiler optimizing the recursion away. -// -// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining -// StackLowerThanAddress into StackGrowsDown, which then doesn't give -// correct answer. -bool StackLowerThanAddress(const void* ptr) GTEST_NO_INLINE_; -bool StackLowerThanAddress(const void* ptr) { - int dummy; - return &dummy < ptr; -} - -bool StackGrowsDown() { - int dummy; - return StackLowerThanAddress(&dummy); -} - -// A threadsafe implementation of fork(2) for threadsafe-style death tests -// that uses clone(2). It dies with an error message if anything goes -// wrong. -static pid_t ExecDeathTestFork(char* const* argv, int close_fd) { - ExecDeathTestArgs args = { argv, close_fd }; - pid_t child_pid = -1; - -# if GTEST_HAS_CLONE - const bool use_fork = GTEST_FLAG(death_test_use_fork); - - if (!use_fork) { - static const bool stack_grows_down = StackGrowsDown(); - const size_t stack_size = getpagesize(); - // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead. - void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE, - MAP_ANON | MAP_PRIVATE, -1, 0); - GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED); - void* const stack_top = - static_cast(stack) + (stack_grows_down ? stack_size : 0); - - child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args); - - GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1); - } -# else - const bool use_fork = true; -# endif // GTEST_HAS_CLONE - - if (use_fork && (child_pid = fork()) == 0) { - ExecDeathTestChildMain(&args); - _exit(0); - } - - GTEST_DEATH_TEST_CHECK_(child_pid != -1); - return child_pid; -} - -// The AssumeRole process for a fork-and-exec death test. It re-executes the -// main program from the beginning, setting the --gtest_filter -// and --gtest_internal_run_death_test flags to cause only the current -// death test to be re-run. -DeathTest::TestRole ExecDeathTest::AssumeRole() { - const UnitTestImpl* const impl = GetUnitTestImpl(); - const InternalRunDeathTestFlag* const flag = - impl->internal_run_death_test_flag(); - const TestInfo* const info = impl->current_test_info(); - const int death_test_index = info->result()->death_test_count(); - - if (flag != NULL) { - set_write_fd(flag->write_fd()); - return EXECUTE_TEST; - } - - int pipe_fd[2]; - GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); - // Clear the close-on-exec flag on the write end of the pipe, lest - // it be closed when the child process does an exec: - GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1); - - const String filter_flag = - String::Format("--%s%s=%s.%s", - GTEST_FLAG_PREFIX_, kFilterFlag, - info->test_case_name(), info->name()); - const String internal_flag = - String::Format("--%s%s=%s|%d|%d|%d", - GTEST_FLAG_PREFIX_, kInternalRunDeathTestFlag, - file_, line_, death_test_index, pipe_fd[1]); - Arguments args; - args.AddArguments(GetArgvs()); - args.AddArgument(filter_flag.c_str()); - args.AddArgument(internal_flag.c_str()); - - DeathTest::set_last_death_test_message(""); - - CaptureStderr(); - // See the comment in NoExecDeathTest::AssumeRole for why the next line - // is necessary. - FlushInfoLog(); - - const pid_t child_pid = ExecDeathTestFork(args.Argv(), pipe_fd[0]); - GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); - set_child_pid(child_pid); - set_read_fd(pipe_fd[0]); - set_spawned(true); - return OVERSEE_TEST; -} - -# endif // !GTEST_OS_WINDOWS - -// Creates a concrete DeathTest-derived class that depends on the -// --gtest_death_test_style flag, and sets the pointer pointed to -// by the "test" argument to its address. If the test should be -// skipped, sets that pointer to NULL. Returns true, unless the -// flag is set to an invalid value. -bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex, - const char* file, int line, - DeathTest** test) { - UnitTestImpl* const impl = GetUnitTestImpl(); - const InternalRunDeathTestFlag* const flag = - impl->internal_run_death_test_flag(); - const int death_test_index = impl->current_test_info() - ->increment_death_test_count(); - - if (flag != NULL) { - if (death_test_index > flag->index()) { - DeathTest::set_last_death_test_message(String::Format( - "Death test count (%d) somehow exceeded expected maximum (%d)", - death_test_index, flag->index())); - return false; - } - - if (!(flag->file() == file && flag->line() == line && - flag->index() == death_test_index)) { - *test = NULL; - return true; - } - } - -# if GTEST_OS_WINDOWS - - if (GTEST_FLAG(death_test_style) == "threadsafe" || - GTEST_FLAG(death_test_style) == "fast") { - *test = new WindowsDeathTest(statement, regex, file, line); - } - -# else - - if (GTEST_FLAG(death_test_style) == "threadsafe") { - *test = new ExecDeathTest(statement, regex, file, line); - } else if (GTEST_FLAG(death_test_style) == "fast") { - *test = new NoExecDeathTest(statement, regex); - } - -# endif // GTEST_OS_WINDOWS - - else { // NOLINT - this is more readable than unbalanced brackets inside #if. - DeathTest::set_last_death_test_message(String::Format( - "Unknown death test style \"%s\" encountered", - GTEST_FLAG(death_test_style).c_str())); - return false; - } - - return true; -} - -// Splits a given string on a given delimiter, populating a given -// vector with the fields. GTEST_HAS_DEATH_TEST implies that we have -// ::std::string, so we can use it here. -static void SplitString(const ::std::string& str, char delimiter, - ::std::vector< ::std::string>* dest) { - ::std::vector< ::std::string> parsed; - ::std::string::size_type pos = 0; - while (::testing::internal::AlwaysTrue()) { - const ::std::string::size_type colon = str.find(delimiter, pos); - if (colon == ::std::string::npos) { - parsed.push_back(str.substr(pos)); - break; - } else { - parsed.push_back(str.substr(pos, colon - pos)); - pos = colon + 1; - } - } - dest->swap(parsed); -} - -# if GTEST_OS_WINDOWS -// Recreates the pipe and event handles from the provided parameters, -// signals the event, and returns a file descriptor wrapped around the pipe -// handle. This function is called in the child process only. -int GetStatusFileDescriptor(unsigned int parent_process_id, - size_t write_handle_as_size_t, - size_t event_handle_as_size_t) { - AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE, - FALSE, // Non-inheritable. - parent_process_id)); - if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) { - DeathTestAbort(String::Format("Unable to open parent process %u", - parent_process_id)); - } - - // TODO(vladl@google.com): Replace the following check with a - // compile-time assertion when available. - GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t)); - - const HANDLE write_handle = - reinterpret_cast(write_handle_as_size_t); - HANDLE dup_write_handle; - - // The newly initialized handle is accessible only in in the parent - // process. To obtain one accessible within the child, we need to use - // DuplicateHandle. - if (!::DuplicateHandle(parent_process_handle.Get(), write_handle, - ::GetCurrentProcess(), &dup_write_handle, - 0x0, // Requested privileges ignored since - // DUPLICATE_SAME_ACCESS is used. - FALSE, // Request non-inheritable handler. - DUPLICATE_SAME_ACCESS)) { - DeathTestAbort(String::Format( - "Unable to duplicate the pipe handle %Iu from the parent process %u", - write_handle_as_size_t, parent_process_id)); - } - - const HANDLE event_handle = reinterpret_cast(event_handle_as_size_t); - HANDLE dup_event_handle; - - if (!::DuplicateHandle(parent_process_handle.Get(), event_handle, - ::GetCurrentProcess(), &dup_event_handle, - 0x0, - FALSE, - DUPLICATE_SAME_ACCESS)) { - DeathTestAbort(String::Format( - "Unable to duplicate the event handle %Iu from the parent process %u", - event_handle_as_size_t, parent_process_id)); - } - - const int write_fd = - ::_open_osfhandle(reinterpret_cast(dup_write_handle), O_APPEND); - if (write_fd == -1) { - DeathTestAbort(String::Format( - "Unable to convert pipe handle %Iu to a file descriptor", - write_handle_as_size_t)); - } - - // Signals the parent that the write end of the pipe has been acquired - // so the parent can release its own write end. - ::SetEvent(dup_event_handle); - - return write_fd; -} -# endif // GTEST_OS_WINDOWS - -// Returns a newly created InternalRunDeathTestFlag object with fields -// initialized from the GTEST_FLAG(internal_run_death_test) flag if -// the flag is specified; otherwise returns NULL. -InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() { - if (GTEST_FLAG(internal_run_death_test) == "") return NULL; - - // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we - // can use it here. - int line = -1; - int index = -1; - ::std::vector< ::std::string> fields; - SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields); - int write_fd = -1; - -# if GTEST_OS_WINDOWS - - unsigned int parent_process_id = 0; - size_t write_handle_as_size_t = 0; - size_t event_handle_as_size_t = 0; - - if (fields.size() != 6 - || !ParseNaturalNumber(fields[1], &line) - || !ParseNaturalNumber(fields[2], &index) - || !ParseNaturalNumber(fields[3], &parent_process_id) - || !ParseNaturalNumber(fields[4], &write_handle_as_size_t) - || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) { - DeathTestAbort(String::Format( - "Bad --gtest_internal_run_death_test flag: %s", - GTEST_FLAG(internal_run_death_test).c_str())); - } - write_fd = GetStatusFileDescriptor(parent_process_id, - write_handle_as_size_t, - event_handle_as_size_t); -# else - - if (fields.size() != 4 - || !ParseNaturalNumber(fields[1], &line) - || !ParseNaturalNumber(fields[2], &index) - || !ParseNaturalNumber(fields[3], &write_fd)) { - DeathTestAbort(String::Format( - "Bad --gtest_internal_run_death_test flag: %s", - GTEST_FLAG(internal_run_death_test).c_str())); - } - -# endif // GTEST_OS_WINDOWS - - return new InternalRunDeathTestFlag(fields[0], line, index, write_fd); -} - -} // namespace internal - -#endif // GTEST_HAS_DEATH_TEST - -} // namespace testing -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: keith.ray@gmail.com (Keith Ray) - - -#include - -#if GTEST_OS_WINDOWS_MOBILE -# include -#elif GTEST_OS_WINDOWS -# include -# include -#elif GTEST_OS_SYMBIAN || GTEST_OS_NACL -// Symbian OpenC and NaCl have PATH_MAX in sys/syslimits.h -# include -#else -# include -# include // Some Linux distributions define PATH_MAX here. -#endif // GTEST_OS_WINDOWS_MOBILE - -#if GTEST_OS_WINDOWS -# define GTEST_PATH_MAX_ _MAX_PATH -#elif defined(PATH_MAX) -# define GTEST_PATH_MAX_ PATH_MAX -#elif defined(_XOPEN_PATH_MAX) -# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX -#else -# define GTEST_PATH_MAX_ _POSIX_PATH_MAX -#endif // GTEST_OS_WINDOWS - - -namespace testing { -namespace internal { - -#if GTEST_OS_WINDOWS -// On Windows, '\\' is the standard path separator, but many tools and the -// Windows API also accept '/' as an alternate path separator. Unless otherwise -// noted, a file path can contain either kind of path separators, or a mixture -// of them. -const char kPathSeparator = '\\'; -const char kAlternatePathSeparator = '/'; -const char kPathSeparatorString[] = "\\"; -const char kAlternatePathSeparatorString[] = "/"; -# if GTEST_OS_WINDOWS_MOBILE -// Windows CE doesn't have a current directory. You should not use -// the current directory in tests on Windows CE, but this at least -// provides a reasonable fallback. -const char kCurrentDirectoryString[] = "\\"; -// Windows CE doesn't define INVALID_FILE_ATTRIBUTES -const DWORD kInvalidFileAttributes = 0xffffffff; -# else -const char kCurrentDirectoryString[] = ".\\"; -# endif // GTEST_OS_WINDOWS_MOBILE -#else -const char kPathSeparator = '/'; -const char kPathSeparatorString[] = "/"; -const char kCurrentDirectoryString[] = "./"; -#endif // GTEST_OS_WINDOWS - -// Returns whether the given character is a valid path separator. -static bool IsPathSeparator(char c) { -#if GTEST_HAS_ALT_PATH_SEP_ - return (c == kPathSeparator) || (c == kAlternatePathSeparator); -#else - return c == kPathSeparator; -#endif -} - -// Returns the current working directory, or "" if unsuccessful. -FilePath FilePath::GetCurrentDir() { -#if GTEST_OS_WINDOWS_MOBILE - // Windows CE doesn't have a current directory, so we just return - // something reasonable. - return FilePath(kCurrentDirectoryString); -#elif GTEST_OS_WINDOWS - char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; - return FilePath(_getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); -#else - char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; - return FilePath(getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); -#endif // GTEST_OS_WINDOWS_MOBILE -} - -// Returns a copy of the FilePath with the case-insensitive extension removed. -// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns -// FilePath("dir/file"). If a case-insensitive extension is not -// found, returns a copy of the original FilePath. -FilePath FilePath::RemoveExtension(const char* extension) const { - String dot_extension(String::Format(".%s", extension)); - if (pathname_.EndsWithCaseInsensitive(dot_extension.c_str())) { - return FilePath(String(pathname_.c_str(), pathname_.length() - 4)); - } - return *this; -} - -// Returns a pointer to the last occurence of a valid path separator in -// the FilePath. On Windows, for example, both '/' and '\' are valid path -// separators. Returns NULL if no path separator was found. -const char* FilePath::FindLastPathSeparator() const { - const char* const last_sep = strrchr(c_str(), kPathSeparator); -#if GTEST_HAS_ALT_PATH_SEP_ - const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator); - // Comparing two pointers of which only one is NULL is undefined. - if (last_alt_sep != NULL && - (last_sep == NULL || last_alt_sep > last_sep)) { - return last_alt_sep; - } -#endif - return last_sep; -} - -// Returns a copy of the FilePath with the directory part removed. -// Example: FilePath("path/to/file").RemoveDirectoryName() returns -// FilePath("file"). If there is no directory part ("just_a_file"), it returns -// the FilePath unmodified. If there is no file part ("just_a_dir/") it -// returns an empty FilePath (""). -// On Windows platform, '\' is the path separator, otherwise it is '/'. -FilePath FilePath::RemoveDirectoryName() const { - const char* const last_sep = FindLastPathSeparator(); - return last_sep ? FilePath(String(last_sep + 1)) : *this; -} - -// RemoveFileName returns the directory path with the filename removed. -// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". -// If the FilePath is "a_file" or "/a_file", RemoveFileName returns -// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does -// not have a file, like "just/a/dir/", it returns the FilePath unmodified. -// On Windows platform, '\' is the path separator, otherwise it is '/'. -FilePath FilePath::RemoveFileName() const { - const char* const last_sep = FindLastPathSeparator(); - String dir; - if (last_sep) { - dir = String(c_str(), last_sep + 1 - c_str()); - } else { - dir = kCurrentDirectoryString; - } - return FilePath(dir); -} - -// Helper functions for naming files in a directory for xml output. - -// Given directory = "dir", base_name = "test", number = 0, -// extension = "xml", returns "dir/test.xml". If number is greater -// than zero (e.g., 12), returns "dir/test_12.xml". -// On Windows platform, uses \ as the separator rather than /. -FilePath FilePath::MakeFileName(const FilePath& directory, - const FilePath& base_name, - int number, - const char* extension) { - String file; - if (number == 0) { - file = String::Format("%s.%s", base_name.c_str(), extension); - } else { - file = String::Format("%s_%d.%s", base_name.c_str(), number, extension); - } - return ConcatPaths(directory, FilePath(file)); -} - -// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml". -// On Windows, uses \ as the separator rather than /. -FilePath FilePath::ConcatPaths(const FilePath& directory, - const FilePath& relative_path) { - if (directory.IsEmpty()) - return relative_path; - const FilePath dir(directory.RemoveTrailingPathSeparator()); - return FilePath(String::Format("%s%c%s", dir.c_str(), kPathSeparator, - relative_path.c_str())); -} - -// Returns true if pathname describes something findable in the file-system, -// either a file, directory, or whatever. -bool FilePath::FileOrDirectoryExists() const { -#if GTEST_OS_WINDOWS_MOBILE - LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str()); - const DWORD attributes = GetFileAttributes(unicode); - delete [] unicode; - return attributes != kInvalidFileAttributes; -#else - posix::StatStruct file_stat; - return posix::Stat(pathname_.c_str(), &file_stat) == 0; -#endif // GTEST_OS_WINDOWS_MOBILE -} - -// Returns true if pathname describes a directory in the file-system -// that exists. -bool FilePath::DirectoryExists() const { - bool result = false; -#if GTEST_OS_WINDOWS - // Don't strip off trailing separator if path is a root directory on - // Windows (like "C:\\"). - const FilePath& path(IsRootDirectory() ? *this : - RemoveTrailingPathSeparator()); -#else - const FilePath& path(*this); -#endif - -#if GTEST_OS_WINDOWS_MOBILE - LPCWSTR unicode = String::AnsiToUtf16(path.c_str()); - const DWORD attributes = GetFileAttributes(unicode); - delete [] unicode; - if ((attributes != kInvalidFileAttributes) && - (attributes & FILE_ATTRIBUTE_DIRECTORY)) { - result = true; - } -#else - posix::StatStruct file_stat; - result = posix::Stat(path.c_str(), &file_stat) == 0 && - posix::IsDir(file_stat); -#endif // GTEST_OS_WINDOWS_MOBILE - - return result; -} - -// Returns true if pathname describes a root directory. (Windows has one -// root directory per disk drive.) -bool FilePath::IsRootDirectory() const { -#if GTEST_OS_WINDOWS - // TODO(wan@google.com): on Windows a network share like - // \\server\share can be a root directory, although it cannot be the - // current directory. Handle this properly. - return pathname_.length() == 3 && IsAbsolutePath(); -#else - return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]); -#endif -} - -// Returns true if pathname describes an absolute path. -bool FilePath::IsAbsolutePath() const { - const char* const name = pathname_.c_str(); -#if GTEST_OS_WINDOWS - return pathname_.length() >= 3 && - ((name[0] >= 'a' && name[0] <= 'z') || - (name[0] >= 'A' && name[0] <= 'Z')) && - name[1] == ':' && - IsPathSeparator(name[2]); -#else - return IsPathSeparator(name[0]); -#endif -} - -// Returns a pathname for a file that does not currently exist. The pathname -// will be directory/base_name.extension or -// directory/base_name_.extension if directory/base_name.extension -// already exists. The number will be incremented until a pathname is found -// that does not already exist. -// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. -// There could be a race condition if two or more processes are calling this -// function at the same time -- they could both pick the same filename. -FilePath FilePath::GenerateUniqueFileName(const FilePath& directory, - const FilePath& base_name, - const char* extension) { - FilePath full_pathname; - int number = 0; - do { - full_pathname.Set(MakeFileName(directory, base_name, number++, extension)); - } while (full_pathname.FileOrDirectoryExists()); - return full_pathname; -} - -// Returns true if FilePath ends with a path separator, which indicates that -// it is intended to represent a directory. Returns false otherwise. -// This does NOT check that a directory (or file) actually exists. -bool FilePath::IsDirectory() const { - return !pathname_.empty() && - IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]); -} - -// Create directories so that path exists. Returns true if successful or if -// the directories already exist; returns false if unable to create directories -// for any reason. -bool FilePath::CreateDirectoriesRecursively() const { - if (!this->IsDirectory()) { - return false; - } - - if (pathname_.length() == 0 || this->DirectoryExists()) { - return true; - } - - const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName()); - return parent.CreateDirectoriesRecursively() && this->CreateFolder(); -} - -// Create the directory so that path exists. Returns true if successful or -// if the directory already exists; returns false if unable to create the -// directory for any reason, including if the parent directory does not -// exist. Not named "CreateDirectory" because that's a macro on Windows. -bool FilePath::CreateFolder() const { -#if GTEST_OS_WINDOWS_MOBILE - FilePath removed_sep(this->RemoveTrailingPathSeparator()); - LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str()); - int result = CreateDirectory(unicode, NULL) ? 0 : -1; - delete [] unicode; -#elif GTEST_OS_WINDOWS - int result = _mkdir(pathname_.c_str()); -#else - int result = mkdir(pathname_.c_str(), 0777); -#endif // GTEST_OS_WINDOWS_MOBILE - - if (result == -1) { - return this->DirectoryExists(); // An error is OK if the directory exists. - } - return true; // No error. -} - -// If input name has a trailing separator character, remove it and return the -// name, otherwise return the name string unmodified. -// On Windows platform, uses \ as the separator, other platforms use /. -FilePath FilePath::RemoveTrailingPathSeparator() const { - return IsDirectory() - ? FilePath(String(pathname_.c_str(), pathname_.length() - 1)) - : *this; -} - -// Removes any redundant separators that might be in the pathname. -// For example, "bar///foo" becomes "bar/foo". Does not eliminate other -// redundancies that might be in a pathname involving "." or "..". -// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share). -void FilePath::Normalize() { - if (pathname_.c_str() == NULL) { - pathname_ = ""; - return; - } - const char* src = pathname_.c_str(); - char* const dest = new char[pathname_.length() + 1]; - char* dest_ptr = dest; - memset(dest_ptr, 0, pathname_.length() + 1); - - while (*src != '\0') { - *dest_ptr = *src; - if (!IsPathSeparator(*src)) { - src++; - } else { -#if GTEST_HAS_ALT_PATH_SEP_ - if (*dest_ptr == kAlternatePathSeparator) { - *dest_ptr = kPathSeparator; - } -#endif - while (IsPathSeparator(*src)) - src++; - } - dest_ptr++; - } - *dest_ptr = '\0'; - pathname_ = dest; - delete[] dest; -} - -} // namespace internal -} // namespace testing -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - - -#include -#include -#include -#include - -#if GTEST_OS_WINDOWS_MOBILE -# include // For TerminateProcess() -#elif GTEST_OS_WINDOWS -# include -# include -#else -# include -#endif // GTEST_OS_WINDOWS_MOBILE - -#if GTEST_OS_MAC -# include -# include -# include -#endif // GTEST_OS_MAC - - -// Indicates that this translation unit is part of Google Test's -// implementation. It must come before gtest-internal-inl.h is -// included, or there will be a compiler error. This trick is to -// prevent a user from accidentally including gtest-internal-inl.h in -// his code. -#define GTEST_IMPLEMENTATION_ 1 -#undef GTEST_IMPLEMENTATION_ - -namespace testing { -namespace internal { - -#if defined(_MSC_VER) || defined(__BORLANDC__) -// MSVC and C++Builder do not provide a definition of STDERR_FILENO. -const int kStdOutFileno = 1; -const int kStdErrFileno = 2; -#else -const int kStdOutFileno = STDOUT_FILENO; -const int kStdErrFileno = STDERR_FILENO; -#endif // _MSC_VER - -#if GTEST_OS_MAC - -// Returns the number of threads running in the process, or 0 to indicate that -// we cannot detect it. -size_t GetThreadCount() { - const task_t task = mach_task_self(); - mach_msg_type_number_t thread_count; - thread_act_array_t thread_list; - const kern_return_t status = task_threads(task, &thread_list, &thread_count); - if (status == KERN_SUCCESS) { - // task_threads allocates resources in thread_list and we need to free them - // to avoid leaks. - vm_deallocate(task, - reinterpret_cast(thread_list), - sizeof(thread_t) * thread_count); - return static_cast(thread_count); - } else { - return 0; - } -} - -#else - -size_t GetThreadCount() { - // There's no portable way to detect the number of threads, so we just - // return 0 to indicate that we cannot detect it. - return 0; -} - -#endif // GTEST_OS_MAC - -#if GTEST_USES_POSIX_RE - -// Implements RE. Currently only needed for death tests. - -RE::~RE() { - if (is_valid_) { - // regfree'ing an invalid regex might crash because the content - // of the regex is undefined. Since the regex's are essentially - // the same, one cannot be valid (or invalid) without the other - // being so too. - regfree(&partial_regex_); - regfree(&full_regex_); - } - free(const_cast(pattern_)); -} - -// Returns true iff regular expression re matches the entire str. -bool RE::FullMatch(const char* str, const RE& re) { - if (!re.is_valid_) return false; - - regmatch_t match; - return regexec(&re.full_regex_, str, 1, &match, 0) == 0; -} - -// Returns true iff regular expression re matches a substring of str -// (including str itself). -bool RE::PartialMatch(const char* str, const RE& re) { - if (!re.is_valid_) return false; - - regmatch_t match; - return regexec(&re.partial_regex_, str, 1, &match, 0) == 0; -} - -// Initializes an RE from its string representation. -void RE::Init(const char* regex) { - pattern_ = posix::StrDup(regex); - - // Reserves enough bytes to hold the regular expression used for a - // full match. - const size_t full_regex_len = strlen(regex) + 10; - char* const full_pattern = new char[full_regex_len]; - - snprintf(full_pattern, full_regex_len, "^(%s)$", regex); - is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0; - // We want to call regcomp(&partial_regex_, ...) even if the - // previous expression returns false. Otherwise partial_regex_ may - // not be properly initialized can may cause trouble when it's - // freed. - // - // Some implementation of POSIX regex (e.g. on at least some - // versions of Cygwin) doesn't accept the empty string as a valid - // regex. We change it to an equivalent form "()" to be safe. - if (is_valid_) { - const char* const partial_regex = (*regex == '\0') ? "()" : regex; - is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0; - } - EXPECT_TRUE(is_valid_) - << "Regular expression \"" << regex - << "\" is not a valid POSIX Extended regular expression."; - - delete[] full_pattern; -} - -#elif GTEST_USES_SIMPLE_RE - -// Returns true iff ch appears anywhere in str (excluding the -// terminating '\0' character). -bool IsInSet(char ch, const char* str) { - return ch != '\0' && strchr(str, ch) != NULL; -} - -// Returns true iff ch belongs to the given classification. Unlike -// similar functions in , these aren't affected by the -// current locale. -bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; } -bool IsAsciiPunct(char ch) { - return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"); -} -bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); } -bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); } -bool IsAsciiWordChar(char ch) { - return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || - ('0' <= ch && ch <= '9') || ch == '_'; -} - -// Returns true iff "\\c" is a supported escape sequence. -bool IsValidEscape(char c) { - return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW")); -} - -// Returns true iff the given atom (specified by escaped and pattern) -// matches ch. The result is undefined if the atom is invalid. -bool AtomMatchesChar(bool escaped, char pattern_char, char ch) { - if (escaped) { // "\\p" where p is pattern_char. - switch (pattern_char) { - case 'd': return IsAsciiDigit(ch); - case 'D': return !IsAsciiDigit(ch); - case 'f': return ch == '\f'; - case 'n': return ch == '\n'; - case 'r': return ch == '\r'; - case 's': return IsAsciiWhiteSpace(ch); - case 'S': return !IsAsciiWhiteSpace(ch); - case 't': return ch == '\t'; - case 'v': return ch == '\v'; - case 'w': return IsAsciiWordChar(ch); - case 'W': return !IsAsciiWordChar(ch); - } - return IsAsciiPunct(pattern_char) && pattern_char == ch; - } - - return (pattern_char == '.' && ch != '\n') || pattern_char == ch; -} - -// Helper function used by ValidateRegex() to format error messages. -String FormatRegexSyntaxError(const char* regex, int index) { - return (Message() << "Syntax error at index " << index - << " in simple regular expression \"" << regex << "\": ").GetString(); -} - -// Generates non-fatal failures and returns false if regex is invalid; -// otherwise returns true. -bool ValidateRegex(const char* regex) { - if (regex == NULL) { - // TODO(wan@google.com): fix the source file location in the - // assertion failures to match where the regex is used in user - // code. - ADD_FAILURE() << "NULL is not a valid simple regular expression."; - return false; - } - - bool is_valid = true; - - // True iff ?, *, or + can follow the previous atom. - bool prev_repeatable = false; - for (int i = 0; regex[i]; i++) { - if (regex[i] == '\\') { // An escape sequence - i++; - if (regex[i] == '\0') { - ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) - << "'\\' cannot appear at the end."; - return false; - } - - if (!IsValidEscape(regex[i])) { - ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) - << "invalid escape sequence \"\\" << regex[i] << "\"."; - is_valid = false; - } - prev_repeatable = true; - } else { // Not an escape sequence. - const char ch = regex[i]; - - if (ch == '^' && i > 0) { - ADD_FAILURE() << FormatRegexSyntaxError(regex, i) - << "'^' can only appear at the beginning."; - is_valid = false; - } else if (ch == '$' && regex[i + 1] != '\0') { - ADD_FAILURE() << FormatRegexSyntaxError(regex, i) - << "'$' can only appear at the end."; - is_valid = false; - } else if (IsInSet(ch, "()[]{}|")) { - ADD_FAILURE() << FormatRegexSyntaxError(regex, i) - << "'" << ch << "' is unsupported."; - is_valid = false; - } else if (IsRepeat(ch) && !prev_repeatable) { - ADD_FAILURE() << FormatRegexSyntaxError(regex, i) - << "'" << ch << "' can only follow a repeatable token."; - is_valid = false; - } - - prev_repeatable = !IsInSet(ch, "^$?*+"); - } - } - - return is_valid; -} - -// Matches a repeated regex atom followed by a valid simple regular -// expression. The regex atom is defined as c if escaped is false, -// or \c otherwise. repeat is the repetition meta character (?, *, -// or +). The behavior is undefined if str contains too many -// characters to be indexable by size_t, in which case the test will -// probably time out anyway. We are fine with this limitation as -// std::string has it too. -bool MatchRepetitionAndRegexAtHead( - bool escaped, char c, char repeat, const char* regex, - const char* str) { - const size_t min_count = (repeat == '+') ? 1 : 0; - const size_t max_count = (repeat == '?') ? 1 : - static_cast(-1) - 1; - // We cannot call numeric_limits::max() as it conflicts with the - // max() macro on Windows. - - for (size_t i = 0; i <= max_count; ++i) { - // We know that the atom matches each of the first i characters in str. - if (i >= min_count && MatchRegexAtHead(regex, str + i)) { - // We have enough matches at the head, and the tail matches too. - // Since we only care about *whether* the pattern matches str - // (as opposed to *how* it matches), there is no need to find a - // greedy match. - return true; - } - if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i])) - return false; - } - return false; -} - -// Returns true iff regex matches a prefix of str. regex must be a -// valid simple regular expression and not start with "^", or the -// result is undefined. -bool MatchRegexAtHead(const char* regex, const char* str) { - if (*regex == '\0') // An empty regex matches a prefix of anything. - return true; - - // "$" only matches the end of a string. Note that regex being - // valid guarantees that there's nothing after "$" in it. - if (*regex == '$') - return *str == '\0'; - - // Is the first thing in regex an escape sequence? - const bool escaped = *regex == '\\'; - if (escaped) - ++regex; - if (IsRepeat(regex[1])) { - // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so - // here's an indirect recursion. It terminates as the regex gets - // shorter in each recursion. - return MatchRepetitionAndRegexAtHead( - escaped, regex[0], regex[1], regex + 2, str); - } else { - // regex isn't empty, isn't "$", and doesn't start with a - // repetition. We match the first atom of regex with the first - // character of str and recurse. - return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) && - MatchRegexAtHead(regex + 1, str + 1); - } -} - -// Returns true iff regex matches any substring of str. regex must be -// a valid simple regular expression, or the result is undefined. -// -// The algorithm is recursive, but the recursion depth doesn't exceed -// the regex length, so we won't need to worry about running out of -// stack space normally. In rare cases the time complexity can be -// exponential with respect to the regex length + the string length, -// but usually it's must faster (often close to linear). -bool MatchRegexAnywhere(const char* regex, const char* str) { - if (regex == NULL || str == NULL) - return false; - - if (*regex == '^') - return MatchRegexAtHead(regex + 1, str); - - // A successful match can be anywhere in str. - do { - if (MatchRegexAtHead(regex, str)) - return true; - } while (*str++ != '\0'); - return false; -} - -// Implements the RE class. - -RE::~RE() { - free(const_cast(pattern_)); - free(const_cast(full_pattern_)); -} - -// Returns true iff regular expression re matches the entire str. -bool RE::FullMatch(const char* str, const RE& re) { - return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str); -} - -// Returns true iff regular expression re matches a substring of str -// (including str itself). -bool RE::PartialMatch(const char* str, const RE& re) { - return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str); -} - -// Initializes an RE from its string representation. -void RE::Init(const char* regex) { - pattern_ = full_pattern_ = NULL; - if (regex != NULL) { - pattern_ = posix::StrDup(regex); - } - - is_valid_ = ValidateRegex(regex); - if (!is_valid_) { - // No need to calculate the full pattern when the regex is invalid. - return; - } - - const size_t len = strlen(regex); - // Reserves enough bytes to hold the regular expression used for a - // full match: we need space to prepend a '^', append a '$', and - // terminate the string with '\0'. - char* buffer = static_cast(malloc(len + 3)); - full_pattern_ = buffer; - - if (*regex != '^') - *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'. - - // We don't use snprintf or strncpy, as they trigger a warning when - // compiled with VC++ 8.0. - memcpy(buffer, regex, len); - buffer += len; - - if (len == 0 || regex[len - 1] != '$') - *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'. - - *buffer = '\0'; -} - -#endif // GTEST_USES_POSIX_RE - -const char kUnknownFile[] = "unknown file"; - -// Formats a source file path and a line number as they would appear -// in an error message from the compiler used to compile this code. -GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) { - const char* const file_name = file == NULL ? kUnknownFile : file; - - if (line < 0) { - return String::Format("%s:", file_name).c_str(); - } -#ifdef _MSC_VER - return String::Format("%s(%d):", file_name, line).c_str(); -#else - return String::Format("%s:%d:", file_name, line).c_str(); -#endif // _MSC_VER -} - -// Formats a file location for compiler-independent XML output. -// Although this function is not platform dependent, we put it next to -// FormatFileLocation in order to contrast the two functions. -// Note that FormatCompilerIndependentFileLocation() does NOT append colon -// to the file location it produces, unlike FormatFileLocation(). -GTEST_API_ ::std::string FormatCompilerIndependentFileLocation( - const char* file, int line) { - const char* const file_name = file == NULL ? kUnknownFile : file; - - if (line < 0) - return file_name; - else - return String::Format("%s:%d", file_name, line).c_str(); -} - - -GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line) - : severity_(severity) { - const char* const marker = - severity == GTEST_INFO ? "[ INFO ]" : - severity == GTEST_WARNING ? "[WARNING]" : - severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]"; - GetStream() << ::std::endl << marker << " " - << FormatFileLocation(file, line).c_str() << ": "; -} - -// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. -GTestLog::~GTestLog() { - GetStream() << ::std::endl; - if (severity_ == GTEST_FATAL) { - fflush(stderr); - posix::Abort(); - } -} -// Disable Microsoft deprecation warnings for POSIX functions called from -// this class (creat, dup, dup2, and close) -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4996) -#endif // _MSC_VER - -#if GTEST_HAS_STREAM_REDIRECTION - -// Object that captures an output stream (stdout/stderr). -class CapturedStream { - public: - // The ctor redirects the stream to a temporary file. - CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) { - -# if GTEST_OS_WINDOWS - char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT - char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT - - ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path); - const UINT success = ::GetTempFileNameA(temp_dir_path, - "gtest_redir", - 0, // Generate unique file name. - temp_file_path); - GTEST_CHECK_(success != 0) - << "Unable to create a temporary file in " << temp_dir_path; - const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE); - GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file " - << temp_file_path; - filename_ = temp_file_path; -# else - // There's no guarantee that a test has write access to the - // current directory, so we create the temporary file in the /tmp - // directory instead. - char name_template[] = "/tmp/captured_stream.XXXXXX"; - const int captured_fd = mkstemp(name_template); - filename_ = name_template; -# endif // GTEST_OS_WINDOWS - fflush(NULL); - dup2(captured_fd, fd_); - close(captured_fd); - } - - ~CapturedStream() { - remove(filename_.c_str()); - } - - String GetCapturedString() { - if (uncaptured_fd_ != -1) { - // Restores the original stream. - fflush(NULL); - dup2(uncaptured_fd_, fd_); - close(uncaptured_fd_); - uncaptured_fd_ = -1; - } - - FILE* const file = posix::FOpen(filename_.c_str(), "r"); - const String content = ReadEntireFile(file); - posix::FClose(file); - return content; - } - - private: - // Reads the entire content of a file as a String. - static String ReadEntireFile(FILE* file); - - // Returns the size (in bytes) of a file. - static size_t GetFileSize(FILE* file); - - const int fd_; // A stream to capture. - int uncaptured_fd_; - // Name of the temporary file holding the stderr output. - ::std::string filename_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); -}; - -// Returns the size (in bytes) of a file. -size_t CapturedStream::GetFileSize(FILE* file) { - fseek(file, 0, SEEK_END); - return static_cast(ftell(file)); -} - -// Reads the entire content of a file as a string. -String CapturedStream::ReadEntireFile(FILE* file) { - const size_t file_size = GetFileSize(file); - char* const buffer = new char[file_size]; - - size_t bytes_last_read = 0; // # of bytes read in the last fread() - size_t bytes_read = 0; // # of bytes read so far - - fseek(file, 0, SEEK_SET); - - // Keeps reading the file until we cannot read further or the - // pre-determined file size is reached. - do { - bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file); - bytes_read += bytes_last_read; - } while (bytes_last_read > 0 && bytes_read < file_size); - - const String content(buffer, bytes_read); - delete[] buffer; - - return content; -} - -# ifdef _MSC_VER -# pragma warning(pop) -# endif // _MSC_VER - -static CapturedStream* g_captured_stderr = NULL; -static CapturedStream* g_captured_stdout = NULL; - -// Starts capturing an output stream (stdout/stderr). -void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { - if (*stream != NULL) { - GTEST_LOG_(FATAL) << "Only one " << stream_name - << " capturer can exist at a time."; - } - *stream = new CapturedStream(fd); -} - -// Stops capturing the output stream and returns the captured string. -String GetCapturedStream(CapturedStream** captured_stream) { - const String content = (*captured_stream)->GetCapturedString(); - - delete *captured_stream; - *captured_stream = NULL; - - return content; -} - -// Starts capturing stdout. -void CaptureStdout() { - CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout); -} - -// Starts capturing stderr. -void CaptureStderr() { - CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr); -} - -// Stops capturing stdout and returns the captured string. -String GetCapturedStdout() { return GetCapturedStream(&g_captured_stdout); } - -// Stops capturing stderr and returns the captured string. -String GetCapturedStderr() { return GetCapturedStream(&g_captured_stderr); } - -#endif // GTEST_HAS_STREAM_REDIRECTION - -#if GTEST_HAS_DEATH_TEST - -// A copy of all command line arguments. Set by InitGoogleTest(). -::std::vector g_argvs; - -// Returns the command line as a vector of strings. -const ::std::vector& GetArgvs() { return g_argvs; } - -#endif // GTEST_HAS_DEATH_TEST - -#if GTEST_OS_WINDOWS_MOBILE -namespace posix { -void Abort() { - DebugBreak(); - TerminateProcess(GetCurrentProcess(), 1); -} -} // namespace posix -#endif // GTEST_OS_WINDOWS_MOBILE - -// Returns the name of the environment variable corresponding to the -// given flag. For example, FlagToEnvVar("foo") will return -// "GTEST_FOO" in the open-source version. -static String FlagToEnvVar(const char* flag) { - const String full_flag = - (Message() << GTEST_FLAG_PREFIX_ << flag).GetString(); - - Message env_var; - for (size_t i = 0; i != full_flag.length(); i++) { - env_var << ToUpper(full_flag.c_str()[i]); - } - - return env_var.GetString(); -} - -// Parses 'str' for a 32-bit signed integer. If successful, writes -// the result to *value and returns true; otherwise leaves *value -// unchanged and returns false. -bool ParseInt32(const Message& src_text, const char* str, Int32* value) { - // Parses the environment variable as a decimal integer. - char* end = NULL; - const long long_value = strtol(str, &end, 10); // NOLINT - - // Has strtol() consumed all characters in the string? - if (*end != '\0') { - // No - an invalid character was encountered. - Message msg; - msg << "WARNING: " << src_text - << " is expected to be a 32-bit integer, but actually" - << " has value \"" << str << "\".\n"; - printf("%s", msg.GetString().c_str()); - fflush(stdout); - return false; - } - - // Is the parsed value in the range of an Int32? - const Int32 result = static_cast(long_value); - if (long_value == LONG_MAX || long_value == LONG_MIN || - // The parsed value overflows as a long. (strtol() returns - // LONG_MAX or LONG_MIN when the input overflows.) - result != long_value - // The parsed value overflows as an Int32. - ) { - Message msg; - msg << "WARNING: " << src_text - << " is expected to be a 32-bit integer, but actually" - << " has value " << str << ", which overflows.\n"; - printf("%s", msg.GetString().c_str()); - fflush(stdout); - return false; - } - - *value = result; - return true; -} - -// Reads and returns the Boolean environment variable corresponding to -// the given flag; if it's not set, returns default_value. -// -// The value is considered true iff it's not "0". -bool BoolFromGTestEnv(const char* flag, bool default_value) { - const String env_var = FlagToEnvVar(flag); - const char* const string_value = posix::GetEnv(env_var.c_str()); - return string_value == NULL ? - default_value : strcmp(string_value, "0") != 0; -} - -// Reads and returns a 32-bit integer stored in the environment -// variable corresponding to the given flag; if it isn't set or -// doesn't represent a valid 32-bit integer, returns default_value. -Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) { - const String env_var = FlagToEnvVar(flag); - const char* const string_value = posix::GetEnv(env_var.c_str()); - if (string_value == NULL) { - // The environment variable is not set. - return default_value; - } - - Int32 result = default_value; - if (!ParseInt32(Message() << "Environment variable " << env_var, - string_value, &result)) { - printf("The default value %s is used.\n", - (Message() << default_value).GetString().c_str()); - fflush(stdout); - return default_value; - } - - return result; -} - -// Reads and returns the string environment variable corresponding to -// the given flag; if it's not set, returns default_value. -const char* StringFromGTestEnv(const char* flag, const char* default_value) { - const String env_var = FlagToEnvVar(flag); - const char* const value = posix::GetEnv(env_var.c_str()); - return value == NULL ? default_value : value; -} - -} // namespace internal -} // namespace testing -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - -// Google Test - The Google C++ Testing Framework -// -// This file implements a universal value printer that can print a -// value of any type T: -// -// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); -// -// It uses the << operator when possible, and prints the bytes in the -// object otherwise. A user can override its behavior for a class -// type Foo by defining either operator<<(::std::ostream&, const Foo&) -// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that -// defines Foo. - -#include -#include -#include // NOLINT -#include - -namespace testing { - -namespace { - -using ::std::ostream; - -#if GTEST_OS_WINDOWS_MOBILE // Windows CE does not define _snprintf_s. -# define snprintf _snprintf -#elif _MSC_VER >= 1400 // VC 8.0 and later deprecate snprintf and _snprintf. -# define snprintf _snprintf_s -#elif _MSC_VER -# define snprintf _snprintf -#endif // GTEST_OS_WINDOWS_MOBILE - -// Prints a segment of bytes in the given object. -void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start, - size_t count, ostream* os) { - char text[5] = ""; - for (size_t i = 0; i != count; i++) { - const size_t j = start + i; - if (i != 0) { - // Organizes the bytes into groups of 2 for easy parsing by - // human. - if ((j % 2) == 0) - *os << ' '; - else - *os << '-'; - } - snprintf(text, sizeof(text), "%02X", obj_bytes[j]); - *os << text; - } -} - -// Prints the bytes in the given value to the given ostream. -void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count, - ostream* os) { - // Tells the user how big the object is. - *os << count << "-byte object <"; - - const size_t kThreshold = 132; - const size_t kChunkSize = 64; - // If the object size is bigger than kThreshold, we'll have to omit - // some details by printing only the first and the last kChunkSize - // bytes. - // TODO(wan): let the user control the threshold using a flag. - if (count < kThreshold) { - PrintByteSegmentInObjectTo(obj_bytes, 0, count, os); - } else { - PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os); - *os << " ... "; - // Rounds up to 2-byte boundary. - const size_t resume_pos = (count - kChunkSize + 1)/2*2; - PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os); - } - *os << ">"; -} - -} // namespace - -namespace internal2 { - -// Delegates to PrintBytesInObjectToImpl() to print the bytes in the -// given object. The delegation simplifies the implementation, which -// uses the << operator and thus is easier done outside of the -// ::testing::internal namespace, which contains a << operator that -// sometimes conflicts with the one in STL. -void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count, - ostream* os) { - PrintBytesInObjectToImpl(obj_bytes, count, os); -} - -} // namespace internal2 - -namespace internal { - -// Depending on the value of a char (or wchar_t), we print it in one -// of three formats: -// - as is if it's a printable ASCII (e.g. 'a', '2', ' '), -// - as a hexidecimal escape sequence (e.g. '\x7F'), or -// - as a special escape sequence (e.g. '\r', '\n'). -enum CharFormat { - kAsIs, - kHexEscape, - kSpecialEscape -}; - -// Returns true if c is a printable ASCII character. We test the -// value of c directly instead of calling isprint(), which is buggy on -// Windows Mobile. -inline bool IsPrintableAscii(wchar_t c) { - return 0x20 <= c && c <= 0x7E; -} - -// Prints a wide or narrow char c as a character literal without the -// quotes, escaping it when necessary; returns how c was formatted. -// The template argument UnsignedChar is the unsigned version of Char, -// which is the type of c. -template -static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) { - switch (static_cast(c)) { - case L'\0': - *os << "\\0"; - break; - case L'\'': - *os << "\\'"; - break; - case L'\\': - *os << "\\\\"; - break; - case L'\a': - *os << "\\a"; - break; - case L'\b': - *os << "\\b"; - break; - case L'\f': - *os << "\\f"; - break; - case L'\n': - *os << "\\n"; - break; - case L'\r': - *os << "\\r"; - break; - case L'\t': - *os << "\\t"; - break; - case L'\v': - *os << "\\v"; - break; - default: - if (IsPrintableAscii(c)) { - *os << static_cast(c); - return kAsIs; - } else { - *os << String::Format("\\x%X", static_cast(c)); - return kHexEscape; - } - } - return kSpecialEscape; -} - -// Prints a char c as if it's part of a string literal, escaping it when -// necessary; returns how c was formatted. -static CharFormat PrintAsWideStringLiteralTo(wchar_t c, ostream* os) { - switch (c) { - case L'\'': - *os << "'"; - return kAsIs; - case L'"': - *os << "\\\""; - return kSpecialEscape; - default: - return PrintAsCharLiteralTo(c, os); - } -} - -// Prints a char c as if it's part of a string literal, escaping it when -// necessary; returns how c was formatted. -static CharFormat PrintAsNarrowStringLiteralTo(char c, ostream* os) { - return PrintAsWideStringLiteralTo(static_cast(c), os); -} - -// Prints a wide or narrow character c and its code. '\0' is printed -// as "'\\0'", other unprintable characters are also properly escaped -// using the standard C++ escape sequence. The template argument -// UnsignedChar is the unsigned version of Char, which is the type of c. -template -void PrintCharAndCodeTo(Char c, ostream* os) { - // First, print c as a literal in the most readable form we can find. - *os << ((sizeof(c) > 1) ? "L'" : "'"); - const CharFormat format = PrintAsCharLiteralTo(c, os); - *os << "'"; - - // To aid user debugging, we also print c's code in decimal, unless - // it's 0 (in which case c was printed as '\\0', making the code - // obvious). - if (c == 0) - return; - *os << " (" << String::Format("%d", c).c_str(); - - // For more convenience, we print c's code again in hexidecimal, - // unless c was already printed in the form '\x##' or the code is in - // [1, 9]. - if (format == kHexEscape || (1 <= c && c <= 9)) { - // Do nothing. - } else { - *os << String::Format(", 0x%X", - static_cast(c)).c_str(); - } - *os << ")"; -} - -void PrintTo(unsigned char c, ::std::ostream* os) { - PrintCharAndCodeTo(c, os); -} -void PrintTo(signed char c, ::std::ostream* os) { - PrintCharAndCodeTo(c, os); -} - -// Prints a wchar_t as a symbol if it is printable or as its internal -// code otherwise and also as its code. L'\0' is printed as "L'\\0'". -void PrintTo(wchar_t wc, ostream* os) { - PrintCharAndCodeTo(wc, os); -} - -// Prints the given array of characters to the ostream. -// The array starts at *begin, the length is len, it may include '\0' characters -// and may not be null-terminated. -static void PrintCharsAsStringTo(const char* begin, size_t len, ostream* os) { - *os << "\""; - bool is_previous_hex = false; - for (size_t index = 0; index < len; ++index) { - const char cur = begin[index]; - if (is_previous_hex && IsXDigit(cur)) { - // Previous character is of '\x..' form and this character can be - // interpreted as another hexadecimal digit in its number. Break string to - // disambiguate. - *os << "\" \""; - } - is_previous_hex = PrintAsNarrowStringLiteralTo(cur, os) == kHexEscape; - } - *os << "\""; -} - -// Prints a (const) char array of 'len' elements, starting at address 'begin'. -void UniversalPrintArray(const char* begin, size_t len, ostream* os) { - PrintCharsAsStringTo(begin, len, os); -} - -// Prints the given array of wide characters to the ostream. -// The array starts at *begin, the length is len, it may include L'\0' -// characters and may not be null-terminated. -static void PrintWideCharsAsStringTo(const wchar_t* begin, size_t len, - ostream* os) { - *os << "L\""; - bool is_previous_hex = false; - for (size_t index = 0; index < len; ++index) { - const wchar_t cur = begin[index]; - if (is_previous_hex && isascii(cur) && IsXDigit(static_cast(cur))) { - // Previous character is of '\x..' form and this character can be - // interpreted as another hexadecimal digit in its number. Break string to - // disambiguate. - *os << "\" L\""; - } - is_previous_hex = PrintAsWideStringLiteralTo(cur, os) == kHexEscape; - } - *os << "\""; -} - -// Prints the given C string to the ostream. -void PrintTo(const char* s, ostream* os) { - if (s == NULL) { - *os << "NULL"; - } else { - *os << ImplicitCast_(s) << " pointing to "; - PrintCharsAsStringTo(s, strlen(s), os); - } -} - -// MSVC compiler can be configured to define whar_t as a typedef -// of unsigned short. Defining an overload for const wchar_t* in that case -// would cause pointers to unsigned shorts be printed as wide strings, -// possibly accessing more memory than intended and causing invalid -// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when -// wchar_t is implemented as a native type. -#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) -// Prints the given wide C string to the ostream. -void PrintTo(const wchar_t* s, ostream* os) { - if (s == NULL) { - *os << "NULL"; - } else { - *os << ImplicitCast_(s) << " pointing to "; - PrintWideCharsAsStringTo(s, wcslen(s), os); - } -} -#endif // wchar_t is native - -// Prints a ::string object. -#if GTEST_HAS_GLOBAL_STRING -void PrintStringTo(const ::string& s, ostream* os) { - PrintCharsAsStringTo(s.data(), s.size(), os); -} -#endif // GTEST_HAS_GLOBAL_STRING - -void PrintStringTo(const ::std::string& s, ostream* os) { - PrintCharsAsStringTo(s.data(), s.size(), os); -} - -// Prints a ::wstring object. -#if GTEST_HAS_GLOBAL_WSTRING -void PrintWideStringTo(const ::wstring& s, ostream* os) { - PrintWideCharsAsStringTo(s.data(), s.size(), os); -} -#endif // GTEST_HAS_GLOBAL_WSTRING - -#if GTEST_HAS_STD_WSTRING -void PrintWideStringTo(const ::std::wstring& s, ostream* os) { - PrintWideCharsAsStringTo(s.data(), s.size(), os); -} -#endif // GTEST_HAS_STD_WSTRING - -} // namespace internal - -} // namespace testing -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: mheule@google.com (Markus Heule) -// -// The Google C++ Testing Framework (Google Test) - - -// Indicates that this translation unit is part of Google Test's -// implementation. It must come before gtest-internal-inl.h is -// included, or there will be a compiler error. This trick is to -// prevent a user from accidentally including gtest-internal-inl.h in -// his code. -#define GTEST_IMPLEMENTATION_ 1 -#undef GTEST_IMPLEMENTATION_ - -namespace testing { - -using internal::GetUnitTestImpl; - -// Gets the summary of the failure message by omitting the stack trace -// in it. -internal::String TestPartResult::ExtractSummary(const char* message) { - const char* const stack_trace = strstr(message, internal::kStackTraceMarker); - return stack_trace == NULL ? internal::String(message) : - internal::String(message, stack_trace - message); -} - -// Prints a TestPartResult object. -std::ostream& operator<<(std::ostream& os, const TestPartResult& result) { - return os - << result.file_name() << ":" << result.line_number() << ": " - << (result.type() == TestPartResult::kSuccess ? "Success" : - result.type() == TestPartResult::kFatalFailure ? "Fatal failure" : - "Non-fatal failure") << ":\n" - << result.message() << std::endl; -} - -// Appends a TestPartResult to the array. -void TestPartResultArray::Append(const TestPartResult& result) { - array_.push_back(result); -} - -// Returns the TestPartResult at the given index (0-based). -const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const { - if (index < 0 || index >= size()) { - printf("\nInvalid index (%d) into TestPartResultArray.\n", index); - internal::posix::Abort(); - } - - return array_[index]; -} - -// Returns the number of TestPartResult objects in the array. -int TestPartResultArray::size() const { - return static_cast(array_.size()); -} - -namespace internal { - -HasNewFatalFailureHelper::HasNewFatalFailureHelper() - : has_new_fatal_failure_(false), - original_reporter_(GetUnitTestImpl()-> - GetTestPartResultReporterForCurrentThread()) { - GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this); -} - -HasNewFatalFailureHelper::~HasNewFatalFailureHelper() { - GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread( - original_reporter_); -} - -void HasNewFatalFailureHelper::ReportTestPartResult( - const TestPartResult& result) { - if (result.fatally_failed()) - has_new_fatal_failure_ = true; - original_reporter_->ReportTestPartResult(result); -} - -} // namespace internal - -} // namespace testing -// Copyright 2008 Google Inc. -// All Rights Reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - - -namespace testing { -namespace internal { - -#if GTEST_HAS_TYPED_TEST_P - -// Skips to the first non-space char in str. Returns an empty string if str -// contains only whitespace characters. -static const char* SkipSpaces(const char* str) { - while (IsSpace(*str)) - str++; - return str; -} - -// Verifies that registered_tests match the test names in -// defined_test_names_; returns registered_tests if successful, or -// aborts the program otherwise. -const char* TypedTestCasePState::VerifyRegisteredTestNames( - const char* file, int line, const char* registered_tests) { - typedef ::std::set::const_iterator DefinedTestIter; - registered_ = true; - - // Skip initial whitespace in registered_tests since some - // preprocessors prefix stringizied literals with whitespace. - registered_tests = SkipSpaces(registered_tests); - - Message errors; - ::std::set tests; - for (const char* names = registered_tests; names != NULL; - names = SkipComma(names)) { - const String name = GetPrefixUntilComma(names); - if (tests.count(name) != 0) { - errors << "Test " << name << " is listed more than once.\n"; - continue; - } - - bool found = false; - for (DefinedTestIter it = defined_test_names_.begin(); - it != defined_test_names_.end(); - ++it) { - if (name == *it) { - found = true; - break; - } - } - - if (found) { - tests.insert(name); - } else { - errors << "No test named " << name - << " can be found in this test case.\n"; - } - } - - for (DefinedTestIter it = defined_test_names_.begin(); - it != defined_test_names_.end(); - ++it) { - if (tests.count(*it) == 0) { - errors << "You forgot to list test " << *it << ".\n"; - } - } - - const String& errors_str = errors.GetString(); - if (errors_str != "") { - fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), - errors_str.c_str()); - fflush(stderr); - posix::Abort(); - } - - return registered_tests; -} - -#endif // GTEST_HAS_TYPED_TEST_P - -} // namespace internal -} // namespace testing diff --git a/tools/audiofile-0.3.6/gtest/gtest.h b/tools/audiofile-0.3.6/gtest/gtest.h deleted file mode 100644 index 3143bd67..00000000 --- a/tools/audiofile-0.3.6/gtest/gtest.h +++ /dev/null @@ -1,19537 +0,0 @@ -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) -// -// The Google C++ Testing Framework (Google Test) -// -// This header file defines the public API for Google Test. It should be -// included by any test program that uses Google Test. -// -// IMPORTANT NOTE: Due to limitation of the C++ language, we have to -// leave some internal implementation details in this header file. -// They are clearly marked by comments like this: -// -// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -// -// Such code is NOT meant to be used by a user directly, and is subject -// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user -// program! -// -// Acknowledgment: Google Test borrowed the idea of automatic test -// registration from Barthelemy Dagenais' (barthelemy@prologique.com) -// easyUnit framework. - -#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ -#define GTEST_INCLUDE_GTEST_GTEST_H_ - -#include -#include - -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) -// -// The Google C++ Testing Framework (Google Test) -// -// This header file declares functions and macros used internally by -// Google Test. They are subject to change without notice. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ - -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: wan@google.com (Zhanyong Wan) -// -// Low-level types and utilities for porting Google Test to various -// platforms. They are subject to change without notice. DO NOT USE -// THEM IN USER CODE. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ - -// The user can define the following macros in the build script to -// control Google Test's behavior. If the user doesn't define a macro -// in this list, Google Test will define it. -// -// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2) -// is/isn't available. -// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions -// are enabled. -// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string -// is/isn't available (some systems define -// ::string, which is different to std::string). -// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string -// is/isn't available (some systems define -// ::wstring, which is different to std::wstring). -// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular -// expressions are/aren't available. -// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that -// is/isn't available. -// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't -// enabled. -// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that -// std::wstring does/doesn't work (Google Test can -// be used where std::wstring is unavailable). -// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple -// is/isn't available. -// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the -// compiler supports Microsoft's "Structured -// Exception Handling". -// GTEST_HAS_STREAM_REDIRECTION -// - Define it to 1/0 to indicate whether the -// platform supports I/O stream redirection using -// dup() and dup2(). -// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google -// Test's own tr1 tuple implementation should be -// used. Unused when the user sets -// GTEST_HAS_TR1_TUPLE to 0. -// GTEST_LINKED_AS_SHARED_LIBRARY -// - Define to 1 when compiling tests that use -// Google Test as a shared library (known as -// DLL on Windows). -// GTEST_CREATE_SHARED_LIBRARY -// - Define to 1 when compiling Google Test itself -// as a shared library. - -// This header defines the following utilities: -// -// Macros indicating the current platform (defined to 1 if compiled on -// the given platform; otherwise undefined): -// GTEST_OS_AIX - IBM AIX -// GTEST_OS_CYGWIN - Cygwin -// GTEST_OS_HPUX - HP-UX -// GTEST_OS_LINUX - Linux -// GTEST_OS_LINUX_ANDROID - Google Android -// GTEST_OS_MAC - Mac OS X -// GTEST_OS_NACL - Google Native Client (NaCl) -// GTEST_OS_SOLARIS - Sun Solaris -// GTEST_OS_SYMBIAN - Symbian -// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile) -// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop -// GTEST_OS_WINDOWS_MINGW - MinGW -// GTEST_OS_WINDOWS_MOBILE - Windows Mobile -// GTEST_OS_ZOS - z/OS -// -// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the -// most stable support. Since core members of the Google Test project -// don't have access to other platforms, support for them may be less -// stable. If you notice any problems on your platform, please notify -// googletestframework@googlegroups.com (patches for fixing them are -// even more welcome!). -// -// Note that it is possible that none of the GTEST_OS_* macros are defined. -// -// Macros indicating available Google Test features (defined to 1 if -// the corresponding feature is supported; otherwise undefined): -// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized -// tests) -// GTEST_HAS_DEATH_TEST - death tests -// GTEST_HAS_PARAM_TEST - value-parameterized tests -// GTEST_HAS_TYPED_TEST - typed tests -// GTEST_HAS_TYPED_TEST_P - type-parameterized tests -// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with -// GTEST_HAS_POSIX_RE (see above) which users can -// define themselves. -// GTEST_USES_SIMPLE_RE - our own simple regex is used; -// the above two are mutually exclusive. -// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ(). -// -// Macros for basic C++ coding: -// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning. -// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a -// variable don't have to be used. -// GTEST_DISALLOW_ASSIGN_ - disables operator=. -// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=. -// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used. -// -// Synchronization: -// Mutex, MutexLock, ThreadLocal, GetThreadCount() -// - synchronization primitives. -// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above -// synchronization primitives have real implementations -// and Google Test is thread-safe; or 0 otherwise. -// -// Template meta programming: -// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only. -// IteratorTraits - partial implementation of std::iterator_traits, which -// is not available in libCstd when compiled with Sun C++. -// -// Smart pointers: -// scoped_ptr - as in TR2. -// -// Regular expressions: -// RE - a simple regular expression class using the POSIX -// Extended Regular Expression syntax on UNIX-like -// platforms, or a reduced regular exception syntax on -// other platforms, including Windows. -// -// Logging: -// GTEST_LOG_() - logs messages at the specified severity level. -// LogToStderr() - directs all log messages to stderr. -// FlushInfoLog() - flushes informational log messages. -// -// Stdout and stderr capturing: -// CaptureStdout() - starts capturing stdout. -// GetCapturedStdout() - stops capturing stdout and returns the captured -// string. -// CaptureStderr() - starts capturing stderr. -// GetCapturedStderr() - stops capturing stderr and returns the captured -// string. -// -// Integer types: -// TypeWithSize - maps an integer to a int type. -// Int32, UInt32, Int64, UInt64, TimeInMillis -// - integers of known sizes. -// BiggestInt - the biggest signed integer type. -// -// Command-line utilities: -// GTEST_FLAG() - references a flag. -// GTEST_DECLARE_*() - declares a flag. -// GTEST_DEFINE_*() - defines a flag. -// GetArgvs() - returns the command line as a vector of strings. -// -// Environment variable utilities: -// GetEnv() - gets the value of an environment variable. -// BoolFromGTestEnv() - parses a bool environment variable. -// Int32FromGTestEnv() - parses an Int32 environment variable. -// StringFromGTestEnv() - parses a string environment variable. - -#include // for isspace, etc -#include // for ptrdiff_t -#include -#include -#include -#ifndef _WIN32_WCE -# include -# include -#endif // !_WIN32_WCE - -#include // NOLINT -#include // NOLINT -#include // NOLINT - -#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com" -#define GTEST_FLAG_PREFIX_ "gtest_" -#define GTEST_FLAG_PREFIX_DASH_ "gtest-" -#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_" -#define GTEST_NAME_ "Google Test" -#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/" - -// Determines the version of gcc that is used to compile this. -#ifdef __GNUC__ -// 40302 means version 4.3.2. -# define GTEST_GCC_VER_ \ - (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) -#endif // __GNUC__ - -// Determines the platform on which Google Test is compiled. -#ifdef __CYGWIN__ -# define GTEST_OS_CYGWIN 1 -#elif defined __SYMBIAN32__ -# define GTEST_OS_SYMBIAN 1 -#elif defined _WIN32 -# define GTEST_OS_WINDOWS 1 -# ifdef _WIN32_WCE -# define GTEST_OS_WINDOWS_MOBILE 1 -# elif defined(__MINGW__) || defined(__MINGW32__) -# define GTEST_OS_WINDOWS_MINGW 1 -# else -# define GTEST_OS_WINDOWS_DESKTOP 1 -# endif // _WIN32_WCE -#elif defined __APPLE__ -# define GTEST_OS_MAC 1 -#elif defined __linux__ -# define GTEST_OS_LINUX 1 -# ifdef ANDROID -# define GTEST_OS_LINUX_ANDROID 1 -# endif // ANDROID -#elif defined __MVS__ -# define GTEST_OS_ZOS 1 -#elif defined(__sun) && defined(__SVR4) -# define GTEST_OS_SOLARIS 1 -#elif defined(_AIX) -# define GTEST_OS_AIX 1 -#elif defined(__hpux) -# define GTEST_OS_HPUX 1 -#elif defined __native_client__ -# define GTEST_OS_NACL 1 -#endif // __CYGWIN__ - -// Brings in definitions for functions used in the testing::internal::posix -// namespace (read, write, close, chdir, isatty, stat). We do not currently -// use them on Windows Mobile. -#if !GTEST_OS_WINDOWS -// This assumes that non-Windows OSes provide unistd.h. For OSes where this -// is not the case, we need to include headers that provide the functions -// mentioned above. -# include -# if !GTEST_OS_NACL -// TODO(vladl@google.com): Remove this condition when Native Client SDK adds -// strings.h (tracked in -// http://code.google.com/p/nativeclient/issues/detail?id=1175). -# include // Native Client doesn't provide strings.h. -# endif -#elif !GTEST_OS_WINDOWS_MOBILE -# include -# include -#endif - -// Defines this to true iff Google Test can use POSIX regular expressions. -#ifndef GTEST_HAS_POSIX_RE -# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS) -#endif - -#if GTEST_HAS_POSIX_RE - -// On some platforms, needs someone to define size_t, and -// won't compile otherwise. We can #include it here as we already -// included , which is guaranteed to define size_t through -// . -# include // NOLINT - -# define GTEST_USES_POSIX_RE 1 - -#elif GTEST_OS_WINDOWS - -// is not available on Windows. Use our own simple regex -// implementation instead. -# define GTEST_USES_SIMPLE_RE 1 - -#else - -// may not be available on this platform. Use our own -// simple regex implementation instead. -# define GTEST_USES_SIMPLE_RE 1 - -#endif // GTEST_HAS_POSIX_RE - -#ifndef GTEST_HAS_EXCEPTIONS -// The user didn't tell us whether exceptions are enabled, so we need -// to figure it out. -# if defined(_MSC_VER) || defined(__BORLANDC__) -// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS -// macro to enable exceptions, so we'll do the same. -// Assumes that exceptions are enabled by default. -# ifndef _HAS_EXCEPTIONS -# define _HAS_EXCEPTIONS 1 -# endif // _HAS_EXCEPTIONS -# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS -# elif defined(__GNUC__) && __EXCEPTIONS -// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. -# define GTEST_HAS_EXCEPTIONS 1 -# elif defined(__SUNPRO_CC) -// Sun Pro CC supports exceptions. However, there is no compile-time way of -// detecting whether they are enabled or not. Therefore, we assume that -// they are enabled unless the user tells us otherwise. -# define GTEST_HAS_EXCEPTIONS 1 -# elif defined(__IBMCPP__) && __EXCEPTIONS -// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled. -# define GTEST_HAS_EXCEPTIONS 1 -# elif defined(__HP_aCC) -// Exception handling is in effect by default in HP aCC compiler. It has to -// be turned of by +noeh compiler option if desired. -# define GTEST_HAS_EXCEPTIONS 1 -# else -// For other compilers, we assume exceptions are disabled to be -// conservative. -# define GTEST_HAS_EXCEPTIONS 0 -# endif // defined(_MSC_VER) || defined(__BORLANDC__) -#endif // GTEST_HAS_EXCEPTIONS - -#if !defined(GTEST_HAS_STD_STRING) -// Even though we don't use this macro any longer, we keep it in case -// some clients still depend on it. -# define GTEST_HAS_STD_STRING 1 -#elif !GTEST_HAS_STD_STRING -// The user told us that ::std::string isn't available. -# error "Google Test cannot be used where ::std::string isn't available." -#endif // !defined(GTEST_HAS_STD_STRING) - -#ifndef GTEST_HAS_GLOBAL_STRING -// The user didn't tell us whether ::string is available, so we need -// to figure it out. - -# define GTEST_HAS_GLOBAL_STRING 0 - -#endif // GTEST_HAS_GLOBAL_STRING - -#ifndef GTEST_HAS_STD_WSTRING -// The user didn't tell us whether ::std::wstring is available, so we need -// to figure it out. -// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring -// is available. - -// Cygwin 1.7 and below doesn't support ::std::wstring. -// Solaris' libc++ doesn't support it either. Android has -// no support for it at least as recent as Froyo (2.2). -# define GTEST_HAS_STD_WSTRING \ - (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS)) - -#endif // GTEST_HAS_STD_WSTRING - -#ifndef GTEST_HAS_GLOBAL_WSTRING -// The user didn't tell us whether ::wstring is available, so we need -// to figure it out. -# define GTEST_HAS_GLOBAL_WSTRING \ - (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) -#endif // GTEST_HAS_GLOBAL_WSTRING - -// Determines whether RTTI is available. -#ifndef GTEST_HAS_RTTI -// The user didn't tell us whether RTTI is enabled, so we need to -// figure it out. - -# ifdef _MSC_VER - -# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. -# define GTEST_HAS_RTTI 1 -# else -# define GTEST_HAS_RTTI 0 -# endif - -// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled. -# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302) - -# ifdef __GXX_RTTI -# define GTEST_HAS_RTTI 1 -# else -# define GTEST_HAS_RTTI 0 -# endif // __GXX_RTTI - -// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if -// both the typeid and dynamic_cast features are present. -# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900) - -# ifdef __RTTI_ALL__ -# define GTEST_HAS_RTTI 1 -# else -# define GTEST_HAS_RTTI 0 -# endif - -# else - -// For all other compilers, we assume RTTI is enabled. -# define GTEST_HAS_RTTI 1 - -# endif // _MSC_VER - -#endif // GTEST_HAS_RTTI - -// It's this header's responsibility to #include when RTTI -// is enabled. -#if GTEST_HAS_RTTI -# include -#endif - -// Determines whether Google Test can use the pthreads library. -#ifndef GTEST_HAS_PTHREAD -// The user didn't tell us explicitly, so we assume pthreads support is -// available on Linux and Mac. -// -// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0 -// to your compiler flags. -# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX) -#endif // GTEST_HAS_PTHREAD - -#if GTEST_HAS_PTHREAD -// gtest-port.h guarantees to #include when GTEST_HAS_PTHREAD is -// true. -# include // NOLINT - -// For timespec and nanosleep, used below. -# include // NOLINT -#endif - -// Determines whether Google Test can use tr1/tuple. You can define -// this macro to 0 to prevent Google Test from using tuple (any -// feature depending on tuple with be disabled in this mode). -#ifndef GTEST_HAS_TR1_TUPLE -// The user didn't tell us not to do it, so we assume it's OK. -# define GTEST_HAS_TR1_TUPLE 1 -#endif // GTEST_HAS_TR1_TUPLE - -// Determines whether Google Test's own tr1 tuple implementation -// should be used. -#ifndef GTEST_USE_OWN_TR1_TUPLE -// The user didn't tell us, so we need to figure it out. - -// We use our own TR1 tuple if we aren't sure the user has an -// implementation of it already. At this time, GCC 4.0.0+ and MSVC -// 2010 are the only mainstream compilers that come with a TR1 tuple -// implementation. NVIDIA's CUDA NVCC compiler pretends to be GCC by -// defining __GNUC__ and friends, but cannot compile GCC's tuple -// implementation. MSVC 2008 (9.0) provides TR1 tuple in a 323 MB -// Feature Pack download, which we cannot assume the user has. -# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000)) \ - || _MSC_VER >= 1600 -# define GTEST_USE_OWN_TR1_TUPLE 0 -# else -# define GTEST_USE_OWN_TR1_TUPLE 1 -# endif - -#endif // GTEST_USE_OWN_TR1_TUPLE - -// To avoid conditional compilation everywhere, we make it -// gtest-port.h's responsibility to #include the header implementing -// tr1/tuple. -#if GTEST_HAS_TR1_TUPLE - -# if GTEST_USE_OWN_TR1_TUPLE -// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! - -// Copyright 2009 Google Inc. -// All Rights Reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - -// Implements a subset of TR1 tuple needed by Google Test and Google Mock. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ - -#include // For ::std::pair. - -// The compiler used in Symbian has a bug that prevents us from declaring the -// tuple template as a friend (it complains that tuple is redefined). This -// hack bypasses the bug by declaring the members that should otherwise be -// private as public. -// Sun Studio versions < 12 also have the above bug. -#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) -# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: -#else -# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ - template friend class tuple; \ - private: -#endif - -// GTEST_n_TUPLE_(T) is the type of an n-tuple. -#define GTEST_0_TUPLE_(T) tuple<> -#define GTEST_1_TUPLE_(T) tuple -#define GTEST_2_TUPLE_(T) tuple -#define GTEST_3_TUPLE_(T) tuple -#define GTEST_4_TUPLE_(T) tuple -#define GTEST_5_TUPLE_(T) tuple -#define GTEST_6_TUPLE_(T) tuple -#define GTEST_7_TUPLE_(T) tuple -#define GTEST_8_TUPLE_(T) tuple -#define GTEST_9_TUPLE_(T) tuple -#define GTEST_10_TUPLE_(T) tuple - -// GTEST_n_TYPENAMES_(T) declares a list of n typenames. -#define GTEST_0_TYPENAMES_(T) -#define GTEST_1_TYPENAMES_(T) typename T##0 -#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 -#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 -#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3 -#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4 -#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5 -#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5, typename T##6 -#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 -#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5, typename T##6, \ - typename T##7, typename T##8 -#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5, typename T##6, \ - typename T##7, typename T##8, typename T##9 - -// In theory, defining stuff in the ::std namespace is undefined -// behavior. We can do this as we are playing the role of a standard -// library vendor. -namespace std { -namespace tr1 { - -template -class tuple; - -// Anything in namespace gtest_internal is Google Test's INTERNAL -// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. -namespace gtest_internal { - -// ByRef::type is T if T is a reference; otherwise it's const T&. -template -struct ByRef { typedef const T& type; }; // NOLINT -template -struct ByRef { typedef T& type; }; // NOLINT - -// A handy wrapper for ByRef. -#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef::type - -// AddRef::type is T if T is a reference; otherwise it's T&. This -// is the same as tr1::add_reference::type. -template -struct AddRef { typedef T& type; }; // NOLINT -template -struct AddRef { typedef T& type; }; // NOLINT - -// A handy wrapper for AddRef. -#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef::type - -// A helper for implementing get(). -template class Get; - -// A helper for implementing tuple_element. kIndexValid is true -// iff k < the number of fields in tuple type T. -template -struct TupleElement; - -template -struct TupleElement { typedef T0 type; }; - -template -struct TupleElement { typedef T1 type; }; - -template -struct TupleElement { typedef T2 type; }; - -template -struct TupleElement { typedef T3 type; }; - -template -struct TupleElement { typedef T4 type; }; - -template -struct TupleElement { typedef T5 type; }; - -template -struct TupleElement { typedef T6 type; }; - -template -struct TupleElement { typedef T7 type; }; - -template -struct TupleElement { typedef T8 type; }; - -template -struct TupleElement { typedef T9 type; }; - -} // namespace gtest_internal - -template <> -class tuple<> { - public: - tuple() {} - tuple(const tuple& /* t */) {} - tuple& operator=(const tuple& /* t */) { return *this; } -}; - -template -class GTEST_1_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} - - tuple(const tuple& t) : f0_(t.f0_) {} - - template - tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_1_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { - f0_ = t.f0_; - return *this; - } - - T0 f0_; -}; - -template -class GTEST_2_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), - f1_(f1) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} - - template - tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} - template - tuple(const ::std::pair& p) : f0_(p.first), f1_(p.second) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_2_TUPLE_(U)& t) { - return CopyFrom(t); - } - template - tuple& operator=(const ::std::pair& p) { - f0_ = p.first; - f1_ = p.second; - return *this; - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - return *this; - } - - T0 f0_; - T1 f1_; -}; - -template -class GTEST_3_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} - - template - tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_3_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - f2_ = t.f2_; - return *this; - } - - T0 f0_; - T1 f1_; - T2 f2_; -}; - -template -class GTEST_4_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), - f3_(f3) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} - - template - tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_4_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - f2_ = t.f2_; - f3_ = t.f3_; - return *this; - } - - T0 f0_; - T1 f1_; - T2 f2_; - T3 f3_; -}; - -template -class GTEST_5_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, - GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_) {} - - template - tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_5_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - f2_ = t.f2_; - f3_ = t.f3_; - f4_ = t.f4_; - return *this; - } - - T0 f0_; - T1 f1_; - T2 f2_; - T3 f3_; - T4 f4_; -}; - -template -class GTEST_6_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), - f5_(f5) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_) {} - - template - tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_6_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - f2_ = t.f2_; - f3_ = t.f3_; - f4_ = t.f4_; - f5_ = t.f5_; - return *this; - } - - T0 f0_; - T1 f1_; - T2 f2_; - T3 f3_; - T4 f4_; - T5 f5_; -}; - -template -class GTEST_7_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), - f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} - - template - tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_7_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - f2_ = t.f2_; - f3_ = t.f3_; - f4_ = t.f4_; - f5_ = t.f5_; - f6_ = t.f6_; - return *this; - } - - T0 f0_; - T1 f1_; - T2 f2_; - T3 f3_; - T4 f4_; - T5 f5_; - T6 f6_; -}; - -template -class GTEST_8_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, - GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), - f5_(f5), f6_(f6), f7_(f7) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} - - template - tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_8_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - f2_ = t.f2_; - f3_ = t.f3_; - f4_ = t.f4_; - f5_ = t.f5_; - f6_ = t.f6_; - f7_ = t.f7_; - return *this; - } - - T0 f0_; - T1 f1_; - T2 f2_; - T3 f3_; - T4 f4_; - T5 f5_; - T6 f6_; - T7 f7_; -}; - -template -class GTEST_9_TUPLE_(T) { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, - GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), - f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} - - template - tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_9_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - f2_ = t.f2_; - f3_ = t.f3_; - f4_ = t.f4_; - f5_ = t.f5_; - f6_ = t.f6_; - f7_ = t.f7_; - f8_ = t.f8_; - return *this; - } - - T0 f0_; - T1 f1_; - T2 f2_; - T3 f3_; - T4 f4_; - T5 f5_; - T6 f6_; - T7 f7_; - T8 f8_; -}; - -template -class tuple { - public: - template friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), - f9_() {} - - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, - GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), - f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} - - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} - - template - tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), - f9_(t.f9_) {} - - tuple& operator=(const tuple& t) { return CopyFrom(t); } - - template - tuple& operator=(const GTEST_10_TUPLE_(U)& t) { - return CopyFrom(t); - } - - GTEST_DECLARE_TUPLE_AS_FRIEND_ - - template - tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { - f0_ = t.f0_; - f1_ = t.f1_; - f2_ = t.f2_; - f3_ = t.f3_; - f4_ = t.f4_; - f5_ = t.f5_; - f6_ = t.f6_; - f7_ = t.f7_; - f8_ = t.f8_; - f9_ = t.f9_; - return *this; - } - - T0 f0_; - T1 f1_; - T2 f2_; - T3 f3_; - T4 f4_; - T5 f5_; - T6 f6_; - T7 f7_; - T8 f8_; - T9 f9_; -}; - -// 6.1.3.2 Tuple creation functions. - -// Known limitations: we don't support passing an -// std::tr1::reference_wrapper to make_tuple(). And we don't -// implement tie(). - -inline tuple<> make_tuple() { return tuple<>(); } - -template -inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { - return GTEST_1_TUPLE_(T)(f0); -} - -template -inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { - return GTEST_2_TUPLE_(T)(f0, f1); -} - -template -inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { - return GTEST_3_TUPLE_(T)(f0, f1, f2); -} - -template -inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3) { - return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); -} - -template -inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4) { - return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); -} - -template -inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5) { - return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); -} - -template -inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5, const T6& f6) { - return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); -} - -template -inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { - return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); -} - -template -inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, - const T8& f8) { - return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); -} - -template -inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, - const T8& f8, const T9& f9) { - return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); -} - -// 6.1.3.3 Tuple helper classes. - -template struct tuple_size; - -template -struct tuple_size { static const int value = 0; }; - -template -struct tuple_size { static const int value = 1; }; - -template -struct tuple_size { static const int value = 2; }; - -template -struct tuple_size { static const int value = 3; }; - -template -struct tuple_size { static const int value = 4; }; - -template -struct tuple_size { static const int value = 5; }; - -template -struct tuple_size { static const int value = 6; }; - -template -struct tuple_size { static const int value = 7; }; - -template -struct tuple_size { static const int value = 8; }; - -template -struct tuple_size { static const int value = 9; }; - -template -struct tuple_size { static const int value = 10; }; - -template -struct tuple_element { - typedef typename gtest_internal::TupleElement< - k < (tuple_size::value), k, Tuple>::type type; -}; - -#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element::type - -// 6.1.3.4 Element access. - -namespace gtest_internal { - -template <> -class Get<0> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) - Field(Tuple& t) { return t.f0_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) - ConstField(const Tuple& t) { return t.f0_; } -}; - -template <> -class Get<1> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) - Field(Tuple& t) { return t.f1_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) - ConstField(const Tuple& t) { return t.f1_; } -}; - -template <> -class Get<2> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) - Field(Tuple& t) { return t.f2_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) - ConstField(const Tuple& t) { return t.f2_; } -}; - -template <> -class Get<3> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) - Field(Tuple& t) { return t.f3_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) - ConstField(const Tuple& t) { return t.f3_; } -}; - -template <> -class Get<4> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) - Field(Tuple& t) { return t.f4_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) - ConstField(const Tuple& t) { return t.f4_; } -}; - -template <> -class Get<5> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) - Field(Tuple& t) { return t.f5_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) - ConstField(const Tuple& t) { return t.f5_; } -}; - -template <> -class Get<6> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) - Field(Tuple& t) { return t.f6_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) - ConstField(const Tuple& t) { return t.f6_; } -}; - -template <> -class Get<7> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) - Field(Tuple& t) { return t.f7_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) - ConstField(const Tuple& t) { return t.f7_; } -}; - -template <> -class Get<8> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) - Field(Tuple& t) { return t.f8_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) - ConstField(const Tuple& t) { return t.f8_; } -}; - -template <> -class Get<9> { - public: - template - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) - Field(Tuple& t) { return t.f9_; } // NOLINT - - template - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) - ConstField(const Tuple& t) { return t.f9_; } -}; - -} // namespace gtest_internal - -template -GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) -get(GTEST_10_TUPLE_(T)& t) { - return gtest_internal::Get::Field(t); -} - -template -GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) -get(const GTEST_10_TUPLE_(T)& t) { - return gtest_internal::Get::ConstField(t); -} - -// 6.1.3.5 Relational operators - -// We only implement == and !=, as we don't have a need for the rest yet. - -namespace gtest_internal { - -// SameSizeTuplePrefixComparator::Eq(t1, t2) returns true if the -// first k fields of t1 equals the first k fields of t2. -// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if -// k1 != k2. -template -struct SameSizeTuplePrefixComparator; - -template <> -struct SameSizeTuplePrefixComparator<0, 0> { - template - static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { - return true; - } -}; - -template -struct SameSizeTuplePrefixComparator { - template - static bool Eq(const Tuple1& t1, const Tuple2& t2) { - return SameSizeTuplePrefixComparator::Eq(t1, t2) && - ::std::tr1::get(t1) == ::std::tr1::get(t2); - } -}; - -} // namespace gtest_internal - -template -inline bool operator==(const GTEST_10_TUPLE_(T)& t, - const GTEST_10_TUPLE_(U)& u) { - return gtest_internal::SameSizeTuplePrefixComparator< - tuple_size::value, - tuple_size::value>::Eq(t, u); -} - -template -inline bool operator!=(const GTEST_10_TUPLE_(T)& t, - const GTEST_10_TUPLE_(U)& u) { return !(t == u); } - -// 6.1.4 Pairs. -// Unimplemented. - -} // namespace tr1 -} // namespace std - -#undef GTEST_0_TUPLE_ -#undef GTEST_1_TUPLE_ -#undef GTEST_2_TUPLE_ -#undef GTEST_3_TUPLE_ -#undef GTEST_4_TUPLE_ -#undef GTEST_5_TUPLE_ -#undef GTEST_6_TUPLE_ -#undef GTEST_7_TUPLE_ -#undef GTEST_8_TUPLE_ -#undef GTEST_9_TUPLE_ -#undef GTEST_10_TUPLE_ - -#undef GTEST_0_TYPENAMES_ -#undef GTEST_1_TYPENAMES_ -#undef GTEST_2_TYPENAMES_ -#undef GTEST_3_TYPENAMES_ -#undef GTEST_4_TYPENAMES_ -#undef GTEST_5_TYPENAMES_ -#undef GTEST_6_TYPENAMES_ -#undef GTEST_7_TYPENAMES_ -#undef GTEST_8_TYPENAMES_ -#undef GTEST_9_TYPENAMES_ -#undef GTEST_10_TYPENAMES_ - -#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ -#undef GTEST_BY_REF_ -#undef GTEST_ADD_REF_ -#undef GTEST_TUPLE_ELEMENT_ - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ -# elif GTEST_OS_SYMBIAN - -// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to -// use STLport's tuple implementation, which unfortunately doesn't -// work as the copy of STLport distributed with Symbian is incomplete. -// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to -// use its own tuple implementation. -# ifdef BOOST_HAS_TR1_TUPLE -# undef BOOST_HAS_TR1_TUPLE -# endif // BOOST_HAS_TR1_TUPLE - -// This prevents , which defines -// BOOST_HAS_TR1_TUPLE, from being #included by Boost's . -# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED -# include - -# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) -// GCC 4.0+ implements tr1/tuple in the header. This does -// not conform to the TR1 spec, which requires the header to be . - -# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 -// Until version 4.3.2, gcc has a bug that causes , -// which is #included by , to not compile when RTTI is -// disabled. _TR1_FUNCTIONAL is the header guard for -// . Hence the following #define is a hack to prevent -// from being included. -# define _TR1_FUNCTIONAL 1 -# include -# undef _TR1_FUNCTIONAL // Allows the user to #include - // if he chooses to. -# else -# include // NOLINT -# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 - -# else -// If the compiler is not GCC 4.0+, we assume the user is using a -// spec-conforming TR1 implementation. -# include // NOLINT -# endif // GTEST_USE_OWN_TR1_TUPLE - -#endif // GTEST_HAS_TR1_TUPLE - -// Determines whether clone(2) is supported. -// Usually it will only be available on Linux, excluding -// Linux on the Itanium architecture. -// Also see http://linux.die.net/man/2/clone. -#ifndef GTEST_HAS_CLONE -// The user didn't tell us, so we need to figure it out. - -# if GTEST_OS_LINUX && !defined(__ia64__) -# define GTEST_HAS_CLONE 1 -# else -# define GTEST_HAS_CLONE 0 -# endif // GTEST_OS_LINUX && !defined(__ia64__) - -#endif // GTEST_HAS_CLONE - -// Determines whether to support stream redirection. This is used to test -// output correctness and to implement death tests. -#ifndef GTEST_HAS_STREAM_REDIRECTION -// By default, we assume that stream redirection is supported on all -// platforms except known mobile ones. -# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN -# define GTEST_HAS_STREAM_REDIRECTION 0 -# else -# define GTEST_HAS_STREAM_REDIRECTION 1 -# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN -#endif // GTEST_HAS_STREAM_REDIRECTION - -// Determines whether to support death tests. -// Google Test does not support death tests for VC 7.1 and earlier as -// abort() in a VC 7.1 application compiled as GUI in debug config -// pops up a dialog window that cannot be suppressed programmatically. -#if (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \ - (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \ - GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX) -# define GTEST_HAS_DEATH_TEST 1 -# include // NOLINT -#endif - -// We don't support MSVC 7.1 with exceptions disabled now. Therefore -// all the compilers we care about are adequate for supporting -// value-parameterized tests. -#define GTEST_HAS_PARAM_TEST 1 - -// Determines whether to support type-driven tests. - -// Typed tests need and variadic macros, which GCC, VC++ 8.0, -// Sun Pro CC, IBM Visual Age, and HP aCC support. -#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \ - defined(__IBMCPP__) || defined(__HP_aCC) -# define GTEST_HAS_TYPED_TEST 1 -# define GTEST_HAS_TYPED_TEST_P 1 -#endif - -// Determines whether to support Combine(). This only makes sense when -// value-parameterized tests are enabled. The implementation doesn't -// work on Sun Studio since it doesn't understand templated conversion -// operators. -#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC) -# define GTEST_HAS_COMBINE 1 -#endif - -// Determines whether the system compiler uses UTF-16 for encoding wide strings. -#define GTEST_WIDE_STRING_USES_UTF16_ \ - (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX) - -// Determines whether test results can be streamed to a socket. -#if GTEST_OS_LINUX -# define GTEST_CAN_STREAM_RESULTS_ 1 -#endif - -// Defines some utility macros. - -// The GNU compiler emits a warning if nested "if" statements are followed by -// an "else" statement and braces are not used to explicitly disambiguate the -// "else" binding. This leads to problems with code like: -// -// if (gate) -// ASSERT_*(condition) << "Some message"; -// -// The "switch (0) case 0:" idiom is used to suppress this. -#ifdef __INTEL_COMPILER -# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ -#else -# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT -#endif - -// Use this annotation at the end of a struct/class definition to -// prevent the compiler from optimizing away instances that are never -// used. This is useful when all interesting logic happens inside the -// c'tor and / or d'tor. Example: -// -// struct Foo { -// Foo() { ... } -// } GTEST_ATTRIBUTE_UNUSED_; -// -// Also use it after a variable or parameter declaration to tell the -// compiler the variable/parameter does not have to be used. -#if defined(__GNUC__) && !defined(COMPILER_ICC) -# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused)) -#else -# define GTEST_ATTRIBUTE_UNUSED_ -#endif - -// A macro to disallow operator= -// This should be used in the private: declarations for a class. -#define GTEST_DISALLOW_ASSIGN_(type)\ - void operator=(type const &) - -// A macro to disallow copy constructor and operator= -// This should be used in the private: declarations for a class. -#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\ - type(type const &);\ - GTEST_DISALLOW_ASSIGN_(type) - -// Tell the compiler to warn about unused return values for functions declared -// with this macro. The macro should be used on function declarations -// following the argument list: -// -// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_; -#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC) -# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result)) -#else -# define GTEST_MUST_USE_RESULT_ -#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC - -// Determine whether the compiler supports Microsoft's Structured Exception -// Handling. This is supported by several Windows compilers but generally -// does not exist on any other system. -#ifndef GTEST_HAS_SEH -// The user didn't tell us, so we need to figure it out. - -# if defined(_MSC_VER) || defined(__BORLANDC__) -// These two compilers are known to support SEH. -# define GTEST_HAS_SEH 1 -# else -// Assume no SEH. -# define GTEST_HAS_SEH 0 -# endif - -#endif // GTEST_HAS_SEH - -#ifdef _MSC_VER - -# if GTEST_LINKED_AS_SHARED_LIBRARY -# define GTEST_API_ __declspec(dllimport) -# elif GTEST_CREATE_SHARED_LIBRARY -# define GTEST_API_ __declspec(dllexport) -# endif - -#endif // _MSC_VER - -#ifndef GTEST_API_ -# define GTEST_API_ -#endif - -#ifdef __GNUC__ -// Ask the compiler to never inline a given function. -# define GTEST_NO_INLINE_ __attribute__((noinline)) -#else -# define GTEST_NO_INLINE_ -#endif - -namespace testing { - -class Message; - -namespace internal { - -class String; - -// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time -// expression is true. For example, you could use it to verify the -// size of a static array: -// -// GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES, -// content_type_names_incorrect_size); -// -// or to make sure a struct is smaller than a certain size: -// -// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large); -// -// The second argument to the macro is the name of the variable. If -// the expression is false, most compilers will issue a warning/error -// containing the name of the variable. - -template -struct CompileAssert { -}; - -#define GTEST_COMPILE_ASSERT_(expr, msg) \ - typedef ::testing::internal::CompileAssert<(bool(expr))> \ - msg[bool(expr) ? 1 : -1] - -// Implementation details of GTEST_COMPILE_ASSERT_: -// -// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1 -// elements (and thus is invalid) when the expression is false. -// -// - The simpler definition -// -// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1] -// -// does not work, as gcc supports variable-length arrays whose sizes -// are determined at run-time (this is gcc's extension and not part -// of the C++ standard). As a result, gcc fails to reject the -// following code with the simple definition: -// -// int foo; -// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is -// // not a compile-time constant. -// -// - By using the type CompileAssert<(bool(expr))>, we ensures that -// expr is a compile-time constant. (Template arguments must be -// determined at compile-time.) -// -// - The outter parentheses in CompileAssert<(bool(expr))> are necessary -// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written -// -// CompileAssert -// -// instead, these compilers will refuse to compile -// -// GTEST_COMPILE_ASSERT_(5 > 0, some_message); -// -// (They seem to think the ">" in "5 > 0" marks the end of the -// template argument list.) -// -// - The array size is (bool(expr) ? 1 : -1), instead of simply -// -// ((expr) ? 1 : -1). -// -// This is to avoid running into a bug in MS VC 7.1, which -// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. - -// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h. -// -// This template is declared, but intentionally undefined. -template -struct StaticAssertTypeEqHelper; - -template -struct StaticAssertTypeEqHelper {}; - -#if GTEST_HAS_GLOBAL_STRING -typedef ::string string; -#else -typedef ::std::string string; -#endif // GTEST_HAS_GLOBAL_STRING - -#if GTEST_HAS_GLOBAL_WSTRING -typedef ::wstring wstring; -#elif GTEST_HAS_STD_WSTRING -typedef ::std::wstring wstring; -#endif // GTEST_HAS_GLOBAL_WSTRING - -// A helper for suppressing warnings on constant condition. It just -// returns 'condition'. -GTEST_API_ bool IsTrue(bool condition); - -// Defines scoped_ptr. - -// This implementation of scoped_ptr is PARTIAL - it only contains -// enough stuff to satisfy Google Test's need. -template -class scoped_ptr { - public: - typedef T element_type; - - explicit scoped_ptr(T* p = NULL) : ptr_(p) {} - ~scoped_ptr() { reset(); } - - T& operator*() const { return *ptr_; } - T* operator->() const { return ptr_; } - T* get() const { return ptr_; } - - T* release() { - T* const ptr = ptr_; - ptr_ = NULL; - return ptr; - } - - void reset(T* p = NULL) { - if (p != ptr_) { - if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. - delete ptr_; - } - ptr_ = p; - } - } - private: - T* ptr_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr); -}; - -// Defines RE. - -// A simple C++ wrapper for . It uses the POSIX Extended -// Regular Expression syntax. -class GTEST_API_ RE { - public: - // A copy constructor is required by the Standard to initialize object - // references from r-values. - RE(const RE& other) { Init(other.pattern()); } - - // Constructs an RE from a string. - RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT - -#if GTEST_HAS_GLOBAL_STRING - - RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT - -#endif // GTEST_HAS_GLOBAL_STRING - - RE(const char* regex) { Init(regex); } // NOLINT - ~RE(); - - // Returns the string representation of the regex. - const char* pattern() const { return pattern_; } - - // FullMatch(str, re) returns true iff regular expression re matches - // the entire str. - // PartialMatch(str, re) returns true iff regular expression re - // matches a substring of str (including str itself). - // - // TODO(wan@google.com): make FullMatch() and PartialMatch() work - // when str contains NUL characters. - static bool FullMatch(const ::std::string& str, const RE& re) { - return FullMatch(str.c_str(), re); - } - static bool PartialMatch(const ::std::string& str, const RE& re) { - return PartialMatch(str.c_str(), re); - } - -#if GTEST_HAS_GLOBAL_STRING - - static bool FullMatch(const ::string& str, const RE& re) { - return FullMatch(str.c_str(), re); - } - static bool PartialMatch(const ::string& str, const RE& re) { - return PartialMatch(str.c_str(), re); - } - -#endif // GTEST_HAS_GLOBAL_STRING - - static bool FullMatch(const char* str, const RE& re); - static bool PartialMatch(const char* str, const RE& re); - - private: - void Init(const char* regex); - - // We use a const char* instead of a string, as Google Test may be used - // where string is not available. We also do not use Google Test's own - // String type here, in order to simplify dependencies between the - // files. - const char* pattern_; - bool is_valid_; - -#if GTEST_USES_POSIX_RE - - regex_t full_regex_; // For FullMatch(). - regex_t partial_regex_; // For PartialMatch(). - -#else // GTEST_USES_SIMPLE_RE - - const char* full_pattern_; // For FullMatch(); - -#endif - - GTEST_DISALLOW_ASSIGN_(RE); -}; - -// Formats a source file path and a line number as they would appear -// in an error message from the compiler used to compile this code. -GTEST_API_ ::std::string FormatFileLocation(const char* file, int line); - -// Formats a file location for compiler-independent XML output. -// Although this function is not platform dependent, we put it next to -// FormatFileLocation in order to contrast the two functions. -GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file, - int line); - -// Defines logging utilities: -// GTEST_LOG_(severity) - logs messages at the specified severity level. The -// message itself is streamed into the macro. -// LogToStderr() - directs all log messages to stderr. -// FlushInfoLog() - flushes informational log messages. - -enum GTestLogSeverity { - GTEST_INFO, - GTEST_WARNING, - GTEST_ERROR, - GTEST_FATAL -}; - -// Formats log entry severity, provides a stream object for streaming the -// log message, and terminates the message with a newline when going out of -// scope. -class GTEST_API_ GTestLog { - public: - GTestLog(GTestLogSeverity severity, const char* file, int line); - - // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. - ~GTestLog(); - - ::std::ostream& GetStream() { return ::std::cerr; } - - private: - const GTestLogSeverity severity_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog); -}; - -#define GTEST_LOG_(severity) \ - ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \ - __FILE__, __LINE__).GetStream() - -inline void LogToStderr() {} -inline void FlushInfoLog() { fflush(NULL); } - -// INTERNAL IMPLEMENTATION - DO NOT USE. -// -// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition -// is not satisfied. -// Synopsys: -// GTEST_CHECK_(boolean_condition); -// or -// GTEST_CHECK_(boolean_condition) << "Additional message"; -// -// This checks the condition and if the condition is not satisfied -// it prints message about the condition violation, including the -// condition itself, plus additional message streamed into it, if any, -// and then it aborts the program. It aborts the program irrespective of -// whether it is built in the debug mode or not. -#define GTEST_CHECK_(condition) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::IsTrue(condition)) \ - ; \ - else \ - GTEST_LOG_(FATAL) << "Condition " #condition " failed. " - -// An all-mode assert to verify that the given POSIX-style function -// call returns 0 (indicating success). Known limitation: this -// doesn't expand to a balanced 'if' statement, so enclose the macro -// in {} if you need to use it as the only statement in an 'if' -// branch. -#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ - if (const int gtest_error = (posix_call)) \ - GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ - << gtest_error - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Use ImplicitCast_ as a safe version of static_cast for upcasting in -// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a -// const Foo*). When you use ImplicitCast_, the compiler checks that -// the cast is safe. Such explicit ImplicitCast_s are necessary in -// surprisingly many situations where C++ demands an exact type match -// instead of an argument type convertable to a target type. -// -// The syntax for using ImplicitCast_ is the same as for static_cast: -// -// ImplicitCast_(expr) -// -// ImplicitCast_ would have been part of the C++ standard library, -// but the proposal was submitted too late. It will probably make -// its way into the language in the future. -// -// This relatively ugly name is intentional. It prevents clashes with -// similar functions users may have (e.g., implicit_cast). The internal -// namespace alone is not enough because the function can be found by ADL. -template -inline To ImplicitCast_(To x) { return x; } - -// When you upcast (that is, cast a pointer from type Foo to type -// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts -// always succeed. When you downcast (that is, cast a pointer from -// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because -// how do you know the pointer is really of type SubclassOfFoo? It -// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus, -// when you downcast, you should use this macro. In debug mode, we -// use dynamic_cast<> to double-check the downcast is legal (we die -// if it's not). In normal mode, we do the efficient static_cast<> -// instead. Thus, it's important to test in debug mode to make sure -// the cast is legal! -// This is the only place in the code we should use dynamic_cast<>. -// In particular, you SHOULDN'T be using dynamic_cast<> in order to -// do RTTI (eg code like this: -// if (dynamic_cast(foo)) HandleASubclass1Object(foo); -// if (dynamic_cast(foo)) HandleASubclass2Object(foo); -// You should design the code some other way not to need this. -// -// This relatively ugly name is intentional. It prevents clashes with -// similar functions users may have (e.g., down_cast). The internal -// namespace alone is not enough because the function can be found by ADL. -template // use like this: DownCast_(foo); -inline To DownCast_(From* f) { // so we only accept pointers - // Ensures that To is a sub-type of From *. This test is here only - // for compile-time type checking, and has no overhead in an - // optimized build at run-time, as it will be optimized away - // completely. - if (false) { - const To to = NULL; - ::testing::internal::ImplicitCast_(to); - } - -#if GTEST_HAS_RTTI - // RTTI: debug mode only! - GTEST_CHECK_(f == NULL || dynamic_cast(f) != NULL); -#endif - return static_cast(f); -} - -// Downcasts the pointer of type Base to Derived. -// Derived must be a subclass of Base. The parameter MUST -// point to a class of type Derived, not any subclass of it. -// When RTTI is available, the function performs a runtime -// check to enforce this. -template -Derived* CheckedDowncastToActualType(Base* base) { -#if GTEST_HAS_RTTI - GTEST_CHECK_(typeid(*base) == typeid(Derived)); - return dynamic_cast(base); // NOLINT -#else - return static_cast(base); // Poor man's downcast. -#endif -} - -#if GTEST_HAS_STREAM_REDIRECTION - -// Defines the stderr capturer: -// CaptureStdout - starts capturing stdout. -// GetCapturedStdout - stops capturing stdout and returns the captured string. -// CaptureStderr - starts capturing stderr. -// GetCapturedStderr - stops capturing stderr and returns the captured string. -// -GTEST_API_ void CaptureStdout(); -GTEST_API_ String GetCapturedStdout(); -GTEST_API_ void CaptureStderr(); -GTEST_API_ String GetCapturedStderr(); - -#endif // GTEST_HAS_STREAM_REDIRECTION - - -#if GTEST_HAS_DEATH_TEST - -// A copy of all command line arguments. Set by InitGoogleTest(). -extern ::std::vector g_argvs; - -// GTEST_HAS_DEATH_TEST implies we have ::std::string. -const ::std::vector& GetArgvs(); - -#endif // GTEST_HAS_DEATH_TEST - -// Defines synchronization primitives. - -#if GTEST_HAS_PTHREAD - -// Sleeps for (roughly) n milli-seconds. This function is only for -// testing Google Test's own constructs. Don't use it in user tests, -// either directly or indirectly. -inline void SleepMilliseconds(int n) { - const timespec time = { - 0, // 0 seconds. - n * 1000L * 1000L, // And n ms. - }; - nanosleep(&time, NULL); -} - -// Allows a controller thread to pause execution of newly created -// threads until notified. Instances of this class must be created -// and destroyed in the controller thread. -// -// This class is only for testing Google Test's own constructs. Do not -// use it in user tests, either directly or indirectly. -class Notification { - public: - Notification() : notified_(false) {} - - // Notifies all threads created with this notification to start. Must - // be called from the controller thread. - void Notify() { notified_ = true; } - - // Blocks until the controller thread notifies. Must be called from a test - // thread. - void WaitForNotification() { - while(!notified_) { - SleepMilliseconds(10); - } - } - - private: - volatile bool notified_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification); -}; - -// As a C-function, ThreadFuncWithCLinkage cannot be templated itself. -// Consequently, it cannot select a correct instantiation of ThreadWithParam -// in order to call its Run(). Introducing ThreadWithParamBase as a -// non-templated base class for ThreadWithParam allows us to bypass this -// problem. -class ThreadWithParamBase { - public: - virtual ~ThreadWithParamBase() {} - virtual void Run() = 0; -}; - -// pthread_create() accepts a pointer to a function type with the C linkage. -// According to the Standard (7.5/1), function types with different linkages -// are different even if they are otherwise identical. Some compilers (for -// example, SunStudio) treat them as different types. Since class methods -// cannot be defined with C-linkage we need to define a free C-function to -// pass into pthread_create(). -extern "C" inline void* ThreadFuncWithCLinkage(void* thread) { - static_cast(thread)->Run(); - return NULL; -} - -// Helper class for testing Google Test's multi-threading constructs. -// To use it, write: -// -// void ThreadFunc(int param) { /* Do things with param */ } -// Notification thread_can_start; -// ... -// // The thread_can_start parameter is optional; you can supply NULL. -// ThreadWithParam thread(&ThreadFunc, 5, &thread_can_start); -// thread_can_start.Notify(); -// -// These classes are only for testing Google Test's own constructs. Do -// not use them in user tests, either directly or indirectly. -template -class ThreadWithParam : public ThreadWithParamBase { - public: - typedef void (*UserThreadFunc)(T); - - ThreadWithParam( - UserThreadFunc func, T param, Notification* thread_can_start) - : func_(func), - param_(param), - thread_can_start_(thread_can_start), - finished_(false) { - ThreadWithParamBase* const base = this; - // The thread can be created only after all fields except thread_ - // have been initialized. - GTEST_CHECK_POSIX_SUCCESS_( - pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base)); - } - ~ThreadWithParam() { Join(); } - - void Join() { - if (!finished_) { - GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0)); - finished_ = true; - } - } - - virtual void Run() { - if (thread_can_start_ != NULL) - thread_can_start_->WaitForNotification(); - func_(param_); - } - - private: - const UserThreadFunc func_; // User-supplied thread function. - const T param_; // User-supplied parameter to the thread function. - // When non-NULL, used to block execution until the controller thread - // notifies. - Notification* const thread_can_start_; - bool finished_; // true iff we know that the thread function has finished. - pthread_t thread_; // The native thread object. - - GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam); -}; - -// MutexBase and Mutex implement mutex on pthreads-based platforms. They -// are used in conjunction with class MutexLock: -// -// Mutex mutex; -// ... -// MutexLock lock(&mutex); // Acquires the mutex and releases it at the end -// // of the current scope. -// -// MutexBase implements behavior for both statically and dynamically -// allocated mutexes. Do not use MutexBase directly. Instead, write -// the following to define a static mutex: -// -// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex); -// -// You can forward declare a static mutex like this: -// -// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex); -// -// To create a dynamic mutex, just define an object of type Mutex. -class MutexBase { - public: - // Acquires this mutex. - void Lock() { - GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_)); - owner_ = pthread_self(); - } - - // Releases this mutex. - void Unlock() { - // We don't protect writing to owner_ here, as it's the caller's - // responsibility to ensure that the current thread holds the - // mutex when this is called. - owner_ = 0; - GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_)); - } - - // Does nothing if the current thread holds the mutex. Otherwise, crashes - // with high probability. - void AssertHeld() const { - GTEST_CHECK_(owner_ == pthread_self()) - << "The current thread is not holding the mutex @" << this; - } - - // A static mutex may be used before main() is entered. It may even - // be used before the dynamic initialization stage. Therefore we - // must be able to initialize a static mutex object at link time. - // This means MutexBase has to be a POD and its member variables - // have to be public. - public: - pthread_mutex_t mutex_; // The underlying pthread mutex. - pthread_t owner_; // The thread holding the mutex; 0 means no one holds it. -}; - -// Forward-declares a static mutex. -# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ - extern ::testing::internal::MutexBase mutex - -// Defines and statically (i.e. at link time) initializes a static mutex. -# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \ - ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, 0 } - -// The Mutex class can only be used for mutexes created at runtime. It -// shares its API with MutexBase otherwise. -class Mutex : public MutexBase { - public: - Mutex() { - GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); - owner_ = 0; - } - ~Mutex() { - GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_)); - } - - private: - GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex); -}; - -// We cannot name this class MutexLock as the ctor declaration would -// conflict with a macro named MutexLock, which is defined on some -// platforms. Hence the typedef trick below. -class GTestMutexLock { - public: - explicit GTestMutexLock(MutexBase* mutex) - : mutex_(mutex) { mutex_->Lock(); } - - ~GTestMutexLock() { mutex_->Unlock(); } - - private: - MutexBase* const mutex_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock); -}; - -typedef GTestMutexLock MutexLock; - -// Helpers for ThreadLocal. - -// pthread_key_create() requires DeleteThreadLocalValue() to have -// C-linkage. Therefore it cannot be templatized to access -// ThreadLocal. Hence the need for class -// ThreadLocalValueHolderBase. -class ThreadLocalValueHolderBase { - public: - virtual ~ThreadLocalValueHolderBase() {} -}; - -// Called by pthread to delete thread-local data stored by -// pthread_setspecific(). -extern "C" inline void DeleteThreadLocalValue(void* value_holder) { - delete static_cast(value_holder); -} - -// Implements thread-local storage on pthreads-based systems. -// -// // Thread 1 -// ThreadLocal tl(100); // 100 is the default value for each thread. -// -// // Thread 2 -// tl.set(150); // Changes the value for thread 2 only. -// EXPECT_EQ(150, tl.get()); -// -// // Thread 1 -// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value. -// tl.set(200); -// EXPECT_EQ(200, tl.get()); -// -// The template type argument T must have a public copy constructor. -// In addition, the default ThreadLocal constructor requires T to have -// a public default constructor. -// -// An object managed for a thread by a ThreadLocal instance is deleted -// when the thread exits. Or, if the ThreadLocal instance dies in -// that thread, when the ThreadLocal dies. It's the user's -// responsibility to ensure that all other threads using a ThreadLocal -// have exited when it dies, or the per-thread objects for those -// threads will not be deleted. -// -// Google Test only uses global ThreadLocal objects. That means they -// will die after main() has returned. Therefore, no per-thread -// object managed by Google Test will be leaked as long as all threads -// using Google Test have exited when main() returns. -template -class ThreadLocal { - public: - ThreadLocal() : key_(CreateKey()), - default_() {} - explicit ThreadLocal(const T& value) : key_(CreateKey()), - default_(value) {} - - ~ThreadLocal() { - // Destroys the managed object for the current thread, if any. - DeleteThreadLocalValue(pthread_getspecific(key_)); - - // Releases resources associated with the key. This will *not* - // delete managed objects for other threads. - GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_)); - } - - T* pointer() { return GetOrCreateValue(); } - const T* pointer() const { return GetOrCreateValue(); } - const T& get() const { return *pointer(); } - void set(const T& value) { *pointer() = value; } - - private: - // Holds a value of type T. - class ValueHolder : public ThreadLocalValueHolderBase { - public: - explicit ValueHolder(const T& value) : value_(value) {} - - T* pointer() { return &value_; } - - private: - T value_; - GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder); - }; - - static pthread_key_t CreateKey() { - pthread_key_t key; - // When a thread exits, DeleteThreadLocalValue() will be called on - // the object managed for that thread. - GTEST_CHECK_POSIX_SUCCESS_( - pthread_key_create(&key, &DeleteThreadLocalValue)); - return key; - } - - T* GetOrCreateValue() const { - ThreadLocalValueHolderBase* const holder = - static_cast(pthread_getspecific(key_)); - if (holder != NULL) { - return CheckedDowncastToActualType(holder)->pointer(); - } - - ValueHolder* const new_holder = new ValueHolder(default_); - ThreadLocalValueHolderBase* const holder_base = new_holder; - GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base)); - return new_holder->pointer(); - } - - // A key pthreads uses for looking up per-thread values. - const pthread_key_t key_; - const T default_; // The default value for each thread. - - GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal); -}; - -# define GTEST_IS_THREADSAFE 1 - -#else // GTEST_HAS_PTHREAD - -// A dummy implementation of synchronization primitives (mutex, lock, -// and thread-local variable). Necessary for compiling Google Test where -// mutex is not supported - using Google Test in multiple threads is not -// supported on such platforms. - -class Mutex { - public: - Mutex() {} - void AssertHeld() const {} -}; - -# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ - extern ::testing::internal::Mutex mutex - -# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex - -class GTestMutexLock { - public: - explicit GTestMutexLock(Mutex*) {} // NOLINT -}; - -typedef GTestMutexLock MutexLock; - -template -class ThreadLocal { - public: - ThreadLocal() : value_() {} - explicit ThreadLocal(const T& value) : value_(value) {} - T* pointer() { return &value_; } - const T* pointer() const { return &value_; } - const T& get() const { return value_; } - void set(const T& value) { value_ = value; } - private: - T value_; -}; - -// The above synchronization primitives have dummy implementations. -// Therefore Google Test is not thread-safe. -# define GTEST_IS_THREADSAFE 0 - -#endif // GTEST_HAS_PTHREAD - -// Returns the number of threads running in the process, or 0 to indicate that -// we cannot detect it. -GTEST_API_ size_t GetThreadCount(); - -// Passing non-POD classes through ellipsis (...) crashes the ARM -// compiler and generates a warning in Sun Studio. The Nokia Symbian -// and the IBM XL C/C++ compiler try to instantiate a copy constructor -// for objects passed through ellipsis (...), failing for uncopyable -// objects. We define this to ensure that only POD is passed through -// ellipsis on these systems. -#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) -// We lose support for NULL detection where the compiler doesn't like -// passing non-POD classes through ellipsis (...). -# define GTEST_ELLIPSIS_NEEDS_POD_ 1 -#else -# define GTEST_CAN_COMPARE_NULL 1 -#endif - -// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between -// const T& and const T* in a function template. These compilers -// _can_ decide between class template specializations for T and T*, -// so a tr1::type_traits-like is_pointer works. -#if defined(__SYMBIAN32__) || defined(__IBMCPP__) -# define GTEST_NEEDS_IS_POINTER_ 1 -#endif - -template -struct bool_constant { - typedef bool_constant type; - static const bool value = bool_value; -}; -template const bool bool_constant::value; - -typedef bool_constant false_type; -typedef bool_constant true_type; - -template -struct is_pointer : public false_type {}; - -template -struct is_pointer : public true_type {}; - -template -struct IteratorTraits { - typedef typename Iterator::value_type value_type; -}; - -template -struct IteratorTraits { - typedef T value_type; -}; - -template -struct IteratorTraits { - typedef T value_type; -}; - -#if GTEST_OS_WINDOWS -# define GTEST_PATH_SEP_ "\\" -# define GTEST_HAS_ALT_PATH_SEP_ 1 -// The biggest signed integer type the compiler supports. -typedef __int64 BiggestInt; -#else -# define GTEST_PATH_SEP_ "/" -# define GTEST_HAS_ALT_PATH_SEP_ 0 -typedef long long BiggestInt; // NOLINT -#endif // GTEST_OS_WINDOWS - -// Utilities for char. - -// isspace(int ch) and friends accept an unsigned char or EOF. char -// may be signed, depending on the compiler (or compiler flags). -// Therefore we need to cast a char to unsigned char before calling -// isspace(), etc. - -inline bool IsAlpha(char ch) { - return isalpha(static_cast(ch)) != 0; -} -inline bool IsAlNum(char ch) { - return isalnum(static_cast(ch)) != 0; -} -inline bool IsDigit(char ch) { - return isdigit(static_cast(ch)) != 0; -} -inline bool IsLower(char ch) { - return islower(static_cast(ch)) != 0; -} -inline bool IsSpace(char ch) { - return isspace(static_cast(ch)) != 0; -} -inline bool IsUpper(char ch) { - return isupper(static_cast(ch)) != 0; -} -inline bool IsXDigit(char ch) { - return isxdigit(static_cast(ch)) != 0; -} - -inline char ToLower(char ch) { - return static_cast(tolower(static_cast(ch))); -} -inline char ToUpper(char ch) { - return static_cast(toupper(static_cast(ch))); -} - -// The testing::internal::posix namespace holds wrappers for common -// POSIX functions. These wrappers hide the differences between -// Windows/MSVC and POSIX systems. Since some compilers define these -// standard functions as macros, the wrapper cannot have the same name -// as the wrapped function. - -namespace posix { - -// Functions with a different name on Windows. - -#if GTEST_OS_WINDOWS - -typedef struct _stat StatStruct; - -# ifdef __BORLANDC__ -inline int IsATTY(int fd) { return isatty(fd); } -inline int StrCaseCmp(const char* s1, const char* s2) { - return stricmp(s1, s2); -} -inline char* StrDup(const char* src) { return strdup(src); } -# else // !__BORLANDC__ -# if GTEST_OS_WINDOWS_MOBILE -inline int IsATTY(int /* fd */) { return 0; } -# else -inline int IsATTY(int fd) { return _isatty(fd); } -# endif // GTEST_OS_WINDOWS_MOBILE -inline int StrCaseCmp(const char* s1, const char* s2) { - return _stricmp(s1, s2); -} -inline char* StrDup(const char* src) { return _strdup(src); } -# endif // __BORLANDC__ - -# if GTEST_OS_WINDOWS_MOBILE -inline int FileNo(FILE* file) { return reinterpret_cast(_fileno(file)); } -// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this -// time and thus not defined there. -# else -inline int FileNo(FILE* file) { return _fileno(file); } -inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); } -inline int RmDir(const char* dir) { return _rmdir(dir); } -inline bool IsDir(const StatStruct& st) { - return (_S_IFDIR & st.st_mode) != 0; -} -# endif // GTEST_OS_WINDOWS_MOBILE - -#else - -typedef struct stat StatStruct; - -inline int FileNo(FILE* file) { return fileno(file); } -inline int IsATTY(int fd) { return isatty(fd); } -inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); } -inline int StrCaseCmp(const char* s1, const char* s2) { - return strcasecmp(s1, s2); -} -inline char* StrDup(const char* src) { return strdup(src); } -inline int RmDir(const char* dir) { return rmdir(dir); } -inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } - -#endif // GTEST_OS_WINDOWS - -// Functions deprecated by MSVC 8.0. - -#ifdef _MSC_VER -// Temporarily disable warning 4996 (deprecated function). -# pragma warning(push) -# pragma warning(disable:4996) -#endif - -inline const char* StrNCpy(char* dest, const char* src, size_t n) { - return strncpy(dest, src, n); -} - -// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and -// StrError() aren't needed on Windows CE at this time and thus not -// defined there. - -#if !GTEST_OS_WINDOWS_MOBILE -inline int ChDir(const char* dir) { return chdir(dir); } -#endif -inline FILE* FOpen(const char* path, const char* mode) { - return fopen(path, mode); -} -#if !GTEST_OS_WINDOWS_MOBILE -inline FILE *FReopen(const char* path, const char* mode, FILE* stream) { - return freopen(path, mode, stream); -} -inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); } -#endif -inline int FClose(FILE* fp) { return fclose(fp); } -#if !GTEST_OS_WINDOWS_MOBILE -inline int Read(int fd, void* buf, unsigned int count) { - return static_cast(read(fd, buf, count)); -} -inline int Write(int fd, const void* buf, unsigned int count) { - return static_cast(write(fd, buf, count)); -} -inline int Close(int fd) { return close(fd); } -inline const char* StrError(int errnum) { return strerror(errnum); } -#endif -inline const char* GetEnv(const char* name) { -#if GTEST_OS_WINDOWS_MOBILE - // We are on Windows CE, which has no environment variables. - return NULL; -#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9) - // Environment variables which we programmatically clear will be set to the - // empty string rather than unset (NULL). Handle that case. - const char* const env = getenv(name); - return (env != NULL && env[0] != '\0') ? env : NULL; -#else - return getenv(name); -#endif -} - -#ifdef _MSC_VER -# pragma warning(pop) // Restores the warning state. -#endif - -#if GTEST_OS_WINDOWS_MOBILE -// Windows CE has no C library. The abort() function is used in -// several places in Google Test. This implementation provides a reasonable -// imitation of standard behaviour. -void Abort(); -#else -inline void Abort() { abort(); } -#endif // GTEST_OS_WINDOWS_MOBILE - -} // namespace posix - -// The maximum number a BiggestInt can represent. This definition -// works no matter BiggestInt is represented in one's complement or -// two's complement. -// -// We cannot rely on numeric_limits in STL, as __int64 and long long -// are not part of standard C++ and numeric_limits doesn't need to be -// defined for them. -const BiggestInt kMaxBiggestInt = - ~(static_cast(1) << (8*sizeof(BiggestInt) - 1)); - -// This template class serves as a compile-time function from size to -// type. It maps a size in bytes to a primitive type with that -// size. e.g. -// -// TypeWithSize<4>::UInt -// -// is typedef-ed to be unsigned int (unsigned integer made up of 4 -// bytes). -// -// Such functionality should belong to STL, but I cannot find it -// there. -// -// Google Test uses this class in the implementation of floating-point -// comparison. -// -// For now it only handles UInt (unsigned int) as that's all Google Test -// needs. Other types can be easily added in the future if need -// arises. -template -class TypeWithSize { - public: - // This prevents the user from using TypeWithSize with incorrect - // values of N. - typedef void UInt; -}; - -// The specialization for size 4. -template <> -class TypeWithSize<4> { - public: - // unsigned int has size 4 in both gcc and MSVC. - // - // As base/basictypes.h doesn't compile on Windows, we cannot use - // uint32, uint64, and etc here. - typedef int Int; - typedef unsigned int UInt; -}; - -// The specialization for size 8. -template <> -class TypeWithSize<8> { - public: - -#if GTEST_OS_WINDOWS - typedef __int64 Int; - typedef unsigned __int64 UInt; -#else - typedef long long Int; // NOLINT - typedef unsigned long long UInt; // NOLINT -#endif // GTEST_OS_WINDOWS -}; - -// Integer types of known sizes. -typedef TypeWithSize<4>::Int Int32; -typedef TypeWithSize<4>::UInt UInt32; -typedef TypeWithSize<8>::Int Int64; -typedef TypeWithSize<8>::UInt UInt64; -typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. - -// Utilities for command line flags and environment variables. - -// Macro for referencing flags. -#define GTEST_FLAG(name) FLAGS_gtest_##name - -// Macros for declaring flags. -#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name) -#define GTEST_DECLARE_int32_(name) \ - GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name) -#define GTEST_DECLARE_string_(name) \ - GTEST_API_ extern ::testing::internal::String GTEST_FLAG(name) - -// Macros for defining flags. -#define GTEST_DEFINE_bool_(name, default_val, doc) \ - GTEST_API_ bool GTEST_FLAG(name) = (default_val) -#define GTEST_DEFINE_int32_(name, default_val, doc) \ - GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val) -#define GTEST_DEFINE_string_(name, default_val, doc) \ - GTEST_API_ ::testing::internal::String GTEST_FLAG(name) = (default_val) - -// Parses 'str' for a 32-bit signed integer. If successful, writes the result -// to *value and returns true; otherwise leaves *value unchanged and returns -// false. -// TODO(chandlerc): Find a better way to refactor flag and environment parsing -// out of both gtest-port.cc and gtest.cc to avoid exporting this utility -// function. -bool ParseInt32(const Message& src_text, const char* str, Int32* value); - -// Parses a bool/Int32/string from the environment variable -// corresponding to the given Google Test flag. -bool BoolFromGTestEnv(const char* flag, bool default_val); -GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val); -const char* StringFromGTestEnv(const char* flag, const char* default_val); - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ - -#if GTEST_OS_LINUX -# include -# include -# include -# include -#endif // GTEST_OS_LINUX - -#include -#include -#include -#include -#include - -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) -// -// The Google C++ Testing Framework (Google Test) -// -// This header file declares the String class and functions used internally by -// Google Test. They are subject to change without notice. They should not used -// by code external to Google Test. -// -// This header file is #included by . -// It should not be #included by other files. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ - -#ifdef __BORLANDC__ -// string.h is not guaranteed to provide strcpy on C++ Builder. -# include -#endif - -#include - -#include - -namespace testing { -namespace internal { - -// String - a UTF-8 string class. -// -// For historic reasons, we don't use std::string. -// -// TODO(wan@google.com): replace this class with std::string or -// implement it in terms of the latter. -// -// Note that String can represent both NULL and the empty string, -// while std::string cannot represent NULL. -// -// NULL and the empty string are considered different. NULL is less -// than anything (including the empty string) except itself. -// -// This class only provides minimum functionality necessary for -// implementing Google Test. We do not intend to implement a full-fledged -// string class here. -// -// Since the purpose of this class is to provide a substitute for -// std::string on platforms where it cannot be used, we define a copy -// constructor and assignment operators such that we don't need -// conditional compilation in a lot of places. -// -// In order to make the representation efficient, the d'tor of String -// is not virtual. Therefore DO NOT INHERIT FROM String. -class GTEST_API_ String { - public: - // Static utility methods - - // Returns the input enclosed in double quotes if it's not NULL; - // otherwise returns "(null)". For example, "\"Hello\"" is returned - // for input "Hello". - // - // This is useful for printing a C string in the syntax of a literal. - // - // Known issue: escape sequences are not handled yet. - static String ShowCStringQuoted(const char* c_str); - - // Clones a 0-terminated C string, allocating memory using new. The - // caller is responsible for deleting the return value using - // delete[]. Returns the cloned string, or NULL if the input is - // NULL. - // - // This is different from strdup() in string.h, which allocates - // memory using malloc(). - static const char* CloneCString(const char* c_str); - -#if GTEST_OS_WINDOWS_MOBILE - // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be - // able to pass strings to Win32 APIs on CE we need to convert them - // to 'Unicode', UTF-16. - - // Creates a UTF-16 wide string from the given ANSI string, allocating - // memory using new. The caller is responsible for deleting the return - // value using delete[]. Returns the wide string, or NULL if the - // input is NULL. - // - // The wide string is created using the ANSI codepage (CP_ACP) to - // match the behaviour of the ANSI versions of Win32 calls and the - // C runtime. - static LPCWSTR AnsiToUtf16(const char* c_str); - - // Creates an ANSI string from the given wide string, allocating - // memory using new. The caller is responsible for deleting the return - // value using delete[]. Returns the ANSI string, or NULL if the - // input is NULL. - // - // The returned string is created using the ANSI codepage (CP_ACP) to - // match the behaviour of the ANSI versions of Win32 calls and the - // C runtime. - static const char* Utf16ToAnsi(LPCWSTR utf16_str); -#endif - - // Compares two C strings. Returns true iff they have the same content. - // - // Unlike strcmp(), this function can handle NULL argument(s). A - // NULL C string is considered different to any non-NULL C string, - // including the empty string. - static bool CStringEquals(const char* lhs, const char* rhs); - - // Converts a wide C string to a String using the UTF-8 encoding. - // NULL will be converted to "(null)". If an error occurred during - // the conversion, "(failed to convert from wide string)" is - // returned. - static String ShowWideCString(const wchar_t* wide_c_str); - - // Similar to ShowWideCString(), except that this function encloses - // the converted string in double quotes. - static String ShowWideCStringQuoted(const wchar_t* wide_c_str); - - // Compares two wide C strings. Returns true iff they have the same - // content. - // - // Unlike wcscmp(), this function can handle NULL argument(s). A - // NULL C string is considered different to any non-NULL C string, - // including the empty string. - static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); - - // Compares two C strings, ignoring case. Returns true iff they - // have the same content. - // - // Unlike strcasecmp(), this function can handle NULL argument(s). - // A NULL C string is considered different to any non-NULL C string, - // including the empty string. - static bool CaseInsensitiveCStringEquals(const char* lhs, - const char* rhs); - - // Compares two wide C strings, ignoring case. Returns true iff they - // have the same content. - // - // Unlike wcscasecmp(), this function can handle NULL argument(s). - // A NULL C string is considered different to any non-NULL wide C string, - // including the empty string. - // NB: The implementations on different platforms slightly differ. - // On windows, this method uses _wcsicmp which compares according to LC_CTYPE - // environment variable. On GNU platform this method uses wcscasecmp - // which compares according to LC_CTYPE category of the current locale. - // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the - // current locale. - static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, - const wchar_t* rhs); - - // Formats a list of arguments to a String, using the same format - // spec string as for printf. - // - // We do not use the StringPrintf class as it is not universally - // available. - // - // The result is limited to 4096 characters (including the tailing - // 0). If 4096 characters are not enough to format the input, - // "" is returned. - static String Format(const char* format, ...); - - // C'tors - - // The default c'tor constructs a NULL string. - String() : c_str_(NULL), length_(0) {} - - // Constructs a String by cloning a 0-terminated C string. - String(const char* a_c_str) { // NOLINT - if (a_c_str == NULL) { - c_str_ = NULL; - length_ = 0; - } else { - ConstructNonNull(a_c_str, strlen(a_c_str)); - } - } - - // Constructs a String by copying a given number of chars from a - // buffer. E.g. String("hello", 3) creates the string "hel", - // String("a\0bcd", 4) creates "a\0bc", String(NULL, 0) creates "", - // and String(NULL, 1) results in access violation. - String(const char* buffer, size_t a_length) { - ConstructNonNull(buffer, a_length); - } - - // The copy c'tor creates a new copy of the string. The two - // String objects do not share content. - String(const String& str) : c_str_(NULL), length_(0) { *this = str; } - - // D'tor. String is intended to be a final class, so the d'tor - // doesn't need to be virtual. - ~String() { delete[] c_str_; } - - // Allows a String to be implicitly converted to an ::std::string or - // ::string, and vice versa. Converting a String containing a NULL - // pointer to ::std::string or ::string is undefined behavior. - // Converting a ::std::string or ::string containing an embedded NUL - // character to a String will result in the prefix up to the first - // NUL character. - String(const ::std::string& str) { - ConstructNonNull(str.c_str(), str.length()); - } - - operator ::std::string() const { return ::std::string(c_str(), length()); } - -#if GTEST_HAS_GLOBAL_STRING - String(const ::string& str) { - ConstructNonNull(str.c_str(), str.length()); - } - - operator ::string() const { return ::string(c_str(), length()); } -#endif // GTEST_HAS_GLOBAL_STRING - - // Returns true iff this is an empty string (i.e. ""). - bool empty() const { return (c_str() != NULL) && (length() == 0); } - - // Compares this with another String. - // Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0 - // if this is greater than rhs. - int Compare(const String& rhs) const; - - // Returns true iff this String equals the given C string. A NULL - // string and a non-NULL string are considered not equal. - bool operator==(const char* a_c_str) const { return Compare(a_c_str) == 0; } - - // Returns true iff this String is less than the given String. A - // NULL string is considered less than "". - bool operator<(const String& rhs) const { return Compare(rhs) < 0; } - - // Returns true iff this String doesn't equal the given C string. A NULL - // string and a non-NULL string are considered not equal. - bool operator!=(const char* a_c_str) const { return !(*this == a_c_str); } - - // Returns true iff this String ends with the given suffix. *Any* - // String is considered to end with a NULL or empty suffix. - bool EndsWith(const char* suffix) const; - - // Returns true iff this String ends with the given suffix, not considering - // case. Any String is considered to end with a NULL or empty suffix. - bool EndsWithCaseInsensitive(const char* suffix) const; - - // Returns the length of the encapsulated string, or 0 if the - // string is NULL. - size_t length() const { return length_; } - - // Gets the 0-terminated C string this String object represents. - // The String object still owns the string. Therefore the caller - // should NOT delete the return value. - const char* c_str() const { return c_str_; } - - // Assigns a C string to this object. Self-assignment works. - const String& operator=(const char* a_c_str) { - return *this = String(a_c_str); - } - - // Assigns a String object to this object. Self-assignment works. - const String& operator=(const String& rhs) { - if (this != &rhs) { - delete[] c_str_; - if (rhs.c_str() == NULL) { - c_str_ = NULL; - length_ = 0; - } else { - ConstructNonNull(rhs.c_str(), rhs.length()); - } - } - - return *this; - } - - private: - // Constructs a non-NULL String from the given content. This - // function can only be called when c_str_ has not been allocated. - // ConstructNonNull(NULL, 0) results in an empty string (""). - // ConstructNonNull(NULL, non_zero) is undefined behavior. - void ConstructNonNull(const char* buffer, size_t a_length) { - char* const str = new char[a_length + 1]; - memcpy(str, buffer, a_length); - str[a_length] = '\0'; - c_str_ = str; - length_ = a_length; - } - - const char* c_str_; - size_t length_; -}; // class String - -// Streams a String to an ostream. Each '\0' character in the String -// is replaced with "\\0". -inline ::std::ostream& operator<<(::std::ostream& os, const String& str) { - if (str.c_str() == NULL) { - os << "(null)"; - } else { - const char* const c_str = str.c_str(); - for (size_t i = 0; i != str.length(); i++) { - if (c_str[i] == '\0') { - os << "\\0"; - } else { - os << c_str[i]; - } - } - } - return os; -} - -// Gets the content of the stringstream's buffer as a String. Each '\0' -// character in the buffer is replaced with "\\0". -GTEST_API_ String StringStreamToString(::std::stringstream* stream); - -// Converts a streamable value to a String. A NULL pointer is -// converted to "(null)". When the input value is a ::string, -// ::std::string, ::wstring, or ::std::wstring object, each NUL -// character in it is replaced with "\\0". - -// Declared here but defined in gtest.h, so that it has access -// to the definition of the Message class, required by the ARM -// compiler. -template -String StreamableToString(const T& streamable); - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: keith.ray@gmail.com (Keith Ray) -// -// Google Test filepath utilities -// -// This header file declares classes and functions used internally by -// Google Test. They are subject to change without notice. -// -// This file is #included in . -// Do not include this header file separately! - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ - - -namespace testing { -namespace internal { - -// FilePath - a class for file and directory pathname manipulation which -// handles platform-specific conventions (like the pathname separator). -// Used for helper functions for naming files in a directory for xml output. -// Except for Set methods, all methods are const or static, which provides an -// "immutable value object" -- useful for peace of mind. -// A FilePath with a value ending in a path separator ("like/this/") represents -// a directory, otherwise it is assumed to represent a file. In either case, -// it may or may not represent an actual file or directory in the file system. -// Names are NOT checked for syntax correctness -- no checking for illegal -// characters, malformed paths, etc. - -class GTEST_API_ FilePath { - public: - FilePath() : pathname_("") { } - FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { } - - explicit FilePath(const char* pathname) : pathname_(pathname) { - Normalize(); - } - - explicit FilePath(const String& pathname) : pathname_(pathname) { - Normalize(); - } - - FilePath& operator=(const FilePath& rhs) { - Set(rhs); - return *this; - } - - void Set(const FilePath& rhs) { - pathname_ = rhs.pathname_; - } - - String ToString() const { return pathname_; } - const char* c_str() const { return pathname_.c_str(); } - - // Returns the current working directory, or "" if unsuccessful. - static FilePath GetCurrentDir(); - - // Given directory = "dir", base_name = "test", number = 0, - // extension = "xml", returns "dir/test.xml". If number is greater - // than zero (e.g., 12), returns "dir/test_12.xml". - // On Windows platform, uses \ as the separator rather than /. - static FilePath MakeFileName(const FilePath& directory, - const FilePath& base_name, - int number, - const char* extension); - - // Given directory = "dir", relative_path = "test.xml", - // returns "dir/test.xml". - // On Windows, uses \ as the separator rather than /. - static FilePath ConcatPaths(const FilePath& directory, - const FilePath& relative_path); - - // Returns a pathname for a file that does not currently exist. The pathname - // will be directory/base_name.extension or - // directory/base_name_.extension if directory/base_name.extension - // already exists. The number will be incremented until a pathname is found - // that does not already exist. - // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. - // There could be a race condition if two or more processes are calling this - // function at the same time -- they could both pick the same filename. - static FilePath GenerateUniqueFileName(const FilePath& directory, - const FilePath& base_name, - const char* extension); - - // Returns true iff the path is NULL or "". - bool IsEmpty() const { return c_str() == NULL || *c_str() == '\0'; } - - // If input name has a trailing separator character, removes it and returns - // the name, otherwise return the name string unmodified. - // On Windows platform, uses \ as the separator, other platforms use /. - FilePath RemoveTrailingPathSeparator() const; - - // Returns a copy of the FilePath with the directory part removed. - // Example: FilePath("path/to/file").RemoveDirectoryName() returns - // FilePath("file"). If there is no directory part ("just_a_file"), it returns - // the FilePath unmodified. If there is no file part ("just_a_dir/") it - // returns an empty FilePath (""). - // On Windows platform, '\' is the path separator, otherwise it is '/'. - FilePath RemoveDirectoryName() const; - - // RemoveFileName returns the directory path with the filename removed. - // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". - // If the FilePath is "a_file" or "/a_file", RemoveFileName returns - // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does - // not have a file, like "just/a/dir/", it returns the FilePath unmodified. - // On Windows platform, '\' is the path separator, otherwise it is '/'. - FilePath RemoveFileName() const; - - // Returns a copy of the FilePath with the case-insensitive extension removed. - // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns - // FilePath("dir/file"). If a case-insensitive extension is not - // found, returns a copy of the original FilePath. - FilePath RemoveExtension(const char* extension) const; - - // Creates directories so that path exists. Returns true if successful or if - // the directories already exist; returns false if unable to create - // directories for any reason. Will also return false if the FilePath does - // not represent a directory (that is, it doesn't end with a path separator). - bool CreateDirectoriesRecursively() const; - - // Create the directory so that path exists. Returns true if successful or - // if the directory already exists; returns false if unable to create the - // directory for any reason, including if the parent directory does not - // exist. Not named "CreateDirectory" because that's a macro on Windows. - bool CreateFolder() const; - - // Returns true if FilePath describes something in the file-system, - // either a file, directory, or whatever, and that something exists. - bool FileOrDirectoryExists() const; - - // Returns true if pathname describes a directory in the file-system - // that exists. - bool DirectoryExists() const; - - // Returns true if FilePath ends with a path separator, which indicates that - // it is intended to represent a directory. Returns false otherwise. - // This does NOT check that a directory (or file) actually exists. - bool IsDirectory() const; - - // Returns true if pathname describes a root directory. (Windows has one - // root directory per disk drive.) - bool IsRootDirectory() const; - - // Returns true if pathname describes an absolute path. - bool IsAbsolutePath() const; - - private: - // Replaces multiple consecutive separators with a single separator. - // For example, "bar///foo" becomes "bar/foo". Does not eliminate other - // redundancies that might be in a pathname involving "." or "..". - // - // A pathname with multiple consecutive separators may occur either through - // user error or as a result of some scripts or APIs that generate a pathname - // with a trailing separator. On other platforms the same API or script - // may NOT generate a pathname with a trailing "/". Then elsewhere that - // pathname may have another "/" and pathname components added to it, - // without checking for the separator already being there. - // The script language and operating system may allow paths like "foo//bar" - // but some of the functions in FilePath will not handle that correctly. In - // particular, RemoveTrailingPathSeparator() only removes one separator, and - // it is called in CreateDirectoriesRecursively() assuming that it will change - // a pathname from directory syntax (trailing separator) to filename syntax. - // - // On Windows this method also replaces the alternate path separator '/' with - // the primary path separator '\\', so that for example "bar\\/\\foo" becomes - // "bar\\foo". - - void Normalize(); - - // Returns a pointer to the last occurence of a valid path separator in - // the FilePath. On Windows, for example, both '/' and '\' are valid path - // separators. Returns NULL if no path separator was found. - const char* FindLastPathSeparator() const; - - String pathname_; -}; // class FilePath - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ -// This file was GENERATED by command: -// pump.py gtest-type-util.h.pump -// DO NOT EDIT BY HAND!!! - -// Copyright 2008 Google Inc. -// All Rights Reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - -// Type utilities needed for implementing typed and type-parameterized -// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND! -// -// Currently we support at most 50 types in a list, and at most 50 -// type-parameterized tests in one type-parameterized test case. -// Please contact googletestframework@googlegroups.com if you need -// more. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ - - -// #ifdef __GNUC__ is too general here. It is possible to use gcc without using -// libstdc++ (which is where cxxabi.h comes from). -# ifdef __GLIBCXX__ -# include -# elif defined(__HP_aCC) -# include -# endif // __GLIBCXX__ - -namespace testing { -namespace internal { - -// GetTypeName() returns a human-readable name of type T. -// NB: This function is also used in Google Mock, so don't move it inside of -// the typed-test-only section below. -template -String GetTypeName() { -# if GTEST_HAS_RTTI - - const char* const name = typeid(T).name(); -# if defined(__GLIBCXX__) || defined(__HP_aCC) - int status = 0; - // gcc's implementation of typeid(T).name() mangles the type name, - // so we have to demangle it. -# ifdef __GLIBCXX__ - using abi::__cxa_demangle; -# endif // __GLIBCXX__ - char* const readable_name = __cxa_demangle(name, 0, 0, &status); - const String name_str(status == 0 ? readable_name : name); - free(readable_name); - return name_str; -# else - return name; -# endif // __GLIBCXX__ || __HP_aCC - -# else - - return ""; - -# endif // GTEST_HAS_RTTI -} - -#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P - -// AssertyTypeEq::type is defined iff T1 and T2 are the same -// type. This can be used as a compile-time assertion to ensure that -// two types are equal. - -template -struct AssertTypeEq; - -template -struct AssertTypeEq { - typedef bool type; -}; - -// A unique type used as the default value for the arguments of class -// template Types. This allows us to simulate variadic templates -// (e.g. Types, Type, and etc), which C++ doesn't -// support directly. -struct None {}; - -// The following family of struct and struct templates are used to -// represent type lists. In particular, TypesN -// represents a type list with N types (T1, T2, ..., and TN) in it. -// Except for Types0, every struct in the family has two member types: -// Head for the first type in the list, and Tail for the rest of the -// list. - -// The empty type list. -struct Types0 {}; - -// Type lists of length 1, 2, 3, and so on. - -template -struct Types1 { - typedef T1 Head; - typedef Types0 Tail; -}; -template -struct Types2 { - typedef T1 Head; - typedef Types1 Tail; -}; - -template -struct Types3 { - typedef T1 Head; - typedef Types2 Tail; -}; - -template -struct Types4 { - typedef T1 Head; - typedef Types3 Tail; -}; - -template -struct Types5 { - typedef T1 Head; - typedef Types4 Tail; -}; - -template -struct Types6 { - typedef T1 Head; - typedef Types5 Tail; -}; - -template -struct Types7 { - typedef T1 Head; - typedef Types6 Tail; -}; - -template -struct Types8 { - typedef T1 Head; - typedef Types7 Tail; -}; - -template -struct Types9 { - typedef T1 Head; - typedef Types8 Tail; -}; - -template -struct Types10 { - typedef T1 Head; - typedef Types9 Tail; -}; - -template -struct Types11 { - typedef T1 Head; - typedef Types10 Tail; -}; - -template -struct Types12 { - typedef T1 Head; - typedef Types11 Tail; -}; - -template -struct Types13 { - typedef T1 Head; - typedef Types12 Tail; -}; - -template -struct Types14 { - typedef T1 Head; - typedef Types13 Tail; -}; - -template -struct Types15 { - typedef T1 Head; - typedef Types14 Tail; -}; - -template -struct Types16 { - typedef T1 Head; - typedef Types15 Tail; -}; - -template -struct Types17 { - typedef T1 Head; - typedef Types16 Tail; -}; - -template -struct Types18 { - typedef T1 Head; - typedef Types17 Tail; -}; - -template -struct Types19 { - typedef T1 Head; - typedef Types18 Tail; -}; - -template -struct Types20 { - typedef T1 Head; - typedef Types19 Tail; -}; - -template -struct Types21 { - typedef T1 Head; - typedef Types20 Tail; -}; - -template -struct Types22 { - typedef T1 Head; - typedef Types21 Tail; -}; - -template -struct Types23 { - typedef T1 Head; - typedef Types22 Tail; -}; - -template -struct Types24 { - typedef T1 Head; - typedef Types23 Tail; -}; - -template -struct Types25 { - typedef T1 Head; - typedef Types24 Tail; -}; - -template -struct Types26 { - typedef T1 Head; - typedef Types25 Tail; -}; - -template -struct Types27 { - typedef T1 Head; - typedef Types26 Tail; -}; - -template -struct Types28 { - typedef T1 Head; - typedef Types27 Tail; -}; - -template -struct Types29 { - typedef T1 Head; - typedef Types28 Tail; -}; - -template -struct Types30 { - typedef T1 Head; - typedef Types29 Tail; -}; - -template -struct Types31 { - typedef T1 Head; - typedef Types30 Tail; -}; - -template -struct Types32 { - typedef T1 Head; - typedef Types31 Tail; -}; - -template -struct Types33 { - typedef T1 Head; - typedef Types32 Tail; -}; - -template -struct Types34 { - typedef T1 Head; - typedef Types33 Tail; -}; - -template -struct Types35 { - typedef T1 Head; - typedef Types34 Tail; -}; - -template -struct Types36 { - typedef T1 Head; - typedef Types35 Tail; -}; - -template -struct Types37 { - typedef T1 Head; - typedef Types36 Tail; -}; - -template -struct Types38 { - typedef T1 Head; - typedef Types37 Tail; -}; - -template -struct Types39 { - typedef T1 Head; - typedef Types38 Tail; -}; - -template -struct Types40 { - typedef T1 Head; - typedef Types39 Tail; -}; - -template -struct Types41 { - typedef T1 Head; - typedef Types40 Tail; -}; - -template -struct Types42 { - typedef T1 Head; - typedef Types41 Tail; -}; - -template -struct Types43 { - typedef T1 Head; - typedef Types42 Tail; -}; - -template -struct Types44 { - typedef T1 Head; - typedef Types43 Tail; -}; - -template -struct Types45 { - typedef T1 Head; - typedef Types44 Tail; -}; - -template -struct Types46 { - typedef T1 Head; - typedef Types45 Tail; -}; - -template -struct Types47 { - typedef T1 Head; - typedef Types46 Tail; -}; - -template -struct Types48 { - typedef T1 Head; - typedef Types47 Tail; -}; - -template -struct Types49 { - typedef T1 Head; - typedef Types48 Tail; -}; - -template -struct Types50 { - typedef T1 Head; - typedef Types49 Tail; -}; - - -} // namespace internal - -// We don't want to require the users to write TypesN<...> directly, -// as that would require them to count the length. Types<...> is much -// easier to write, but generates horrible messages when there is a -// compiler error, as gcc insists on printing out each template -// argument, even if it has the default value (this means Types -// will appear as Types in the compiler -// errors). -// -// Our solution is to combine the best part of the two approaches: a -// user would write Types, and Google Test will translate -// that to TypesN internally to make error messages -// readable. The translation is done by the 'type' member of the -// Types template. -template -struct Types { - typedef internal::Types50 type; -}; - -template <> -struct Types { - typedef internal::Types0 type; -}; -template -struct Types { - typedef internal::Types1 type; -}; -template -struct Types { - typedef internal::Types2 type; -}; -template -struct Types { - typedef internal::Types3 type; -}; -template -struct Types { - typedef internal::Types4 type; -}; -template -struct Types { - typedef internal::Types5 type; -}; -template -struct Types { - typedef internal::Types6 type; -}; -template -struct Types { - typedef internal::Types7 type; -}; -template -struct Types { - typedef internal::Types8 type; -}; -template -struct Types { - typedef internal::Types9 type; -}; -template -struct Types { - typedef internal::Types10 type; -}; -template -struct Types { - typedef internal::Types11 type; -}; -template -struct Types { - typedef internal::Types12 type; -}; -template -struct Types { - typedef internal::Types13 type; -}; -template -struct Types { - typedef internal::Types14 type; -}; -template -struct Types { - typedef internal::Types15 type; -}; -template -struct Types { - typedef internal::Types16 type; -}; -template -struct Types { - typedef internal::Types17 type; -}; -template -struct Types { - typedef internal::Types18 type; -}; -template -struct Types { - typedef internal::Types19 type; -}; -template -struct Types { - typedef internal::Types20 type; -}; -template -struct Types { - typedef internal::Types21 type; -}; -template -struct Types { - typedef internal::Types22 type; -}; -template -struct Types { - typedef internal::Types23 type; -}; -template -struct Types { - typedef internal::Types24 type; -}; -template -struct Types { - typedef internal::Types25 type; -}; -template -struct Types { - typedef internal::Types26 type; -}; -template -struct Types { - typedef internal::Types27 type; -}; -template -struct Types { - typedef internal::Types28 type; -}; -template -struct Types { - typedef internal::Types29 type; -}; -template -struct Types { - typedef internal::Types30 type; -}; -template -struct Types { - typedef internal::Types31 type; -}; -template -struct Types { - typedef internal::Types32 type; -}; -template -struct Types { - typedef internal::Types33 type; -}; -template -struct Types { - typedef internal::Types34 type; -}; -template -struct Types { - typedef internal::Types35 type; -}; -template -struct Types { - typedef internal::Types36 type; -}; -template -struct Types { - typedef internal::Types37 type; -}; -template -struct Types { - typedef internal::Types38 type; -}; -template -struct Types { - typedef internal::Types39 type; -}; -template -struct Types { - typedef internal::Types40 type; -}; -template -struct Types { - typedef internal::Types41 type; -}; -template -struct Types { - typedef internal::Types42 type; -}; -template -struct Types { - typedef internal::Types43 type; -}; -template -struct Types { - typedef internal::Types44 type; -}; -template -struct Types { - typedef internal::Types45 type; -}; -template -struct Types { - typedef internal::Types46 type; -}; -template -struct Types { - typedef internal::Types47 type; -}; -template -struct Types { - typedef internal::Types48 type; -}; -template -struct Types { - typedef internal::Types49 type; -}; - -namespace internal { - -# define GTEST_TEMPLATE_ template class - -// The template "selector" struct TemplateSel is used to -// represent Tmpl, which must be a class template with one type -// parameter, as a type. TemplateSel::Bind::type is defined -// as the type Tmpl. This allows us to actually instantiate the -// template "selected" by TemplateSel. -// -// This trick is necessary for simulating typedef for class templates, -// which C++ doesn't support directly. -template -struct TemplateSel { - template - struct Bind { - typedef Tmpl type; - }; -}; - -# define GTEST_BIND_(TmplSel, T) \ - TmplSel::template Bind::type - -// A unique struct template used as the default value for the -// arguments of class template Templates. This allows us to simulate -// variadic templates (e.g. Templates, Templates, -// and etc), which C++ doesn't support directly. -template -struct NoneT {}; - -// The following family of struct and struct templates are used to -// represent template lists. In particular, TemplatesN represents a list of N templates (T1, T2, ..., and TN). Except -// for Templates0, every struct in the family has two member types: -// Head for the selector of the first template in the list, and Tail -// for the rest of the list. - -// The empty template list. -struct Templates0 {}; - -// Template lists of length 1, 2, 3, and so on. - -template -struct Templates1 { - typedef TemplateSel Head; - typedef Templates0 Tail; -}; -template -struct Templates2 { - typedef TemplateSel Head; - typedef Templates1 Tail; -}; - -template -struct Templates3 { - typedef TemplateSel Head; - typedef Templates2 Tail; -}; - -template -struct Templates4 { - typedef TemplateSel Head; - typedef Templates3 Tail; -}; - -template -struct Templates5 { - typedef TemplateSel Head; - typedef Templates4 Tail; -}; - -template -struct Templates6 { - typedef TemplateSel Head; - typedef Templates5 Tail; -}; - -template -struct Templates7 { - typedef TemplateSel Head; - typedef Templates6 Tail; -}; - -template -struct Templates8 { - typedef TemplateSel Head; - typedef Templates7 Tail; -}; - -template -struct Templates9 { - typedef TemplateSel Head; - typedef Templates8 Tail; -}; - -template -struct Templates10 { - typedef TemplateSel Head; - typedef Templates9 Tail; -}; - -template -struct Templates11 { - typedef TemplateSel Head; - typedef Templates10 Tail; -}; - -template -struct Templates12 { - typedef TemplateSel Head; - typedef Templates11 Tail; -}; - -template -struct Templates13 { - typedef TemplateSel Head; - typedef Templates12 Tail; -}; - -template -struct Templates14 { - typedef TemplateSel Head; - typedef Templates13 Tail; -}; - -template -struct Templates15 { - typedef TemplateSel Head; - typedef Templates14 Tail; -}; - -template -struct Templates16 { - typedef TemplateSel Head; - typedef Templates15 Tail; -}; - -template -struct Templates17 { - typedef TemplateSel Head; - typedef Templates16 Tail; -}; - -template -struct Templates18 { - typedef TemplateSel Head; - typedef Templates17 Tail; -}; - -template -struct Templates19 { - typedef TemplateSel Head; - typedef Templates18 Tail; -}; - -template -struct Templates20 { - typedef TemplateSel Head; - typedef Templates19 Tail; -}; - -template -struct Templates21 { - typedef TemplateSel Head; - typedef Templates20 Tail; -}; - -template -struct Templates22 { - typedef TemplateSel Head; - typedef Templates21 Tail; -}; - -template -struct Templates23 { - typedef TemplateSel Head; - typedef Templates22 Tail; -}; - -template -struct Templates24 { - typedef TemplateSel Head; - typedef Templates23 Tail; -}; - -template -struct Templates25 { - typedef TemplateSel Head; - typedef Templates24 Tail; -}; - -template -struct Templates26 { - typedef TemplateSel Head; - typedef Templates25 Tail; -}; - -template -struct Templates27 { - typedef TemplateSel Head; - typedef Templates26 Tail; -}; - -template -struct Templates28 { - typedef TemplateSel Head; - typedef Templates27 Tail; -}; - -template -struct Templates29 { - typedef TemplateSel Head; - typedef Templates28 Tail; -}; - -template -struct Templates30 { - typedef TemplateSel Head; - typedef Templates29 Tail; -}; - -template -struct Templates31 { - typedef TemplateSel Head; - typedef Templates30 Tail; -}; - -template -struct Templates32 { - typedef TemplateSel Head; - typedef Templates31 Tail; -}; - -template -struct Templates33 { - typedef TemplateSel Head; - typedef Templates32 Tail; -}; - -template -struct Templates34 { - typedef TemplateSel Head; - typedef Templates33 Tail; -}; - -template -struct Templates35 { - typedef TemplateSel Head; - typedef Templates34 Tail; -}; - -template -struct Templates36 { - typedef TemplateSel Head; - typedef Templates35 Tail; -}; - -template -struct Templates37 { - typedef TemplateSel Head; - typedef Templates36 Tail; -}; - -template -struct Templates38 { - typedef TemplateSel Head; - typedef Templates37 Tail; -}; - -template -struct Templates39 { - typedef TemplateSel Head; - typedef Templates38 Tail; -}; - -template -struct Templates40 { - typedef TemplateSel Head; - typedef Templates39 Tail; -}; - -template -struct Templates41 { - typedef TemplateSel Head; - typedef Templates40 Tail; -}; - -template -struct Templates42 { - typedef TemplateSel Head; - typedef Templates41 Tail; -}; - -template -struct Templates43 { - typedef TemplateSel Head; - typedef Templates42 Tail; -}; - -template -struct Templates44 { - typedef TemplateSel Head; - typedef Templates43 Tail; -}; - -template -struct Templates45 { - typedef TemplateSel Head; - typedef Templates44 Tail; -}; - -template -struct Templates46 { - typedef TemplateSel Head; - typedef Templates45 Tail; -}; - -template -struct Templates47 { - typedef TemplateSel Head; - typedef Templates46 Tail; -}; - -template -struct Templates48 { - typedef TemplateSel Head; - typedef Templates47 Tail; -}; - -template -struct Templates49 { - typedef TemplateSel Head; - typedef Templates48 Tail; -}; - -template -struct Templates50 { - typedef TemplateSel Head; - typedef Templates49 Tail; -}; - - -// We don't want to require the users to write TemplatesN<...> directly, -// as that would require them to count the length. Templates<...> is much -// easier to write, but generates horrible messages when there is a -// compiler error, as gcc insists on printing out each template -// argument, even if it has the default value (this means Templates -// will appear as Templates in the compiler -// errors). -// -// Our solution is to combine the best part of the two approaches: a -// user would write Templates, and Google Test will translate -// that to TemplatesN internally to make error messages -// readable. The translation is done by the 'type' member of the -// Templates template. -template -struct Templates { - typedef Templates50 type; -}; - -template <> -struct Templates { - typedef Templates0 type; -}; -template -struct Templates { - typedef Templates1 type; -}; -template -struct Templates { - typedef Templates2 type; -}; -template -struct Templates { - typedef Templates3 type; -}; -template -struct Templates { - typedef Templates4 type; -}; -template -struct Templates { - typedef Templates5 type; -}; -template -struct Templates { - typedef Templates6 type; -}; -template -struct Templates { - typedef Templates7 type; -}; -template -struct Templates { - typedef Templates8 type; -}; -template -struct Templates { - typedef Templates9 type; -}; -template -struct Templates { - typedef Templates10 type; -}; -template -struct Templates { - typedef Templates11 type; -}; -template -struct Templates { - typedef Templates12 type; -}; -template -struct Templates { - typedef Templates13 type; -}; -template -struct Templates { - typedef Templates14 type; -}; -template -struct Templates { - typedef Templates15 type; -}; -template -struct Templates { - typedef Templates16 type; -}; -template -struct Templates { - typedef Templates17 type; -}; -template -struct Templates { - typedef Templates18 type; -}; -template -struct Templates { - typedef Templates19 type; -}; -template -struct Templates { - typedef Templates20 type; -}; -template -struct Templates { - typedef Templates21 type; -}; -template -struct Templates { - typedef Templates22 type; -}; -template -struct Templates { - typedef Templates23 type; -}; -template -struct Templates { - typedef Templates24 type; -}; -template -struct Templates { - typedef Templates25 type; -}; -template -struct Templates { - typedef Templates26 type; -}; -template -struct Templates { - typedef Templates27 type; -}; -template -struct Templates { - typedef Templates28 type; -}; -template -struct Templates { - typedef Templates29 type; -}; -template -struct Templates { - typedef Templates30 type; -}; -template -struct Templates { - typedef Templates31 type; -}; -template -struct Templates { - typedef Templates32 type; -}; -template -struct Templates { - typedef Templates33 type; -}; -template -struct Templates { - typedef Templates34 type; -}; -template -struct Templates { - typedef Templates35 type; -}; -template -struct Templates { - typedef Templates36 type; -}; -template -struct Templates { - typedef Templates37 type; -}; -template -struct Templates { - typedef Templates38 type; -}; -template -struct Templates { - typedef Templates39 type; -}; -template -struct Templates { - typedef Templates40 type; -}; -template -struct Templates { - typedef Templates41 type; -}; -template -struct Templates { - typedef Templates42 type; -}; -template -struct Templates { - typedef Templates43 type; -}; -template -struct Templates { - typedef Templates44 type; -}; -template -struct Templates { - typedef Templates45 type; -}; -template -struct Templates { - typedef Templates46 type; -}; -template -struct Templates { - typedef Templates47 type; -}; -template -struct Templates { - typedef Templates48 type; -}; -template -struct Templates { - typedef Templates49 type; -}; - -// The TypeList template makes it possible to use either a single type -// or a Types<...> list in TYPED_TEST_CASE() and -// INSTANTIATE_TYPED_TEST_CASE_P(). - -template -struct TypeList { typedef Types1 type; }; - -template -struct TypeList > { - typedef typename Types::type type; -}; - -#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ - -// Due to C++ preprocessor weirdness, we need double indirection to -// concatenate two tokens when one of them is __LINE__. Writing -// -// foo ## __LINE__ -// -// will result in the token foo__LINE__, instead of foo followed by -// the current line number. For more details, see -// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6 -#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar) -#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar - -// Google Test defines the testing::Message class to allow construction of -// test messages via the << operator. The idea is that anything -// streamable to std::ostream can be streamed to a testing::Message. -// This allows a user to use his own types in Google Test assertions by -// overloading the << operator. -// -// util/gtl/stl_logging-inl.h overloads << for STL containers. These -// overloads cannot be defined in the std namespace, as that will be -// undefined behavior. Therefore, they are defined in the global -// namespace instead. -// -// C++'s symbol lookup rule (i.e. Koenig lookup) says that these -// overloads are visible in either the std namespace or the global -// namespace, but not other namespaces, including the testing -// namespace which Google Test's Message class is in. -// -// To allow STL containers (and other types that has a << operator -// defined in the global namespace) to be used in Google Test assertions, -// testing::Message must access the custom << operator from the global -// namespace. Hence this helper function. -// -// Note: Jeffrey Yasskin suggested an alternative fix by "using -// ::operator<<;" in the definition of Message's operator<<. That fix -// doesn't require a helper function, but unfortunately doesn't -// compile with MSVC. -template -inline void GTestStreamToHelper(std::ostream* os, const T& val) { - *os << val; -} - -class ProtocolMessage; -namespace proto2 { class Message; } - -namespace testing { - -// Forward declarations. - -class AssertionResult; // Result of an assertion. -class Message; // Represents a failure message. -class Test; // Represents a test. -class TestInfo; // Information about a test. -class TestPartResult; // Result of a test part. -class UnitTest; // A collection of test cases. - -template -::std::string PrintToString(const T& value); - -namespace internal { - -struct TraceInfo; // Information about a trace point. -class ScopedTrace; // Implements scoped trace. -class TestInfoImpl; // Opaque implementation of TestInfo -class UnitTestImpl; // Opaque implementation of UnitTest - -// How many times InitGoogleTest() has been called. -extern int g_init_gtest_count; - -// The text used in failure messages to indicate the start of the -// stack trace. -GTEST_API_ extern const char kStackTraceMarker[]; - -// A secret type that Google Test users don't know about. It has no -// definition on purpose. Therefore it's impossible to create a -// Secret object, which is what we want. -class Secret; - -// Two overloaded helpers for checking at compile time whether an -// expression is a null pointer literal (i.e. NULL or any 0-valued -// compile-time integral constant). Their return values have -// different sizes, so we can use sizeof() to test which version is -// picked by the compiler. These helpers have no implementations, as -// we only need their signatures. -// -// Given IsNullLiteralHelper(x), the compiler will pick the first -// version if x can be implicitly converted to Secret*, and pick the -// second version otherwise. Since Secret is a secret and incomplete -// type, the only expression a user can write that has type Secret* is -// a null pointer literal. Therefore, we know that x is a null -// pointer literal if and only if the first version is picked by the -// compiler. -char IsNullLiteralHelper(Secret* p); -char (&IsNullLiteralHelper(...))[2]; // NOLINT - -// A compile-time bool constant that is true if and only if x is a -// null pointer literal (i.e. NULL or any 0-valued compile-time -// integral constant). -#ifdef GTEST_ELLIPSIS_NEEDS_POD_ -// We lose support for NULL detection where the compiler doesn't like -// passing non-POD classes through ellipsis (...). -# define GTEST_IS_NULL_LITERAL_(x) false -#else -# define GTEST_IS_NULL_LITERAL_(x) \ - (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1) -#endif // GTEST_ELLIPSIS_NEEDS_POD_ - -// Appends the user-supplied message to the Google-Test-generated message. -GTEST_API_ String AppendUserMessage(const String& gtest_msg, - const Message& user_msg); - -// A helper class for creating scoped traces in user programs. -class GTEST_API_ ScopedTrace { - public: - // The c'tor pushes the given source file location and message onto - // a trace stack maintained by Google Test. - ScopedTrace(const char* file, int line, const Message& message); - - // The d'tor pops the info pushed by the c'tor. - // - // Note that the d'tor is not virtual in order to be efficient. - // Don't inherit from ScopedTrace! - ~ScopedTrace(); - - private: - GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace); -} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its - // c'tor and d'tor. Therefore it doesn't - // need to be used otherwise. - -// Converts a streamable value to a String. A NULL pointer is -// converted to "(null)". When the input value is a ::string, -// ::std::string, ::wstring, or ::std::wstring object, each NUL -// character in it is replaced with "\\0". -// Declared here but defined in gtest.h, so that it has access -// to the definition of the Message class, required by the ARM -// compiler. -template -String StreamableToString(const T& streamable); - -// The Symbian compiler has a bug that prevents it from selecting the -// correct overload of FormatForComparisonFailureMessage (see below) -// unless we pass the first argument by reference. If we do that, -// however, Visual Age C++ 10.1 generates a compiler error. Therefore -// we only apply the work-around for Symbian. -#if defined(__SYMBIAN32__) -# define GTEST_CREF_WORKAROUND_ const& -#else -# define GTEST_CREF_WORKAROUND_ -#endif - -// When this operand is a const char* or char*, if the other operand -// is a ::std::string or ::string, we print this operand as a C string -// rather than a pointer (we do the same for wide strings); otherwise -// we print it as a pointer to be safe. - -// This internal macro is used to avoid duplicated code. -#define GTEST_FORMAT_IMPL_(operand2_type, operand1_printer)\ -inline String FormatForComparisonFailureMessage(\ - operand2_type::value_type* GTEST_CREF_WORKAROUND_ str, \ - const operand2_type& /*operand2*/) {\ - return operand1_printer(str);\ -}\ -inline String FormatForComparisonFailureMessage(\ - const operand2_type::value_type* GTEST_CREF_WORKAROUND_ str, \ - const operand2_type& /*operand2*/) {\ - return operand1_printer(str);\ -} - -GTEST_FORMAT_IMPL_(::std::string, String::ShowCStringQuoted) -#if GTEST_HAS_STD_WSTRING -GTEST_FORMAT_IMPL_(::std::wstring, String::ShowWideCStringQuoted) -#endif // GTEST_HAS_STD_WSTRING - -#if GTEST_HAS_GLOBAL_STRING -GTEST_FORMAT_IMPL_(::string, String::ShowCStringQuoted) -#endif // GTEST_HAS_GLOBAL_STRING -#if GTEST_HAS_GLOBAL_WSTRING -GTEST_FORMAT_IMPL_(::wstring, String::ShowWideCStringQuoted) -#endif // GTEST_HAS_GLOBAL_WSTRING - -#undef GTEST_FORMAT_IMPL_ - -// The next four overloads handle the case where the operand being -// printed is a char/wchar_t pointer and the other operand is not a -// string/wstring object. In such cases, we just print the operand as -// a pointer to be safe. -#define GTEST_FORMAT_CHAR_PTR_IMPL_(CharType) \ - template \ - String FormatForComparisonFailureMessage(CharType* GTEST_CREF_WORKAROUND_ p, \ - const T&) { \ - return PrintToString(static_cast(p)); \ - } - -GTEST_FORMAT_CHAR_PTR_IMPL_(char) -GTEST_FORMAT_CHAR_PTR_IMPL_(const char) -GTEST_FORMAT_CHAR_PTR_IMPL_(wchar_t) -GTEST_FORMAT_CHAR_PTR_IMPL_(const wchar_t) - -#undef GTEST_FORMAT_CHAR_PTR_IMPL_ - -// Constructs and returns the message for an equality assertion -// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. -// -// The first four parameters are the expressions used in the assertion -// and their values, as strings. For example, for ASSERT_EQ(foo, bar) -// where foo is 5 and bar is 6, we have: -// -// expected_expression: "foo" -// actual_expression: "bar" -// expected_value: "5" -// actual_value: "6" -// -// The ignoring_case parameter is true iff the assertion is a -// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will -// be inserted into the message. -GTEST_API_ AssertionResult EqFailure(const char* expected_expression, - const char* actual_expression, - const String& expected_value, - const String& actual_value, - bool ignoring_case); - -// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. -GTEST_API_ String GetBoolAssertionFailureMessage( - const AssertionResult& assertion_result, - const char* expression_text, - const char* actual_predicate_value, - const char* expected_predicate_value); - -// This template class represents an IEEE floating-point number -// (either single-precision or double-precision, depending on the -// template parameters). -// -// The purpose of this class is to do more sophisticated number -// comparison. (Due to round-off error, etc, it's very unlikely that -// two floating-points will be equal exactly. Hence a naive -// comparison by the == operation often doesn't work.) -// -// Format of IEEE floating-point: -// -// The most-significant bit being the leftmost, an IEEE -// floating-point looks like -// -// sign_bit exponent_bits fraction_bits -// -// Here, sign_bit is a single bit that designates the sign of the -// number. -// -// For float, there are 8 exponent bits and 23 fraction bits. -// -// For double, there are 11 exponent bits and 52 fraction bits. -// -// More details can be found at -// http://en.wikipedia.org/wiki/IEEE_floating-point_standard. -// -// Template parameter: -// -// RawType: the raw floating-point type (either float or double) -template -class FloatingPoint { - public: - // Defines the unsigned integer type that has the same size as the - // floating point number. - typedef typename TypeWithSize::UInt Bits; - - // Constants. - - // # of bits in a number. - static const size_t kBitCount = 8*sizeof(RawType); - - // # of fraction bits in a number. - static const size_t kFractionBitCount = - std::numeric_limits::digits - 1; - - // # of exponent bits in a number. - static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount; - - // The mask for the sign bit. - static const Bits kSignBitMask = static_cast(1) << (kBitCount - 1); - - // The mask for the fraction bits. - static const Bits kFractionBitMask = - ~static_cast(0) >> (kExponentBitCount + 1); - - // The mask for the exponent bits. - static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask); - - // How many ULP's (Units in the Last Place) we want to tolerate when - // comparing two numbers. The larger the value, the more error we - // allow. A 0 value means that two numbers must be exactly the same - // to be considered equal. - // - // The maximum error of a single floating-point operation is 0.5 - // units in the last place. On Intel CPU's, all floating-point - // calculations are done with 80-bit precision, while double has 64 - // bits. Therefore, 4 should be enough for ordinary use. - // - // See the following article for more details on ULP: - // http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm. - static const size_t kMaxUlps = 4; - - // Constructs a FloatingPoint from a raw floating-point number. - // - // On an Intel CPU, passing a non-normalized NAN (Not a Number) - // around may change its bits, although the new value is guaranteed - // to be also a NAN. Therefore, don't expect this constructor to - // preserve the bits in x when x is a NAN. - explicit FloatingPoint(const RawType& x) { u_.value_ = x; } - - // Static methods - - // Reinterprets a bit pattern as a floating-point number. - // - // This function is needed to test the AlmostEquals() method. - static RawType ReinterpretBits(const Bits bits) { - FloatingPoint fp(0); - fp.u_.bits_ = bits; - return fp.u_.value_; - } - - // Returns the floating-point number that represent positive infinity. - static RawType Infinity() { - return ReinterpretBits(kExponentBitMask); - } - - // Non-static methods - - // Returns the bits that represents this number. - const Bits &bits() const { return u_.bits_; } - - // Returns the exponent bits of this number. - Bits exponent_bits() const { return kExponentBitMask & u_.bits_; } - - // Returns the fraction bits of this number. - Bits fraction_bits() const { return kFractionBitMask & u_.bits_; } - - // Returns the sign bit of this number. - Bits sign_bit() const { return kSignBitMask & u_.bits_; } - - // Returns true iff this is NAN (not a number). - bool is_nan() const { - // It's a NAN if the exponent bits are all ones and the fraction - // bits are not entirely zeros. - return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0); - } - - // Returns true iff this number is at most kMaxUlps ULP's away from - // rhs. In particular, this function: - // - // - returns false if either number is (or both are) NAN. - // - treats really large numbers as almost equal to infinity. - // - thinks +0.0 and -0.0 are 0 DLP's apart. - bool AlmostEquals(const FloatingPoint& rhs) const { - // The IEEE standard says that any comparison operation involving - // a NAN must return false. - if (is_nan() || rhs.is_nan()) return false; - - return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) - <= kMaxUlps; - } - - private: - // The data type used to store the actual floating-point number. - union FloatingPointUnion { - RawType value_; // The raw floating-point number. - Bits bits_; // The bits that represent the number. - }; - - // Converts an integer from the sign-and-magnitude representation to - // the biased representation. More precisely, let N be 2 to the - // power of (kBitCount - 1), an integer x is represented by the - // unsigned number x + N. - // - // For instance, - // - // -N + 1 (the most negative number representable using - // sign-and-magnitude) is represented by 1; - // 0 is represented by N; and - // N - 1 (the biggest number representable using - // sign-and-magnitude) is represented by 2N - 1. - // - // Read http://en.wikipedia.org/wiki/Signed_number_representations - // for more details on signed number representations. - static Bits SignAndMagnitudeToBiased(const Bits &sam) { - if (kSignBitMask & sam) { - // sam represents a negative number. - return ~sam + 1; - } else { - // sam represents a positive number. - return kSignBitMask | sam; - } - } - - // Given two numbers in the sign-and-magnitude representation, - // returns the distance between them as an unsigned number. - static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1, - const Bits &sam2) { - const Bits biased1 = SignAndMagnitudeToBiased(sam1); - const Bits biased2 = SignAndMagnitudeToBiased(sam2); - return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1); - } - - FloatingPointUnion u_; -}; - -// Typedefs the instances of the FloatingPoint template class that we -// care to use. -typedef FloatingPoint Float; -typedef FloatingPoint Double; - -// In order to catch the mistake of putting tests that use different -// test fixture classes in the same test case, we need to assign -// unique IDs to fixture classes and compare them. The TypeId type is -// used to hold such IDs. The user should treat TypeId as an opaque -// type: the only operation allowed on TypeId values is to compare -// them for equality using the == operator. -typedef const void* TypeId; - -template -class TypeIdHelper { - public: - // dummy_ must not have a const type. Otherwise an overly eager - // compiler (e.g. MSVC 7.1 & 8.0) may try to merge - // TypeIdHelper::dummy_ for different Ts as an "optimization". - static bool dummy_; -}; - -template -bool TypeIdHelper::dummy_ = false; - -// GetTypeId() returns the ID of type T. Different values will be -// returned for different types. Calling the function twice with the -// same type argument is guaranteed to return the same ID. -template -TypeId GetTypeId() { - // The compiler is required to allocate a different - // TypeIdHelper::dummy_ variable for each T used to instantiate - // the template. Therefore, the address of dummy_ is guaranteed to - // be unique. - return &(TypeIdHelper::dummy_); -} - -// Returns the type ID of ::testing::Test. Always call this instead -// of GetTypeId< ::testing::Test>() to get the type ID of -// ::testing::Test, as the latter may give the wrong result due to a -// suspected linker bug when compiling Google Test as a Mac OS X -// framework. -GTEST_API_ TypeId GetTestTypeId(); - -// Defines the abstract factory interface that creates instances -// of a Test object. -class TestFactoryBase { - public: - virtual ~TestFactoryBase() {} - - // Creates a test instance to run. The instance is both created and destroyed - // within TestInfoImpl::Run() - virtual Test* CreateTest() = 0; - - protected: - TestFactoryBase() {} - - private: - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase); -}; - -// This class provides implementation of TeastFactoryBase interface. -// It is used in TEST and TEST_F macros. -template -class TestFactoryImpl : public TestFactoryBase { - public: - virtual Test* CreateTest() { return new TestClass; } -}; - -#if GTEST_OS_WINDOWS - -// Predicate-formatters for implementing the HRESULT checking macros -// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED} -// We pass a long instead of HRESULT to avoid causing an -// include dependency for the HRESULT type. -GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr, - long hr); // NOLINT -GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr, - long hr); // NOLINT - -#endif // GTEST_OS_WINDOWS - -// Types of SetUpTestCase() and TearDownTestCase() functions. -typedef void (*SetUpTestCaseFunc)(); -typedef void (*TearDownTestCaseFunc)(); - -// Creates a new TestInfo object and registers it with Google Test; -// returns the created object. -// -// Arguments: -// -// test_case_name: name of the test case -// name: name of the test -// type_param the name of the test's type parameter, or NULL if -// this is not a typed or a type-parameterized test. -// value_param text representation of the test's value parameter, -// or NULL if this is not a type-parameterized test. -// fixture_class_id: ID of the test fixture class -// set_up_tc: pointer to the function that sets up the test case -// tear_down_tc: pointer to the function that tears down the test case -// factory: pointer to the factory that creates a test object. -// The newly created TestInfo instance will assume -// ownership of the factory object. -GTEST_API_ TestInfo* MakeAndRegisterTestInfo( - const char* test_case_name, const char* name, - const char* type_param, - const char* value_param, - TypeId fixture_class_id, - SetUpTestCaseFunc set_up_tc, - TearDownTestCaseFunc tear_down_tc, - TestFactoryBase* factory); - -// If *pstr starts with the given prefix, modifies *pstr to be right -// past the prefix and returns true; otherwise leaves *pstr unchanged -// and returns false. None of pstr, *pstr, and prefix can be NULL. -GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr); - -#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P - -// State of the definition of a type-parameterized test case. -class GTEST_API_ TypedTestCasePState { - public: - TypedTestCasePState() : registered_(false) {} - - // Adds the given test name to defined_test_names_ and return true - // if the test case hasn't been registered; otherwise aborts the - // program. - bool AddTestName(const char* file, int line, const char* case_name, - const char* test_name) { - if (registered_) { - fprintf(stderr, "%s Test %s must be defined before " - "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n", - FormatFileLocation(file, line).c_str(), test_name, case_name); - fflush(stderr); - posix::Abort(); - } - defined_test_names_.insert(test_name); - return true; - } - - // Verifies that registered_tests match the test names in - // defined_test_names_; returns registered_tests if successful, or - // aborts the program otherwise. - const char* VerifyRegisteredTestNames( - const char* file, int line, const char* registered_tests); - - private: - bool registered_; - ::std::set defined_test_names_; -}; - -// Skips to the first non-space char after the first comma in 'str'; -// returns NULL if no comma is found in 'str'. -inline const char* SkipComma(const char* str) { - const char* comma = strchr(str, ','); - if (comma == NULL) { - return NULL; - } - while (IsSpace(*(++comma))) {} - return comma; -} - -// Returns the prefix of 'str' before the first comma in it; returns -// the entire string if it contains no comma. -inline String GetPrefixUntilComma(const char* str) { - const char* comma = strchr(str, ','); - return comma == NULL ? String(str) : String(str, comma - str); -} - -// TypeParameterizedTest::Register() -// registers a list of type-parameterized tests with Google Test. The -// return value is insignificant - we just need to return something -// such that we can call this function in a namespace scope. -// -// Implementation note: The GTEST_TEMPLATE_ macro declares a template -// template parameter. It's defined in gtest-type-util.h. -template -class TypeParameterizedTest { - public: - // 'index' is the index of the test in the type list 'Types' - // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, - // Types). Valid values for 'index' are [0, N - 1] where N is the - // length of Types. - static bool Register(const char* prefix, const char* case_name, - const char* test_names, int index) { - typedef typename Types::Head Type; - typedef Fixture FixtureClass; - typedef typename GTEST_BIND_(TestSel, Type) TestClass; - - // First, registers the first type-parameterized test in the type - // list. - MakeAndRegisterTestInfo( - String::Format("%s%s%s/%d", prefix, prefix[0] == '\0' ? "" : "/", - case_name, index).c_str(), - GetPrefixUntilComma(test_names).c_str(), - GetTypeName().c_str(), - NULL, // No value parameter. - GetTypeId(), - TestClass::SetUpTestCase, - TestClass::TearDownTestCase, - new TestFactoryImpl); - - // Next, recurses (at compile time) with the tail of the type list. - return TypeParameterizedTest - ::Register(prefix, case_name, test_names, index + 1); - } -}; - -// The base case for the compile time recursion. -template -class TypeParameterizedTest { - public: - static bool Register(const char* /*prefix*/, const char* /*case_name*/, - const char* /*test_names*/, int /*index*/) { - return true; - } -}; - -// TypeParameterizedTestCase::Register() -// registers *all combinations* of 'Tests' and 'Types' with Google -// Test. The return value is insignificant - we just need to return -// something such that we can call this function in a namespace scope. -template -class TypeParameterizedTestCase { - public: - static bool Register(const char* prefix, const char* case_name, - const char* test_names) { - typedef typename Tests::Head Head; - - // First, register the first test in 'Test' for each type in 'Types'. - TypeParameterizedTest::Register( - prefix, case_name, test_names, 0); - - // Next, recurses (at compile time) with the tail of the test list. - return TypeParameterizedTestCase - ::Register(prefix, case_name, SkipComma(test_names)); - } -}; - -// The base case for the compile time recursion. -template -class TypeParameterizedTestCase { - public: - static bool Register(const char* /*prefix*/, const char* /*case_name*/, - const char* /*test_names*/) { - return true; - } -}; - -#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P - -// Returns the current OS stack trace as a String. -// -// The maximum number of stack frames to be included is specified by -// the gtest_stack_trace_depth flag. The skip_count parameter -// specifies the number of top frames to be skipped, which doesn't -// count against the number of frames to be included. -// -// For example, if Foo() calls Bar(), which in turn calls -// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in -// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. -GTEST_API_ String GetCurrentOsStackTraceExceptTop(UnitTest* unit_test, - int skip_count); - -// Helpers for suppressing warnings on unreachable code or constant -// condition. - -// Always returns true. -GTEST_API_ bool AlwaysTrue(); - -// Always returns false. -inline bool AlwaysFalse() { return !AlwaysTrue(); } - -// Helper for suppressing false warning from Clang on a const char* -// variable declared in a conditional expression always being NULL in -// the else branch. -struct GTEST_API_ ConstCharPtr { - ConstCharPtr(const char* str) : value(str) {} - operator bool() const { return true; } - const char* value; -}; - -// A simple Linear Congruential Generator for generating random -// numbers with a uniform distribution. Unlike rand() and srand(), it -// doesn't use global state (and therefore can't interfere with user -// code). Unlike rand_r(), it's portable. An LCG isn't very random, -// but it's good enough for our purposes. -class GTEST_API_ Random { - public: - static const UInt32 kMaxRange = 1u << 31; - - explicit Random(UInt32 seed) : state_(seed) {} - - void Reseed(UInt32 seed) { state_ = seed; } - - // Generates a random number from [0, range). Crashes if 'range' is - // 0 or greater than kMaxRange. - UInt32 Generate(UInt32 range); - - private: - UInt32 state_; - GTEST_DISALLOW_COPY_AND_ASSIGN_(Random); -}; - -// Defining a variable of type CompileAssertTypesEqual will cause a -// compiler error iff T1 and T2 are different types. -template -struct CompileAssertTypesEqual; - -template -struct CompileAssertTypesEqual { -}; - -// Removes the reference from a type if it is a reference type, -// otherwise leaves it unchanged. This is the same as -// tr1::remove_reference, which is not widely available yet. -template -struct RemoveReference { typedef T type; }; // NOLINT -template -struct RemoveReference { typedef T type; }; // NOLINT - -// A handy wrapper around RemoveReference that works when the argument -// T depends on template parameters. -#define GTEST_REMOVE_REFERENCE_(T) \ - typename ::testing::internal::RemoveReference::type - -// Removes const from a type if it is a const type, otherwise leaves -// it unchanged. This is the same as tr1::remove_const, which is not -// widely available yet. -template -struct RemoveConst { typedef T type; }; // NOLINT -template -struct RemoveConst { typedef T type; }; // NOLINT - -// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above -// definition to fail to remove the const in 'const int[3]' and 'const -// char[3][4]'. The following specialization works around the bug. -// However, it causes trouble with GCC and thus needs to be -// conditionally compiled. -#if defined(_MSC_VER) || defined(__SUNPRO_CC) || defined(__IBMCPP__) -template -struct RemoveConst { - typedef typename RemoveConst::type type[N]; -}; -#endif - -// A handy wrapper around RemoveConst that works when the argument -// T depends on template parameters. -#define GTEST_REMOVE_CONST_(T) \ - typename ::testing::internal::RemoveConst::type - -// Turns const U&, U&, const U, and U all into U. -#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \ - GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T)) - -// Adds reference to a type if it is not a reference type, -// otherwise leaves it unchanged. This is the same as -// tr1::add_reference, which is not widely available yet. -template -struct AddReference { typedef T& type; }; // NOLINT -template -struct AddReference { typedef T& type; }; // NOLINT - -// A handy wrapper around AddReference that works when the argument T -// depends on template parameters. -#define GTEST_ADD_REFERENCE_(T) \ - typename ::testing::internal::AddReference::type - -// Adds a reference to const on top of T as necessary. For example, -// it transforms -// -// char ==> const char& -// const char ==> const char& -// char& ==> const char& -// const char& ==> const char& -// -// The argument T must depend on some template parameters. -#define GTEST_REFERENCE_TO_CONST_(T) \ - GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T)) - -// ImplicitlyConvertible::value is a compile-time bool -// constant that's true iff type From can be implicitly converted to -// type To. -template -class ImplicitlyConvertible { - private: - // We need the following helper functions only for their types. - // They have no implementations. - - // MakeFrom() is an expression whose type is From. We cannot simply - // use From(), as the type From may not have a public default - // constructor. - static From MakeFrom(); - - // These two functions are overloaded. Given an expression - // Helper(x), the compiler will pick the first version if x can be - // implicitly converted to type To; otherwise it will pick the - // second version. - // - // The first version returns a value of size 1, and the second - // version returns a value of size 2. Therefore, by checking the - // size of Helper(x), which can be done at compile time, we can tell - // which version of Helper() is used, and hence whether x can be - // implicitly converted to type To. - static char Helper(To); - static char (&Helper(...))[2]; // NOLINT - - // We have to put the 'public' section after the 'private' section, - // or MSVC refuses to compile the code. - public: - // MSVC warns about implicitly converting from double to int for - // possible loss of data, so we need to temporarily disable the - // warning. -#ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4244) // Temporarily disables warning 4244. - - static const bool value = - sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; -# pragma warning(pop) // Restores the warning state. -#elif defined(__BORLANDC__) - // C++Builder cannot use member overload resolution during template - // instantiation. The simplest workaround is to use its C++0x type traits - // functions (C++Builder 2009 and above only). - static const bool value = __is_convertible(From, To); -#else - static const bool value = - sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; -#endif // _MSV_VER -}; -template -const bool ImplicitlyConvertible::value; - -// IsAProtocolMessage::value is a compile-time bool constant that's -// true iff T is type ProtocolMessage, proto2::Message, or a subclass -// of those. -template -struct IsAProtocolMessage - : public bool_constant< - ImplicitlyConvertible::value || - ImplicitlyConvertible::value> { -}; - -// When the compiler sees expression IsContainerTest(0), if C is an -// STL-style container class, the first overload of IsContainerTest -// will be viable (since both C::iterator* and C::const_iterator* are -// valid types and NULL can be implicitly converted to them). It will -// be picked over the second overload as 'int' is a perfect match for -// the type of argument 0. If C::iterator or C::const_iterator is not -// a valid type, the first overload is not viable, and the second -// overload will be picked. Therefore, we can determine whether C is -// a container class by checking the type of IsContainerTest(0). -// The value of the expression is insignificant. -// -// Note that we look for both C::iterator and C::const_iterator. The -// reason is that C++ injects the name of a class as a member of the -// class itself (e.g. you can refer to class iterator as either -// 'iterator' or 'iterator::iterator'). If we look for C::iterator -// only, for example, we would mistakenly think that a class named -// iterator is an STL container. -// -// Also note that the simpler approach of overloading -// IsContainerTest(typename C::const_iterator*) and -// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++. -typedef int IsContainer; -template -IsContainer IsContainerTest(int /* dummy */, - typename C::iterator* /* it */ = NULL, - typename C::const_iterator* /* const_it */ = NULL) { - return 0; -} - -typedef char IsNotContainer; -template -IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; } - -// EnableIf::type is void when 'Cond' is true, and -// undefined when 'Cond' is false. To use SFINAE to make a function -// overload only apply when a particular expression is true, add -// "typename EnableIf::type* = 0" as the last parameter. -template struct EnableIf; -template<> struct EnableIf { typedef void type; }; // NOLINT - -// Utilities for native arrays. - -// ArrayEq() compares two k-dimensional native arrays using the -// elements' operator==, where k can be any integer >= 0. When k is -// 0, ArrayEq() degenerates into comparing a single pair of values. - -template -bool ArrayEq(const T* lhs, size_t size, const U* rhs); - -// This generic version is used when k is 0. -template -inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; } - -// This overload is used when k >= 1. -template -inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) { - return internal::ArrayEq(lhs, N, rhs); -} - -// This helper reduces code bloat. If we instead put its logic inside -// the previous ArrayEq() function, arrays with different sizes would -// lead to different copies of the template code. -template -bool ArrayEq(const T* lhs, size_t size, const U* rhs) { - for (size_t i = 0; i != size; i++) { - if (!internal::ArrayEq(lhs[i], rhs[i])) - return false; - } - return true; -} - -// Finds the first element in the iterator range [begin, end) that -// equals elem. Element may be a native array type itself. -template -Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) { - for (Iter it = begin; it != end; ++it) { - if (internal::ArrayEq(*it, elem)) - return it; - } - return end; -} - -// CopyArray() copies a k-dimensional native array using the elements' -// operator=, where k can be any integer >= 0. When k is 0, -// CopyArray() degenerates into copying a single value. - -template -void CopyArray(const T* from, size_t size, U* to); - -// This generic version is used when k is 0. -template -inline void CopyArray(const T& from, U* to) { *to = from; } - -// This overload is used when k >= 1. -template -inline void CopyArray(const T(&from)[N], U(*to)[N]) { - internal::CopyArray(from, N, *to); -} - -// This helper reduces code bloat. If we instead put its logic inside -// the previous CopyArray() function, arrays with different sizes -// would lead to different copies of the template code. -template -void CopyArray(const T* from, size_t size, U* to) { - for (size_t i = 0; i != size; i++) { - internal::CopyArray(from[i], to + i); - } -} - -// The relation between an NativeArray object (see below) and the -// native array it represents. -enum RelationToSource { - kReference, // The NativeArray references the native array. - kCopy // The NativeArray makes a copy of the native array and - // owns the copy. -}; - -// Adapts a native array to a read-only STL-style container. Instead -// of the complete STL container concept, this adaptor only implements -// members useful for Google Mock's container matchers. New members -// should be added as needed. To simplify the implementation, we only -// support Element being a raw type (i.e. having no top-level const or -// reference modifier). It's the client's responsibility to satisfy -// this requirement. Element can be an array type itself (hence -// multi-dimensional arrays are supported). -template -class NativeArray { - public: - // STL-style container typedefs. - typedef Element value_type; - typedef Element* iterator; - typedef const Element* const_iterator; - - // Constructs from a native array. - NativeArray(const Element* array, size_t count, RelationToSource relation) { - Init(array, count, relation); - } - - // Copy constructor. - NativeArray(const NativeArray& rhs) { - Init(rhs.array_, rhs.size_, rhs.relation_to_source_); - } - - ~NativeArray() { - // Ensures that the user doesn't instantiate NativeArray with a - // const or reference type. - static_cast(StaticAssertTypeEqHelper()); - if (relation_to_source_ == kCopy) - delete[] array_; - } - - // STL-style container methods. - size_t size() const { return size_; } - const_iterator begin() const { return array_; } - const_iterator end() const { return array_ + size_; } - bool operator==(const NativeArray& rhs) const { - return size() == rhs.size() && - ArrayEq(begin(), size(), rhs.begin()); - } - - private: - // Initializes this object; makes a copy of the input array if - // 'relation' is kCopy. - void Init(const Element* array, size_t a_size, RelationToSource relation) { - if (relation == kReference) { - array_ = array; - } else { - Element* const copy = new Element[a_size]; - CopyArray(array, a_size, copy); - array_ = copy; - } - size_ = a_size; - relation_to_source_ = relation; - } - - const Element* array_; - size_t size_; - RelationToSource relation_to_source_; - - GTEST_DISALLOW_ASSIGN_(NativeArray); -}; - -} // namespace internal -} // namespace testing - -#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ - ::testing::internal::AssertHelper(result_type, file, line, message) \ - = ::testing::Message() - -#define GTEST_MESSAGE_(message, result_type) \ - GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) - -#define GTEST_FATAL_FAILURE_(message) \ - return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) - -#define GTEST_NONFATAL_FAILURE_(message) \ - GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure) - -#define GTEST_SUCCESS_(message) \ - GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess) - -// Suppresses MSVC warnings 4072 (unreachable code) for the code following -// statement if it returns or throws (or doesn't return or throw in some -// situations). -#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \ - if (::testing::internal::AlwaysTrue()) { statement; } - -#define GTEST_TEST_THROW_(statement, expected_exception, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::ConstCharPtr gtest_msg = "") { \ - bool gtest_caught_expected = false; \ - try { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } \ - catch (expected_exception const&) { \ - gtest_caught_expected = true; \ - } \ - catch (...) { \ - gtest_msg.value = \ - "Expected: " #statement " throws an exception of type " \ - #expected_exception ".\n Actual: it throws a different type."; \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ - } \ - if (!gtest_caught_expected) { \ - gtest_msg.value = \ - "Expected: " #statement " throws an exception of type " \ - #expected_exception ".\n Actual: it throws nothing."; \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \ - fail(gtest_msg.value) - -#define GTEST_TEST_NO_THROW_(statement, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - try { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } \ - catch (...) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \ - fail("Expected: " #statement " doesn't throw an exception.\n" \ - " Actual: it throws.") - -#define GTEST_TEST_ANY_THROW_(statement, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - bool gtest_caught_any = false; \ - try { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } \ - catch (...) { \ - gtest_caught_any = true; \ - } \ - if (!gtest_caught_any) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \ - fail("Expected: " #statement " throws an exception.\n" \ - " Actual: it doesn't.") - - -// Implements Boolean test assertions such as EXPECT_TRUE. expression can be -// either a boolean expression or an AssertionResult. text is a textual -// represenation of expression as it was passed into the EXPECT_TRUE. -#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (const ::testing::AssertionResult gtest_ar_ = \ - ::testing::AssertionResult(expression)) \ - ; \ - else \ - fail(::testing::internal::GetBoolAssertionFailureMessage(\ - gtest_ar_, text, #actual, #expected).c_str()) - -#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \ - fail("Expected: " #statement " doesn't generate new fatal " \ - "failures in the current thread.\n" \ - " Actual: it does.") - -// Expands to the name of the class that implements the given test. -#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ - test_case_name##_##test_name##_Test - -// Helper macro for defining tests. -#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\ -class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ - public:\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ - private:\ - virtual void TestBody();\ - static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ - GTEST_DISALLOW_COPY_AND_ASSIGN_(\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ -};\ -\ -::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\ - ::test_info_ =\ - ::testing::internal::MakeAndRegisterTestInfo(\ - #test_case_name, #test_name, NULL, NULL, \ - (parent_id), \ - parent_class::SetUpTestCase, \ - parent_class::TearDownTestCase, \ - new ::testing::internal::TestFactoryImpl<\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\ -void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) -// -// The Google C++ Testing Framework (Google Test) -// -// This header file defines the public API for death tests. It is -// #included by gtest.h so a user doesn't need to include this -// directly. - -#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ -#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ - -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) -// -// The Google C++ Testing Framework (Google Test) -// -// This header file defines internal utilities needed for implementing -// death tests. They are subject to change without notice. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ - - -#include - -namespace testing { -namespace internal { - -GTEST_DECLARE_string_(internal_run_death_test); - -// Names of the flags (needed for parsing Google Test flags). -const char kDeathTestStyleFlag[] = "death_test_style"; -const char kDeathTestUseFork[] = "death_test_use_fork"; -const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; - -#if GTEST_HAS_DEATH_TEST - -// DeathTest is a class that hides much of the complexity of the -// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method -// returns a concrete class that depends on the prevailing death test -// style, as defined by the --gtest_death_test_style and/or -// --gtest_internal_run_death_test flags. - -// In describing the results of death tests, these terms are used with -// the corresponding definitions: -// -// exit status: The integer exit information in the format specified -// by wait(2) -// exit code: The integer code passed to exit(3), _exit(2), or -// returned from main() -class GTEST_API_ DeathTest { - public: - // Create returns false if there was an error determining the - // appropriate action to take for the current death test; for example, - // if the gtest_death_test_style flag is set to an invalid value. - // The LastMessage method will return a more detailed message in that - // case. Otherwise, the DeathTest pointer pointed to by the "test" - // argument is set. If the death test should be skipped, the pointer - // is set to NULL; otherwise, it is set to the address of a new concrete - // DeathTest object that controls the execution of the current test. - static bool Create(const char* statement, const RE* regex, - const char* file, int line, DeathTest** test); - DeathTest(); - virtual ~DeathTest() { } - - // A helper class that aborts a death test when it's deleted. - class ReturnSentinel { - public: - explicit ReturnSentinel(DeathTest* test) : test_(test) { } - ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); } - private: - DeathTest* const test_; - GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel); - } GTEST_ATTRIBUTE_UNUSED_; - - // An enumeration of possible roles that may be taken when a death - // test is encountered. EXECUTE means that the death test logic should - // be executed immediately. OVERSEE means that the program should prepare - // the appropriate environment for a child process to execute the death - // test, then wait for it to complete. - enum TestRole { OVERSEE_TEST, EXECUTE_TEST }; - - // An enumeration of the three reasons that a test might be aborted. - enum AbortReason { - TEST_ENCOUNTERED_RETURN_STATEMENT, - TEST_THREW_EXCEPTION, - TEST_DID_NOT_DIE - }; - - // Assumes one of the above roles. - virtual TestRole AssumeRole() = 0; - - // Waits for the death test to finish and returns its status. - virtual int Wait() = 0; - - // Returns true if the death test passed; that is, the test process - // exited during the test, its exit status matches a user-supplied - // predicate, and its stderr output matches a user-supplied regular - // expression. - // The user-supplied predicate may be a macro expression rather - // than a function pointer or functor, or else Wait and Passed could - // be combined. - virtual bool Passed(bool exit_status_ok) = 0; - - // Signals that the death test did not die as expected. - virtual void Abort(AbortReason reason) = 0; - - // Returns a human-readable outcome message regarding the outcome of - // the last death test. - static const char* LastMessage(); - - static void set_last_death_test_message(const String& message); - - private: - // A string containing a description of the outcome of the last death test. - static String last_death_test_message_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest); -}; - -// Factory interface for death tests. May be mocked out for testing. -class DeathTestFactory { - public: - virtual ~DeathTestFactory() { } - virtual bool Create(const char* statement, const RE* regex, - const char* file, int line, DeathTest** test) = 0; -}; - -// A concrete DeathTestFactory implementation for normal use. -class DefaultDeathTestFactory : public DeathTestFactory { - public: - virtual bool Create(const char* statement, const RE* regex, - const char* file, int line, DeathTest** test); -}; - -// Returns true if exit_status describes a process that was terminated -// by a signal, or exited normally with a nonzero exit code. -GTEST_API_ bool ExitedUnsuccessfully(int exit_status); - -// Traps C++ exceptions escaping statement and reports them as test -// failures. Note that trapping SEH exceptions is not implemented here. -# if GTEST_HAS_EXCEPTIONS -# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ - try { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } catch (const ::std::exception& gtest_exception) { \ - fprintf(\ - stderr, \ - "\n%s: Caught std::exception-derived exception escaping the " \ - "death test statement. Exception message: %s\n", \ - ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \ - gtest_exception.what()); \ - fflush(stderr); \ - death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ - } catch (...) { \ - death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ - } - -# else -# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) - -# endif - -// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*, -// ASSERT_EXIT*, and EXPECT_EXIT*. -# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - const ::testing::internal::RE& gtest_regex = (regex); \ - ::testing::internal::DeathTest* gtest_dt; \ - if (!::testing::internal::DeathTest::Create(#statement, >est_regex, \ - __FILE__, __LINE__, >est_dt)) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ - } \ - if (gtest_dt != NULL) { \ - ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \ - gtest_dt_ptr(gtest_dt); \ - switch (gtest_dt->AssumeRole()) { \ - case ::testing::internal::DeathTest::OVERSEE_TEST: \ - if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ - } \ - break; \ - case ::testing::internal::DeathTest::EXECUTE_TEST: { \ - ::testing::internal::DeathTest::ReturnSentinel \ - gtest_sentinel(gtest_dt); \ - GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \ - gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \ - break; \ - } \ - default: \ - break; \ - } \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \ - fail(::testing::internal::DeathTest::LastMessage()) -// The symbol "fail" here expands to something into which a message -// can be streamed. - -// A class representing the parsed contents of the -// --gtest_internal_run_death_test flag, as it existed when -// RUN_ALL_TESTS was called. -class InternalRunDeathTestFlag { - public: - InternalRunDeathTestFlag(const String& a_file, - int a_line, - int an_index, - int a_write_fd) - : file_(a_file), line_(a_line), index_(an_index), - write_fd_(a_write_fd) {} - - ~InternalRunDeathTestFlag() { - if (write_fd_ >= 0) - posix::Close(write_fd_); - } - - String file() const { return file_; } - int line() const { return line_; } - int index() const { return index_; } - int write_fd() const { return write_fd_; } - - private: - String file_; - int line_; - int index_; - int write_fd_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); -}; - -// Returns a newly created InternalRunDeathTestFlag object with fields -// initialized from the GTEST_FLAG(internal_run_death_test) flag if -// the flag is specified; otherwise returns NULL. -InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); - -#else // GTEST_HAS_DEATH_TEST - -// This macro is used for implementing macros such as -// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where -// death tests are not supported. Those macros must compile on such systems -// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on -// systems that support death tests. This allows one to write such a macro -// on a system that does not support death tests and be sure that it will -// compile on a death-test supporting system. -// -// Parameters: -// statement - A statement that a macro such as EXPECT_DEATH would test -// for program termination. This macro has to make sure this -// statement is compiled but not executed, to ensure that -// EXPECT_DEATH_IF_SUPPORTED compiles with a certain -// parameter iff EXPECT_DEATH compiles with it. -// regex - A regex that a macro such as EXPECT_DEATH would use to test -// the output of statement. This parameter has to be -// compiled but not evaluated by this macro, to ensure that -// this macro only accepts expressions that a macro such as -// EXPECT_DEATH would accept. -// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED -// and a return statement for ASSERT_DEATH_IF_SUPPORTED. -// This ensures that ASSERT_DEATH_IF_SUPPORTED will not -// compile inside functions where ASSERT_DEATH doesn't -// compile. -// -// The branch that has an always false condition is used to ensure that -// statement and regex are compiled (and thus syntactically correct) but -// never executed. The unreachable code macro protects the terminator -// statement from generating an 'unreachable code' warning in case -// statement unconditionally returns or throws. The Message constructor at -// the end allows the syntax of streaming additional messages into the -// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. -# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - GTEST_LOG_(WARNING) \ - << "Death tests are not supported on this platform.\n" \ - << "Statement '" #statement "' cannot be verified."; \ - } else if (::testing::internal::AlwaysFalse()) { \ - ::testing::internal::RE::PartialMatch(".*", (regex)); \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - terminator; \ - } else \ - ::testing::Message() - -#endif // GTEST_HAS_DEATH_TEST - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ - -namespace testing { - -// This flag controls the style of death tests. Valid values are "threadsafe", -// meaning that the death test child process will re-execute the test binary -// from the start, running only a single death test, or "fast", -// meaning that the child process will execute the test logic immediately -// after forking. -GTEST_DECLARE_string_(death_test_style); - -#if GTEST_HAS_DEATH_TEST - -// The following macros are useful for writing death tests. - -// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is -// executed: -// -// 1. It generates a warning if there is more than one active -// thread. This is because it's safe to fork() or clone() only -// when there is a single thread. -// -// 2. The parent process clone()s a sub-process and runs the death -// test in it; the sub-process exits with code 0 at the end of the -// death test, if it hasn't exited already. -// -// 3. The parent process waits for the sub-process to terminate. -// -// 4. The parent process checks the exit code and error message of -// the sub-process. -// -// Examples: -// -// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number"); -// for (int i = 0; i < 5; i++) { -// EXPECT_DEATH(server.ProcessRequest(i), -// "Invalid request .* in ProcessRequest()") -// << "Failed to die on request " << i); -// } -// -// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting"); -// -// bool KilledBySIGHUP(int exit_code) { -// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP; -// } -// -// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!"); -// -// On the regular expressions used in death tests: -// -// On POSIX-compliant systems (*nix), we use the library, -// which uses the POSIX extended regex syntax. -// -// On other platforms (e.g. Windows), we only support a simple regex -// syntax implemented as part of Google Test. This limited -// implementation should be enough most of the time when writing -// death tests; though it lacks many features you can find in PCRE -// or POSIX extended regex syntax. For example, we don't support -// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and -// repetition count ("x{5,7}"), among others. -// -// Below is the syntax that we do support. We chose it to be a -// subset of both PCRE and POSIX extended regex, so it's easy to -// learn wherever you come from. In the following: 'A' denotes a -// literal character, period (.), or a single \\ escape sequence; -// 'x' and 'y' denote regular expressions; 'm' and 'n' are for -// natural numbers. -// -// c matches any literal character c -// \\d matches any decimal digit -// \\D matches any character that's not a decimal digit -// \\f matches \f -// \\n matches \n -// \\r matches \r -// \\s matches any ASCII whitespace, including \n -// \\S matches any character that's not a whitespace -// \\t matches \t -// \\v matches \v -// \\w matches any letter, _, or decimal digit -// \\W matches any character that \\w doesn't match -// \\c matches any literal character c, which must be a punctuation -// . matches any single character except \n -// A? matches 0 or 1 occurrences of A -// A* matches 0 or many occurrences of A -// A+ matches 1 or many occurrences of A -// ^ matches the beginning of a string (not that of each line) -// $ matches the end of a string (not that of each line) -// xy matches x followed by y -// -// If you accidentally use PCRE or POSIX extended regex features -// not implemented by us, you will get a run-time failure. In that -// case, please try to rewrite your regular expression within the -// above syntax. -// -// This implementation is *not* meant to be as highly tuned or robust -// as a compiled regex library, but should perform well enough for a -// death test, which already incurs significant overhead by launching -// a child process. -// -// Known caveats: -// -// A "threadsafe" style death test obtains the path to the test -// program from argv[0] and re-executes it in the sub-process. For -// simplicity, the current implementation doesn't search the PATH -// when launching the sub-process. This means that the user must -// invoke the test program via a path that contains at least one -// path separator (e.g. path/to/foo_test and -// /absolute/path/to/bar_test are fine, but foo_test is not). This -// is rarely a problem as people usually don't put the test binary -// directory in PATH. -// -// TODO(wan@google.com): make thread-safe death tests search the PATH. - -// Asserts that a given statement causes the program to exit, with an -// integer exit status that satisfies predicate, and emitting error output -// that matches regex. -# define ASSERT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) - -// Like ASSERT_EXIT, but continues on to successive tests in the -// test case, if any: -# define EXPECT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) - -// Asserts that a given statement causes the program to exit, either by -// explicitly exiting with a nonzero exit code or being killed by a -// signal, and emitting error output that matches regex. -# define ASSERT_DEATH(statement, regex) \ - ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) - -// Like ASSERT_DEATH, but continues on to successive tests in the -// test case, if any: -# define EXPECT_DEATH(statement, regex) \ - EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) - -// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: - -// Tests that an exit code describes a normal exit with a given exit code. -class GTEST_API_ ExitedWithCode { - public: - explicit ExitedWithCode(int exit_code); - bool operator()(int exit_status) const; - private: - // No implementation - assignment is unsupported. - void operator=(const ExitedWithCode& other); - - const int exit_code_; -}; - -# if !GTEST_OS_WINDOWS -// Tests that an exit code describes an exit due to termination by a -// given signal. -class GTEST_API_ KilledBySignal { - public: - explicit KilledBySignal(int signum); - bool operator()(int exit_status) const; - private: - const int signum_; -}; -# endif // !GTEST_OS_WINDOWS - -// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode. -// The death testing framework causes this to have interesting semantics, -// since the sideeffects of the call are only visible in opt mode, and not -// in debug mode. -// -// In practice, this can be used to test functions that utilize the -// LOG(DFATAL) macro using the following style: -// -// int DieInDebugOr12(int* sideeffect) { -// if (sideeffect) { -// *sideeffect = 12; -// } -// LOG(DFATAL) << "death"; -// return 12; -// } -// -// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) { -// int sideeffect = 0; -// // Only asserts in dbg. -// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death"); -// -// #ifdef NDEBUG -// // opt-mode has sideeffect visible. -// EXPECT_EQ(12, sideeffect); -// #else -// // dbg-mode no visible sideeffect. -// EXPECT_EQ(0, sideeffect); -// #endif -// } -// -// This will assert that DieInDebugReturn12InOpt() crashes in debug -// mode, usually due to a DCHECK or LOG(DFATAL), but returns the -// appropriate fallback value (12 in this case) in opt mode. If you -// need to test that a function has appropriate side-effects in opt -// mode, include assertions against the side-effects. A general -// pattern for this is: -// -// EXPECT_DEBUG_DEATH({ -// // Side-effects here will have an effect after this statement in -// // opt mode, but none in debug mode. -// EXPECT_EQ(12, DieInDebugOr12(&sideeffect)); -// }, "death"); -// -# ifdef NDEBUG - -# define EXPECT_DEBUG_DEATH(statement, regex) \ - do { statement; } while (::testing::internal::AlwaysFalse()) - -# define ASSERT_DEBUG_DEATH(statement, regex) \ - do { statement; } while (::testing::internal::AlwaysFalse()) - -# else - -# define EXPECT_DEBUG_DEATH(statement, regex) \ - EXPECT_DEATH(statement, regex) - -# define ASSERT_DEBUG_DEATH(statement, regex) \ - ASSERT_DEATH(statement, regex) - -# endif // NDEBUG for EXPECT_DEBUG_DEATH -#endif // GTEST_HAS_DEATH_TEST - -// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and -// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if -// death tests are supported; otherwise they just issue a warning. This is -// useful when you are combining death test assertions with normal test -// assertions in one test. -#if GTEST_HAS_DEATH_TEST -# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ - EXPECT_DEATH(statement, regex) -# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ - ASSERT_DEATH(statement, regex) -#else -# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ - GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, ) -# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ - GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return) -#endif - -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ -// Copyright 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) -// -// The Google C++ Testing Framework (Google Test) -// -// This header file defines the Message class. -// -// IMPORTANT NOTE: Due to limitation of the C++ language, we have to -// leave some internal implementation details in this header file. -// They are clearly marked by comments like this: -// -// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -// -// Such code is NOT meant to be used by a user directly, and is subject -// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user -// program! - -#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ -#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ - -#include - - -namespace testing { - -// The Message class works like an ostream repeater. -// -// Typical usage: -// -// 1. You stream a bunch of values to a Message object. -// It will remember the text in a stringstream. -// 2. Then you stream the Message object to an ostream. -// This causes the text in the Message to be streamed -// to the ostream. -// -// For example; -// -// testing::Message foo; -// foo << 1 << " != " << 2; -// std::cout << foo; -// -// will print "1 != 2". -// -// Message is not intended to be inherited from. In particular, its -// destructor is not virtual. -// -// Note that stringstream behaves differently in gcc and in MSVC. You -// can stream a NULL char pointer to it in the former, but not in the -// latter (it causes an access violation if you do). The Message -// class hides this difference by treating a NULL char pointer as -// "(null)". -class GTEST_API_ Message { - private: - // The type of basic IO manipulators (endl, ends, and flush) for - // narrow streams. - typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&); - - public: - // Constructs an empty Message. - // We allocate the stringstream separately because otherwise each use of - // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's - // stack frame leading to huge stack frames in some cases; gcc does not reuse - // the stack space. - Message() : ss_(new ::std::stringstream) { - // By default, we want there to be enough precision when printing - // a double to a Message. - *ss_ << std::setprecision(std::numeric_limits::digits10 + 2); - } - - // Copy constructor. - Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT - *ss_ << msg.GetString(); - } - - // Constructs a Message from a C-string. - explicit Message(const char* str) : ss_(new ::std::stringstream) { - *ss_ << str; - } - -#if GTEST_OS_SYMBIAN - // Streams a value (either a pointer or not) to this object. - template - inline Message& operator <<(const T& value) { - StreamHelper(typename internal::is_pointer::type(), value); - return *this; - } -#else - // Streams a non-pointer value to this object. - template - inline Message& operator <<(const T& val) { - ::GTestStreamToHelper(ss_.get(), val); - return *this; - } - - // Streams a pointer value to this object. - // - // This function is an overload of the previous one. When you - // stream a pointer to a Message, this definition will be used as it - // is more specialized. (The C++ Standard, section - // [temp.func.order].) If you stream a non-pointer, then the - // previous definition will be used. - // - // The reason for this overload is that streaming a NULL pointer to - // ostream is undefined behavior. Depending on the compiler, you - // may get "0", "(nil)", "(null)", or an access violation. To - // ensure consistent result across compilers, we always treat NULL - // as "(null)". - template - inline Message& operator <<(T* const& pointer) { // NOLINT - if (pointer == NULL) { - *ss_ << "(null)"; - } else { - ::GTestStreamToHelper(ss_.get(), pointer); - } - return *this; - } -#endif // GTEST_OS_SYMBIAN - - // Since the basic IO manipulators are overloaded for both narrow - // and wide streams, we have to provide this specialized definition - // of operator <<, even though its body is the same as the - // templatized version above. Without this definition, streaming - // endl or other basic IO manipulators to Message will confuse the - // compiler. - Message& operator <<(BasicNarrowIoManip val) { - *ss_ << val; - return *this; - } - - // Instead of 1/0, we want to see true/false for bool values. - Message& operator <<(bool b) { - return *this << (b ? "true" : "false"); - } - - // These two overloads allow streaming a wide C string to a Message - // using the UTF-8 encoding. - Message& operator <<(const wchar_t* wide_c_str) { - return *this << internal::String::ShowWideCString(wide_c_str); - } - Message& operator <<(wchar_t* wide_c_str) { - return *this << internal::String::ShowWideCString(wide_c_str); - } - -#if GTEST_HAS_STD_WSTRING - // Converts the given wide string to a narrow string using the UTF-8 - // encoding, and streams the result to this Message object. - Message& operator <<(const ::std::wstring& wstr); -#endif // GTEST_HAS_STD_WSTRING - -#if GTEST_HAS_GLOBAL_WSTRING - // Converts the given wide string to a narrow string using the UTF-8 - // encoding, and streams the result to this Message object. - Message& operator <<(const ::wstring& wstr); -#endif // GTEST_HAS_GLOBAL_WSTRING - - // Gets the text streamed to this object so far as a String. - // Each '\0' character in the buffer is replaced with "\\0". - // - // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. - internal::String GetString() const { - return internal::StringStreamToString(ss_.get()); - } - - private: - -#if GTEST_OS_SYMBIAN - // These are needed as the Nokia Symbian Compiler cannot decide between - // const T& and const T* in a function template. The Nokia compiler _can_ - // decide between class template specializations for T and T*, so a - // tr1::type_traits-like is_pointer works, and we can overload on that. - template - inline void StreamHelper(internal::true_type /*dummy*/, T* pointer) { - if (pointer == NULL) { - *ss_ << "(null)"; - } else { - ::GTestStreamToHelper(ss_.get(), pointer); - } - } - template - inline void StreamHelper(internal::false_type /*dummy*/, const T& value) { - ::GTestStreamToHelper(ss_.get(), value); - } -#endif // GTEST_OS_SYMBIAN - - // We'll hold the text streamed to this object here. - const internal::scoped_ptr< ::std::stringstream> ss_; - - // We declare (but don't implement) this to prevent the compiler - // from implementing the assignment operator. - void operator=(const Message&); -}; - -// Streams a Message to an ostream. -inline std::ostream& operator <<(std::ostream& os, const Message& sb) { - return os << sb.GetString(); -} - -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ -// This file was GENERATED by command: -// pump.py gtest-param-test.h.pump -// DO NOT EDIT BY HAND!!! - -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: vladl@google.com (Vlad Losev) -// -// Macros and functions for implementing parameterized tests -// in Google C++ Testing Framework (Google Test) -// -// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! -// -#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ -#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ - - -// Value-parameterized tests allow you to test your code with different -// parameters without writing multiple copies of the same test. -// -// Here is how you use value-parameterized tests: - -#if 0 - -// To write value-parameterized tests, first you should define a fixture -// class. It is usually derived from testing::TestWithParam (see below for -// another inheritance scheme that's sometimes useful in more complicated -// class hierarchies), where the type of your parameter values. -// TestWithParam is itself derived from testing::Test. T can be any -// copyable type. If it's a raw pointer, you are responsible for managing the -// lifespan of the pointed values. - -class FooTest : public ::testing::TestWithParam { - // You can implement all the usual class fixture members here. -}; - -// Then, use the TEST_P macro to define as many parameterized tests -// for this fixture as you want. The _P suffix is for "parameterized" -// or "pattern", whichever you prefer to think. - -TEST_P(FooTest, DoesBlah) { - // Inside a test, access the test parameter with the GetParam() method - // of the TestWithParam class: - EXPECT_TRUE(foo.Blah(GetParam())); - ... -} - -TEST_P(FooTest, HasBlahBlah) { - ... -} - -// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test -// case with any set of parameters you want. Google Test defines a number -// of functions for generating test parameters. They return what we call -// (surprise!) parameter generators. Here is a summary of them, which -// are all in the testing namespace: -// -// -// Range(begin, end [, step]) - Yields values {begin, begin+step, -// begin+step+step, ...}. The values do not -// include end. step defaults to 1. -// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. -// ValuesIn(container) - Yields values from a C-style array, an STL -// ValuesIn(begin,end) container, or an iterator range [begin, end). -// Bool() - Yields sequence {false, true}. -// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product -// for the math savvy) of the values generated -// by the N generators. -// -// For more details, see comments at the definitions of these functions below -// in this file. -// -// The following statement will instantiate tests from the FooTest test case -// each with parameter values "meeny", "miny", and "moe". - -INSTANTIATE_TEST_CASE_P(InstantiationName, - FooTest, - Values("meeny", "miny", "moe")); - -// To distinguish different instances of the pattern, (yes, you -// can instantiate it more then once) the first argument to the -// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the -// actual test case name. Remember to pick unique prefixes for different -// instantiations. The tests from the instantiation above will have -// these names: -// -// * InstantiationName/FooTest.DoesBlah/0 for "meeny" -// * InstantiationName/FooTest.DoesBlah/1 for "miny" -// * InstantiationName/FooTest.DoesBlah/2 for "moe" -// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" -// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" -// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" -// -// You can use these names in --gtest_filter. -// -// This statement will instantiate all tests from FooTest again, each -// with parameter values "cat" and "dog": - -const char* pets[] = {"cat", "dog"}; -INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); - -// The tests from the instantiation above will have these names: -// -// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" -// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" -// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" -// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" -// -// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests -// in the given test case, whether their definitions come before or -// AFTER the INSTANTIATE_TEST_CASE_P statement. -// -// Please also note that generator expressions (including parameters to the -// generators) are evaluated in InitGoogleTest(), after main() has started. -// This allows the user on one hand, to adjust generator parameters in order -// to dynamically determine a set of tests to run and on the other hand, -// give the user a chance to inspect the generated tests with Google Test -// reflection API before RUN_ALL_TESTS() is executed. -// -// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc -// for more examples. -// -// In the future, we plan to publish the API for defining new parameter -// generators. But for now this interface remains part of the internal -// implementation and is subject to change. -// -// -// A parameterized test fixture must be derived from testing::Test and from -// testing::WithParamInterface, where T is the type of the parameter -// values. Inheriting from TestWithParam satisfies that requirement because -// TestWithParam inherits from both Test and WithParamInterface. In more -// complicated hierarchies, however, it is occasionally useful to inherit -// separately from Test and WithParamInterface. For example: - -class BaseTest : public ::testing::Test { - // You can inherit all the usual members for a non-parameterized test - // fixture here. -}; - -class DerivedTest : public BaseTest, public ::testing::WithParamInterface { - // The usual test fixture members go here too. -}; - -TEST_F(BaseTest, HasFoo) { - // This is an ordinary non-parameterized test. -} - -TEST_P(DerivedTest, DoesBlah) { - // GetParam works just the same here as if you inherit from TestWithParam. - EXPECT_TRUE(foo.Blah(GetParam())); -} - -#endif // 0 - - -#if !GTEST_OS_SYMBIAN -# include -#endif - -// scripts/fuse_gtest.py depends on gtest's own header being #included -// *unconditionally*. Therefore these #includes cannot be moved -// inside #if GTEST_HAS_PARAM_TEST. -// Copyright 2008 Google Inc. -// All Rights Reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: vladl@google.com (Vlad Losev) - -// Type and function utilities for implementing parameterized tests. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ - -#include -#include -#include - -// scripts/fuse_gtest.py depends on gtest's own header being #included -// *unconditionally*. Therefore these #includes cannot be moved -// inside #if GTEST_HAS_PARAM_TEST. -// Copyright 2003 Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: Dan Egnor (egnor@google.com) -// -// A "smart" pointer type with reference tracking. Every pointer to a -// particular object is kept on a circular linked list. When the last pointer -// to an object is destroyed or reassigned, the object is deleted. -// -// Used properly, this deletes the object when the last reference goes away. -// There are several caveats: -// - Like all reference counting schemes, cycles lead to leaks. -// - Each smart pointer is actually two pointers (8 bytes instead of 4). -// - Every time a pointer is assigned, the entire list of pointers to that -// object is traversed. This class is therefore NOT SUITABLE when there -// will often be more than two or three pointers to a particular object. -// - References are only tracked as long as linked_ptr<> objects are copied. -// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS -// will happen (double deletion). -// -// A good use of this class is storing object references in STL containers. -// You can safely put linked_ptr<> in a vector<>. -// Other uses may not be as good. -// -// Note: If you use an incomplete type with linked_ptr<>, the class -// *containing* linked_ptr<> must have a constructor and destructor (even -// if they do nothing!). -// -// Bill Gibbons suggested we use something like this. -// -// Thread Safety: -// Unlike other linked_ptr implementations, in this implementation -// a linked_ptr object is thread-safe in the sense that: -// - it's safe to copy linked_ptr objects concurrently, -// - it's safe to copy *from* a linked_ptr and read its underlying -// raw pointer (e.g. via get()) concurrently, and -// - it's safe to write to two linked_ptrs that point to the same -// shared object concurrently. -// TODO(wan@google.com): rename this to safe_linked_ptr to avoid -// confusion with normal linked_ptr. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ - -#include -#include - - -namespace testing { -namespace internal { - -// Protects copying of all linked_ptr objects. -GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex); - -// This is used internally by all instances of linked_ptr<>. It needs to be -// a non-template class because different types of linked_ptr<> can refer to -// the same object (linked_ptr(obj) vs linked_ptr(obj)). -// So, it needs to be possible for different types of linked_ptr to participate -// in the same circular linked list, so we need a single class type here. -// -// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr. -class linked_ptr_internal { - public: - // Create a new circle that includes only this instance. - void join_new() { - next_ = this; - } - - // Many linked_ptr operations may change p.link_ for some linked_ptr - // variable p in the same circle as this object. Therefore we need - // to prevent two such operations from occurring concurrently. - // - // Note that different types of linked_ptr objects can coexist in a - // circle (e.g. linked_ptr, linked_ptr, and - // linked_ptr). Therefore we must use a single mutex to - // protect all linked_ptr objects. This can create serious - // contention in production code, but is acceptable in a testing - // framework. - - // Join an existing circle. - // L < g_linked_ptr_mutex - void join(linked_ptr_internal const* ptr) { - MutexLock lock(&g_linked_ptr_mutex); - - linked_ptr_internal const* p = ptr; - while (p->next_ != ptr) p = p->next_; - p->next_ = this; - next_ = ptr; - } - - // Leave whatever circle we're part of. Returns true if we were the - // last member of the circle. Once this is done, you can join() another. - // L < g_linked_ptr_mutex - bool depart() { - MutexLock lock(&g_linked_ptr_mutex); - - if (next_ == this) return true; - linked_ptr_internal const* p = next_; - while (p->next_ != this) p = p->next_; - p->next_ = next_; - return false; - } - - private: - mutable linked_ptr_internal const* next_; -}; - -template -class linked_ptr { - public: - typedef T element_type; - - // Take over ownership of a raw pointer. This should happen as soon as - // possible after the object is created. - explicit linked_ptr(T* ptr = NULL) { capture(ptr); } - ~linked_ptr() { depart(); } - - // Copy an existing linked_ptr<>, adding ourselves to the list of references. - template linked_ptr(linked_ptr const& ptr) { copy(&ptr); } - linked_ptr(linked_ptr const& ptr) { // NOLINT - assert(&ptr != this); - copy(&ptr); - } - - // Assignment releases the old value and acquires the new. - template linked_ptr& operator=(linked_ptr const& ptr) { - depart(); - copy(&ptr); - return *this; - } - - linked_ptr& operator=(linked_ptr const& ptr) { - if (&ptr != this) { - depart(); - copy(&ptr); - } - return *this; - } - - // Smart pointer members. - void reset(T* ptr = NULL) { - depart(); - capture(ptr); - } - T* get() const { return value_; } - T* operator->() const { return value_; } - T& operator*() const { return *value_; } - - bool operator==(T* p) const { return value_ == p; } - bool operator!=(T* p) const { return value_ != p; } - template - bool operator==(linked_ptr const& ptr) const { - return value_ == ptr.get(); - } - template - bool operator!=(linked_ptr const& ptr) const { - return value_ != ptr.get(); - } - - private: - template - friend class linked_ptr; - - T* value_; - linked_ptr_internal link_; - - void depart() { - if (link_.depart()) delete value_; - } - - void capture(T* ptr) { - value_ = ptr; - link_.join_new(); - } - - template void copy(linked_ptr const* ptr) { - value_ = ptr->get(); - if (value_) - link_.join(&ptr->link_); - else - link_.join_new(); - } -}; - -template inline -bool operator==(T* ptr, const linked_ptr& x) { - return ptr == x.get(); -} - -template inline -bool operator!=(T* ptr, const linked_ptr& x) { - return ptr != x.get(); -} - -// A function to convert T* into linked_ptr -// Doing e.g. make_linked_ptr(new FooBarBaz(arg)) is a shorter notation -// for linked_ptr >(new FooBarBaz(arg)) -template -linked_ptr make_linked_ptr(T* ptr) { - return linked_ptr(ptr); -} - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ -// Copyright 2007, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - -// Google Test - The Google C++ Testing Framework -// -// This file implements a universal value printer that can print a -// value of any type T: -// -// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); -// -// A user can teach this function how to print a class type T by -// defining either operator<<() or PrintTo() in the namespace that -// defines T. More specifically, the FIRST defined function in the -// following list will be used (assuming T is defined in namespace -// foo): -// -// 1. foo::PrintTo(const T&, ostream*) -// 2. operator<<(ostream&, const T&) defined in either foo or the -// global namespace. -// -// If none of the above is defined, it will print the debug string of -// the value if it is a protocol buffer, or print the raw bytes in the -// value otherwise. -// -// To aid debugging: when T is a reference type, the address of the -// value is also printed; when T is a (const) char pointer, both the -// pointer value and the NUL-terminated string it points to are -// printed. -// -// We also provide some convenient wrappers: -// -// // Prints a value to a string. For a (const or not) char -// // pointer, the NUL-terminated string (but not the pointer) is -// // printed. -// std::string ::testing::PrintToString(const T& value); -// -// // Prints a value tersely: for a reference type, the referenced -// // value (but not the address) is printed; for a (const or not) char -// // pointer, the NUL-terminated string (but not the pointer) is -// // printed. -// void ::testing::internal::UniversalTersePrint(const T& value, ostream*); -// -// // Prints value using the type inferred by the compiler. The difference -// // from UniversalTersePrint() is that this function prints both the -// // pointer and the NUL-terminated string for a (const or not) char pointer. -// void ::testing::internal::UniversalPrint(const T& value, ostream*); -// -// // Prints the fields of a tuple tersely to a string vector, one -// // element for each field. Tuple support must be enabled in -// // gtest-port.h. -// std::vector UniversalTersePrintTupleFieldsToStrings( -// const Tuple& value); -// -// Known limitation: -// -// The print primitives print the elements of an STL-style container -// using the compiler-inferred type of *iter where iter is a -// const_iterator of the container. When const_iterator is an input -// iterator but not a forward iterator, this inferred type may not -// match value_type, and the print output may be incorrect. In -// practice, this is rarely a problem as for most containers -// const_iterator is a forward iterator. We'll fix this if there's an -// actual need for it. Note that this fix cannot rely on value_type -// being defined as many user-defined container types don't have -// value_type. - -#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ -#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ - -#include // NOLINT -#include -#include -#include -#include - -namespace testing { - -// Definitions in the 'internal' and 'internal2' name spaces are -// subject to change without notice. DO NOT USE THEM IN USER CODE! -namespace internal2 { - -// Prints the given number of bytes in the given object to the given -// ostream. -GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes, - size_t count, - ::std::ostream* os); - -// For selecting which printer to use when a given type has neither << -// nor PrintTo(). -enum TypeKind { - kProtobuf, // a protobuf type - kConvertibleToInteger, // a type implicitly convertible to BiggestInt - // (e.g. a named or unnamed enum type) - kOtherType // anything else -}; - -// TypeWithoutFormatter::PrintValue(value, os) is called -// by the universal printer to print a value of type T when neither -// operator<< nor PrintTo() is defined for T, where kTypeKind is the -// "kind" of T as defined by enum TypeKind. -template -class TypeWithoutFormatter { - public: - // This default version is called when kTypeKind is kOtherType. - static void PrintValue(const T& value, ::std::ostream* os) { - PrintBytesInObjectTo(reinterpret_cast(&value), - sizeof(value), os); - } -}; - -// We print a protobuf using its ShortDebugString() when the string -// doesn't exceed this many characters; otherwise we print it using -// DebugString() for better readability. -const size_t kProtobufOneLinerMaxLength = 50; - -template -class TypeWithoutFormatter { - public: - static void PrintValue(const T& value, ::std::ostream* os) { - const ::testing::internal::string short_str = value.ShortDebugString(); - const ::testing::internal::string pretty_str = - short_str.length() <= kProtobufOneLinerMaxLength ? - short_str : ("\n" + value.DebugString()); - *os << ("<" + pretty_str + ">"); - } -}; - -template -class TypeWithoutFormatter { - public: - // Since T has no << operator or PrintTo() but can be implicitly - // converted to BiggestInt, we print it as a BiggestInt. - // - // Most likely T is an enum type (either named or unnamed), in which - // case printing it as an integer is the desired behavior. In case - // T is not an enum, printing it as an integer is the best we can do - // given that it has no user-defined printer. - static void PrintValue(const T& value, ::std::ostream* os) { - const internal::BiggestInt kBigInt = value; - *os << kBigInt; - } -}; - -// Prints the given value to the given ostream. If the value is a -// protocol message, its debug string is printed; if it's an enum or -// of a type implicitly convertible to BiggestInt, it's printed as an -// integer; otherwise the bytes in the value are printed. This is -// what UniversalPrinter::Print() does when it knows nothing about -// type T and T has neither << operator nor PrintTo(). -// -// A user can override this behavior for a class type Foo by defining -// a << operator in the namespace where Foo is defined. -// -// We put this operator in namespace 'internal2' instead of 'internal' -// to simplify the implementation, as much code in 'internal' needs to -// use << in STL, which would conflict with our own << were it defined -// in 'internal'. -// -// Note that this operator<< takes a generic std::basic_ostream type instead of the more restricted std::ostream. If -// we define it to take an std::ostream instead, we'll get an -// "ambiguous overloads" compiler error when trying to print a type -// Foo that supports streaming to std::basic_ostream, as the compiler cannot tell whether -// operator<<(std::ostream&, const T&) or -// operator<<(std::basic_stream, const Foo&) is more -// specific. -template -::std::basic_ostream& operator<<( - ::std::basic_ostream& os, const T& x) { - TypeWithoutFormatter::value ? kProtobuf : - internal::ImplicitlyConvertible::value ? - kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); - return os; -} - -} // namespace internal2 -} // namespace testing - -// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up -// magic needed for implementing UniversalPrinter won't work. -namespace testing_internal { - -// Used to print a value that is not an STL-style container when the -// user doesn't define PrintTo() for it. -template -void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { - // With the following statement, during unqualified name lookup, - // testing::internal2::operator<< appears as if it was declared in - // the nearest enclosing namespace that contains both - // ::testing_internal and ::testing::internal2, i.e. the global - // namespace. For more details, refer to the C++ Standard section - // 7.3.4-1 [namespace.udir]. This allows us to fall back onto - // testing::internal2::operator<< in case T doesn't come with a << - // operator. - // - // We cannot write 'using ::testing::internal2::operator<<;', which - // gcc 3.3 fails to compile due to a compiler bug. - using namespace ::testing::internal2; // NOLINT - - // Assuming T is defined in namespace foo, in the next statement, - // the compiler will consider all of: - // - // 1. foo::operator<< (thanks to Koenig look-up), - // 2. ::operator<< (as the current namespace is enclosed in ::), - // 3. testing::internal2::operator<< (thanks to the using statement above). - // - // The operator<< whose type matches T best will be picked. - // - // We deliberately allow #2 to be a candidate, as sometimes it's - // impossible to define #1 (e.g. when foo is ::std, defining - // anything in it is undefined behavior unless you are a compiler - // vendor.). - *os << value; -} - -} // namespace testing_internal - -namespace testing { -namespace internal { - -// UniversalPrinter::Print(value, ostream_ptr) prints the given -// value to the given ostream. The caller must ensure that -// 'ostream_ptr' is not NULL, or the behavior is undefined. -// -// We define UniversalPrinter as a class template (as opposed to a -// function template), as we need to partially specialize it for -// reference types, which cannot be done with function templates. -template -class UniversalPrinter; - -template -void UniversalPrint(const T& value, ::std::ostream* os); - -// Used to print an STL-style container when the user doesn't define -// a PrintTo() for it. -template -void DefaultPrintTo(IsContainer /* dummy */, - false_type /* is not a pointer */, - const C& container, ::std::ostream* os) { - const size_t kMaxCount = 32; // The maximum number of elements to print. - *os << '{'; - size_t count = 0; - for (typename C::const_iterator it = container.begin(); - it != container.end(); ++it, ++count) { - if (count > 0) { - *os << ','; - if (count == kMaxCount) { // Enough has been printed. - *os << " ..."; - break; - } - } - *os << ' '; - // We cannot call PrintTo(*it, os) here as PrintTo() doesn't - // handle *it being a native array. - internal::UniversalPrint(*it, os); - } - - if (count > 0) { - *os << ' '; - } - *os << '}'; -} - -// Used to print a pointer that is neither a char pointer nor a member -// pointer, when the user doesn't define PrintTo() for it. (A member -// variable pointer or member function pointer doesn't really point to -// a location in the address space. Their representation is -// implementation-defined. Therefore they will be printed as raw -// bytes.) -template -void DefaultPrintTo(IsNotContainer /* dummy */, - true_type /* is a pointer */, - T* p, ::std::ostream* os) { - if (p == NULL) { - *os << "NULL"; - } else { - // C++ doesn't allow casting from a function pointer to any object - // pointer. - // - // IsTrue() silences warnings: "Condition is always true", - // "unreachable code". - if (IsTrue(ImplicitlyConvertible::value)) { - // T is not a function type. We just call << to print p, - // relying on ADL to pick up user-defined << for their pointer - // types, if any. - *os << p; - } else { - // T is a function type, so '*os << p' doesn't do what we want - // (it just prints p as bool). We want to print p as a const - // void*. However, we cannot cast it to const void* directly, - // even using reinterpret_cast, as earlier versions of gcc - // (e.g. 3.4.5) cannot compile the cast when p is a function - // pointer. Casting to UInt64 first solves the problem. - *os << reinterpret_cast( - reinterpret_cast(p)); - } - } -} - -// Used to print a non-container, non-pointer value when the user -// doesn't define PrintTo() for it. -template -void DefaultPrintTo(IsNotContainer /* dummy */, - false_type /* is not a pointer */, - const T& value, ::std::ostream* os) { - ::testing_internal::DefaultPrintNonContainerTo(value, os); -} - -// Prints the given value using the << operator if it has one; -// otherwise prints the bytes in it. This is what -// UniversalPrinter::Print() does when PrintTo() is not specialized -// or overloaded for type T. -// -// A user can override this behavior for a class type Foo by defining -// an overload of PrintTo() in the namespace where Foo is defined. We -// give the user this option as sometimes defining a << operator for -// Foo is not desirable (e.g. the coding style may prevent doing it, -// or there is already a << operator but it doesn't do what the user -// wants). -template -void PrintTo(const T& value, ::std::ostream* os) { - // DefaultPrintTo() is overloaded. The type of its first two - // arguments determine which version will be picked. If T is an - // STL-style container, the version for container will be called; if - // T is a pointer, the pointer version will be called; otherwise the - // generic version will be called. - // - // Note that we check for container types here, prior to we check - // for protocol message types in our operator<<. The rationale is: - // - // For protocol messages, we want to give people a chance to - // override Google Mock's format by defining a PrintTo() or - // operator<<. For STL containers, other formats can be - // incompatible with Google Mock's format for the container - // elements; therefore we check for container types here to ensure - // that our format is used. - // - // The second argument of DefaultPrintTo() is needed to bypass a bug - // in Symbian's C++ compiler that prevents it from picking the right - // overload between: - // - // PrintTo(const T& x, ...); - // PrintTo(T* x, ...); - DefaultPrintTo(IsContainerTest(0), is_pointer(), value, os); -} - -// The following list of PrintTo() overloads tells -// UniversalPrinter::Print() how to print standard types (built-in -// types, strings, plain arrays, and pointers). - -// Overloads for various char types. -GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os); -GTEST_API_ void PrintTo(signed char c, ::std::ostream* os); -inline void PrintTo(char c, ::std::ostream* os) { - // When printing a plain char, we always treat it as unsigned. This - // way, the output won't be affected by whether the compiler thinks - // char is signed or not. - PrintTo(static_cast(c), os); -} - -// Overloads for other simple built-in types. -inline void PrintTo(bool x, ::std::ostream* os) { - *os << (x ? "true" : "false"); -} - -// Overload for wchar_t type. -// Prints a wchar_t as a symbol if it is printable or as its internal -// code otherwise and also as its decimal code (except for L'\0'). -// The L'\0' char is printed as "L'\\0'". The decimal code is printed -// as signed integer when wchar_t is implemented by the compiler -// as a signed type and is printed as an unsigned integer when wchar_t -// is implemented as an unsigned type. -GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); - -// Overloads for C strings. -GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); -inline void PrintTo(char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_(s), os); -} - -// signed/unsigned char is often used for representing binary data, so -// we print pointers to it as void* to be safe. -inline void PrintTo(const signed char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_(s), os); -} -inline void PrintTo(signed char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_(s), os); -} -inline void PrintTo(const unsigned char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_(s), os); -} -inline void PrintTo(unsigned char* s, ::std::ostream* os) { - PrintTo(ImplicitCast_(s), os); -} - -// MSVC can be configured to define wchar_t as a typedef of unsigned -// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native -// type. When wchar_t is a typedef, defining an overload for const -// wchar_t* would cause unsigned short* be printed as a wide string, -// possibly causing invalid memory accesses. -#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) -// Overloads for wide C strings -GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os); -inline void PrintTo(wchar_t* s, ::std::ostream* os) { - PrintTo(ImplicitCast_(s), os); -} -#endif - -// Overload for C arrays. Multi-dimensional arrays are printed -// properly. - -// Prints the given number of elements in an array, without printing -// the curly braces. -template -void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) { - UniversalPrint(a[0], os); - for (size_t i = 1; i != count; i++) { - *os << ", "; - UniversalPrint(a[i], os); - } -} - -// Overloads for ::string and ::std::string. -#if GTEST_HAS_GLOBAL_STRING -GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os); -inline void PrintTo(const ::string& s, ::std::ostream* os) { - PrintStringTo(s, os); -} -#endif // GTEST_HAS_GLOBAL_STRING - -GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os); -inline void PrintTo(const ::std::string& s, ::std::ostream* os) { - PrintStringTo(s, os); -} - -// Overloads for ::wstring and ::std::wstring. -#if GTEST_HAS_GLOBAL_WSTRING -GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os); -inline void PrintTo(const ::wstring& s, ::std::ostream* os) { - PrintWideStringTo(s, os); -} -#endif // GTEST_HAS_GLOBAL_WSTRING - -#if GTEST_HAS_STD_WSTRING -GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os); -inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) { - PrintWideStringTo(s, os); -} -#endif // GTEST_HAS_STD_WSTRING - -#if GTEST_HAS_TR1_TUPLE -// Overload for ::std::tr1::tuple. Needed for printing function arguments, -// which are packed as tuples. - -// Helper function for printing a tuple. T must be instantiated with -// a tuple type. -template -void PrintTupleTo(const T& t, ::std::ostream* os); - -// Overloaded PrintTo() for tuples of various arities. We support -// tuples of up-to 10 fields. The following implementation works -// regardless of whether tr1::tuple is implemented using the -// non-standard variadic template feature or not. - -inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, - ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, - ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, - ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, - ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo(const ::std::tr1::tuple& t, - ::std::ostream* os) { - PrintTupleTo(t, os); -} - -template -void PrintTo( - const ::std::tr1::tuple& t, - ::std::ostream* os) { - PrintTupleTo(t, os); -} -#endif // GTEST_HAS_TR1_TUPLE - -// Overload for std::pair. -template -void PrintTo(const ::std::pair& value, ::std::ostream* os) { - *os << '('; - // We cannot use UniversalPrint(value.first, os) here, as T1 may be - // a reference type. The same for printing value.second. - UniversalPrinter::Print(value.first, os); - *os << ", "; - UniversalPrinter::Print(value.second, os); - *os << ')'; -} - -// Implements printing a non-reference type T by letting the compiler -// pick the right overload of PrintTo() for T. -template -class UniversalPrinter { - public: - // MSVC warns about adding const to a function type, so we want to - // disable the warning. -#ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4180) // Temporarily disables warning 4180. -#endif // _MSC_VER - - // Note: we deliberately don't call this PrintTo(), as that name - // conflicts with ::testing::internal::PrintTo in the body of the - // function. - static void Print(const T& value, ::std::ostream* os) { - // By default, ::testing::internal::PrintTo() is used for printing - // the value. - // - // Thanks to Koenig look-up, if T is a class and has its own - // PrintTo() function defined in its namespace, that function will - // be visible here. Since it is more specific than the generic ones - // in ::testing::internal, it will be picked by the compiler in the - // following statement - exactly what we want. - PrintTo(value, os); - } - -#ifdef _MSC_VER -# pragma warning(pop) // Restores the warning state. -#endif // _MSC_VER -}; - -// UniversalPrintArray(begin, len, os) prints an array of 'len' -// elements, starting at address 'begin'. -template -void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) { - if (len == 0) { - *os << "{}"; - } else { - *os << "{ "; - const size_t kThreshold = 18; - const size_t kChunkSize = 8; - // If the array has more than kThreshold elements, we'll have to - // omit some details by printing only the first and the last - // kChunkSize elements. - // TODO(wan@google.com): let the user control the threshold using a flag. - if (len <= kThreshold) { - PrintRawArrayTo(begin, len, os); - } else { - PrintRawArrayTo(begin, kChunkSize, os); - *os << ", ..., "; - PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); - } - *os << " }"; - } -} -// This overload prints a (const) char array compactly. -GTEST_API_ void UniversalPrintArray(const char* begin, - size_t len, - ::std::ostream* os); - -// Implements printing an array type T[N]. -template -class UniversalPrinter { - public: - // Prints the given array, omitting some elements when there are too - // many. - static void Print(const T (&a)[N], ::std::ostream* os) { - UniversalPrintArray(a, N, os); - } -}; - -// Implements printing a reference type T&. -template -class UniversalPrinter { - public: - // MSVC warns about adding const to a function type, so we want to - // disable the warning. -#ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4180) // Temporarily disables warning 4180. -#endif // _MSC_VER - - static void Print(const T& value, ::std::ostream* os) { - // Prints the address of the value. We use reinterpret_cast here - // as static_cast doesn't compile when T is a function type. - *os << "@" << reinterpret_cast(&value) << " "; - - // Then prints the value itself. - UniversalPrint(value, os); - } - -#ifdef _MSC_VER -# pragma warning(pop) // Restores the warning state. -#endif // _MSC_VER -}; - -// Prints a value tersely: for a reference type, the referenced value -// (but not the address) is printed; for a (const) char pointer, the -// NUL-terminated string (but not the pointer) is printed. -template -void UniversalTersePrint(const T& value, ::std::ostream* os) { - UniversalPrint(value, os); -} -inline void UniversalTersePrint(const char* str, ::std::ostream* os) { - if (str == NULL) { - *os << "NULL"; - } else { - UniversalPrint(string(str), os); - } -} -inline void UniversalTersePrint(char* str, ::std::ostream* os) { - UniversalTersePrint(static_cast(str), os); -} - -// Prints a value using the type inferred by the compiler. The -// difference between this and UniversalTersePrint() is that for a -// (const) char pointer, this prints both the pointer and the -// NUL-terminated string. -template -void UniversalPrint(const T& value, ::std::ostream* os) { - UniversalPrinter::Print(value, os); -} - -#if GTEST_HAS_TR1_TUPLE -typedef ::std::vector Strings; - -// This helper template allows PrintTo() for tuples and -// UniversalTersePrintTupleFieldsToStrings() to be defined by -// induction on the number of tuple fields. The idea is that -// TuplePrefixPrinter::PrintPrefixTo(t, os) prints the first N -// fields in tuple t, and can be defined in terms of -// TuplePrefixPrinter. - -// The inductive case. -template -struct TuplePrefixPrinter { - // Prints the first N fields of a tuple. - template - static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { - TuplePrefixPrinter::PrintPrefixTo(t, os); - *os << ", "; - UniversalPrinter::type> - ::Print(::std::tr1::get(t), os); - } - - // Tersely prints the first N fields of a tuple to a string vector, - // one element for each field. - template - static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { - TuplePrefixPrinter::TersePrintPrefixToStrings(t, strings); - ::std::stringstream ss; - UniversalTersePrint(::std::tr1::get(t), &ss); - strings->push_back(ss.str()); - } -}; - -// Base cases. -template <> -struct TuplePrefixPrinter<0> { - template - static void PrintPrefixTo(const Tuple&, ::std::ostream*) {} - - template - static void TersePrintPrefixToStrings(const Tuple&, Strings*) {} -}; -// We have to specialize the entire TuplePrefixPrinter<> class -// template here, even though the definition of -// TersePrintPrefixToStrings() is the same as the generic version, as -// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't -// support specializing a method template of a class template. -template <> -struct TuplePrefixPrinter<1> { - template - static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { - UniversalPrinter::type>:: - Print(::std::tr1::get<0>(t), os); - } - - template - static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { - ::std::stringstream ss; - UniversalTersePrint(::std::tr1::get<0>(t), &ss); - strings->push_back(ss.str()); - } -}; - -// Helper function for printing a tuple. T must be instantiated with -// a tuple type. -template -void PrintTupleTo(const T& t, ::std::ostream* os) { - *os << "("; - TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: - PrintPrefixTo(t, os); - *os << ")"; -} - -// Prints the fields of a tuple tersely to a string vector, one -// element for each field. See the comment before -// UniversalTersePrint() for how we define "tersely". -template -Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) { - Strings result; - TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: - TersePrintPrefixToStrings(value, &result); - return result; -} -#endif // GTEST_HAS_TR1_TUPLE - -} // namespace internal - -template -::std::string PrintToString(const T& value) { - ::std::stringstream ss; - internal::UniversalTersePrint(value, &ss); - return ss.str(); -} - -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ - -#if GTEST_HAS_PARAM_TEST - -namespace testing { -namespace internal { - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Outputs a message explaining invalid registration of different -// fixture class for the same test case. This may happen when -// TEST_P macro is used to define two tests with the same name -// but in different namespaces. -GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, - const char* file, int line); - -template class ParamGeneratorInterface; -template class ParamGenerator; - -// Interface for iterating over elements provided by an implementation -// of ParamGeneratorInterface. -template -class ParamIteratorInterface { - public: - virtual ~ParamIteratorInterface() {} - // A pointer to the base generator instance. - // Used only for the purposes of iterator comparison - // to make sure that two iterators belong to the same generator. - virtual const ParamGeneratorInterface* BaseGenerator() const = 0; - // Advances iterator to point to the next element - // provided by the generator. The caller is responsible - // for not calling Advance() on an iterator equal to - // BaseGenerator()->End(). - virtual void Advance() = 0; - // Clones the iterator object. Used for implementing copy semantics - // of ParamIterator. - virtual ParamIteratorInterface* Clone() const = 0; - // Dereferences the current iterator and provides (read-only) access - // to the pointed value. It is the caller's responsibility not to call - // Current() on an iterator equal to BaseGenerator()->End(). - // Used for implementing ParamGenerator::operator*(). - virtual const T* Current() const = 0; - // Determines whether the given iterator and other point to the same - // element in the sequence generated by the generator. - // Used for implementing ParamGenerator::operator==(). - virtual bool Equals(const ParamIteratorInterface& other) const = 0; -}; - -// Class iterating over elements provided by an implementation of -// ParamGeneratorInterface. It wraps ParamIteratorInterface -// and implements the const forward iterator concept. -template -class ParamIterator { - public: - typedef T value_type; - typedef const T& reference; - typedef ptrdiff_t difference_type; - - // ParamIterator assumes ownership of the impl_ pointer. - ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {} - ParamIterator& operator=(const ParamIterator& other) { - if (this != &other) - impl_.reset(other.impl_->Clone()); - return *this; - } - - const T& operator*() const { return *impl_->Current(); } - const T* operator->() const { return impl_->Current(); } - // Prefix version of operator++. - ParamIterator& operator++() { - impl_->Advance(); - return *this; - } - // Postfix version of operator++. - ParamIterator operator++(int /*unused*/) { - ParamIteratorInterface* clone = impl_->Clone(); - impl_->Advance(); - return ParamIterator(clone); - } - bool operator==(const ParamIterator& other) const { - return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_); - } - bool operator!=(const ParamIterator& other) const { - return !(*this == other); - } - - private: - friend class ParamGenerator; - explicit ParamIterator(ParamIteratorInterface* impl) : impl_(impl) {} - scoped_ptr > impl_; -}; - -// ParamGeneratorInterface is the binary interface to access generators -// defined in other translation units. -template -class ParamGeneratorInterface { - public: - typedef T ParamType; - - virtual ~ParamGeneratorInterface() {} - - // Generator interface definition - virtual ParamIteratorInterface* Begin() const = 0; - virtual ParamIteratorInterface* End() const = 0; -}; - -// Wraps ParamGeneratorInterface and provides general generator syntax -// compatible with the STL Container concept. -// This class implements copy initialization semantics and the contained -// ParamGeneratorInterface instance is shared among all copies -// of the original object. This is possible because that instance is immutable. -template -class ParamGenerator { - public: - typedef ParamIterator iterator; - - explicit ParamGenerator(ParamGeneratorInterface* impl) : impl_(impl) {} - ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {} - - ParamGenerator& operator=(const ParamGenerator& other) { - impl_ = other.impl_; - return *this; - } - - iterator begin() const { return iterator(impl_->Begin()); } - iterator end() const { return iterator(impl_->End()); } - - private: - linked_ptr > impl_; -}; - -// Generates values from a range of two comparable values. Can be used to -// generate sequences of user-defined types that implement operator+() and -// operator<(). -// This class is used in the Range() function. -template -class RangeGenerator : public ParamGeneratorInterface { - public: - RangeGenerator(T begin, T end, IncrementT step) - : begin_(begin), end_(end), - step_(step), end_index_(CalculateEndIndex(begin, end, step)) {} - virtual ~RangeGenerator() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, begin_, 0, step_); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, end_, end_index_, step_); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, T value, int index, - IncrementT step) - : base_(base), value_(value), index_(index), step_(step) {} - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - virtual void Advance() { - value_ = value_ + step_; - index_++; - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const T* Current() const { return &value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const int other_index = - CheckedDowncastToActualType(&other)->index_; - return index_ == other_index; - } - - private: - Iterator(const Iterator& other) - : ParamIteratorInterface(), - base_(other.base_), value_(other.value_), index_(other.index_), - step_(other.step_) {} - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - T value_; - int index_; - const IncrementT step_; - }; // class RangeGenerator::Iterator - - static int CalculateEndIndex(const T& begin, - const T& end, - const IncrementT& step) { - int end_index = 0; - for (T i = begin; i < end; i = i + step) - end_index++; - return end_index; - } - - // No implementation - assignment is unsupported. - void operator=(const RangeGenerator& other); - - const T begin_; - const T end_; - const IncrementT step_; - // The index for the end() iterator. All the elements in the generated - // sequence are indexed (0-based) to aid iterator comparison. - const int end_index_; -}; // class RangeGenerator - - -// Generates values from a pair of STL-style iterators. Used in the -// ValuesIn() function. The elements are copied from the source range -// since the source can be located on the stack, and the generator -// is likely to persist beyond that stack frame. -template -class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface { - public: - template - ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end) - : container_(begin, end) {} - virtual ~ValuesInIteratorRangeGenerator() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, container_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, container_.end()); - } - - private: - typedef typename ::std::vector ContainerType; - - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - typename ContainerType::const_iterator iterator) - : base_(base), iterator_(iterator) {} - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - virtual void Advance() { - ++iterator_; - value_.reset(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - // We need to use cached value referenced by iterator_ because *iterator_ - // can return a temporary object (and of type other then T), so just - // having "return &*iterator_;" doesn't work. - // value_ is updated here and not in Advance() because Advance() - // can advance iterator_ beyond the end of the range, and we cannot - // detect that fact. The client code, on the other hand, is - // responsible for not calling Current() on an out-of-range iterator. - virtual const T* Current() const { - if (value_.get() == NULL) - value_.reset(new T(*iterator_)); - return value_.get(); - } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - return iterator_ == - CheckedDowncastToActualType(&other)->iterator_; - } - - private: - Iterator(const Iterator& other) - // The explicit constructor call suppresses a false warning - // emitted by gcc when supplied with the -Wextra option. - : ParamIteratorInterface(), - base_(other.base_), - iterator_(other.iterator_) {} - - const ParamGeneratorInterface* const base_; - typename ContainerType::const_iterator iterator_; - // A cached value of *iterator_. We keep it here to allow access by - // pointer in the wrapping iterator's operator->(). - // value_ needs to be mutable to be accessed in Current(). - // Use of scoped_ptr helps manage cached value's lifetime, - // which is bound by the lifespan of the iterator itself. - mutable scoped_ptr value_; - }; // class ValuesInIteratorRangeGenerator::Iterator - - // No implementation - assignment is unsupported. - void operator=(const ValuesInIteratorRangeGenerator& other); - - const ContainerType container_; -}; // class ValuesInIteratorRangeGenerator - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Stores a parameter value and later creates tests parameterized with that -// value. -template -class ParameterizedTestFactory : public TestFactoryBase { - public: - typedef typename TestClass::ParamType ParamType; - explicit ParameterizedTestFactory(ParamType parameter) : - parameter_(parameter) {} - virtual Test* CreateTest() { - TestClass::SetParam(¶meter_); - return new TestClass(); - } - - private: - const ParamType parameter_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory); -}; - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// TestMetaFactoryBase is a base class for meta-factories that create -// test factories for passing into MakeAndRegisterTestInfo function. -template -class TestMetaFactoryBase { - public: - virtual ~TestMetaFactoryBase() {} - - virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0; -}; - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// TestMetaFactory creates test factories for passing into -// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives -// ownership of test factory pointer, same factory object cannot be passed -// into that method twice. But ParameterizedTestCaseInfo is going to call -// it for each Test/Parameter value combination. Thus it needs meta factory -// creator class. -template -class TestMetaFactory - : public TestMetaFactoryBase { - public: - typedef typename TestCase::ParamType ParamType; - - TestMetaFactory() {} - - virtual TestFactoryBase* CreateTestFactory(ParamType parameter) { - return new ParameterizedTestFactory(parameter); - } - - private: - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory); -}; - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// ParameterizedTestCaseInfoBase is a generic interface -// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase -// accumulates test information provided by TEST_P macro invocations -// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations -// and uses that information to register all resulting test instances -// in RegisterTests method. The ParameterizeTestCaseRegistry class holds -// a collection of pointers to the ParameterizedTestCaseInfo objects -// and calls RegisterTests() on each of them when asked. -class ParameterizedTestCaseInfoBase { - public: - virtual ~ParameterizedTestCaseInfoBase() {} - - // Base part of test case name for display purposes. - virtual const string& GetTestCaseName() const = 0; - // Test case id to verify identity. - virtual TypeId GetTestCaseTypeId() const = 0; - // UnitTest class invokes this method to register tests in this - // test case right before running them in RUN_ALL_TESTS macro. - // This method should not be called more then once on any single - // instance of a ParameterizedTestCaseInfoBase derived class. - virtual void RegisterTests() = 0; - - protected: - ParameterizedTestCaseInfoBase() {} - - private: - GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase); -}; - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P -// macro invocations for a particular test case and generators -// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that -// test case. It registers tests with all values generated by all -// generators when asked. -template -class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { - public: - // ParamType and GeneratorCreationFunc are private types but are required - // for declarations of public methods AddTestPattern() and - // AddTestCaseInstantiation(). - typedef typename TestCase::ParamType ParamType; - // A function that returns an instance of appropriate generator type. - typedef ParamGenerator(GeneratorCreationFunc)(); - - explicit ParameterizedTestCaseInfo(const char* name) - : test_case_name_(name) {} - - // Test case base name for display purposes. - virtual const string& GetTestCaseName() const { return test_case_name_; } - // Test case id to verify identity. - virtual TypeId GetTestCaseTypeId() const { return GetTypeId(); } - // TEST_P macro uses AddTestPattern() to record information - // about a single test in a LocalTestInfo structure. - // test_case_name is the base name of the test case (without invocation - // prefix). test_base_name is the name of an individual test without - // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is - // test case base name and DoBar is test base name. - void AddTestPattern(const char* test_case_name, - const char* test_base_name, - TestMetaFactoryBase* meta_factory) { - tests_.push_back(linked_ptr(new TestInfo(test_case_name, - test_base_name, - meta_factory))); - } - // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information - // about a generator. - int AddTestCaseInstantiation(const string& instantiation_name, - GeneratorCreationFunc* func, - const char* /* file */, - int /* line */) { - instantiations_.push_back(::std::make_pair(instantiation_name, func)); - return 0; // Return value used only to run this method in namespace scope. - } - // UnitTest class invokes this method to register tests in this test case - // test cases right before running tests in RUN_ALL_TESTS macro. - // This method should not be called more then once on any single - // instance of a ParameterizedTestCaseInfoBase derived class. - // UnitTest has a guard to prevent from calling this method more then once. - virtual void RegisterTests() { - for (typename TestInfoContainer::iterator test_it = tests_.begin(); - test_it != tests_.end(); ++test_it) { - linked_ptr test_info = *test_it; - for (typename InstantiationContainer::iterator gen_it = - instantiations_.begin(); gen_it != instantiations_.end(); - ++gen_it) { - const string& instantiation_name = gen_it->first; - ParamGenerator generator((*gen_it->second)()); - - Message test_case_name_stream; - if ( !instantiation_name.empty() ) - test_case_name_stream << instantiation_name << "/"; - test_case_name_stream << test_info->test_case_base_name; - - int i = 0; - for (typename ParamGenerator::iterator param_it = - generator.begin(); - param_it != generator.end(); ++param_it, ++i) { - Message test_name_stream; - test_name_stream << test_info->test_base_name << "/" << i; - MakeAndRegisterTestInfo( - test_case_name_stream.GetString().c_str(), - test_name_stream.GetString().c_str(), - NULL, // No type parameter. - PrintToString(*param_it).c_str(), - GetTestCaseTypeId(), - TestCase::SetUpTestCase, - TestCase::TearDownTestCase, - test_info->test_meta_factory->CreateTestFactory(*param_it)); - } // for param_it - } // for gen_it - } // for test_it - } // RegisterTests - - private: - // LocalTestInfo structure keeps information about a single test registered - // with TEST_P macro. - struct TestInfo { - TestInfo(const char* a_test_case_base_name, - const char* a_test_base_name, - TestMetaFactoryBase* a_test_meta_factory) : - test_case_base_name(a_test_case_base_name), - test_base_name(a_test_base_name), - test_meta_factory(a_test_meta_factory) {} - - const string test_case_base_name; - const string test_base_name; - const scoped_ptr > test_meta_factory; - }; - typedef ::std::vector > TestInfoContainer; - // Keeps pairs of - // received from INSTANTIATE_TEST_CASE_P macros. - typedef ::std::vector > - InstantiationContainer; - - const string test_case_name_; - TestInfoContainer tests_; - InstantiationContainer instantiations_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo); -}; // class ParameterizedTestCaseInfo - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase -// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P -// macros use it to locate their corresponding ParameterizedTestCaseInfo -// descriptors. -class ParameterizedTestCaseRegistry { - public: - ParameterizedTestCaseRegistry() {} - ~ParameterizedTestCaseRegistry() { - for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); - it != test_case_infos_.end(); ++it) { - delete *it; - } - } - - // Looks up or creates and returns a structure containing information about - // tests and instantiations of a particular test case. - template - ParameterizedTestCaseInfo* GetTestCasePatternHolder( - const char* test_case_name, - const char* file, - int line) { - ParameterizedTestCaseInfo* typed_test_info = NULL; - for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); - it != test_case_infos_.end(); ++it) { - if ((*it)->GetTestCaseName() == test_case_name) { - if ((*it)->GetTestCaseTypeId() != GetTypeId()) { - // Complain about incorrect usage of Google Test facilities - // and terminate the program since we cannot guaranty correct - // test case setup and tear-down in this case. - ReportInvalidTestCaseType(test_case_name, file, line); - posix::Abort(); - } else { - // At this point we are sure that the object we found is of the same - // type we are looking for, so we downcast it to that type - // without further checks. - typed_test_info = CheckedDowncastToActualType< - ParameterizedTestCaseInfo >(*it); - } - break; - } - } - if (typed_test_info == NULL) { - typed_test_info = new ParameterizedTestCaseInfo(test_case_name); - test_case_infos_.push_back(typed_test_info); - } - return typed_test_info; - } - void RegisterTests() { - for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); - it != test_case_infos_.end(); ++it) { - (*it)->RegisterTests(); - } - } - - private: - typedef ::std::vector TestCaseInfoContainer; - - TestCaseInfoContainer test_case_infos_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry); -}; - -} // namespace internal -} // namespace testing - -#endif // GTEST_HAS_PARAM_TEST - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ -// This file was GENERATED by command: -// pump.py gtest-param-util-generated.h.pump -// DO NOT EDIT BY HAND!!! - -// Copyright 2008 Google Inc. -// All Rights Reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: vladl@google.com (Vlad Losev) - -// Type and function utilities for implementing parameterized tests. -// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! -// -// Currently Google Test supports at most 50 arguments in Values, -// and at most 10 arguments in Combine. Please contact -// googletestframework@googlegroups.com if you need more. -// Please note that the number of arguments to Combine is limited -// by the maximum arity of the implementation of tr1::tuple which is -// currently set at 10. - -#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ -#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ - -// scripts/fuse_gtest.py depends on gtest's own header being #included -// *unconditionally*. Therefore these #includes cannot be moved -// inside #if GTEST_HAS_PARAM_TEST. - -#if GTEST_HAS_PARAM_TEST - -namespace testing { - -// Forward declarations of ValuesIn(), which is implemented in -// include/gtest/gtest-param-test.h. -template -internal::ParamGenerator< - typename ::testing::internal::IteratorTraits::value_type> -ValuesIn(ForwardIterator begin, ForwardIterator end); - -template -internal::ParamGenerator ValuesIn(const T (&array)[N]); - -template -internal::ParamGenerator ValuesIn( - const Container& container); - -namespace internal { - -// Used in the Values() function to provide polymorphic capabilities. -template -class ValueArray1 { - public: - explicit ValueArray1(T1 v1) : v1_(v1) {} - - template - operator ParamGenerator() const { return ValuesIn(&v1_, &v1_ + 1); } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray1& other); - - const T1 v1_; -}; - -template -class ValueArray2 { - public: - ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray2& other); - - const T1 v1_; - const T2 v2_; -}; - -template -class ValueArray3 { - public: - ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray3& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; -}; - -template -class ValueArray4 { - public: - ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray4& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; -}; - -template -class ValueArray5 { - public: - ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray5& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; -}; - -template -class ValueArray6 { - public: - ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray6& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; -}; - -template -class ValueArray7 { - public: - ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray7& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; -}; - -template -class ValueArray8 { - public: - ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray8& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; -}; - -template -class ValueArray9 { - public: - ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray9& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; -}; - -template -class ValueArray10 { - public: - ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray10& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; -}; - -template -class ValueArray11 { - public: - ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray11& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; -}; - -template -class ValueArray12 { - public: - ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray12& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; -}; - -template -class ValueArray13 { - public: - ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray13& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; -}; - -template -class ValueArray14 { - public: - ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray14& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; -}; - -template -class ValueArray15 { - public: - ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray15& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; -}; - -template -class ValueArray16 { - public: - ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray16& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; -}; - -template -class ValueArray17 { - public: - ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray17& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; -}; - -template -class ValueArray18 { - public: - ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray18& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; -}; - -template -class ValueArray19 { - public: - ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), - v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray19& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; -}; - -template -class ValueArray20 { - public: - ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), - v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), - v19_(v19), v20_(v20) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray20& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; -}; - -template -class ValueArray21 { - public: - ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), - v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray21& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; -}; - -template -class ValueArray22 { - public: - ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray22& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; -}; - -template -class ValueArray23 { - public: - ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, - v23_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray23& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; -}; - -template -class ValueArray24 { - public: - ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), - v22_(v22), v23_(v23), v24_(v24) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray24& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; -}; - -template -class ValueArray25 { - public: - ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray25& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; -}; - -template -class ValueArray26 { - public: - ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray26& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; -}; - -template -class ValueArray27 { - public: - ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), - v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), - v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), - v26_(v26), v27_(v27) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray27& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; -}; - -template -class ValueArray28 { - public: - ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), - v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), - v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), - v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray28& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; -}; - -template -class ValueArray29 { - public: - ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), - v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), - v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray29& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; -}; - -template -class ValueArray30 { - public: - ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray30& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; -}; - -template -class ValueArray31 { - public: - ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray31& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; -}; - -template -class ValueArray32 { - public: - ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), - v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), - v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray32& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; -}; - -template -class ValueArray33 { - public: - ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, - T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray33& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; -}; - -template -class ValueArray34 { - public: - ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray34& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; -}; - -template -class ValueArray35 { - public: - ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), - v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), - v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), - v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), - v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, - v35_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray35& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; -}; - -template -class ValueArray36 { - public: - ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), - v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), - v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), - v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), - v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray36& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; -}; - -template -class ValueArray37 { - public: - ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), - v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), - v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), - v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), - v36_(v36), v37_(v37) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray37& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; -}; - -template -class ValueArray38 { - public: - ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), - v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray38& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; -}; - -template -class ValueArray39 { - public: - ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), - v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray39& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; -}; - -template -class ValueArray40 { - public: - ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), - v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), - v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), - v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), - v40_(v40) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray40& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; -}; - -template -class ValueArray41 { - public: - ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, - T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), - v39_(v39), v40_(v40), v41_(v41) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray41& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; -}; - -template -class ValueArray42 { - public: - ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), - v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray42& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; -}; - -template -class ValueArray43 { - public: - ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), - v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), - v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), - v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), - v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), - v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray43& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; - const T43 v43_; -}; - -template -class ValueArray44 { - public: - ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), - v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), - v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), - v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), - v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), - v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), - v43_(v43), v44_(v44) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray44& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; - const T43 v43_; - const T44 v44_; -}; - -template -class ValueArray45 { - public: - ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), - v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), - v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), - v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), - v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), - v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray45& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; - const T43 v43_; - const T44 v44_; - const T45 v45_; -}; - -template -class ValueArray46 { - public: - ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), - v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), - v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray46& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; - const T43 v43_; - const T44 v44_; - const T45 v45_; - const T46 v46_; -}; - -template -class ValueArray47 { - public: - ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), - v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), - v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), - v47_(v47) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, - v47_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray47& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; - const T43 v43_; - const T44 v44_; - const T45 v45_; - const T46 v46_; - const T47 v47_; -}; - -template -class ValueArray48 { - public: - ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), - v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), - v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), - v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), - v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), - v46_(v46), v47_(v47), v48_(v48) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, - v48_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray48& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; - const T43 v43_; - const T44 v44_; - const T45 v45_; - const T46 v46_; - const T47 v47_; - const T48 v48_; -}; - -template -class ValueArray49 { - public: - ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, - T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), - v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), - v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, - v48_, v49_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray49& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; - const T43 v43_; - const T44 v44_; - const T45 v45_; - const T46 v46_; - const T47 v47_; - const T48 v48_; - const T49 v49_; -}; - -template -class ValueArray50 { - public: - ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, - T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), - v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), - v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} - - template - operator ParamGenerator() const { - const T array[] = {v1_, v2_, v3_, v4_, v5_, v6_, v7_, v8_, v9_, v10_, v11_, - v12_, v13_, v14_, v15_, v16_, v17_, v18_, v19_, v20_, v21_, v22_, v23_, - v24_, v25_, v26_, v27_, v28_, v29_, v30_, v31_, v32_, v33_, v34_, v35_, - v36_, v37_, v38_, v39_, v40_, v41_, v42_, v43_, v44_, v45_, v46_, v47_, - v48_, v49_, v50_}; - return ValuesIn(array); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray50& other); - - const T1 v1_; - const T2 v2_; - const T3 v3_; - const T4 v4_; - const T5 v5_; - const T6 v6_; - const T7 v7_; - const T8 v8_; - const T9 v9_; - const T10 v10_; - const T11 v11_; - const T12 v12_; - const T13 v13_; - const T14 v14_; - const T15 v15_; - const T16 v16_; - const T17 v17_; - const T18 v18_; - const T19 v19_; - const T20 v20_; - const T21 v21_; - const T22 v22_; - const T23 v23_; - const T24 v24_; - const T25 v25_; - const T26 v26_; - const T27 v27_; - const T28 v28_; - const T29 v29_; - const T30 v30_; - const T31 v31_; - const T32 v32_; - const T33 v33_; - const T34 v34_; - const T35 v35_; - const T36 v36_; - const T37 v37_; - const T38 v38_; - const T39 v39_; - const T40 v40_; - const T41 v41_; - const T42 v42_; - const T43 v43_; - const T44 v44_; - const T45 v45_; - const T46 v46_; - const T47 v47_; - const T48 v48_; - const T49 v49_; - const T50 v50_; -}; - -# if GTEST_HAS_COMBINE -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Generates values from the Cartesian product of values produced -// by the argument generators. -// -template -class CartesianProductGenerator2 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator2(const ParamGenerator& g1, - const ParamGenerator& g2) - : g1_(g1), g2_(g2) {} - virtual ~CartesianProductGenerator2() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current2_; - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - ParamType current_value_; - }; // class CartesianProductGenerator2::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator2& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; -}; // class CartesianProductGenerator2 - - -template -class CartesianProductGenerator3 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator3(const ParamGenerator& g1, - const ParamGenerator& g2, const ParamGenerator& g3) - : g1_(g1), g2_(g2), g3_(g3) {} - virtual ~CartesianProductGenerator3() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2, - const ParamGenerator& g3, - const typename ParamGenerator::iterator& current3) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current3_; - if (current3_ == end3_) { - current3_ = begin3_; - ++current2_; - } - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - const typename ParamGenerator::iterator begin3_; - const typename ParamGenerator::iterator end3_; - typename ParamGenerator::iterator current3_; - ParamType current_value_; - }; // class CartesianProductGenerator3::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator3& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; - const ParamGenerator g3_; -}; // class CartesianProductGenerator3 - - -template -class CartesianProductGenerator4 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator4(const ParamGenerator& g1, - const ParamGenerator& g2, const ParamGenerator& g3, - const ParamGenerator& g4) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} - virtual ~CartesianProductGenerator4() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2, - const ParamGenerator& g3, - const typename ParamGenerator::iterator& current3, - const ParamGenerator& g4, - const typename ParamGenerator::iterator& current4) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current4_; - if (current4_ == end4_) { - current4_ = begin4_; - ++current3_; - } - if (current3_ == end3_) { - current3_ = begin3_; - ++current2_; - } - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - const typename ParamGenerator::iterator begin3_; - const typename ParamGenerator::iterator end3_; - typename ParamGenerator::iterator current3_; - const typename ParamGenerator::iterator begin4_; - const typename ParamGenerator::iterator end4_; - typename ParamGenerator::iterator current4_; - ParamType current_value_; - }; // class CartesianProductGenerator4::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator4& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; - const ParamGenerator g3_; - const ParamGenerator g4_; -}; // class CartesianProductGenerator4 - - -template -class CartesianProductGenerator5 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator5(const ParamGenerator& g1, - const ParamGenerator& g2, const ParamGenerator& g3, - const ParamGenerator& g4, const ParamGenerator& g5) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} - virtual ~CartesianProductGenerator5() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2, - const ParamGenerator& g3, - const typename ParamGenerator::iterator& current3, - const ParamGenerator& g4, - const typename ParamGenerator::iterator& current4, - const ParamGenerator& g5, - const typename ParamGenerator::iterator& current5) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current5_; - if (current5_ == end5_) { - current5_ = begin5_; - ++current4_; - } - if (current4_ == end4_) { - current4_ = begin4_; - ++current3_; - } - if (current3_ == end3_) { - current3_ = begin3_; - ++current2_; - } - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - const typename ParamGenerator::iterator begin3_; - const typename ParamGenerator::iterator end3_; - typename ParamGenerator::iterator current3_; - const typename ParamGenerator::iterator begin4_; - const typename ParamGenerator::iterator end4_; - typename ParamGenerator::iterator current4_; - const typename ParamGenerator::iterator begin5_; - const typename ParamGenerator::iterator end5_; - typename ParamGenerator::iterator current5_; - ParamType current_value_; - }; // class CartesianProductGenerator5::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator5& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; - const ParamGenerator g3_; - const ParamGenerator g4_; - const ParamGenerator g5_; -}; // class CartesianProductGenerator5 - - -template -class CartesianProductGenerator6 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator6(const ParamGenerator& g1, - const ParamGenerator& g2, const ParamGenerator& g3, - const ParamGenerator& g4, const ParamGenerator& g5, - const ParamGenerator& g6) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} - virtual ~CartesianProductGenerator6() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2, - const ParamGenerator& g3, - const typename ParamGenerator::iterator& current3, - const ParamGenerator& g4, - const typename ParamGenerator::iterator& current4, - const ParamGenerator& g5, - const typename ParamGenerator::iterator& current5, - const ParamGenerator& g6, - const typename ParamGenerator::iterator& current6) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current6_; - if (current6_ == end6_) { - current6_ = begin6_; - ++current5_; - } - if (current5_ == end5_) { - current5_ = begin5_; - ++current4_; - } - if (current4_ == end4_) { - current4_ = begin4_; - ++current3_; - } - if (current3_ == end3_) { - current3_ = begin3_; - ++current2_; - } - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - const typename ParamGenerator::iterator begin3_; - const typename ParamGenerator::iterator end3_; - typename ParamGenerator::iterator current3_; - const typename ParamGenerator::iterator begin4_; - const typename ParamGenerator::iterator end4_; - typename ParamGenerator::iterator current4_; - const typename ParamGenerator::iterator begin5_; - const typename ParamGenerator::iterator end5_; - typename ParamGenerator::iterator current5_; - const typename ParamGenerator::iterator begin6_; - const typename ParamGenerator::iterator end6_; - typename ParamGenerator::iterator current6_; - ParamType current_value_; - }; // class CartesianProductGenerator6::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator6& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; - const ParamGenerator g3_; - const ParamGenerator g4_; - const ParamGenerator g5_; - const ParamGenerator g6_; -}; // class CartesianProductGenerator6 - - -template -class CartesianProductGenerator7 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator7(const ParamGenerator& g1, - const ParamGenerator& g2, const ParamGenerator& g3, - const ParamGenerator& g4, const ParamGenerator& g5, - const ParamGenerator& g6, const ParamGenerator& g7) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} - virtual ~CartesianProductGenerator7() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, - g7_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2, - const ParamGenerator& g3, - const typename ParamGenerator::iterator& current3, - const ParamGenerator& g4, - const typename ParamGenerator::iterator& current4, - const ParamGenerator& g5, - const typename ParamGenerator::iterator& current5, - const ParamGenerator& g6, - const typename ParamGenerator::iterator& current6, - const ParamGenerator& g7, - const typename ParamGenerator::iterator& current7) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6), - begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current7_; - if (current7_ == end7_) { - current7_ = begin7_; - ++current6_; - } - if (current6_ == end6_) { - current6_ = begin6_; - ++current5_; - } - if (current5_ == end5_) { - current5_ = begin5_; - ++current4_; - } - if (current4_ == end4_) { - current4_ = begin4_; - ++current3_; - } - if (current3_ == end3_) { - current3_ = begin3_; - ++current2_; - } - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_ && - current7_ == typed_other->current7_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_), - begin7_(other.begin7_), - end7_(other.end7_), - current7_(other.current7_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_, *current7_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_ || - current7_ == end7_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - const typename ParamGenerator::iterator begin3_; - const typename ParamGenerator::iterator end3_; - typename ParamGenerator::iterator current3_; - const typename ParamGenerator::iterator begin4_; - const typename ParamGenerator::iterator end4_; - typename ParamGenerator::iterator current4_; - const typename ParamGenerator::iterator begin5_; - const typename ParamGenerator::iterator end5_; - typename ParamGenerator::iterator current5_; - const typename ParamGenerator::iterator begin6_; - const typename ParamGenerator::iterator end6_; - typename ParamGenerator::iterator current6_; - const typename ParamGenerator::iterator begin7_; - const typename ParamGenerator::iterator end7_; - typename ParamGenerator::iterator current7_; - ParamType current_value_; - }; // class CartesianProductGenerator7::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator7& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; - const ParamGenerator g3_; - const ParamGenerator g4_; - const ParamGenerator g5_; - const ParamGenerator g6_; - const ParamGenerator g7_; -}; // class CartesianProductGenerator7 - - -template -class CartesianProductGenerator8 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator8(const ParamGenerator& g1, - const ParamGenerator& g2, const ParamGenerator& g3, - const ParamGenerator& g4, const ParamGenerator& g5, - const ParamGenerator& g6, const ParamGenerator& g7, - const ParamGenerator& g8) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), - g8_(g8) {} - virtual ~CartesianProductGenerator8() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, - g7_.begin(), g8_, g8_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, - g8_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2, - const ParamGenerator& g3, - const typename ParamGenerator::iterator& current3, - const ParamGenerator& g4, - const typename ParamGenerator::iterator& current4, - const ParamGenerator& g5, - const typename ParamGenerator::iterator& current5, - const ParamGenerator& g6, - const typename ParamGenerator::iterator& current6, - const ParamGenerator& g7, - const typename ParamGenerator::iterator& current7, - const ParamGenerator& g8, - const typename ParamGenerator::iterator& current8) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6), - begin7_(g7.begin()), end7_(g7.end()), current7_(current7), - begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current8_; - if (current8_ == end8_) { - current8_ = begin8_; - ++current7_; - } - if (current7_ == end7_) { - current7_ = begin7_; - ++current6_; - } - if (current6_ == end6_) { - current6_ = begin6_; - ++current5_; - } - if (current5_ == end5_) { - current5_ = begin5_; - ++current4_; - } - if (current4_ == end4_) { - current4_ = begin4_; - ++current3_; - } - if (current3_ == end3_) { - current3_ = begin3_; - ++current2_; - } - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_ && - current7_ == typed_other->current7_ && - current8_ == typed_other->current8_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_), - begin7_(other.begin7_), - end7_(other.end7_), - current7_(other.current7_), - begin8_(other.begin8_), - end8_(other.end8_), - current8_(other.current8_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_, *current7_, *current8_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_ || - current7_ == end7_ || - current8_ == end8_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - const typename ParamGenerator::iterator begin3_; - const typename ParamGenerator::iterator end3_; - typename ParamGenerator::iterator current3_; - const typename ParamGenerator::iterator begin4_; - const typename ParamGenerator::iterator end4_; - typename ParamGenerator::iterator current4_; - const typename ParamGenerator::iterator begin5_; - const typename ParamGenerator::iterator end5_; - typename ParamGenerator::iterator current5_; - const typename ParamGenerator::iterator begin6_; - const typename ParamGenerator::iterator end6_; - typename ParamGenerator::iterator current6_; - const typename ParamGenerator::iterator begin7_; - const typename ParamGenerator::iterator end7_; - typename ParamGenerator::iterator current7_; - const typename ParamGenerator::iterator begin8_; - const typename ParamGenerator::iterator end8_; - typename ParamGenerator::iterator current8_; - ParamType current_value_; - }; // class CartesianProductGenerator8::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator8& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; - const ParamGenerator g3_; - const ParamGenerator g4_; - const ParamGenerator g5_; - const ParamGenerator g6_; - const ParamGenerator g7_; - const ParamGenerator g8_; -}; // class CartesianProductGenerator8 - - -template -class CartesianProductGenerator9 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator9(const ParamGenerator& g1, - const ParamGenerator& g2, const ParamGenerator& g3, - const ParamGenerator& g4, const ParamGenerator& g5, - const ParamGenerator& g6, const ParamGenerator& g7, - const ParamGenerator& g8, const ParamGenerator& g9) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), - g9_(g9) {} - virtual ~CartesianProductGenerator9() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, - g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, - g8_.end(), g9_, g9_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2, - const ParamGenerator& g3, - const typename ParamGenerator::iterator& current3, - const ParamGenerator& g4, - const typename ParamGenerator::iterator& current4, - const ParamGenerator& g5, - const typename ParamGenerator::iterator& current5, - const ParamGenerator& g6, - const typename ParamGenerator::iterator& current6, - const ParamGenerator& g7, - const typename ParamGenerator::iterator& current7, - const ParamGenerator& g8, - const typename ParamGenerator::iterator& current8, - const ParamGenerator& g9, - const typename ParamGenerator::iterator& current9) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6), - begin7_(g7.begin()), end7_(g7.end()), current7_(current7), - begin8_(g8.begin()), end8_(g8.end()), current8_(current8), - begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current9_; - if (current9_ == end9_) { - current9_ = begin9_; - ++current8_; - } - if (current8_ == end8_) { - current8_ = begin8_; - ++current7_; - } - if (current7_ == end7_) { - current7_ = begin7_; - ++current6_; - } - if (current6_ == end6_) { - current6_ = begin6_; - ++current5_; - } - if (current5_ == end5_) { - current5_ = begin5_; - ++current4_; - } - if (current4_ == end4_) { - current4_ = begin4_; - ++current3_; - } - if (current3_ == end3_) { - current3_ = begin3_; - ++current2_; - } - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_ && - current7_ == typed_other->current7_ && - current8_ == typed_other->current8_ && - current9_ == typed_other->current9_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_), - begin7_(other.begin7_), - end7_(other.end7_), - current7_(other.current7_), - begin8_(other.begin8_), - end8_(other.end8_), - current8_(other.current8_), - begin9_(other.begin9_), - end9_(other.end9_), - current9_(other.current9_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_, *current7_, *current8_, - *current9_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_ || - current7_ == end7_ || - current8_ == end8_ || - current9_ == end9_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - const typename ParamGenerator::iterator begin3_; - const typename ParamGenerator::iterator end3_; - typename ParamGenerator::iterator current3_; - const typename ParamGenerator::iterator begin4_; - const typename ParamGenerator::iterator end4_; - typename ParamGenerator::iterator current4_; - const typename ParamGenerator::iterator begin5_; - const typename ParamGenerator::iterator end5_; - typename ParamGenerator::iterator current5_; - const typename ParamGenerator::iterator begin6_; - const typename ParamGenerator::iterator end6_; - typename ParamGenerator::iterator current6_; - const typename ParamGenerator::iterator begin7_; - const typename ParamGenerator::iterator end7_; - typename ParamGenerator::iterator current7_; - const typename ParamGenerator::iterator begin8_; - const typename ParamGenerator::iterator end8_; - typename ParamGenerator::iterator current8_; - const typename ParamGenerator::iterator begin9_; - const typename ParamGenerator::iterator end9_; - typename ParamGenerator::iterator current9_; - ParamType current_value_; - }; // class CartesianProductGenerator9::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator9& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; - const ParamGenerator g3_; - const ParamGenerator g4_; - const ParamGenerator g5_; - const ParamGenerator g6_; - const ParamGenerator g7_; - const ParamGenerator g8_; - const ParamGenerator g9_; -}; // class CartesianProductGenerator9 - - -template -class CartesianProductGenerator10 - : public ParamGeneratorInterface< ::std::tr1::tuple > { - public: - typedef ::std::tr1::tuple ParamType; - - CartesianProductGenerator10(const ParamGenerator& g1, - const ParamGenerator& g2, const ParamGenerator& g3, - const ParamGenerator& g4, const ParamGenerator& g5, - const ParamGenerator& g6, const ParamGenerator& g7, - const ParamGenerator& g8, const ParamGenerator& g9, - const ParamGenerator& g10) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), - g9_(g9), g10_(g10) {} - virtual ~CartesianProductGenerator10() {} - - virtual ParamIteratorInterface* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, - g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); - } - virtual ParamIteratorInterface* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, - g8_.end(), g9_, g9_.end(), g10_, g10_.end()); - } - - private: - class Iterator : public ParamIteratorInterface { - public: - Iterator(const ParamGeneratorInterface* base, - const ParamGenerator& g1, - const typename ParamGenerator::iterator& current1, - const ParamGenerator& g2, - const typename ParamGenerator::iterator& current2, - const ParamGenerator& g3, - const typename ParamGenerator::iterator& current3, - const ParamGenerator& g4, - const typename ParamGenerator::iterator& current4, - const ParamGenerator& g5, - const typename ParamGenerator::iterator& current5, - const ParamGenerator& g6, - const typename ParamGenerator::iterator& current6, - const ParamGenerator& g7, - const typename ParamGenerator::iterator& current7, - const ParamGenerator& g8, - const typename ParamGenerator::iterator& current8, - const ParamGenerator& g9, - const typename ParamGenerator::iterator& current9, - const ParamGenerator& g10, - const typename ParamGenerator::iterator& current10) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6), - begin7_(g7.begin()), end7_(g7.end()), current7_(current7), - begin8_(g8.begin()), end8_(g8.end()), current8_(current8), - begin9_(g9.begin()), end9_(g9.end()), current9_(current9), - begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { - ComputeCurrentValue(); - } - virtual ~Iterator() {} - - virtual const ParamGeneratorInterface* BaseGenerator() const { - return base_; - } - // Advance should not be called on beyond-of-range iterators - // so no component iterators must be beyond end of range, either. - virtual void Advance() { - assert(!AtEnd()); - ++current10_; - if (current10_ == end10_) { - current10_ = begin10_; - ++current9_; - } - if (current9_ == end9_) { - current9_ = begin9_; - ++current8_; - } - if (current8_ == end8_) { - current8_ = begin8_; - ++current7_; - } - if (current7_ == end7_) { - current7_ = begin7_; - ++current6_; - } - if (current6_ == end6_) { - current6_ = begin6_; - ++current5_; - } - if (current5_ == end5_) { - current5_ = begin5_; - ++current4_; - } - if (current4_ == end4_) { - current4_ = begin4_; - ++current3_; - } - if (current3_ == end3_) { - current3_ = begin3_; - ++current2_; - } - if (current2_ == end2_) { - current2_ = begin2_; - ++current1_; - } - ComputeCurrentValue(); - } - virtual ParamIteratorInterface* Clone() const { - return new Iterator(*this); - } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface& other) const { - // Having the same base generator guarantees that the other - // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType(&other); - // We must report iterators equal if they both point beyond their - // respective ranges. That can happen in a variety of fashions, - // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_ && - current7_ == typed_other->current7_ && - current8_ == typed_other->current8_ && - current9_ == typed_other->current9_ && - current10_ == typed_other->current10_); - } - - private: - Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_), - begin7_(other.begin7_), - end7_(other.end7_), - current7_(other.current7_), - begin8_(other.begin8_), - end8_(other.end8_), - current8_(other.current8_), - begin9_(other.begin9_), - end9_(other.end9_), - current9_(other.current9_), - begin10_(other.begin10_), - end10_(other.end10_), - current10_(other.current10_) { - ComputeCurrentValue(); - } - - void ComputeCurrentValue() { - if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_, *current7_, *current8_, - *current9_, *current10_); - } - bool AtEnd() const { - // We must report iterator past the end of the range when either of the - // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_ || - current7_ == end7_ || - current8_ == end8_ || - current9_ == end9_ || - current10_ == end10_; - } - - // No implementation - assignment is unsupported. - void operator=(const Iterator& other); - - const ParamGeneratorInterface* const base_; - // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. - // current[i]_ is the actual traversing iterator. - const typename ParamGenerator::iterator begin1_; - const typename ParamGenerator::iterator end1_; - typename ParamGenerator::iterator current1_; - const typename ParamGenerator::iterator begin2_; - const typename ParamGenerator::iterator end2_; - typename ParamGenerator::iterator current2_; - const typename ParamGenerator::iterator begin3_; - const typename ParamGenerator::iterator end3_; - typename ParamGenerator::iterator current3_; - const typename ParamGenerator::iterator begin4_; - const typename ParamGenerator::iterator end4_; - typename ParamGenerator::iterator current4_; - const typename ParamGenerator::iterator begin5_; - const typename ParamGenerator::iterator end5_; - typename ParamGenerator::iterator current5_; - const typename ParamGenerator::iterator begin6_; - const typename ParamGenerator::iterator end6_; - typename ParamGenerator::iterator current6_; - const typename ParamGenerator::iterator begin7_; - const typename ParamGenerator::iterator end7_; - typename ParamGenerator::iterator current7_; - const typename ParamGenerator::iterator begin8_; - const typename ParamGenerator::iterator end8_; - typename ParamGenerator::iterator current8_; - const typename ParamGenerator::iterator begin9_; - const typename ParamGenerator::iterator end9_; - typename ParamGenerator::iterator current9_; - const typename ParamGenerator::iterator begin10_; - const typename ParamGenerator::iterator end10_; - typename ParamGenerator::iterator current10_; - ParamType current_value_; - }; // class CartesianProductGenerator10::Iterator - - // No implementation - assignment is unsupported. - void operator=(const CartesianProductGenerator10& other); - - const ParamGenerator g1_; - const ParamGenerator g2_; - const ParamGenerator g3_; - const ParamGenerator g4_; - const ParamGenerator g5_; - const ParamGenerator g6_; - const ParamGenerator g7_; - const ParamGenerator g8_; - const ParamGenerator g9_; - const ParamGenerator g10_; -}; // class CartesianProductGenerator10 - - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Helper classes providing Combine() with polymorphic features. They allow -// casting CartesianProductGeneratorN to ParamGenerator if T is -// convertible to U. -// -template -class CartesianProductHolder2 { - public: -CartesianProductHolder2(const Generator1& g1, const Generator2& g2) - : g1_(g1), g2_(g2) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator2( - static_cast >(g1_), - static_cast >(g2_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder2& other); - - const Generator1 g1_; - const Generator2 g2_; -}; // class CartesianProductHolder2 - -template -class CartesianProductHolder3 { - public: -CartesianProductHolder3(const Generator1& g1, const Generator2& g2, - const Generator3& g3) - : g1_(g1), g2_(g2), g3_(g3) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator3( - static_cast >(g1_), - static_cast >(g2_), - static_cast >(g3_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder3& other); - - const Generator1 g1_; - const Generator2 g2_; - const Generator3 g3_; -}; // class CartesianProductHolder3 - -template -class CartesianProductHolder4 { - public: -CartesianProductHolder4(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator4( - static_cast >(g1_), - static_cast >(g2_), - static_cast >(g3_), - static_cast >(g4_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder4& other); - - const Generator1 g1_; - const Generator2 g2_; - const Generator3 g3_; - const Generator4 g4_; -}; // class CartesianProductHolder4 - -template -class CartesianProductHolder5 { - public: -CartesianProductHolder5(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator5( - static_cast >(g1_), - static_cast >(g2_), - static_cast >(g3_), - static_cast >(g4_), - static_cast >(g5_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder5& other); - - const Generator1 g1_; - const Generator2 g2_; - const Generator3 g3_; - const Generator4 g4_; - const Generator5 g5_; -}; // class CartesianProductHolder5 - -template -class CartesianProductHolder6 { - public: -CartesianProductHolder6(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator6( - static_cast >(g1_), - static_cast >(g2_), - static_cast >(g3_), - static_cast >(g4_), - static_cast >(g5_), - static_cast >(g6_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder6& other); - - const Generator1 g1_; - const Generator2 g2_; - const Generator3 g3_; - const Generator4 g4_; - const Generator5 g5_; - const Generator6 g6_; -}; // class CartesianProductHolder6 - -template -class CartesianProductHolder7 { - public: -CartesianProductHolder7(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6, const Generator7& g7) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator7( - static_cast >(g1_), - static_cast >(g2_), - static_cast >(g3_), - static_cast >(g4_), - static_cast >(g5_), - static_cast >(g6_), - static_cast >(g7_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder7& other); - - const Generator1 g1_; - const Generator2 g2_; - const Generator3 g3_; - const Generator4 g4_; - const Generator5 g5_; - const Generator6 g6_; - const Generator7 g7_; -}; // class CartesianProductHolder7 - -template -class CartesianProductHolder8 { - public: -CartesianProductHolder8(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6, const Generator7& g7, const Generator8& g8) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), - g8_(g8) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator8( - static_cast >(g1_), - static_cast >(g2_), - static_cast >(g3_), - static_cast >(g4_), - static_cast >(g5_), - static_cast >(g6_), - static_cast >(g7_), - static_cast >(g8_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder8& other); - - const Generator1 g1_; - const Generator2 g2_; - const Generator3 g3_; - const Generator4 g4_; - const Generator5 g5_; - const Generator6 g6_; - const Generator7 g7_; - const Generator8 g8_; -}; // class CartesianProductHolder8 - -template -class CartesianProductHolder9 { - public: -CartesianProductHolder9(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6, const Generator7& g7, const Generator8& g8, - const Generator9& g9) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), - g9_(g9) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator9( - static_cast >(g1_), - static_cast >(g2_), - static_cast >(g3_), - static_cast >(g4_), - static_cast >(g5_), - static_cast >(g6_), - static_cast >(g7_), - static_cast >(g8_), - static_cast >(g9_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder9& other); - - const Generator1 g1_; - const Generator2 g2_; - const Generator3 g3_; - const Generator4 g4_; - const Generator5 g5_; - const Generator6 g6_; - const Generator7 g7_; - const Generator8 g8_; - const Generator9 g9_; -}; // class CartesianProductHolder9 - -template -class CartesianProductHolder10 { - public: -CartesianProductHolder10(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6, const Generator7& g7, const Generator8& g8, - const Generator9& g9, const Generator10& g10) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), - g9_(g9), g10_(g10) {} - template - operator ParamGenerator< ::std::tr1::tuple >() const { - return ParamGenerator< ::std::tr1::tuple >( - new CartesianProductGenerator10( - static_cast >(g1_), - static_cast >(g2_), - static_cast >(g3_), - static_cast >(g4_), - static_cast >(g5_), - static_cast >(g6_), - static_cast >(g7_), - static_cast >(g8_), - static_cast >(g9_), - static_cast >(g10_))); - } - - private: - // No implementation - assignment is unsupported. - void operator=(const CartesianProductHolder10& other); - - const Generator1 g1_; - const Generator2 g2_; - const Generator3 g3_; - const Generator4 g4_; - const Generator5 g5_; - const Generator6 g6_; - const Generator7 g7_; - const Generator8 g8_; - const Generator9 g9_; - const Generator10 g10_; -}; // class CartesianProductHolder10 - -# endif // GTEST_HAS_COMBINE - -} // namespace internal -} // namespace testing - -#endif // GTEST_HAS_PARAM_TEST - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ - -#if GTEST_HAS_PARAM_TEST - -namespace testing { - -// Functions producing parameter generators. -// -// Google Test uses these generators to produce parameters for value- -// parameterized tests. When a parameterized test case is instantiated -// with a particular generator, Google Test creates and runs tests -// for each element in the sequence produced by the generator. -// -// In the following sample, tests from test case FooTest are instantiated -// each three times with parameter values 3, 5, and 8: -// -// class FooTest : public TestWithParam { ... }; -// -// TEST_P(FooTest, TestThis) { -// } -// TEST_P(FooTest, TestThat) { -// } -// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); -// - -// Range() returns generators providing sequences of values in a range. -// -// Synopsis: -// Range(start, end) -// - returns a generator producing a sequence of values {start, start+1, -// start+2, ..., }. -// Range(start, end, step) -// - returns a generator producing a sequence of values {start, start+step, -// start+step+step, ..., }. -// Notes: -// * The generated sequences never include end. For example, Range(1, 5) -// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) -// returns a generator producing {1, 3, 5, 7}. -// * start and end must have the same type. That type may be any integral or -// floating-point type or a user defined type satisfying these conditions: -// * It must be assignable (have operator=() defined). -// * It must have operator+() (operator+(int-compatible type) for -// two-operand version). -// * It must have operator<() defined. -// Elements in the resulting sequences will also have that type. -// * Condition start < end must be satisfied in order for resulting sequences -// to contain any elements. -// -template -internal::ParamGenerator Range(T start, T end, IncrementT step) { - return internal::ParamGenerator( - new internal::RangeGenerator(start, end, step)); -} - -template -internal::ParamGenerator Range(T start, T end) { - return Range(start, end, 1); -} - -// ValuesIn() function allows generation of tests with parameters coming from -// a container. -// -// Synopsis: -// ValuesIn(const T (&array)[N]) -// - returns a generator producing sequences with elements from -// a C-style array. -// ValuesIn(const Container& container) -// - returns a generator producing sequences with elements from -// an STL-style container. -// ValuesIn(Iterator begin, Iterator end) -// - returns a generator producing sequences with elements from -// a range [begin, end) defined by a pair of STL-style iterators. These -// iterators can also be plain C pointers. -// -// Please note that ValuesIn copies the values from the containers -// passed in and keeps them to generate tests in RUN_ALL_TESTS(). -// -// Examples: -// -// This instantiates tests from test case StringTest -// each with C-string values of "foo", "bar", and "baz": -// -// const char* strings[] = {"foo", "bar", "baz"}; -// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); -// -// This instantiates tests from test case StlStringTest -// each with STL strings with values "a" and "b": -// -// ::std::vector< ::std::string> GetParameterStrings() { -// ::std::vector< ::std::string> v; -// v.push_back("a"); -// v.push_back("b"); -// return v; -// } -// -// INSTANTIATE_TEST_CASE_P(CharSequence, -// StlStringTest, -// ValuesIn(GetParameterStrings())); -// -// -// This will also instantiate tests from CharTest -// each with parameter values 'a' and 'b': -// -// ::std::list GetParameterChars() { -// ::std::list list; -// list.push_back('a'); -// list.push_back('b'); -// return list; -// } -// ::std::list l = GetParameterChars(); -// INSTANTIATE_TEST_CASE_P(CharSequence2, -// CharTest, -// ValuesIn(l.begin(), l.end())); -// -template -internal::ParamGenerator< - typename ::testing::internal::IteratorTraits::value_type> -ValuesIn(ForwardIterator begin, ForwardIterator end) { - typedef typename ::testing::internal::IteratorTraits - ::value_type ParamType; - return internal::ParamGenerator( - new internal::ValuesInIteratorRangeGenerator(begin, end)); -} - -template -internal::ParamGenerator ValuesIn(const T (&array)[N]) { - return ValuesIn(array, array + N); -} - -template -internal::ParamGenerator ValuesIn( - const Container& container) { - return ValuesIn(container.begin(), container.end()); -} - -// Values() allows generating tests from explicitly specified list of -// parameters. -// -// Synopsis: -// Values(T v1, T v2, ..., T vN) -// - returns a generator producing sequences with elements v1, v2, ..., vN. -// -// For example, this instantiates tests from test case BarTest each -// with values "one", "two", and "three": -// -// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); -// -// This instantiates tests from test case BazTest each with values 1, 2, 3.5. -// The exact type of values will depend on the type of parameter in BazTest. -// -// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); -// -// Currently, Values() supports from 1 to 50 parameters. -// -template -internal::ValueArray1 Values(T1 v1) { - return internal::ValueArray1(v1); -} - -template -internal::ValueArray2 Values(T1 v1, T2 v2) { - return internal::ValueArray2(v1, v2); -} - -template -internal::ValueArray3 Values(T1 v1, T2 v2, T3 v3) { - return internal::ValueArray3(v1, v2, v3); -} - -template -internal::ValueArray4 Values(T1 v1, T2 v2, T3 v3, T4 v4) { - return internal::ValueArray4(v1, v2, v3, v4); -} - -template -internal::ValueArray5 Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5) { - return internal::ValueArray5(v1, v2, v3, v4, v5); -} - -template -internal::ValueArray6 Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6) { - return internal::ValueArray6(v1, v2, v3, v4, v5, v6); -} - -template -internal::ValueArray7 Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7) { - return internal::ValueArray7(v1, v2, v3, v4, v5, - v6, v7); -} - -template -internal::ValueArray8 Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { - return internal::ValueArray8(v1, v2, v3, v4, - v5, v6, v7, v8); -} - -template -internal::ValueArray9 Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { - return internal::ValueArray9(v1, v2, v3, - v4, v5, v6, v7, v8, v9); -} - -template -internal::ValueArray10 Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { - return internal::ValueArray10(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10); -} - -template -internal::ValueArray11 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11) { - return internal::ValueArray11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); -} - -template -internal::ValueArray12 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12) { - return internal::ValueArray12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); -} - -template -internal::ValueArray13 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13) { - return internal::ValueArray13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); -} - -template -internal::ValueArray14 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { - return internal::ValueArray14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14); -} - -template -internal::ValueArray15 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { - return internal::ValueArray15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15); -} - -template -internal::ValueArray16 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16) { - return internal::ValueArray16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16); -} - -template -internal::ValueArray17 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17) { - return internal::ValueArray17(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17); -} - -template -internal::ValueArray18 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18) { - return internal::ValueArray18(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18); -} - -template -internal::ValueArray19 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { - return internal::ValueArray19(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); -} - -template -internal::ValueArray20 Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { - return internal::ValueArray20(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); -} - -template -internal::ValueArray21 Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { - return internal::ValueArray21(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); -} - -template -internal::ValueArray22 Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22) { - return internal::ValueArray22(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22); -} - -template -internal::ValueArray23 Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23) { - return internal::ValueArray23(v1, v2, v3, - v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23); -} - -template -internal::ValueArray24 Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24) { - return internal::ValueArray24(v1, v2, - v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, - v19, v20, v21, v22, v23, v24); -} - -template -internal::ValueArray25 Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, - T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, - T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { - return internal::ValueArray25(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, - v18, v19, v20, v21, v22, v23, v24, v25); -} - -template -internal::ValueArray26 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26) { - return internal::ValueArray26(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, - v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); -} - -template -internal::ValueArray27 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27) { - return internal::ValueArray27(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, - v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); -} - -template -internal::ValueArray28 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28) { - return internal::ValueArray28(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, - v28); -} - -template -internal::ValueArray29 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29) { - return internal::ValueArray29(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, - v27, v28, v29); -} - -template -internal::ValueArray30 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { - return internal::ValueArray30(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, - v26, v27, v28, v29, v30); -} - -template -internal::ValueArray31 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { - return internal::ValueArray31(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, - v25, v26, v27, v28, v29, v30, v31); -} - -template -internal::ValueArray32 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32) { - return internal::ValueArray32(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32); -} - -template -internal::ValueArray33 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33) { - return internal::ValueArray33(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); -} - -template -internal::ValueArray34 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, - T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, - T31 v31, T32 v32, T33 v33, T34 v34) { - return internal::ValueArray34(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, - v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); -} - -template -internal::ValueArray35 Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { - return internal::ValueArray35(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, - v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); -} - -template -internal::ValueArray36 Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { - return internal::ValueArray36(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36); -} - -template -internal::ValueArray37 Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37) { - return internal::ValueArray37(v1, v2, v3, - v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36, v37); -} - -template -internal::ValueArray38 Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37, T38 v38) { - return internal::ValueArray38(v1, v2, - v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, - v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, - v33, v34, v35, v36, v37, v38); -} - -template -internal::ValueArray39 Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37, T38 v38, T39 v39) { - return internal::ValueArray39(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, - v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, - v32, v33, v34, v35, v36, v37, v38, v39); -} - -template -internal::ValueArray40 Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, - T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, - T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, - T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, - T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { - return internal::ValueArray40(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, - v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, - v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); -} - -template -internal::ValueArray41 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { - return internal::ValueArray41(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, - v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, - v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); -} - -template -internal::ValueArray42 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42) { - return internal::ValueArray42(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, - v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, - v42); -} - -template -internal::ValueArray43 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43) { - return internal::ValueArray43(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, - v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, - v41, v42, v43); -} - -template -internal::ValueArray44 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44) { - return internal::ValueArray44(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, - v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, - v40, v41, v42, v43, v44); -} - -template -internal::ValueArray45 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, - T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, - T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { - return internal::ValueArray45(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, - v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, - v39, v40, v41, v42, v43, v44, v45); -} - -template -internal::ValueArray46 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { - return internal::ValueArray46(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, - v38, v39, v40, v41, v42, v43, v44, v45, v46); -} - -template -internal::ValueArray47 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { - return internal::ValueArray47(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, - v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); -} - -template -internal::ValueArray48 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, - T48 v48) { - return internal::ValueArray48(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, - v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, - v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); -} - -template -internal::ValueArray49 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, - T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, - T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, - T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, - T47 v47, T48 v48, T49 v49) { - return internal::ValueArray49(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, - v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, - v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); -} - -template -internal::ValueArray50 Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, - T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, - T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { - return internal::ValueArray50(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, - v48, v49, v50); -} - -// Bool() allows generating tests with parameters in a set of (false, true). -// -// Synopsis: -// Bool() -// - returns a generator producing sequences with elements {false, true}. -// -// It is useful when testing code that depends on Boolean flags. Combinations -// of multiple flags can be tested when several Bool()'s are combined using -// Combine() function. -// -// In the following example all tests in the test case FlagDependentTest -// will be instantiated twice with parameters false and true. -// -// class FlagDependentTest : public testing::TestWithParam { -// virtual void SetUp() { -// external_flag = GetParam(); -// } -// } -// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); -// -inline internal::ParamGenerator Bool() { - return Values(false, true); -} - -# if GTEST_HAS_COMBINE -// Combine() allows the user to combine two or more sequences to produce -// values of a Cartesian product of those sequences' elements. -// -// Synopsis: -// Combine(gen1, gen2, ..., genN) -// - returns a generator producing sequences with elements coming from -// the Cartesian product of elements from the sequences generated by -// gen1, gen2, ..., genN. The sequence elements will have a type of -// tuple where T1, T2, ..., TN are the types -// of elements from sequences produces by gen1, gen2, ..., genN. -// -// Combine can have up to 10 arguments. This number is currently limited -// by the maximum number of elements in the tuple implementation used by Google -// Test. -// -// Example: -// -// This will instantiate tests in test case AnimalTest each one with -// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), -// tuple("dog", BLACK), and tuple("dog", WHITE): -// -// enum Color { BLACK, GRAY, WHITE }; -// class AnimalTest -// : public testing::TestWithParam > {...}; -// -// TEST_P(AnimalTest, AnimalLooksNice) {...} -// -// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, -// Combine(Values("cat", "dog"), -// Values(BLACK, WHITE))); -// -// This will instantiate tests in FlagDependentTest with all variations of two -// Boolean flags: -// -// class FlagDependentTest -// : public testing::TestWithParam > { -// virtual void SetUp() { -// // Assigns external_flag_1 and external_flag_2 values from the tuple. -// tie(external_flag_1, external_flag_2) = GetParam(); -// } -// }; -// -// TEST_P(FlagDependentTest, TestFeature1) { -// // Test your code using external_flag_1 and external_flag_2 here. -// } -// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, -// Combine(Bool(), Bool())); -// -template -internal::CartesianProductHolder2 Combine( - const Generator1& g1, const Generator2& g2) { - return internal::CartesianProductHolder2( - g1, g2); -} - -template -internal::CartesianProductHolder3 Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3) { - return internal::CartesianProductHolder3( - g1, g2, g3); -} - -template -internal::CartesianProductHolder4 Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4) { - return internal::CartesianProductHolder4( - g1, g2, g3, g4); -} - -template -internal::CartesianProductHolder5 Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5) { - return internal::CartesianProductHolder5( - g1, g2, g3, g4, g5); -} - -template -internal::CartesianProductHolder6 Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6) { - return internal::CartesianProductHolder6( - g1, g2, g3, g4, g5, g6); -} - -template -internal::CartesianProductHolder7 Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7) { - return internal::CartesianProductHolder7( - g1, g2, g3, g4, g5, g6, g7); -} - -template -internal::CartesianProductHolder8 Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8) { - return internal::CartesianProductHolder8( - g1, g2, g3, g4, g5, g6, g7, g8); -} - -template -internal::CartesianProductHolder9 Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8, const Generator9& g9) { - return internal::CartesianProductHolder9( - g1, g2, g3, g4, g5, g6, g7, g8, g9); -} - -template -internal::CartesianProductHolder10 Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8, const Generator9& g9, - const Generator10& g10) { - return internal::CartesianProductHolder10( - g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); -} -# endif // GTEST_HAS_COMBINE - - - -# define TEST_P(test_case_name, test_name) \ - class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ - : public test_case_name { \ - public: \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ - virtual void TestBody(); \ - private: \ - static int AddToRegistry() { \ - ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ - GetTestCasePatternHolder(\ - #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ - #test_case_name, \ - #test_name, \ - new ::testing::internal::TestMetaFactory< \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ - return 0; \ - } \ - static int gtest_registering_dummy_; \ - GTEST_DISALLOW_COPY_AND_ASSIGN_(\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ - }; \ - int GTEST_TEST_CLASS_NAME_(test_case_name, \ - test_name)::gtest_registering_dummy_ = \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ - void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() - -# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ - ::testing::internal::ParamGenerator \ - gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ - int gtest_##prefix##test_case_name##_dummy_ = \ - ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ - GetTestCasePatternHolder(\ - #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ - #prefix, \ - >est_##prefix##test_case_name##_EvalGenerator_, \ - __FILE__, __LINE__) - -} // namespace testing - -#endif // GTEST_HAS_PARAM_TEST - -#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ -// Copyright 2006, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) -// -// Google C++ Testing Framework definitions useful in production code. - -#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_ -#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_ - -// When you need to test the private or protected members of a class, -// use the FRIEND_TEST macro to declare your tests as friends of the -// class. For example: -// -// class MyClass { -// private: -// void MyMethod(); -// FRIEND_TEST(MyClassTest, MyMethod); -// }; -// -// class MyClassTest : public testing::Test { -// // ... -// }; -// -// TEST_F(MyClassTest, MyMethod) { -// // Can call MyClass::MyMethod() here. -// } - -#define FRIEND_TEST(test_case_name, test_name)\ -friend class test_case_name##_##test_name##_Test - -#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: mheule@google.com (Markus Heule) -// - -#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ -#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ - -#include -#include - -namespace testing { - -// A copyable object representing the result of a test part (i.e. an -// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()). -// -// Don't inherit from TestPartResult as its destructor is not virtual. -class GTEST_API_ TestPartResult { - public: - // The possible outcomes of a test part (i.e. an assertion or an - // explicit SUCCEED(), FAIL(), or ADD_FAILURE()). - enum Type { - kSuccess, // Succeeded. - kNonFatalFailure, // Failed but the test can continue. - kFatalFailure // Failed and the test should be terminated. - }; - - // C'tor. TestPartResult does NOT have a default constructor. - // Always use this constructor (with parameters) to create a - // TestPartResult object. - TestPartResult(Type a_type, - const char* a_file_name, - int a_line_number, - const char* a_message) - : type_(a_type), - file_name_(a_file_name), - line_number_(a_line_number), - summary_(ExtractSummary(a_message)), - message_(a_message) { - } - - // Gets the outcome of the test part. - Type type() const { return type_; } - - // Gets the name of the source file where the test part took place, or - // NULL if it's unknown. - const char* file_name() const { return file_name_.c_str(); } - - // Gets the line in the source file where the test part took place, - // or -1 if it's unknown. - int line_number() const { return line_number_; } - - // Gets the summary of the failure message. - const char* summary() const { return summary_.c_str(); } - - // Gets the message associated with the test part. - const char* message() const { return message_.c_str(); } - - // Returns true iff the test part passed. - bool passed() const { return type_ == kSuccess; } - - // Returns true iff the test part failed. - bool failed() const { return type_ != kSuccess; } - - // Returns true iff the test part non-fatally failed. - bool nonfatally_failed() const { return type_ == kNonFatalFailure; } - - // Returns true iff the test part fatally failed. - bool fatally_failed() const { return type_ == kFatalFailure; } - private: - Type type_; - - // Gets the summary of the failure message by omitting the stack - // trace in it. - static internal::String ExtractSummary(const char* message); - - // The name of the source file where the test part took place, or - // NULL if the source file is unknown. - internal::String file_name_; - // The line in the source file where the test part took place, or -1 - // if the line number is unknown. - int line_number_; - internal::String summary_; // The test failure summary. - internal::String message_; // The test failure message. -}; - -// Prints a TestPartResult object. -std::ostream& operator<<(std::ostream& os, const TestPartResult& result); - -// An array of TestPartResult objects. -// -// Don't inherit from TestPartResultArray as its destructor is not -// virtual. -class GTEST_API_ TestPartResultArray { - public: - TestPartResultArray() {} - - // Appends the given TestPartResult to the array. - void Append(const TestPartResult& result); - - // Returns the TestPartResult at the given index (0-based). - const TestPartResult& GetTestPartResult(int index) const; - - // Returns the number of TestPartResult objects in the array. - int size() const; - - private: - std::vector array_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray); -}; - -// This interface knows how to report a test part result. -class TestPartResultReporterInterface { - public: - virtual ~TestPartResultReporterInterface() {} - - virtual void ReportTestPartResult(const TestPartResult& result) = 0; -}; - -namespace internal { - -// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a -// statement generates new fatal failures. To do so it registers itself as the -// current test part result reporter. Besides checking if fatal failures were -// reported, it only delegates the reporting to the former result reporter. -// The original result reporter is restored in the destructor. -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -class GTEST_API_ HasNewFatalFailureHelper - : public TestPartResultReporterInterface { - public: - HasNewFatalFailureHelper(); - virtual ~HasNewFatalFailureHelper(); - virtual void ReportTestPartResult(const TestPartResult& result); - bool has_new_fatal_failure() const { return has_new_fatal_failure_; } - private: - bool has_new_fatal_failure_; - TestPartResultReporterInterface* original_reporter_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper); -}; - -} // namespace internal - -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ -// Copyright 2008 Google Inc. -// All Rights Reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Author: wan@google.com (Zhanyong Wan) - -#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ -#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ - -// This header implements typed tests and type-parameterized tests. - -// Typed (aka type-driven) tests repeat the same test for types in a -// list. You must know which types you want to test with when writing -// typed tests. Here's how you do it: - -#if 0 - -// First, define a fixture class template. It should be parameterized -// by a type. Remember to derive it from testing::Test. -template -class FooTest : public testing::Test { - public: - ... - typedef std::list List; - static T shared_; - T value_; -}; - -// Next, associate a list of types with the test case, which will be -// repeated for each type in the list. The typedef is necessary for -// the macro to parse correctly. -typedef testing::Types MyTypes; -TYPED_TEST_CASE(FooTest, MyTypes); - -// If the type list contains only one type, you can write that type -// directly without Types<...>: -// TYPED_TEST_CASE(FooTest, int); - -// Then, use TYPED_TEST() instead of TEST_F() to define as many typed -// tests for this test case as you want. -TYPED_TEST(FooTest, DoesBlah) { - // Inside a test, refer to TypeParam to get the type parameter. - // Since we are inside a derived class template, C++ requires use to - // visit the members of FooTest via 'this'. - TypeParam n = this->value_; - - // To visit static members of the fixture, add the TestFixture:: - // prefix. - n += TestFixture::shared_; - - // To refer to typedefs in the fixture, add the "typename - // TestFixture::" prefix. - typename TestFixture::List values; - values.push_back(n); - ... -} - -TYPED_TEST(FooTest, HasPropertyA) { ... } - -#endif // 0 - -// Type-parameterized tests are abstract test patterns parameterized -// by a type. Compared with typed tests, type-parameterized tests -// allow you to define the test pattern without knowing what the type -// parameters are. The defined pattern can be instantiated with -// different types any number of times, in any number of translation -// units. -// -// If you are designing an interface or concept, you can define a -// suite of type-parameterized tests to verify properties that any -// valid implementation of the interface/concept should have. Then, -// each implementation can easily instantiate the test suite to verify -// that it conforms to the requirements, without having to write -// similar tests repeatedly. Here's an example: - -#if 0 - -// First, define a fixture class template. It should be parameterized -// by a type. Remember to derive it from testing::Test. -template -class FooTest : public testing::Test { - ... -}; - -// Next, declare that you will define a type-parameterized test case -// (the _P suffix is for "parameterized" or "pattern", whichever you -// prefer): -TYPED_TEST_CASE_P(FooTest); - -// Then, use TYPED_TEST_P() to define as many type-parameterized tests -// for this type-parameterized test case as you want. -TYPED_TEST_P(FooTest, DoesBlah) { - // Inside a test, refer to TypeParam to get the type parameter. - TypeParam n = 0; - ... -} - -TYPED_TEST_P(FooTest, HasPropertyA) { ... } - -// Now the tricky part: you need to register all test patterns before -// you can instantiate them. The first argument of the macro is the -// test case name; the rest are the names of the tests in this test -// case. -REGISTER_TYPED_TEST_CASE_P(FooTest, - DoesBlah, HasPropertyA); - -// Finally, you are free to instantiate the pattern with the types you -// want. If you put the above code in a header file, you can #include -// it in multiple C++ source files and instantiate it multiple times. -// -// To distinguish different instances of the pattern, the first -// argument to the INSTANTIATE_* macro is a prefix that will be added -// to the actual test case name. Remember to pick unique prefixes for -// different instances. -typedef testing::Types MyTypes; -INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); - -// If the type list contains only one type, you can write that type -// directly without Types<...>: -// INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int); - -#endif // 0 - - -// Implements typed tests. - -#if GTEST_HAS_TYPED_TEST - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Expands to the name of the typedef for the type parameters of the -// given test case. -# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ - -// The 'Types' template argument below must have spaces around it -// since some compilers may choke on '>>' when passing a template -// instance (e.g. Types) -# define TYPED_TEST_CASE(CaseName, Types) \ - typedef ::testing::internal::TypeList< Types >::type \ - GTEST_TYPE_PARAMS_(CaseName) - -# define TYPED_TEST(CaseName, TestName) \ - template \ - class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ - : public CaseName { \ - private: \ - typedef CaseName TestFixture; \ - typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ - }; \ - bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::internal::TypeParameterizedTest< \ - CaseName, \ - ::testing::internal::TemplateSel< \ - GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ - GTEST_TYPE_PARAMS_(CaseName)>::Register(\ - "", #CaseName, #TestName, 0); \ - template \ - void GTEST_TEST_CLASS_NAME_(CaseName, TestName)::TestBody() - -#endif // GTEST_HAS_TYPED_TEST - -// Implements type-parameterized tests. - -#if GTEST_HAS_TYPED_TEST_P - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Expands to the namespace name that the type-parameterized tests for -// the given type-parameterized test case are defined in. The exact -// name of the namespace is subject to change without notice. -# define GTEST_CASE_NAMESPACE_(TestCaseName) \ - gtest_case_##TestCaseName##_ - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// -// Expands to the name of the variable used to remember the names of -// the defined tests in the given test case. -# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ - gtest_typed_test_case_p_state_##TestCaseName##_ - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. -// -// Expands to the name of the variable used to remember the names of -// the registered tests in the given test case. -# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ - gtest_registered_test_names_##TestCaseName##_ - -// The variables defined in the type-parameterized test macros are -// static as typically these macros are used in a .h file that can be -// #included in multiple translation units linked together. -# define TYPED_TEST_CASE_P(CaseName) \ - static ::testing::internal::TypedTestCasePState \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) - -# define TYPED_TEST_P(CaseName, TestName) \ - namespace GTEST_CASE_NAMESPACE_(CaseName) { \ - template \ - class TestName : public CaseName { \ - private: \ - typedef CaseName TestFixture; \ - typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ - }; \ - static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ - __FILE__, __LINE__, #CaseName, #TestName); \ - } \ - template \ - void GTEST_CASE_NAMESPACE_(CaseName)::TestName::TestBody() - -# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ - namespace GTEST_CASE_NAMESPACE_(CaseName) { \ - typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ - } \ - static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ - __FILE__, __LINE__, #__VA_ARGS__) - -// The 'Types' template argument below must have spaces around it -// since some compilers may choke on '>>' when passing a template -// instance (e.g. Types) -# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ - bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::internal::TypeParameterizedTestCase::type>::Register(\ - #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) - -#endif // GTEST_HAS_TYPED_TEST_P - -#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ - -// Depending on the platform, different string classes are available. -// On Linux, in addition to ::std::string, Google also makes use of -// class ::string, which has the same interface as ::std::string, but -// has a different implementation. -// -// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that -// ::string is available AND is a distinct type to ::std::string, or -// define it to 0 to indicate otherwise. -// -// If the user's ::std::string and ::string are the same class due to -// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0. -// -// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined -// heuristically. - -namespace testing { - -// Declares the flags. - -// This flag temporary enables the disabled tests. -GTEST_DECLARE_bool_(also_run_disabled_tests); - -// This flag brings the debugger on an assertion failure. -GTEST_DECLARE_bool_(break_on_failure); - -// This flag controls whether Google Test catches all test-thrown exceptions -// and logs them as failures. -GTEST_DECLARE_bool_(catch_exceptions); - -// This flag enables using colors in terminal output. Available values are -// "yes" to enable colors, "no" (disable colors), or "auto" (the default) -// to let Google Test decide. -GTEST_DECLARE_string_(color); - -// This flag sets up the filter to select by name using a glob pattern -// the tests to run. If the filter is not given all tests are executed. -GTEST_DECLARE_string_(filter); - -// This flag causes the Google Test to list tests. None of the tests listed -// are actually run if the flag is provided. -GTEST_DECLARE_bool_(list_tests); - -// This flag controls whether Google Test emits a detailed XML report to a file -// in addition to its normal textual output. -GTEST_DECLARE_string_(output); - -// This flags control whether Google Test prints the elapsed time for each -// test. -GTEST_DECLARE_bool_(print_time); - -// This flag specifies the random number seed. -GTEST_DECLARE_int32_(random_seed); - -// This flag sets how many times the tests are repeated. The default value -// is 1. If the value is -1 the tests are repeating forever. -GTEST_DECLARE_int32_(repeat); - -// This flag controls whether Google Test includes Google Test internal -// stack frames in failure stack traces. -GTEST_DECLARE_bool_(show_internal_stack_frames); - -// When this flag is specified, tests' order is randomized on every iteration. -GTEST_DECLARE_bool_(shuffle); - -// This flag specifies the maximum number of stack frames to be -// printed in a failure message. -GTEST_DECLARE_int32_(stack_trace_depth); - -// When this flag is specified, a failed assertion will throw an -// exception if exceptions are enabled, or exit the program with a -// non-zero code otherwise. -GTEST_DECLARE_bool_(throw_on_failure); - -// When this flag is set with a "host:port" string, on supported -// platforms test results are streamed to the specified port on -// the specified host machine. -GTEST_DECLARE_string_(stream_result_to); - -// The upper limit for valid stack trace depths. -const int kMaxStackTraceDepth = 100; - -namespace internal { - -class AssertHelper; -class DefaultGlobalTestPartResultReporter; -class ExecDeathTest; -class NoExecDeathTest; -class FinalSuccessChecker; -class GTestFlagSaver; -class TestResultAccessor; -class TestEventListenersAccessor; -class TestEventRepeater; -class WindowsDeathTest; -class UnitTestImpl* GetUnitTestImpl(); -void ReportFailureInUnknownLocation(TestPartResult::Type result_type, - const String& message); - -// Converts a streamable value to a String. A NULL pointer is -// converted to "(null)". When the input value is a ::string, -// ::std::string, ::wstring, or ::std::wstring object, each NUL -// character in it is replaced with "\\0". -// Declared in gtest-internal.h but defined here, so that it has access -// to the definition of the Message class, required by the ARM -// compiler. -template -String StreamableToString(const T& streamable) { - return (Message() << streamable).GetString(); -} - -} // namespace internal - -// The friend relationship of some of these classes is cyclic. -// If we don't forward declare them the compiler might confuse the classes -// in friendship clauses with same named classes on the scope. -class Test; -class TestCase; -class TestInfo; -class UnitTest; - -// A class for indicating whether an assertion was successful. When -// the assertion wasn't successful, the AssertionResult object -// remembers a non-empty message that describes how it failed. -// -// To create an instance of this class, use one of the factory functions -// (AssertionSuccess() and AssertionFailure()). -// -// This class is useful for two purposes: -// 1. Defining predicate functions to be used with Boolean test assertions -// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts -// 2. Defining predicate-format functions to be -// used with predicate assertions (ASSERT_PRED_FORMAT*, etc). -// -// For example, if you define IsEven predicate: -// -// testing::AssertionResult IsEven(int n) { -// if ((n % 2) == 0) -// return testing::AssertionSuccess(); -// else -// return testing::AssertionFailure() << n << " is odd"; -// } -// -// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5))) -// will print the message -// -// Value of: IsEven(Fib(5)) -// Actual: false (5 is odd) -// Expected: true -// -// instead of a more opaque -// -// Value of: IsEven(Fib(5)) -// Actual: false -// Expected: true -// -// in case IsEven is a simple Boolean predicate. -// -// If you expect your predicate to be reused and want to support informative -// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up -// about half as often as positive ones in our tests), supply messages for -// both success and failure cases: -// -// testing::AssertionResult IsEven(int n) { -// if ((n % 2) == 0) -// return testing::AssertionSuccess() << n << " is even"; -// else -// return testing::AssertionFailure() << n << " is odd"; -// } -// -// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print -// -// Value of: IsEven(Fib(6)) -// Actual: true (8 is even) -// Expected: false -// -// NB: Predicates that support negative Boolean assertions have reduced -// performance in positive ones so be careful not to use them in tests -// that have lots (tens of thousands) of positive Boolean assertions. -// -// To use this class with EXPECT_PRED_FORMAT assertions such as: -// -// // Verifies that Foo() returns an even number. -// EXPECT_PRED_FORMAT1(IsEven, Foo()); -// -// you need to define: -// -// testing::AssertionResult IsEven(const char* expr, int n) { -// if ((n % 2) == 0) -// return testing::AssertionSuccess(); -// else -// return testing::AssertionFailure() -// << "Expected: " << expr << " is even\n Actual: it's " << n; -// } -// -// If Foo() returns 5, you will see the following message: -// -// Expected: Foo() is even -// Actual: it's 5 -// -class GTEST_API_ AssertionResult { - public: - // Copy constructor. - // Used in EXPECT_TRUE/FALSE(assertion_result). - AssertionResult(const AssertionResult& other); - // Used in the EXPECT_TRUE/FALSE(bool_expression). - explicit AssertionResult(bool success) : success_(success) {} - - // Returns true iff the assertion succeeded. - operator bool() const { return success_; } // NOLINT - - // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. - AssertionResult operator!() const; - - // Returns the text streamed into this AssertionResult. Test assertions - // use it when they fail (i.e., the predicate's outcome doesn't match the - // assertion's expectation). When nothing has been streamed into the - // object, returns an empty string. - const char* message() const { - return message_.get() != NULL ? message_->c_str() : ""; - } - // TODO(vladl@google.com): Remove this after making sure no clients use it. - // Deprecated; please use message() instead. - const char* failure_message() const { return message(); } - - // Streams a custom failure message into this object. - template AssertionResult& operator<<(const T& value) { - AppendMessage(Message() << value); - return *this; - } - - // Allows streaming basic output manipulators such as endl or flush into - // this object. - AssertionResult& operator<<( - ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) { - AppendMessage(Message() << basic_manipulator); - return *this; - } - - private: - // Appends the contents of message to message_. - void AppendMessage(const Message& a_message) { - if (message_.get() == NULL) - message_.reset(new ::std::string); - message_->append(a_message.GetString().c_str()); - } - - // Stores result of the assertion predicate. - bool success_; - // Stores the message describing the condition in case the expectation - // construct is not satisfied with the predicate's outcome. - // Referenced via a pointer to avoid taking too much stack frame space - // with test assertions. - internal::scoped_ptr< ::std::string> message_; - - GTEST_DISALLOW_ASSIGN_(AssertionResult); -}; - -// Makes a successful assertion result. -GTEST_API_ AssertionResult AssertionSuccess(); - -// Makes a failed assertion result. -GTEST_API_ AssertionResult AssertionFailure(); - -// Makes a failed assertion result with the given failure message. -// Deprecated; use AssertionFailure() << msg. -GTEST_API_ AssertionResult AssertionFailure(const Message& msg); - -// The abstract class that all tests inherit from. -// -// In Google Test, a unit test program contains one or many TestCases, and -// each TestCase contains one or many Tests. -// -// When you define a test using the TEST macro, you don't need to -// explicitly derive from Test - the TEST macro automatically does -// this for you. -// -// The only time you derive from Test is when defining a test fixture -// to be used a TEST_F. For example: -// -// class FooTest : public testing::Test { -// protected: -// virtual void SetUp() { ... } -// virtual void TearDown() { ... } -// ... -// }; -// -// TEST_F(FooTest, Bar) { ... } -// TEST_F(FooTest, Baz) { ... } -// -// Test is not copyable. -class GTEST_API_ Test { - public: - friend class TestInfo; - - // Defines types for pointers to functions that set up and tear down - // a test case. - typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc; - typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc; - - // The d'tor is virtual as we intend to inherit from Test. - virtual ~Test(); - - // Sets up the stuff shared by all tests in this test case. - // - // Google Test will call Foo::SetUpTestCase() before running the first - // test in test case Foo. Hence a sub-class can define its own - // SetUpTestCase() method to shadow the one defined in the super - // class. - static void SetUpTestCase() {} - - // Tears down the stuff shared by all tests in this test case. - // - // Google Test will call Foo::TearDownTestCase() after running the last - // test in test case Foo. Hence a sub-class can define its own - // TearDownTestCase() method to shadow the one defined in the super - // class. - static void TearDownTestCase() {} - - // Returns true iff the current test has a fatal failure. - static bool HasFatalFailure(); - - // Returns true iff the current test has a non-fatal failure. - static bool HasNonfatalFailure(); - - // Returns true iff the current test has a (either fatal or - // non-fatal) failure. - static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); } - - // Logs a property for the current test. Only the last value for a given - // key is remembered. - // These are public static so they can be called from utility functions - // that are not members of the test fixture. - // The arguments are const char* instead strings, as Google Test is used - // on platforms where string doesn't compile. - // - // Note that a driving consideration for these RecordProperty methods - // was to produce xml output suited to the Greenspan charting utility, - // which at present will only chart values that fit in a 32-bit int. It - // is the user's responsibility to restrict their values to 32-bit ints - // if they intend them to be used with Greenspan. - static void RecordProperty(const char* key, const char* value); - static void RecordProperty(const char* key, int value); - - protected: - // Creates a Test object. - Test(); - - // Sets up the test fixture. - virtual void SetUp(); - - // Tears down the test fixture. - virtual void TearDown(); - - private: - // Returns true iff the current test has the same fixture class as - // the first test in the current test case. - static bool HasSameFixtureClass(); - - // Runs the test after the test fixture has been set up. - // - // A sub-class must implement this to define the test logic. - // - // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM. - // Instead, use the TEST or TEST_F macro. - virtual void TestBody() = 0; - - // Sets up, executes, and tears down the test. - void Run(); - - // Deletes self. We deliberately pick an unusual name for this - // internal method to avoid clashing with names used in user TESTs. - void DeleteSelf_() { delete this; } - - // Uses a GTestFlagSaver to save and restore all Google Test flags. - const internal::GTestFlagSaver* const gtest_flag_saver_; - - // Often a user mis-spells SetUp() as Setup() and spends a long time - // wondering why it is never called by Google Test. The declaration of - // the following method is solely for catching such an error at - // compile time: - // - // - The return type is deliberately chosen to be not void, so it - // will be a conflict if a user declares void Setup() in his test - // fixture. - // - // - This method is private, so it will be another compiler error - // if a user calls it from his test fixture. - // - // DO NOT OVERRIDE THIS FUNCTION. - // - // If you see an error about overriding the following function or - // about it being private, you have mis-spelled SetUp() as Setup(). - struct Setup_should_be_spelled_SetUp {}; - virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } - - // We disallow copying Tests. - GTEST_DISALLOW_COPY_AND_ASSIGN_(Test); -}; - -typedef internal::TimeInMillis TimeInMillis; - -// A copyable object representing a user specified test property which can be -// output as a key/value string pair. -// -// Don't inherit from TestProperty as its destructor is not virtual. -class TestProperty { - public: - // C'tor. TestProperty does NOT have a default constructor. - // Always use this constructor (with parameters) to create a - // TestProperty object. - TestProperty(const char* a_key, const char* a_value) : - key_(a_key), value_(a_value) { - } - - // Gets the user supplied key. - const char* key() const { - return key_.c_str(); - } - - // Gets the user supplied value. - const char* value() const { - return value_.c_str(); - } - - // Sets a new value, overriding the one supplied in the constructor. - void SetValue(const char* new_value) { - value_ = new_value; - } - - private: - // The key supplied by the user. - internal::String key_; - // The value supplied by the user. - internal::String value_; -}; - -// The result of a single Test. This includes a list of -// TestPartResults, a list of TestProperties, a count of how many -// death tests there are in the Test, and how much time it took to run -// the Test. -// -// TestResult is not copyable. -class GTEST_API_ TestResult { - public: - // Creates an empty TestResult. - TestResult(); - - // D'tor. Do not inherit from TestResult. - ~TestResult(); - - // Gets the number of all test parts. This is the sum of the number - // of successful test parts and the number of failed test parts. - int total_part_count() const; - - // Returns the number of the test properties. - int test_property_count() const; - - // Returns true iff the test passed (i.e. no test part failed). - bool Passed() const { return !Failed(); } - - // Returns true iff the test failed. - bool Failed() const; - - // Returns true iff the test fatally failed. - bool HasFatalFailure() const; - - // Returns true iff the test has a non-fatal failure. - bool HasNonfatalFailure() const; - - // Returns the elapsed time, in milliseconds. - TimeInMillis elapsed_time() const { return elapsed_time_; } - - // Returns the i-th test part result among all the results. i can range - // from 0 to test_property_count() - 1. If i is not in that range, aborts - // the program. - const TestPartResult& GetTestPartResult(int i) const; - - // Returns the i-th test property. i can range from 0 to - // test_property_count() - 1. If i is not in that range, aborts the - // program. - const TestProperty& GetTestProperty(int i) const; - - private: - friend class TestInfo; - friend class UnitTest; - friend class internal::DefaultGlobalTestPartResultReporter; - friend class internal::ExecDeathTest; - friend class internal::TestResultAccessor; - friend class internal::UnitTestImpl; - friend class internal::WindowsDeathTest; - - // Gets the vector of TestPartResults. - const std::vector& test_part_results() const { - return test_part_results_; - } - - // Gets the vector of TestProperties. - const std::vector& test_properties() const { - return test_properties_; - } - - // Sets the elapsed time. - void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } - - // Adds a test property to the list. The property is validated and may add - // a non-fatal failure if invalid (e.g., if it conflicts with reserved - // key names). If a property is already recorded for the same key, the - // value will be updated, rather than storing multiple values for the same - // key. - void RecordProperty(const TestProperty& test_property); - - // Adds a failure if the key is a reserved attribute of Google Test - // testcase tags. Returns true if the property is valid. - // TODO(russr): Validate attribute names are legal and human readable. - static bool ValidateTestProperty(const TestProperty& test_property); - - // Adds a test part result to the list. - void AddTestPartResult(const TestPartResult& test_part_result); - - // Returns the death test count. - int death_test_count() const { return death_test_count_; } - - // Increments the death test count, returning the new count. - int increment_death_test_count() { return ++death_test_count_; } - - // Clears the test part results. - void ClearTestPartResults(); - - // Clears the object. - void Clear(); - - // Protects mutable state of the property vector and of owned - // properties, whose values may be updated. - internal::Mutex test_properites_mutex_; - - // The vector of TestPartResults - std::vector test_part_results_; - // The vector of TestProperties - std::vector test_properties_; - // Running count of death tests. - int death_test_count_; - // The elapsed time, in milliseconds. - TimeInMillis elapsed_time_; - - // We disallow copying TestResult. - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult); -}; // class TestResult - -// A TestInfo object stores the following information about a test: -// -// Test case name -// Test name -// Whether the test should be run -// A function pointer that creates the test object when invoked -// Test result -// -// The constructor of TestInfo registers itself with the UnitTest -// singleton such that the RUN_ALL_TESTS() macro knows which tests to -// run. -class GTEST_API_ TestInfo { - public: - // Destructs a TestInfo object. This function is not virtual, so - // don't inherit from TestInfo. - ~TestInfo(); - - // Returns the test case name. - const char* test_case_name() const { return test_case_name_.c_str(); } - - // Returns the test name. - const char* name() const { return name_.c_str(); } - - // Returns the name of the parameter type, or NULL if this is not a typed - // or a type-parameterized test. - const char* type_param() const { - if (type_param_.get() != NULL) - return type_param_->c_str(); - return NULL; - } - - // Returns the text representation of the value parameter, or NULL if this - // is not a value-parameterized test. - const char* value_param() const { - if (value_param_.get() != NULL) - return value_param_->c_str(); - return NULL; - } - - // Returns true if this test should run, that is if the test is not disabled - // (or it is disabled but the also_run_disabled_tests flag has been specified) - // and its full name matches the user-specified filter. - // - // Google Test allows the user to filter the tests by their full names. - // The full name of a test Bar in test case Foo is defined as - // "Foo.Bar". Only the tests that match the filter will run. - // - // A filter is a colon-separated list of glob (not regex) patterns, - // optionally followed by a '-' and a colon-separated list of - // negative patterns (tests to exclude). A test is run if it - // matches one of the positive patterns and does not match any of - // the negative patterns. - // - // For example, *A*:Foo.* is a filter that matches any string that - // contains the character 'A' or starts with "Foo.". - bool should_run() const { return should_run_; } - - // Returns the result of the test. - const TestResult* result() const { return &result_; } - - private: - -#if GTEST_HAS_DEATH_TEST - friend class internal::DefaultDeathTestFactory; -#endif // GTEST_HAS_DEATH_TEST - friend class Test; - friend class TestCase; - friend class internal::UnitTestImpl; - friend TestInfo* internal::MakeAndRegisterTestInfo( - const char* test_case_name, const char* name, - const char* type_param, - const char* value_param, - internal::TypeId fixture_class_id, - Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc, - internal::TestFactoryBase* factory); - - // Constructs a TestInfo object. The newly constructed instance assumes - // ownership of the factory object. - TestInfo(const char* test_case_name, const char* name, - const char* a_type_param, - const char* a_value_param, - internal::TypeId fixture_class_id, - internal::TestFactoryBase* factory); - - // Increments the number of death tests encountered in this test so - // far. - int increment_death_test_count() { - return result_.increment_death_test_count(); - } - - // Creates the test object, runs it, records its result, and then - // deletes it. - void Run(); - - static void ClearTestResult(TestInfo* test_info) { - test_info->result_.Clear(); - } - - // These fields are immutable properties of the test. - const std::string test_case_name_; // Test case name - const std::string name_; // Test name - // Name of the parameter type, or NULL if this is not a typed or a - // type-parameterized test. - const internal::scoped_ptr type_param_; - // Text representation of the value parameter, or NULL if this is not a - // value-parameterized test. - const internal::scoped_ptr value_param_; - const internal::TypeId fixture_class_id_; // ID of the test fixture class - bool should_run_; // True iff this test should run - bool is_disabled_; // True iff this test is disabled - bool matches_filter_; // True if this test matches the - // user-specified filter. - internal::TestFactoryBase* const factory_; // The factory that creates - // the test object - - // This field is mutable and needs to be reset before running the - // test for the second time. - TestResult result_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo); -}; - -// A test case, which consists of a vector of TestInfos. -// -// TestCase is not copyable. -class GTEST_API_ TestCase { - public: - // Creates a TestCase with the given name. - // - // TestCase does NOT have a default constructor. Always use this - // constructor to create a TestCase object. - // - // Arguments: - // - // name: name of the test case - // a_type_param: the name of the test's type parameter, or NULL if - // this is not a type-parameterized test. - // set_up_tc: pointer to the function that sets up the test case - // tear_down_tc: pointer to the function that tears down the test case - TestCase(const char* name, const char* a_type_param, - Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc); - - // Destructor of TestCase. - virtual ~TestCase(); - - // Gets the name of the TestCase. - const char* name() const { return name_.c_str(); } - - // Returns the name of the parameter type, or NULL if this is not a - // type-parameterized test case. - const char* type_param() const { - if (type_param_.get() != NULL) - return type_param_->c_str(); - return NULL; - } - - // Returns true if any test in this test case should run. - bool should_run() const { return should_run_; } - - // Gets the number of successful tests in this test case. - int successful_test_count() const; - - // Gets the number of failed tests in this test case. - int failed_test_count() const; - - // Gets the number of disabled tests in this test case. - int disabled_test_count() const; - - // Get the number of tests in this test case that should run. - int test_to_run_count() const; - - // Gets the number of all tests in this test case. - int total_test_count() const; - - // Returns true iff the test case passed. - bool Passed() const { return !Failed(); } - - // Returns true iff the test case failed. - bool Failed() const { return failed_test_count() > 0; } - - // Returns the elapsed time, in milliseconds. - TimeInMillis elapsed_time() const { return elapsed_time_; } - - // Returns the i-th test among all the tests. i can range from 0 to - // total_test_count() - 1. If i is not in that range, returns NULL. - const TestInfo* GetTestInfo(int i) const; - - private: - friend class Test; - friend class internal::UnitTestImpl; - - // Gets the (mutable) vector of TestInfos in this TestCase. - std::vector& test_info_list() { return test_info_list_; } - - // Gets the (immutable) vector of TestInfos in this TestCase. - const std::vector& test_info_list() const { - return test_info_list_; - } - - // Returns the i-th test among all the tests. i can range from 0 to - // total_test_count() - 1. If i is not in that range, returns NULL. - TestInfo* GetMutableTestInfo(int i); - - // Sets the should_run member. - void set_should_run(bool should) { should_run_ = should; } - - // Adds a TestInfo to this test case. Will delete the TestInfo upon - // destruction of the TestCase object. - void AddTestInfo(TestInfo * test_info); - - // Clears the results of all tests in this test case. - void ClearResult(); - - // Clears the results of all tests in the given test case. - static void ClearTestCaseResult(TestCase* test_case) { - test_case->ClearResult(); - } - - // Runs every test in this TestCase. - void Run(); - - // Runs SetUpTestCase() for this TestCase. This wrapper is needed - // for catching exceptions thrown from SetUpTestCase(). - void RunSetUpTestCase() { (*set_up_tc_)(); } - - // Runs TearDownTestCase() for this TestCase. This wrapper is - // needed for catching exceptions thrown from TearDownTestCase(). - void RunTearDownTestCase() { (*tear_down_tc_)(); } - - // Returns true iff test passed. - static bool TestPassed(const TestInfo* test_info) { - return test_info->should_run() && test_info->result()->Passed(); - } - - // Returns true iff test failed. - static bool TestFailed(const TestInfo* test_info) { - return test_info->should_run() && test_info->result()->Failed(); - } - - // Returns true iff test is disabled. - static bool TestDisabled(const TestInfo* test_info) { - return test_info->is_disabled_; - } - - // Returns true if the given test should run. - static bool ShouldRunTest(const TestInfo* test_info) { - return test_info->should_run(); - } - - // Shuffles the tests in this test case. - void ShuffleTests(internal::Random* random); - - // Restores the test order to before the first shuffle. - void UnshuffleTests(); - - // Name of the test case. - internal::String name_; - // Name of the parameter type, or NULL if this is not a typed or a - // type-parameterized test. - const internal::scoped_ptr type_param_; - // The vector of TestInfos in their original order. It owns the - // elements in the vector. - std::vector test_info_list_; - // Provides a level of indirection for the test list to allow easy - // shuffling and restoring the test order. The i-th element in this - // vector is the index of the i-th test in the shuffled test list. - std::vector test_indices_; - // Pointer to the function that sets up the test case. - Test::SetUpTestCaseFunc set_up_tc_; - // Pointer to the function that tears down the test case. - Test::TearDownTestCaseFunc tear_down_tc_; - // True iff any test in this test case should run. - bool should_run_; - // Elapsed time, in milliseconds. - TimeInMillis elapsed_time_; - - // We disallow copying TestCases. - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase); -}; - -// An Environment object is capable of setting up and tearing down an -// environment. The user should subclass this to define his own -// environment(s). -// -// An Environment object does the set-up and tear-down in virtual -// methods SetUp() and TearDown() instead of the constructor and the -// destructor, as: -// -// 1. You cannot safely throw from a destructor. This is a problem -// as in some cases Google Test is used where exceptions are enabled, and -// we may want to implement ASSERT_* using exceptions where they are -// available. -// 2. You cannot use ASSERT_* directly in a constructor or -// destructor. -class Environment { - public: - // The d'tor is virtual as we need to subclass Environment. - virtual ~Environment() {} - - // Override this to define how to set up the environment. - virtual void SetUp() {} - - // Override this to define how to tear down the environment. - virtual void TearDown() {} - private: - // If you see an error about overriding the following function or - // about it being private, you have mis-spelled SetUp() as Setup(). - struct Setup_should_be_spelled_SetUp {}; - virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } -}; - -// The interface for tracing execution of tests. The methods are organized in -// the order the corresponding events are fired. -class TestEventListener { - public: - virtual ~TestEventListener() {} - - // Fired before any test activity starts. - virtual void OnTestProgramStart(const UnitTest& unit_test) = 0; - - // Fired before each iteration of tests starts. There may be more than - // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration - // index, starting from 0. - virtual void OnTestIterationStart(const UnitTest& unit_test, - int iteration) = 0; - - // Fired before environment set-up for each iteration of tests starts. - virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0; - - // Fired after environment set-up for each iteration of tests ends. - virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0; - - // Fired before the test case starts. - virtual void OnTestCaseStart(const TestCase& test_case) = 0; - - // Fired before the test starts. - virtual void OnTestStart(const TestInfo& test_info) = 0; - - // Fired after a failed assertion or a SUCCEED() invocation. - virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0; - - // Fired after the test ends. - virtual void OnTestEnd(const TestInfo& test_info) = 0; - - // Fired after the test case ends. - virtual void OnTestCaseEnd(const TestCase& test_case) = 0; - - // Fired before environment tear-down for each iteration of tests starts. - virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0; - - // Fired after environment tear-down for each iteration of tests ends. - virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0; - - // Fired after each iteration of tests finishes. - virtual void OnTestIterationEnd(const UnitTest& unit_test, - int iteration) = 0; - - // Fired after all test activities have ended. - virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; -}; - -// The convenience class for users who need to override just one or two -// methods and are not concerned that a possible change to a signature of -// the methods they override will not be caught during the build. For -// comments about each method please see the definition of TestEventListener -// above. -class EmptyTestEventListener : public TestEventListener { - public: - virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} - virtual void OnTestStart(const TestInfo& /*test_info*/) {} - virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} - virtual void OnTestEnd(const TestInfo& /*test_info*/) {} - virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} - virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} -}; - -// TestEventListeners lets users add listeners to track events in Google Test. -class GTEST_API_ TestEventListeners { - public: - TestEventListeners(); - ~TestEventListeners(); - - // Appends an event listener to the end of the list. Google Test assumes - // the ownership of the listener (i.e. it will delete the listener when - // the test program finishes). - void Append(TestEventListener* listener); - - // Removes the given event listener from the list and returns it. It then - // becomes the caller's responsibility to delete the listener. Returns - // NULL if the listener is not found in the list. - TestEventListener* Release(TestEventListener* listener); - - // Returns the standard listener responsible for the default console - // output. Can be removed from the listeners list to shut down default - // console output. Note that removing this object from the listener list - // with Release transfers its ownership to the caller and makes this - // function return NULL the next time. - TestEventListener* default_result_printer() const { - return default_result_printer_; - } - - // Returns the standard listener responsible for the default XML output - // controlled by the --gtest_output=xml flag. Can be removed from the - // listeners list by users who want to shut down the default XML output - // controlled by this flag and substitute it with custom one. Note that - // removing this object from the listener list with Release transfers its - // ownership to the caller and makes this function return NULL the next - // time. - TestEventListener* default_xml_generator() const { - return default_xml_generator_; - } - - private: - friend class TestCase; - friend class TestInfo; - friend class internal::DefaultGlobalTestPartResultReporter; - friend class internal::NoExecDeathTest; - friend class internal::TestEventListenersAccessor; - friend class internal::UnitTestImpl; - - // Returns repeater that broadcasts the TestEventListener events to all - // subscribers. - TestEventListener* repeater(); - - // Sets the default_result_printer attribute to the provided listener. - // The listener is also added to the listener list and previous - // default_result_printer is removed from it and deleted. The listener can - // also be NULL in which case it will not be added to the list. Does - // nothing if the previous and the current listener objects are the same. - void SetDefaultResultPrinter(TestEventListener* listener); - - // Sets the default_xml_generator attribute to the provided listener. The - // listener is also added to the listener list and previous - // default_xml_generator is removed from it and deleted. The listener can - // also be NULL in which case it will not be added to the list. Does - // nothing if the previous and the current listener objects are the same. - void SetDefaultXmlGenerator(TestEventListener* listener); - - // Controls whether events will be forwarded by the repeater to the - // listeners in the list. - bool EventForwardingEnabled() const; - void SuppressEventForwarding(); - - // The actual list of listeners. - internal::TestEventRepeater* repeater_; - // Listener responsible for the standard result output. - TestEventListener* default_result_printer_; - // Listener responsible for the creation of the XML output file. - TestEventListener* default_xml_generator_; - - // We disallow copying TestEventListeners. - GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners); -}; - -// A UnitTest consists of a vector of TestCases. -// -// This is a singleton class. The only instance of UnitTest is -// created when UnitTest::GetInstance() is first called. This -// instance is never deleted. -// -// UnitTest is not copyable. -// -// This class is thread-safe as long as the methods are called -// according to their specification. -class GTEST_API_ UnitTest { - public: - // Gets the singleton UnitTest object. The first time this method - // is called, a UnitTest object is constructed and returned. - // Consecutive calls will return the same object. - static UnitTest* GetInstance(); - - // Runs all tests in this UnitTest object and prints the result. - // Returns 0 if successful, or 1 otherwise. - // - // This method can only be called from the main thread. - // - // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. - int Run() GTEST_MUST_USE_RESULT_; - - // Returns the working directory when the first TEST() or TEST_F() - // was executed. The UnitTest object owns the string. - const char* original_working_dir() const; - - // Returns the TestCase object for the test that's currently running, - // or NULL if no test is running. - const TestCase* current_test_case() const; - - // Returns the TestInfo object for the test that's currently running, - // or NULL if no test is running. - const TestInfo* current_test_info() const; - - // Returns the random seed used at the start of the current test run. - int random_seed() const; - -#if GTEST_HAS_PARAM_TEST - // Returns the ParameterizedTestCaseRegistry object used to keep track of - // value-parameterized tests and instantiate and register them. - // - // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. - internal::ParameterizedTestCaseRegistry& parameterized_test_registry(); -#endif // GTEST_HAS_PARAM_TEST - - // Gets the number of successful test cases. - int successful_test_case_count() const; - - // Gets the number of failed test cases. - int failed_test_case_count() const; - - // Gets the number of all test cases. - int total_test_case_count() const; - - // Gets the number of all test cases that contain at least one test - // that should run. - int test_case_to_run_count() const; - - // Gets the number of successful tests. - int successful_test_count() const; - - // Gets the number of failed tests. - int failed_test_count() const; - - // Gets the number of disabled tests. - int disabled_test_count() const; - - // Gets the number of all tests. - int total_test_count() const; - - // Gets the number of tests that should run. - int test_to_run_count() const; - - // Gets the elapsed time, in milliseconds. - TimeInMillis elapsed_time() const; - - // Returns true iff the unit test passed (i.e. all test cases passed). - bool Passed() const; - - // Returns true iff the unit test failed (i.e. some test case failed - // or something outside of all tests failed). - bool Failed() const; - - // Gets the i-th test case among all the test cases. i can range from 0 to - // total_test_case_count() - 1. If i is not in that range, returns NULL. - const TestCase* GetTestCase(int i) const; - - // Returns the list of event listeners that can be used to track events - // inside Google Test. - TestEventListeners& listeners(); - - private: - // Registers and returns a global test environment. When a test - // program is run, all global test environments will be set-up in - // the order they were registered. After all tests in the program - // have finished, all global test environments will be torn-down in - // the *reverse* order they were registered. - // - // The UnitTest object takes ownership of the given environment. - // - // This method can only be called from the main thread. - Environment* AddEnvironment(Environment* env); - - // Adds a TestPartResult to the current TestResult object. All - // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) - // eventually call this to report their results. The user code - // should use the assertion macros instead of calling this directly. - void AddTestPartResult(TestPartResult::Type result_type, - const char* file_name, - int line_number, - const internal::String& message, - const internal::String& os_stack_trace); - - // Adds a TestProperty to the current TestResult object. If the result already - // contains a property with the same key, the value will be updated. - void RecordPropertyForCurrentTest(const char* key, const char* value); - - // Gets the i-th test case among all the test cases. i can range from 0 to - // total_test_case_count() - 1. If i is not in that range, returns NULL. - TestCase* GetMutableTestCase(int i); - - // Accessors for the implementation object. - internal::UnitTestImpl* impl() { return impl_; } - const internal::UnitTestImpl* impl() const { return impl_; } - - // These classes and funcions are friends as they need to access private - // members of UnitTest. - friend class Test; - friend class internal::AssertHelper; - friend class internal::ScopedTrace; - friend Environment* AddGlobalTestEnvironment(Environment* env); - friend internal::UnitTestImpl* internal::GetUnitTestImpl(); - friend void internal::ReportFailureInUnknownLocation( - TestPartResult::Type result_type, - const internal::String& message); - - // Creates an empty UnitTest. - UnitTest(); - - // D'tor - virtual ~UnitTest(); - - // Pushes a trace defined by SCOPED_TRACE() on to the per-thread - // Google Test trace stack. - void PushGTestTrace(const internal::TraceInfo& trace); - - // Pops a trace from the per-thread Google Test trace stack. - void PopGTestTrace(); - - // Protects mutable state in *impl_. This is mutable as some const - // methods need to lock it too. - mutable internal::Mutex mutex_; - - // Opaque implementation object. This field is never changed once - // the object is constructed. We don't mark it as const here, as - // doing so will cause a warning in the constructor of UnitTest. - // Mutable state in *impl_ is protected by mutex_. - internal::UnitTestImpl* impl_; - - // We disallow copying UnitTest. - GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest); -}; - -// A convenient wrapper for adding an environment for the test -// program. -// -// You should call this before RUN_ALL_TESTS() is called, probably in -// main(). If you use gtest_main, you need to call this before main() -// starts for it to take effect. For example, you can define a global -// variable like this: -// -// testing::Environment* const foo_env = -// testing::AddGlobalTestEnvironment(new FooEnvironment); -// -// However, we strongly recommend you to write your own main() and -// call AddGlobalTestEnvironment() there, as relying on initialization -// of global variables makes the code harder to read and may cause -// problems when you register multiple environments from different -// translation units and the environments have dependencies among them -// (remember that the compiler doesn't guarantee the order in which -// global variables from different translation units are initialized). -inline Environment* AddGlobalTestEnvironment(Environment* env) { - return UnitTest::GetInstance()->AddEnvironment(env); -} - -// Initializes Google Test. This must be called before calling -// RUN_ALL_TESTS(). In particular, it parses a command line for the -// flags that Google Test recognizes. Whenever a Google Test flag is -// seen, it is removed from argv, and *argc is decremented. -// -// No value is returned. Instead, the Google Test flag variables are -// updated. -// -// Calling the function for the second time has no user-visible effect. -GTEST_API_ void InitGoogleTest(int* argc, char** argv); - -// This overloaded version can be used in Windows programs compiled in -// UNICODE mode. -GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv); - -namespace internal { - -// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc) -// operand to be used in a failure message. The type (but not value) -// of the other operand may affect the format. This allows us to -// print a char* as a raw pointer when it is compared against another -// char*, and print it as a C string when it is compared against an -// std::string object, for example. -// -// The default implementation ignores the type of the other operand. -// Some specialized versions are used to handle formatting wide or -// narrow C strings. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -template -String FormatForComparisonFailureMessage(const T1& value, - const T2& /* other_operand */) { - // C++Builder compiles this incorrectly if the namespace isn't explicitly - // given. - return ::testing::PrintToString(value); -} - -// The helper function for {ASSERT|EXPECT}_EQ. -template -AssertionResult CmpHelperEQ(const char* expected_expression, - const char* actual_expression, - const T1& expected, - const T2& actual) { -#ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4389) // Temporarily disables warning on - // signed/unsigned mismatch. -#endif - - if (expected == actual) { - return AssertionSuccess(); - } - -#ifdef _MSC_VER -# pragma warning(pop) // Restores the warning state. -#endif - - return EqFailure(expected_expression, - actual_expression, - FormatForComparisonFailureMessage(expected, actual), - FormatForComparisonFailureMessage(actual, expected), - false); -} - -// With this overloaded version, we allow anonymous enums to be used -// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums -// can be implicitly cast to BiggestInt. -GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression, - const char* actual_expression, - BiggestInt expected, - BiggestInt actual); - -// The helper class for {ASSERT|EXPECT}_EQ. The template argument -// lhs_is_null_literal is true iff the first argument to ASSERT_EQ() -// is a null pointer literal. The following default implementation is -// for lhs_is_null_literal being false. -template -class EqHelper { - public: - // This templatized version is for the general case. - template - static AssertionResult Compare(const char* expected_expression, - const char* actual_expression, - const T1& expected, - const T2& actual) { - return CmpHelperEQ(expected_expression, actual_expression, expected, - actual); - } - - // With this overloaded version, we allow anonymous enums to be used - // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous - // enums can be implicitly cast to BiggestInt. - // - // Even though its body looks the same as the above version, we - // cannot merge the two, as it will make anonymous enums unhappy. - static AssertionResult Compare(const char* expected_expression, - const char* actual_expression, - BiggestInt expected, - BiggestInt actual) { - return CmpHelperEQ(expected_expression, actual_expression, expected, - actual); - } -}; - -// This specialization is used when the first argument to ASSERT_EQ() -// is a null pointer literal, like NULL, false, or 0. -template <> -class EqHelper { - public: - // We define two overloaded versions of Compare(). The first - // version will be picked when the second argument to ASSERT_EQ() is - // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or - // EXPECT_EQ(false, a_bool). - template - static AssertionResult Compare( - const char* expected_expression, - const char* actual_expression, - const T1& expected, - const T2& actual, - // The following line prevents this overload from being considered if T2 - // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr) - // expands to Compare("", "", NULL, my_ptr), which requires a conversion - // to match the Secret* in the other overload, which would otherwise make - // this template match better. - typename EnableIf::value>::type* = 0) { - return CmpHelperEQ(expected_expression, actual_expression, expected, - actual); - } - - // This version will be picked when the second argument to ASSERT_EQ() is a - // pointer, e.g. ASSERT_EQ(NULL, a_pointer). - template - static AssertionResult Compare( - const char* expected_expression, - const char* actual_expression, - // We used to have a second template parameter instead of Secret*. That - // template parameter would deduce to 'long', making this a better match - // than the first overload even without the first overload's EnableIf. - // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to - // non-pointer argument" (even a deduced integral argument), so the old - // implementation caused warnings in user code. - Secret* /* expected (NULL) */, - T* actual) { - // We already know that 'expected' is a null pointer. - return CmpHelperEQ(expected_expression, actual_expression, - static_cast(NULL), actual); - } -}; - -// A macro for implementing the helper functions needed to implement -// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste -// of similar code. -// -// For each templatized helper function, we also define an overloaded -// version for BiggestInt in order to reduce code bloat and allow -// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled -// with gcc 4. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ -template \ -AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ - const T1& val1, const T2& val2) {\ - if (val1 op val2) {\ - return AssertionSuccess();\ - } else {\ - return AssertionFailure() \ - << "Expected: (" << expr1 << ") " #op " (" << expr2\ - << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ - << " vs " << FormatForComparisonFailureMessage(val2, val1);\ - }\ -}\ -GTEST_API_ AssertionResult CmpHelper##op_name(\ - const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) - -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. - -// Implements the helper function for {ASSERT|EXPECT}_NE -GTEST_IMPL_CMP_HELPER_(NE, !=); -// Implements the helper function for {ASSERT|EXPECT}_LE -GTEST_IMPL_CMP_HELPER_(LE, <=); -// Implements the helper function for {ASSERT|EXPECT}_LT -GTEST_IMPL_CMP_HELPER_(LT, < ); -// Implements the helper function for {ASSERT|EXPECT}_GE -GTEST_IMPL_CMP_HELPER_(GE, >=); -// Implements the helper function for {ASSERT|EXPECT}_GT -GTEST_IMPL_CMP_HELPER_(GT, > ); - -#undef GTEST_IMPL_CMP_HELPER_ - -// The helper function for {ASSERT|EXPECT}_STREQ. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, - const char* actual_expression, - const char* expected, - const char* actual); - -// The helper function for {ASSERT|EXPECT}_STRCASEEQ. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, - const char* actual_expression, - const char* expected, - const char* actual); - -// The helper function for {ASSERT|EXPECT}_STRNE. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); - -// The helper function for {ASSERT|EXPECT}_STRCASENE. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, - const char* s2_expression, - const char* s1, - const char* s2); - - -// Helper function for *_STREQ on wide strings. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, - const char* actual_expression, - const wchar_t* expected, - const wchar_t* actual); - -// Helper function for *_STRNE on wide strings. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const wchar_t* s1, - const wchar_t* s2); - -} // namespace internal - -// IsSubstring() and IsNotSubstring() are intended to be used as the -// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by -// themselves. They check whether needle is a substring of haystack -// (NULL is considered a substring of itself only), and return an -// appropriate error message when they fail. -// -// The {needle,haystack}_expr arguments are the stringified -// expressions that generated the two real arguments. -GTEST_API_ AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const char* needle, const char* haystack); -GTEST_API_ AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const wchar_t* needle, const wchar_t* haystack); -GTEST_API_ AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const char* needle, const char* haystack); -GTEST_API_ AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const wchar_t* needle, const wchar_t* haystack); -GTEST_API_ AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::string& needle, const ::std::string& haystack); -GTEST_API_ AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::string& needle, const ::std::string& haystack); - -#if GTEST_HAS_STD_WSTRING -GTEST_API_ AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::wstring& needle, const ::std::wstring& haystack); -GTEST_API_ AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::wstring& needle, const ::std::wstring& haystack); -#endif // GTEST_HAS_STD_WSTRING - -namespace internal { - -// Helper template function for comparing floating-points. -// -// Template parameter: -// -// RawType: the raw floating-point type (either float or double) -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -template -AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, - const char* actual_expression, - RawType expected, - RawType actual) { - const FloatingPoint lhs(expected), rhs(actual); - - if (lhs.AlmostEquals(rhs)) { - return AssertionSuccess(); - } - - ::std::stringstream expected_ss; - expected_ss << std::setprecision(std::numeric_limits::digits10 + 2) - << expected; - - ::std::stringstream actual_ss; - actual_ss << std::setprecision(std::numeric_limits::digits10 + 2) - << actual; - - return EqFailure(expected_expression, - actual_expression, - StringStreamToString(&expected_ss), - StringStreamToString(&actual_ss), - false); -} - -// Helper function for implementing ASSERT_NEAR. -// -// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, - const char* expr2, - const char* abs_error_expr, - double val1, - double val2, - double abs_error); - -// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. -// A class that enables one to stream messages to assertion macros -class GTEST_API_ AssertHelper { - public: - // Constructor. - AssertHelper(TestPartResult::Type type, - const char* file, - int line, - const char* message); - ~AssertHelper(); - - // Message assignment is a semantic trick to enable assertion - // streaming; see the GTEST_MESSAGE_ macro below. - void operator=(const Message& message) const; - - private: - // We put our data in a struct so that the size of the AssertHelper class can - // be as small as possible. This is important because gcc is incapable of - // re-using stack space even for temporary variables, so every EXPECT_EQ - // reserves stack space for another AssertHelper. - struct AssertHelperData { - AssertHelperData(TestPartResult::Type t, - const char* srcfile, - int line_num, - const char* msg) - : type(t), file(srcfile), line(line_num), message(msg) { } - - TestPartResult::Type const type; - const char* const file; - int const line; - String const message; - - private: - GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData); - }; - - AssertHelperData* const data_; - - GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper); -}; - -} // namespace internal - -#if GTEST_HAS_PARAM_TEST -// The pure interface class that all value-parameterized tests inherit from. -// A value-parameterized class must inherit from both ::testing::Test and -// ::testing::WithParamInterface. In most cases that just means inheriting -// from ::testing::TestWithParam, but more complicated test hierarchies -// may need to inherit from Test and WithParamInterface at different levels. -// -// This interface has support for accessing the test parameter value via -// the GetParam() method. -// -// Use it with one of the parameter generator defining functions, like Range(), -// Values(), ValuesIn(), Bool(), and Combine(). -// -// class FooTest : public ::testing::TestWithParam { -// protected: -// FooTest() { -// // Can use GetParam() here. -// } -// virtual ~FooTest() { -// // Can use GetParam() here. -// } -// virtual void SetUp() { -// // Can use GetParam() here. -// } -// virtual void TearDown { -// // Can use GetParam() here. -// } -// }; -// TEST_P(FooTest, DoesBar) { -// // Can use GetParam() method here. -// Foo foo; -// ASSERT_TRUE(foo.DoesBar(GetParam())); -// } -// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10)); - -template -class WithParamInterface { - public: - typedef T ParamType; - virtual ~WithParamInterface() {} - - // The current parameter value. Is also available in the test fixture's - // constructor. This member function is non-static, even though it only - // references static data, to reduce the opportunity for incorrect uses - // like writing 'WithParamInterface::GetParam()' for a test that - // uses a fixture whose parameter type is int. - const ParamType& GetParam() const { return *parameter_; } - - private: - // Sets parameter value. The caller is responsible for making sure the value - // remains alive and unchanged throughout the current test. - static void SetParam(const ParamType* parameter) { - parameter_ = parameter; - } - - // Static value used for accessing parameter during a test lifetime. - static const ParamType* parameter_; - - // TestClass must be a subclass of WithParamInterface and Test. - template friend class internal::ParameterizedTestFactory; -}; - -template -const T* WithParamInterface::parameter_ = NULL; - -// Most value-parameterized classes can ignore the existence of -// WithParamInterface, and can just inherit from ::testing::TestWithParam. - -template -class TestWithParam : public Test, public WithParamInterface { -}; - -#endif // GTEST_HAS_PARAM_TEST - -// Macros for indicating success/failure in test code. - -// ADD_FAILURE unconditionally adds a failure to the current test. -// SUCCEED generates a success - it doesn't automatically make the -// current test successful, as a test is only successful when it has -// no failure. -// -// EXPECT_* verifies that a certain condition is satisfied. If not, -// it behaves like ADD_FAILURE. In particular: -// -// EXPECT_TRUE verifies that a Boolean condition is true. -// EXPECT_FALSE verifies that a Boolean condition is false. -// -// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except -// that they will also abort the current function on failure. People -// usually want the fail-fast behavior of FAIL and ASSERT_*, but those -// writing data-driven tests often find themselves using ADD_FAILURE -// and EXPECT_* more. -// -// Examples: -// -// EXPECT_TRUE(server.StatusIsOK()); -// ASSERT_FALSE(server.HasPendingRequest(port)) -// << "There are still pending requests " << "on port " << port; - -// Generates a nonfatal failure with a generic message. -#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") - -// Generates a nonfatal failure at the given source file location with -// a generic message. -#define ADD_FAILURE_AT(file, line) \ - GTEST_MESSAGE_AT_(file, line, "Failed", \ - ::testing::TestPartResult::kNonFatalFailure) - -// Generates a fatal failure with a generic message. -#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") - -// Define this macro to 1 to omit the definition of FAIL(), which is a -// generic name and clashes with some other libraries. -#if !GTEST_DONT_DEFINE_FAIL -# define FAIL() GTEST_FAIL() -#endif - -// Generates a success with a generic message. -#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded") - -// Define this macro to 1 to omit the definition of SUCCEED(), which -// is a generic name and clashes with some other libraries. -#if !GTEST_DONT_DEFINE_SUCCEED -# define SUCCEED() GTEST_SUCCEED() -#endif - -// Macros for testing exceptions. -// -// * {ASSERT|EXPECT}_THROW(statement, expected_exception): -// Tests that the statement throws the expected exception. -// * {ASSERT|EXPECT}_NO_THROW(statement): -// Tests that the statement doesn't throw any exception. -// * {ASSERT|EXPECT}_ANY_THROW(statement): -// Tests that the statement throws an exception. - -#define EXPECT_THROW(statement, expected_exception) \ - GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_) -#define EXPECT_NO_THROW(statement) \ - GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) -#define EXPECT_ANY_THROW(statement) \ - GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) -#define ASSERT_THROW(statement, expected_exception) \ - GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_) -#define ASSERT_NO_THROW(statement) \ - GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) -#define ASSERT_ANY_THROW(statement) \ - GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) - -// Boolean assertions. Condition can be either a Boolean expression or an -// AssertionResult. For more information on how to use AssertionResult with -// these macros see comments on that class. -#define EXPECT_TRUE(condition) \ - GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ - GTEST_NONFATAL_FAILURE_) -#define EXPECT_FALSE(condition) \ - GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ - GTEST_NONFATAL_FAILURE_) -#define ASSERT_TRUE(condition) \ - GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ - GTEST_FATAL_FAILURE_) -#define ASSERT_FALSE(condition) \ - GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ - GTEST_FATAL_FAILURE_) - -// Includes the auto-generated header that implements a family of -// generic predicate assertion macros. -// Copyright 2006, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This file is AUTOMATICALLY GENERATED on 09/24/2010 by command -// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! -// -// Implements a family of generic predicate assertion macros. - -#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ -#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ - -// Makes sure this header is not included before gtest.h. -#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ -# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. -#endif // GTEST_INCLUDE_GTEST_GTEST_H_ - -// This header implements a family of generic predicate assertion -// macros: -// -// ASSERT_PRED_FORMAT1(pred_format, v1) -// ASSERT_PRED_FORMAT2(pred_format, v1, v2) -// ... -// -// where pred_format is a function or functor that takes n (in the -// case of ASSERT_PRED_FORMATn) values and their source expression -// text, and returns a testing::AssertionResult. See the definition -// of ASSERT_EQ in gtest.h for an example. -// -// If you don't care about formatting, you can use the more -// restrictive version: -// -// ASSERT_PRED1(pred, v1) -// ASSERT_PRED2(pred, v1, v2) -// ... -// -// where pred is an n-ary function or functor that returns bool, -// and the values v1, v2, ..., must support the << operator for -// streaming to std::ostream. -// -// We also define the EXPECT_* variations. -// -// For now we only support predicates whose arity is at most 5. -// Please email googletestframework@googlegroups.com if you need -// support for higher arities. - -// GTEST_ASSERT_ is the basic statement to which all of the assertions -// in this file reduce. Don't use this in your code. - -#define GTEST_ASSERT_(expression, on_failure) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (const ::testing::AssertionResult gtest_ar = (expression)) \ - ; \ - else \ - on_failure(gtest_ar.failure_message()) - - -// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use -// this in your code. -template -AssertionResult AssertPred1Helper(const char* pred_text, - const char* e1, - Pred pred, - const T1& v1) { - if (pred(v1)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1; -} - -// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. -// Don't use this in your code. -#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, v1),\ - on_failure) - -// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use -// this in your code. -#define GTEST_PRED1_(pred, v1, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \ - #v1, \ - pred, \ - v1), on_failure) - -// Unary predicate assertion macros. -#define EXPECT_PRED_FORMAT1(pred_format, v1) \ - GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED1(pred, v1) \ - GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT1(pred_format, v1) \ - GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED1(pred, v1) \ - GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) - - - -// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use -// this in your code. -template -AssertionResult AssertPred2Helper(const char* pred_text, - const char* e1, - const char* e2, - Pred pred, - const T1& v1, - const T2& v2) { - if (pred(v1, v2)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ", " - << e2 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2; -} - -// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. -// Don't use this in your code. -#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2),\ - on_failure) - -// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use -// this in your code. -#define GTEST_PRED2_(pred, v1, v2, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \ - #v1, \ - #v2, \ - pred, \ - v1, \ - v2), on_failure) - -// Binary predicate assertion macros. -#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \ - GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED2(pred, v1, v2) \ - GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \ - GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED2(pred, v1, v2) \ - GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) - - - -// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use -// this in your code. -template -AssertionResult AssertPred3Helper(const char* pred_text, - const char* e1, - const char* e2, - const char* e3, - Pred pred, - const T1& v1, - const T2& v2, - const T3& v3) { - if (pred(v1, v2, v3)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3; -} - -// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. -// Don't use this in your code. -#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3),\ - on_failure) - -// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use -// this in your code. -#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \ - #v1, \ - #v2, \ - #v3, \ - pred, \ - v1, \ - v2, \ - v3), on_failure) - -// Ternary predicate assertion macros. -#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ - GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED3(pred, v1, v2, v3) \ - GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \ - GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED3(pred, v1, v2, v3) \ - GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) - - - -// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use -// this in your code. -template -AssertionResult AssertPred4Helper(const char* pred_text, - const char* e1, - const char* e2, - const char* e3, - const char* e4, - Pred pred, - const T1& v1, - const T2& v2, - const T3& v3, - const T4& v4) { - if (pred(v1, v2, v3, v4)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ", " - << e4 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3 - << "\n" << e4 << " evaluates to " << v4; -} - -// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. -// Don't use this in your code. -#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4),\ - on_failure) - -// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use -// this in your code. -#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \ - #v1, \ - #v2, \ - #v3, \ - #v4, \ - pred, \ - v1, \ - v2, \ - v3, \ - v4), on_failure) - -// 4-ary predicate assertion macros. -#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ - GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED4(pred, v1, v2, v3, v4) \ - GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ - GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED4(pred, v1, v2, v3, v4) \ - GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) - - - -// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use -// this in your code. -template -AssertionResult AssertPred5Helper(const char* pred_text, - const char* e1, - const char* e2, - const char* e3, - const char* e4, - const char* e5, - Pred pred, - const T1& v1, - const T2& v2, - const T3& v3, - const T4& v4, - const T5& v5) { - if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ", " - << e4 << ", " - << e5 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3 - << "\n" << e4 << " evaluates to " << v4 - << "\n" << e5 << " evaluates to " << v5; -} - -// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. -// Don't use this in your code. -#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5),\ - on_failure) - -// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use -// this in your code. -#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \ - #v1, \ - #v2, \ - #v3, \ - #v4, \ - #v5, \ - pred, \ - v1, \ - v2, \ - v3, \ - v4, \ - v5), on_failure) - -// 5-ary predicate assertion macros. -#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ - GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \ - GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ - GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \ - GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) - - - -#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ - -// Macros for testing equalities and inequalities. -// -// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual -// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2 -// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2 -// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2 -// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2 -// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2 -// -// When they are not, Google Test prints both the tested expressions and -// their actual values. The values must be compatible built-in types, -// or you will get a compiler error. By "compatible" we mean that the -// values can be compared by the respective operator. -// -// Note: -// -// 1. It is possible to make a user-defined type work with -// {ASSERT|EXPECT}_??(), but that requires overloading the -// comparison operators and is thus discouraged by the Google C++ -// Usage Guide. Therefore, you are advised to use the -// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are -// equal. -// -// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on -// pointers (in particular, C strings). Therefore, if you use it -// with two C strings, you are testing how their locations in memory -// are related, not how their content is related. To compare two C -// strings by content, use {ASSERT|EXPECT}_STR*(). -// -// 3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to -// {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you -// what the actual value is when it fails, and similarly for the -// other comparisons. -// -// 4. Do not depend on the order in which {ASSERT|EXPECT}_??() -// evaluate their arguments, which is undefined. -// -// 5. These macros evaluate their arguments exactly once. -// -// Examples: -// -// EXPECT_NE(5, Foo()); -// EXPECT_EQ(NULL, a_pointer); -// ASSERT_LT(i, array_size); -// ASSERT_GT(records.size(), 0) << "There is no record left."; - -#define EXPECT_EQ(expected, actual) \ - EXPECT_PRED_FORMAT2(::testing::internal:: \ - EqHelper::Compare, \ - expected, actual) -#define EXPECT_NE(expected, actual) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual) -#define EXPECT_LE(val1, val2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) -#define EXPECT_LT(val1, val2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) -#define EXPECT_GE(val1, val2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) -#define EXPECT_GT(val1, val2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) - -#define GTEST_ASSERT_EQ(expected, actual) \ - ASSERT_PRED_FORMAT2(::testing::internal:: \ - EqHelper::Compare, \ - expected, actual) -#define GTEST_ASSERT_NE(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) -#define GTEST_ASSERT_LE(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) -#define GTEST_ASSERT_LT(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) -#define GTEST_ASSERT_GE(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) -#define GTEST_ASSERT_GT(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) - -// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of -// ASSERT_XY(), which clashes with some users' own code. - -#if !GTEST_DONT_DEFINE_ASSERT_EQ -# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) -#endif - -#if !GTEST_DONT_DEFINE_ASSERT_NE -# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) -#endif - -#if !GTEST_DONT_DEFINE_ASSERT_LE -# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) -#endif - -#if !GTEST_DONT_DEFINE_ASSERT_LT -# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) -#endif - -#if !GTEST_DONT_DEFINE_ASSERT_GE -# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) -#endif - -#if !GTEST_DONT_DEFINE_ASSERT_GT -# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) -#endif - -// C String Comparisons. All tests treat NULL and any non-NULL string -// as different. Two NULLs are equal. -// -// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2 -// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2 -// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case -// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case -// -// For wide or narrow string objects, you can use the -// {ASSERT|EXPECT}_??() macros. -// -// Don't depend on the order in which the arguments are evaluated, -// which is undefined. -// -// These macros evaluate their arguments exactly once. - -#define EXPECT_STREQ(expected, actual) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) -#define EXPECT_STRNE(s1, s2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) -#define EXPECT_STRCASEEQ(expected, actual) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) -#define EXPECT_STRCASENE(s1, s2)\ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) - -#define ASSERT_STREQ(expected, actual) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) -#define ASSERT_STRNE(s1, s2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) -#define ASSERT_STRCASEEQ(expected, actual) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) -#define ASSERT_STRCASENE(s1, s2)\ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) - -// Macros for comparing floating-point numbers. -// -// * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual): -// Tests that two float values are almost equal. -// * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual): -// Tests that two double values are almost equal. -// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error): -// Tests that v1 and v2 are within the given distance to each other. -// -// Google Test uses ULP-based comparison to automatically pick a default -// error bound that is appropriate for the operands. See the -// FloatingPoint template class in gtest-internal.h if you are -// interested in the implementation details. - -#define EXPECT_FLOAT_EQ(expected, actual)\ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ - expected, actual) - -#define EXPECT_DOUBLE_EQ(expected, actual)\ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ - expected, actual) - -#define ASSERT_FLOAT_EQ(expected, actual)\ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ - expected, actual) - -#define ASSERT_DOUBLE_EQ(expected, actual)\ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ - expected, actual) - -#define EXPECT_NEAR(val1, val2, abs_error)\ - EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ - val1, val2, abs_error) - -#define ASSERT_NEAR(val1, val2, abs_error)\ - ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ - val1, val2, abs_error) - -// These predicate format functions work on floating-point values, and -// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g. -// -// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0); - -// Asserts that val1 is less than, or almost equal to, val2. Fails -// otherwise. In particular, it fails if either val1 or val2 is NaN. -GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2, - float val1, float val2); -GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, - double val1, double val2); - - -#if GTEST_OS_WINDOWS - -// Macros that test for HRESULT failure and success, these are only useful -// on Windows, and rely on Windows SDK macros and APIs to compile. -// -// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) -// -// When expr unexpectedly fails or succeeds, Google Test prints the -// expected result and the actual result with both a human-readable -// string representation of the error, if available, as well as the -// hex result code. -# define EXPECT_HRESULT_SUCCEEDED(expr) \ - EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) - -# define ASSERT_HRESULT_SUCCEEDED(expr) \ - ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) - -# define EXPECT_HRESULT_FAILED(expr) \ - EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) - -# define ASSERT_HRESULT_FAILED(expr) \ - ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) - -#endif // GTEST_OS_WINDOWS - -// Macros that execute statement and check that it doesn't generate new fatal -// failures in the current thread. -// -// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); -// -// Examples: -// -// EXPECT_NO_FATAL_FAILURE(Process()); -// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed"; -// -#define ASSERT_NO_FATAL_FAILURE(statement) \ - GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) -#define EXPECT_NO_FATAL_FAILURE(statement) \ - GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) - -// Causes a trace (including the source file path, the current line -// number, and the given message) to be included in every test failure -// message generated by code in the current scope. The effect is -// undone when the control leaves the current scope. -// -// The message argument can be anything streamable to std::ostream. -// -// In the implementation, we include the current line number as part -// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s -// to appear in the same block - as long as they are on different -// lines. -#define SCOPED_TRACE(message) \ - ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ - __FILE__, __LINE__, ::testing::Message() << (message)) - -// Compile-time assertion for type equality. -// StaticAssertTypeEq() compiles iff type1 and type2 are -// the same type. The value it returns is not interesting. -// -// Instead of making StaticAssertTypeEq a class template, we make it a -// function template that invokes a helper class template. This -// prevents a user from misusing StaticAssertTypeEq by -// defining objects of that type. -// -// CAVEAT: -// -// When used inside a method of a class template, -// StaticAssertTypeEq() is effective ONLY IF the method is -// instantiated. For example, given: -// -// template class Foo { -// public: -// void Bar() { testing::StaticAssertTypeEq(); } -// }; -// -// the code: -// -// void Test1() { Foo foo; } -// -// will NOT generate a compiler error, as Foo::Bar() is never -// actually instantiated. Instead, you need: -// -// void Test2() { Foo foo; foo.Bar(); } -// -// to cause a compiler error. -template -bool StaticAssertTypeEq() { - (void)internal::StaticAssertTypeEqHelper(); - return true; -} - -// Defines a test. -// -// The first parameter is the name of the test case, and the second -// parameter is the name of the test within the test case. -// -// The convention is to end the test case name with "Test". For -// example, a test case for the Foo class can be named FooTest. -// -// The user should put his test code between braces after using this -// macro. Example: -// -// TEST(FooTest, InitializesCorrectly) { -// Foo foo; -// EXPECT_TRUE(foo.StatusIsOK()); -// } - -// Note that we call GetTestTypeId() instead of GetTypeId< -// ::testing::Test>() here to get the type ID of testing::Test. This -// is to work around a suspected linker bug when using Google Test as -// a framework on Mac OS X. The bug causes GetTypeId< -// ::testing::Test>() to return different values depending on whether -// the call is from the Google Test framework itself or from user test -// code. GetTestTypeId() is guaranteed to always return the same -// value, as it always calls GetTypeId<>() from the Google Test -// framework. -#define GTEST_TEST(test_case_name, test_name)\ - GTEST_TEST_(test_case_name, test_name, \ - ::testing::Test, ::testing::internal::GetTestTypeId()) - -// Define this macro to 1 to omit the definition of TEST(), which -// is a generic name and clashes with some other libraries. -#if !GTEST_DONT_DEFINE_TEST -# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) -#endif - -// Defines a test that uses a test fixture. -// -// The first parameter is the name of the test fixture class, which -// also doubles as the test case name. The second parameter is the -// name of the test within the test case. -// -// A test fixture class must be declared earlier. The user should put -// his test code between braces after using this macro. Example: -// -// class FooTest : public testing::Test { -// protected: -// virtual void SetUp() { b_.AddElement(3); } -// -// Foo a_; -// Foo b_; -// }; -// -// TEST_F(FooTest, InitializesCorrectly) { -// EXPECT_TRUE(a_.StatusIsOK()); -// } -// -// TEST_F(FooTest, ReturnsElementCountCorrectly) { -// EXPECT_EQ(0, a_.size()); -// EXPECT_EQ(1, b_.size()); -// } - -#define TEST_F(test_fixture, test_name)\ - GTEST_TEST_(test_fixture, test_name, test_fixture, \ - ::testing::internal::GetTypeId()) - -// Use this macro in main() to run all tests. It returns 0 if all -// tests are successful, or 1 otherwise. -// -// RUN_ALL_TESTS() should be invoked after the command line has been -// parsed by InitGoogleTest(). - -#define RUN_ALL_TESTS()\ - (::testing::UnitTest::GetInstance()->Run()) - -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_GTEST_H_ diff --git a/tools/audiofile-0.3.6/install-sh b/tools/audiofile-0.3.6/install-sh deleted file mode 100644 index a9244eb0..00000000 --- a/tools/audiofile-0.3.6/install-sh +++ /dev/null @@ -1,527 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2011-01-19.21; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names problematic for `test' and other utilities. - case $src in - -* | [=\(\)!]) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - dst=$dst_arg - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/AIFF.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/AIFF.Plo deleted file mode 100644 index 688d6a4f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/AIFF.Plo +++ /dev/null @@ -1,248 +0,0 @@ -AIFF.lo: AIFF.cpp ../config.h AIFF.h Compiler.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - File.h Shared.h Instrument.h aupvlist.h Marker.h Setup.h Tag.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Track.h AudioFormat.h byteorder.h extended.h util.h -../config.h: -AIFF.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -File.h: -Shared.h: -Instrument.h: -aupvlist.h: -Marker.h: -Setup.h: -Tag.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Track.h: -AudioFormat.h: -byteorder.h: -extended.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/AVR.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/AVR.Plo deleted file mode 100644 index 2545d29c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/AVR.Plo +++ /dev/null @@ -1,244 +0,0 @@ -AVR.lo: AVR.cpp ../config.h AVR.h Compiler.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - File.h Shared.h Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - byteorder.h util.h -../config.h: -AVR.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -File.h: -Shared.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -byteorder.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/AudioFormat.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/AudioFormat.Plo deleted file mode 100644 index 4b7e4fbc..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/AudioFormat.Plo +++ /dev/null @@ -1,234 +0,0 @@ -AudioFormat.lo: AudioFormat.cpp ../config.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - afinternal.h audiofile.h aupvlist.h error.h byteorder.h compression.h \ - units.h util.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h -../config.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -afinternal.h: -audiofile.h: -aupvlist.h: -error.h: -byteorder.h: -compression.h: -units.h: -util.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/Buffer.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/Buffer.Plo deleted file mode 100644 index 80ad7777..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/Buffer.Plo +++ /dev/null @@ -1,26 +0,0 @@ -Buffer.lo: Buffer.cpp ../config.h Buffer.h Shared.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -../config.h: -Buffer.h: -Shared.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/CAF.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/CAF.Plo deleted file mode 100644 index 5a13400f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/CAF.Plo +++ /dev/null @@ -1,258 +0,0 @@ -CAF.lo: CAF.cpp ../config.h CAF.h Compiler.h File.h Shared.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - FileHandle.h afinternal.h audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Tag.h I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Buffer.h PacketTable.h audiofile.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc Setup.h \ - Track.h AudioFormat.h aupvlist.h byteorder.h util.h -../config.h: -CAF.h: -Compiler.h: -File.h: -Shared.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -FileHandle.h: -afinternal.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Tag.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Buffer.h: -PacketTable.h: -audiofile.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -byteorder.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/FLACFile.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/FLACFile.Plo deleted file mode 100644 index 94dadb7a..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/FLACFile.Plo +++ /dev/null @@ -1,244 +0,0 @@ -FLACFile.lo: FLACFile.cpp ../config.h FLACFile.h Compiler.h FileHandle.h \ - afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Features.h File.h Shared.h Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - byteorder.h util.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -../config.h: -FLACFile.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Features.h: -File.h: -Shared.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -byteorder.h: -util.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/File.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/File.Plo deleted file mode 100644 index 5345098d..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/File.Plo +++ /dev/null @@ -1,93 +0,0 @@ -File.lo: File.cpp ../config.h File.h Shared.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - Compiler.h af_vfs.h audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/fcntl.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/io.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/stat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/unistd.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/getopt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h -../config.h: -File.h: -Shared.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -Compiler.h: -af_vfs.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/fcntl.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/io.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/stat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/unistd.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/getopt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/FileHandle.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/FileHandle.Plo deleted file mode 100644 index 653bca58..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/FileHandle.Plo +++ /dev/null @@ -1,261 +0,0 @@ -FileHandle.lo: FileHandle.cpp ../config.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - byteorder.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h AIFF.h \ - Compiler.h AVR.h CAF.h File.h Shared.h Tag.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - FLACFile.h Features.h IFF.h IRCAM.h NeXT.h NIST.h Raw.h SampleVision.h \ - VOC.h WAVE.h Instrument.h aupvlist.h Setup.h Track.h AudioFormat.h \ - units.h util.h -../config.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -byteorder.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -AIFF.h: -Compiler.h: -AVR.h: -CAF.h: -File.h: -Shared.h: -Tag.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -FLACFile.h: -Features.h: -IFF.h: -IRCAM.h: -NeXT.h: -NIST.h: -Raw.h: -SampleVision.h: -VOC.h: -WAVE.h: -Instrument.h: -aupvlist.h: -Setup.h: -Track.h: -AudioFormat.h: -units.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/IFF.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/IFF.Plo deleted file mode 100644 index b665f582..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/IFF.Plo +++ /dev/null @@ -1,246 +0,0 @@ -IFF.lo: IFF.cpp ../config.h IFF.h Compiler.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - File.h Shared.h Marker.h Setup.h Tag.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Track.h AudioFormat.h aupvlist.h byteorder.h util.h -../config.h: -IFF.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -File.h: -Shared.h: -Marker.h: -Setup.h: -Tag.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Track.h: -AudioFormat.h: -aupvlist.h: -byteorder.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/IRCAM.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/IRCAM.Plo deleted file mode 100644 index f6a5ff81..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/IRCAM.Plo +++ /dev/null @@ -1,246 +0,0 @@ -IRCAM.lo: IRCAM.cpp ../config.h IRCAM.h Compiler.h FileHandle.h \ - afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - File.h Shared.h Marker.h Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - byteorder.h util.h -../config.h: -IRCAM.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -File.h: -Shared.h: -Marker.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -byteorder.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/Instrument.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/Instrument.Plo deleted file mode 100644 index 1a735780..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/Instrument.Plo +++ /dev/null @@ -1,66 +0,0 @@ -Instrument.lo: Instrument.cpp ../config.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Instrument.h aupvlist.h Setup.h units.h util.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h -../config.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Instrument.h: -aupvlist.h: -Setup.h: -units.h: -util.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/Loop.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/Loop.Plo deleted file mode 100644 index 1f8fcab4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/Loop.Plo +++ /dev/null @@ -1,65 +0,0 @@ -Loop.lo: Loop.cpp ../config.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Instrument.h aupvlist.h Setup.h util.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h -../config.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Instrument.h: -aupvlist.h: -Setup.h: -util.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/Marker.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/Marker.Plo deleted file mode 100644 index 676c458b..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/Marker.Plo +++ /dev/null @@ -1,242 +0,0 @@ -Marker.lo: Marker.cpp ../config.h Marker.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h util.h -../config.h: -Marker.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/Miscellaneous.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/Miscellaneous.Plo deleted file mode 100644 index 06895a72..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/Miscellaneous.Plo +++ /dev/null @@ -1,139 +0,0 @@ -Miscellaneous.lo: Miscellaneous.cpp ../config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h error.h Setup.h util.h -../config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -error.h: -Setup.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/NIST.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/NIST.Plo deleted file mode 100644 index 87cfb78e..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/NIST.Plo +++ /dev/null @@ -1,244 +0,0 @@ -NIST.lo: NIST.cpp ../config.h NIST.h Compiler.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h File.h byteorder.h util.h -../config.h: -NIST.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -File.h: -byteorder.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/NeXT.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/NeXT.Plo deleted file mode 100644 index 80a780da..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/NeXT.Plo +++ /dev/null @@ -1,244 +0,0 @@ -NeXT.lo: NeXT.cpp ../config.h NeXT.h Compiler.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - File.h Shared.h Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - byteorder.h util.h -../config.h: -NeXT.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -File.h: -Shared.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -byteorder.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/PacketTable.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/PacketTable.Plo deleted file mode 100644 index 5e0fe3a3..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/PacketTable.Plo +++ /dev/null @@ -1,127 +0,0 @@ -PacketTable.lo: PacketTable.cpp ../config.h PacketTable.h Shared.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc -../config.h: -PacketTable.h: -Shared.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/Raw.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/Raw.Plo deleted file mode 100644 index 1fa5b3de..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/Raw.Plo +++ /dev/null @@ -1,237 +0,0 @@ -Raw.lo: Raw.cpp ../config.h Raw.h Compiler.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - File.h Shared.h Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - util.h -../config.h: -Raw.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -File.h: -Shared.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/SampleVision.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/SampleVision.Plo deleted file mode 100644 index 2d2f289f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/SampleVision.Plo +++ /dev/null @@ -1,241 +0,0 @@ -SampleVision.lo: SampleVision.cpp ../config.h SampleVision.h Compiler.h \ - FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - File.h Shared.h Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - util.h I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -../config.h: -SampleVision.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -File.h: -Shared.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -util.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/Setup.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/Setup.Plo deleted file mode 100644 index accee894..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/Setup.Plo +++ /dev/null @@ -1,243 +0,0 @@ -Setup.lo: Setup.cpp ../config.h Setup.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - FileHandle.h Instrument.h aupvlist.h Marker.h Track.h AudioFormat.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h byteorder.h pcm.h units.h util.h -../config.h: -Setup.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -FileHandle.h: -Instrument.h: -aupvlist.h: -Marker.h: -Track.h: -AudioFormat.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -byteorder.h: -pcm.h: -units.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/Track.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/Track.Plo deleted file mode 100644 index c761e9ef..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/Track.Plo +++ /dev/null @@ -1,258 +0,0 @@ -Track.lo: Track.cpp ../config.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h afinternal.h audiofile.h aupvlist.h error.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - util.h Marker.h PacketTable.h audiofile.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - modules/Module.h AudioFormat.h Shared.h afinternal.h \ - modules/ModuleState.h modules/Module.h -../config.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -afinternal.h: -audiofile.h: -aupvlist.h: -error.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -util.h: -Marker.h: -PacketTable.h: -audiofile.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -modules/Module.h: -AudioFormat.h: -Shared.h: -afinternal.h: -modules/ModuleState.h: -modules/Module.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/UUID.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/UUID.Plo deleted file mode 100644 index 3e25d560..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/UUID.Plo +++ /dev/null @@ -1,225 +0,0 @@ -UUID.lo: UUID.cpp ../config.h UUID.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -../config.h: -UUID.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/UnitTests-UT_RebufferModule.Po b/tools/audiofile-0.3.6/libaudiofile/.deps/UnitTests-UT_RebufferModule.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/UnitTests-UT_RebufferModule.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/VOC.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/VOC.Plo deleted file mode 100644 index 4e4d681b..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/VOC.Plo +++ /dev/null @@ -1,244 +0,0 @@ -VOC.lo: VOC.cpp ../config.h VOC.h Compiler.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - File.h Shared.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Setup.h byteorder.h util.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h -../config.h: -VOC.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -File.h: -Shared.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Setup.h: -byteorder.h: -util.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/WAVE.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/WAVE.Plo deleted file mode 100644 index a9c1b630..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/WAVE.Plo +++ /dev/null @@ -1,254 +0,0 @@ -WAVE.lo: WAVE.cpp ../config.h WAVE.h Compiler.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/math.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cmath \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - File.h Shared.h Instrument.h aupvlist.h Marker.h Setup.h Tag.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Track.h AudioFormat.h UUID.h byteorder.h util.h -../config.h: -WAVE.h: -Compiler.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/math.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cmath: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -File.h: -Shared.h: -Instrument.h: -aupvlist.h: -Marker.h: -Setup.h: -Tag.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Track.h: -AudioFormat.h: -UUID.h: -byteorder.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/aes.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/aes.Plo deleted file mode 100644 index 19b129d1..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/aes.Plo +++ /dev/null @@ -1,241 +0,0 @@ -aes.lo: aes.cpp ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h util.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/af_vfs.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/af_vfs.Plo deleted file mode 100644 index d3bb5a79..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/af_vfs.Plo +++ /dev/null @@ -1,62 +0,0 @@ -af_vfs.lo: af_vfs.cpp ../config.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - af_vfs.h audiofile.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h -../config.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -af_vfs.h: -audiofile.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/aupv.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/aupv.Plo deleted file mode 100644 index ddeb497c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/aupv.Plo +++ /dev/null @@ -1,39 +0,0 @@ -aupv.lo: aupv.c ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - aupvinternal.h aupvlist.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -aupvinternal.h: -aupvlist.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/compression.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/compression.Plo deleted file mode 100644 index 890da4cd..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/compression.Plo +++ /dev/null @@ -1,238 +0,0 @@ -compression.lo: compression.cpp ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h units.h util.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -units.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/data.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/data.Plo deleted file mode 100644 index 7ca8c1e4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/data.Plo +++ /dev/null @@ -1,259 +0,0 @@ -data.lo: data.cpp ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - File.h Shared.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - FileHandle.h afinternal.h audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - modules/Module.h AudioFormat.h Shared.h afinternal.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - modules/ModuleState.h modules/Module.h util.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -File.h: -Shared.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -FileHandle.h: -afinternal.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -modules/Module.h: -AudioFormat.h: -Shared.h: -afinternal.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -modules/ModuleState.h: -modules/Module.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/debug.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/debug.Plo deleted file mode 100644 index 3785b379..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/debug.Plo +++ /dev/null @@ -1,251 +0,0 @@ -debug.lo: debug.cpp ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/math.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cmath \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - aupvlist.h FileHandle.h afinternal.h error.h Setup.h Track.h \ - AudioFormat.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h aupvinternal.h byteorder.h compression.h debug.h units.h util.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/math.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cmath: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -aupvlist.h: -FileHandle.h: -afinternal.h: -error.h: -Setup.h: -Track.h: -AudioFormat.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -aupvinternal.h: -byteorder.h: -compression.h: -debug.h: -units.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/error.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/error.Plo deleted file mode 100644 index 0142a22f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/error.Plo +++ /dev/null @@ -1,47 +0,0 @@ -error.lo: error.c ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdarg.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdarg.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdarg.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdarg.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/extended.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/extended.Plo deleted file mode 100644 index deb0218c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/extended.Plo +++ /dev/null @@ -1,18 +0,0 @@ -extended.lo: extended.c extended.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h -extended.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/format.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/format.Plo deleted file mode 100644 index d31a30bb..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/format.Plo +++ /dev/null @@ -1,258 +0,0 @@ -format.lo: format.cpp ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h error.h Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h modules/Module.h AudioFormat.h Shared.h afinternal.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - modules/ModuleState.h modules/Module.h units.h util.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -error.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -modules/Module.h: -AudioFormat.h: -Shared.h: -afinternal.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -modules/ModuleState.h: -modules/Module.h: -units.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/g711.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/g711.Plo deleted file mode 100644 index edd3f144..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/g711.Plo +++ /dev/null @@ -1 +0,0 @@ -g711.lo: g711.c diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/openclose.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/openclose.Plo deleted file mode 100644 index 7c19bd0e..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/openclose.Plo +++ /dev/null @@ -1,269 +0,0 @@ -openclose.lo: openclose.cpp ../config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/unistd.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/io.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/getopt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h File.h \ - Shared.h FileHandle.h afinternal.h audiofile.h error.h Instrument.h \ - aupvlist.h Marker.h Setup.h Track.h AudioFormat.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - modules/Module.h AudioFormat.h Shared.h afinternal.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - modules/ModuleState.h modules/Module.h units.h util.h -../config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/unistd.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/io.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/getopt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -File.h: -Shared.h: -FileHandle.h: -afinternal.h: -audiofile.h: -error.h: -Instrument.h: -aupvlist.h: -Marker.h: -Setup.h: -Track.h: -AudioFormat.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -modules/Module.h: -AudioFormat.h: -Shared.h: -afinternal.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -modules/ModuleState.h: -modules/Module.h: -units.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/pcm.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/pcm.Plo deleted file mode 100644 index 5f8078b2..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/pcm.Plo +++ /dev/null @@ -1,252 +0,0 @@ -pcm.lo: pcm.cpp ../config.h FileHandle.h afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h error.h \ - Setup.h Track.h AudioFormat.h aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - Shared.h modules/Module.h AudioFormat.h Shared.h afinternal.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - modules/ModuleState.h modules/Module.h pcm.h util.h -../config.h: -FileHandle.h: -afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -error.h: -Setup.h: -Track.h: -AudioFormat.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -Shared.h: -modules/Module.h: -AudioFormat.h: -Shared.h: -afinternal.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -modules/ModuleState.h: -modules/Module.h: -pcm.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/query.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/query.Plo deleted file mode 100644 index 9ce7be9f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/query.Plo +++ /dev/null @@ -1,68 +0,0 @@ -query.lo: query.cpp ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - afinternal.h error.h aupvlist.h util.h units.h compression.h \ - Instrument.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -afinternal.h: -error.h: -aupvlist.h: -util.h: -units.h: -compression.h: -Instrument.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/units.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/units.Plo deleted file mode 100644 index d3c02f9c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/units.Plo +++ /dev/null @@ -1,279 +0,0 @@ -units.lo: units.cpp ../config.h Features.h audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - afinternal.h error.h units.h AIFF.h Compiler.h FileHandle.h AVR.h CAF.h \ - File.h Shared.h Tag.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - FLACFile.h IFF.h IRCAM.h NeXT.h NIST.h Raw.h SampleVision.h VOC.h WAVE.h \ - compression.h modules/ALAC.h modules/Module.h AudioFormat.h aupvlist.h \ - Shared.h afinternal.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - audiofile.h modules/FLAC.h modules/G711.h modules/IMA.h \ - modules/MSADPCM.h modules/PCM.h -../config.h: -Features.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -afinternal.h: -error.h: -units.h: -AIFF.h: -Compiler.h: -FileHandle.h: -AVR.h: -CAF.h: -File.h: -Shared.h: -Tag.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -FLACFile.h: -IFF.h: -IRCAM.h: -NeXT.h: -NIST.h: -Raw.h: -SampleVision.h: -VOC.h: -WAVE.h: -compression.h: -modules/ALAC.h: -modules/Module.h: -AudioFormat.h: -aupvlist.h: -Shared.h: -afinternal.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -audiofile.h: -modules/FLAC.h: -modules/G711.h: -modules/IMA.h: -modules/MSADPCM.h: -modules/PCM.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.deps/util.Plo b/tools/audiofile-0.3.6/libaudiofile/.deps/util.Plo deleted file mode 100644 index ce60904c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.deps/util.Plo +++ /dev/null @@ -1,247 +0,0 @@ -util.lo: util.cpp ../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - audiofile.h aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - aupvlist.h AudioFormat.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - File.h Shared.h FileHandle.h afinternal.h error.h Setup.h Track.h \ - aupvinternal.h byteorder.h compression.h pcm.h units.h util.h -../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -audiofile.h: -aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -aupvlist.h: -AudioFormat.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -File.h: -Shared.h: -FileHandle.h: -afinternal.h: -error.h: -Setup.h: -Track.h: -aupvinternal.h: -byteorder.h: -compression.h: -pcm.h: -units.h: -util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile-1.dll.def b/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile-1.dll.def deleted file mode 100644 index ebe306ff..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile-1.dll.def +++ /dev/null @@ -1,107 +0,0 @@ -EXPORTS -AUpvfree -AUpvgetmaxitems -AUpvgetparam -AUpvgetval -AUpvgetvaltype -AUpvnew -AUpvsetparam -AUpvsetval -AUpvsetvaltype -afCloseFile -afFreeFileSetup -afGetAESChannelData -afGetByteOrder -afGetChannels -afGetCompression -afGetDataOffset -afGetFileFormat -afGetFrameCount -afGetFrameSize -afGetInstIDs -afGetInstParamLong -afGetInstParams -afGetLoopCount -afGetLoopEnd -afGetLoopEndFrame -afGetLoopIDs -afGetLoopMode -afGetLoopStart -afGetLoopStartFrame -afGetLoopTrack -afGetMarkComment -afGetMarkIDs -afGetMarkName -afGetMarkPosition -afGetMiscIDs -afGetMiscSize -afGetMiscType -afGetPCMMapping -afGetRate -afGetSampleFormat -afGetTrackBytes -afGetTrackIDs -afGetVirtualByteOrder -afGetVirtualChannels -afGetVirtualFrameSize -afGetVirtualPCMMapping -afGetVirtualSampleFormat -afIdentifyFD -afIdentifyNamedFD -afInitAESChannelData -afInitAESChannelDataTo -afInitByteOrder -afInitChannels -afInitCompression -afInitDataOffset -afInitFileFormat -afInitFrameCount -afInitInstIDs -afInitLoopIDs -afInitMarkComment -afInitMarkIDs -afInitMarkName -afInitMiscIDs -afInitMiscSize -afInitMiscType -afInitPCMMapping -afInitRate -afInitSampleFormat -afInitTrackIDs -afNewFileSetup -afOpenFD -afOpenFile -afOpenNamedFD -afOpenVirtualFile -afQuery -afQueryDouble -afQueryLong -afQueryPointer -afReadFrames -afReadMisc -afSeekFrame -afSeekMisc -afSetAESChannelData -afSetChannelMatrix -afSetErrorHandler -afSetInstParamLong -afSetInstParams -afSetLoopCount -afSetLoopEnd -afSetLoopEndFrame -afSetLoopMode -afSetLoopStart -afSetLoopStartFrame -afSetLoopTrack -afSetMarkPosition -afSetTrackPCMMapping -afSetVirtualByteOrder -afSetVirtualChannels -afSetVirtualPCMMapping -afSetVirtualSampleFormat -afSyncFile -afTellFrame -afWriteFrames -afWriteMisc -af_virtual_file_destroy -af_virtual_file_new diff --git a/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile.def b/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile.def deleted file mode 100644 index f11d74a4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile.def +++ /dev/null @@ -1,106 +0,0 @@ -AUpvfree -AUpvgetmaxitems -AUpvgetparam -AUpvgetval -AUpvgetvaltype -AUpvnew -AUpvsetparam -AUpvsetval -AUpvsetvaltype -afCloseFile -afFreeFileSetup -afGetAESChannelData -afGetByteOrder -afGetChannels -afGetCompression -afGetDataOffset -afGetFileFormat -afGetFrameCount -afGetFrameSize -afGetInstIDs -afGetInstParamLong -afGetInstParams -afGetLoopCount -afGetLoopEnd -afGetLoopEndFrame -afGetLoopIDs -afGetLoopMode -afGetLoopStart -afGetLoopStartFrame -afGetLoopTrack -afGetMarkComment -afGetMarkIDs -afGetMarkName -afGetMarkPosition -afGetMiscIDs -afGetMiscSize -afGetMiscType -afGetPCMMapping -afGetRate -afGetSampleFormat -afGetTrackBytes -afGetTrackIDs -afGetVirtualByteOrder -afGetVirtualChannels -afGetVirtualFrameSize -afGetVirtualPCMMapping -afGetVirtualSampleFormat -afIdentifyFD -afIdentifyNamedFD -afInitAESChannelData -afInitAESChannelDataTo -afInitByteOrder -afInitChannels -afInitCompression -afInitDataOffset -afInitFileFormat -afInitFrameCount -afInitInstIDs -afInitLoopIDs -afInitMarkComment -afInitMarkIDs -afInitMarkName -afInitMiscIDs -afInitMiscSize -afInitMiscType -afInitPCMMapping -afInitRate -afInitSampleFormat -afInitTrackIDs -afNewFileSetup -afOpenFD -afOpenFile -afOpenNamedFD -afOpenVirtualFile -afQuery -afQueryDouble -afQueryLong -afQueryPointer -afReadFrames -afReadMisc -afSeekFrame -afSeekMisc -afSetAESChannelData -afSetChannelMatrix -afSetErrorHandler -afSetInstParamLong -afSetInstParams -afSetLoopCount -afSetLoopEnd -afSetLoopEndFrame -afSetLoopMode -afSetLoopStart -afSetLoopStartFrame -afSetLoopTrack -afSetMarkPosition -afSetTrackPCMMapping -afSetVirtualByteOrder -afSetVirtualChannels -afSetVirtualPCMMapping -afSetVirtualSampleFormat -afSyncFile -afTellFrame -afWriteFrames -afWriteMisc -af_virtual_file_destroy -af_virtual_file_new diff --git a/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile.lai b/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile.lai deleted file mode 100644 index 3ff6536e..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/.libs/libaudiofile.lai +++ /dev/null @@ -1,41 +0,0 @@ -# libaudiofile.la - a libtool library file -# Generated by libtool (GNU libtool) 2.4.6 -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='../bin/libaudiofile-1.dll' - -# Names of this library. -library_names='libaudiofile.dll.a' - -# The name of the static archive. -old_library='libaudiofile.a' - -# Linker flags that cannot go in dependency_libs. -inherited_linker_flags='' - -# Libraries that this one depends upon. -dependency_libs='' - -# Names of additional weak libraries provided by this library -weak_library_names='' - -# Version information for libaudiofile. -current=1 -age=0 -revision=0 - -# Is this an already installed library? -installed=yes - -# Should we warn about portability when linking against -modules? -shouldnotlink=no - -# Files to dlopen/dlpreopen -dlopen='' -dlpreopen='' - -# Directory that this library needs to be installed in: -libdir='/mingw64/lib' diff --git a/tools/audiofile-0.3.6/libaudiofile/AIFF.cpp b/tools/audiofile-0.3.6/libaudiofile/AIFF.cpp deleted file mode 100644 index c5f92217..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/AIFF.cpp +++ /dev/null @@ -1,1220 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, 2003-2004, 2010-2013, Michael Pruett - Copyright (C) 2000-2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - AIFF.cpp - - This file contains routines for reading and writing AIFF and - AIFF-C sound files. -*/ - -#include "config.h" -#include "AIFF.h" - -#include -#include -#include -#include - -#include "File.h" -#include "Instrument.h" -#include "Marker.h" -#include "Setup.h" -#include "Tag.h" -#include "Track.h" -#include "byteorder.h" -#include "extended.h" -#include "util.h" - -const InstParamInfo _af_aiff_inst_params[_AF_AIFF_NUM_INSTPARAMS] = -{ - { AF_INST_MIDI_BASENOTE, AU_PVTYPE_LONG, "MIDI base note", {60} }, - { AF_INST_NUMCENTS_DETUNE, AU_PVTYPE_LONG, "Detune in cents", {0} }, - { AF_INST_MIDI_LOVELOCITY, AU_PVTYPE_LONG, "Low velocity", {1} }, - { AF_INST_MIDI_HIVELOCITY, AU_PVTYPE_LONG, "High velocity", {127} }, - { AF_INST_MIDI_LONOTE, AU_PVTYPE_LONG, "Low note", {0} }, - { AF_INST_MIDI_HINOTE, AU_PVTYPE_LONG, "High note", {127} }, - { AF_INST_NUMDBS_GAIN, AU_PVTYPE_LONG, "Gain in dB", {0} }, - { AF_INST_SUSLOOPID, AU_PVTYPE_LONG, "Sustain loop id", {0} }, - { AF_INST_RELLOOPID, AU_PVTYPE_LONG, "Release loop id", {0} } -}; - -const int _af_aiffc_compression_types[_AF_AIFFC_NUM_COMPTYPES] = -{ - AF_COMPRESSION_G711_ULAW, - AF_COMPRESSION_G711_ALAW, - AF_COMPRESSION_IMA -}; - -static const _AFfilesetup aiffDefaultFileSetup = -{ - _AF_VALID_FILESETUP, /* valid */ - AF_FILE_AIFF, /* fileFormat */ - true, /* trackSet */ - true, /* instrumentSet */ - true, /* miscellaneousSet */ - 1, /* trackCount */ - NULL, /* tracks */ - 1, /* instrumentCount */ - NULL, /* instruments */ - 0, /* miscellaneousCount */ - NULL /* miscellaneous */ -}; - -#define AIFC_VERSION_1 0xa2805140 - -struct _INST -{ - uint8_t baseNote; - int8_t detune; - uint8_t lowNote, highNote; - uint8_t lowVelocity, highVelocity; - int16_t gain; - - uint16_t sustainLoopPlayMode; - uint16_t sustainLoopBegin; - uint16_t sustainLoopEnd; - - uint16_t releaseLoopPlayMode; - uint16_t releaseLoopBegin; - uint16_t releaseLoopEnd; -}; - -AIFFFile::AIFFFile() -{ - setFormatByteOrder(AF_BYTEORDER_BIGENDIAN); - - m_miscellaneousPosition = 0; - m_FVER_offset = 0; - m_COMM_offset = 0; - m_MARK_offset = 0; - m_INST_offset = 0; - m_AESD_offset = 0; - m_SSND_offset = 0; -} - -/* - FVER chunks are only present in AIFF-C files. -*/ -status AIFFFile::parseFVER(const Tag &type, size_t size) -{ - assert(type == "FVER"); - - uint32_t timestamp; - readU32(×tamp); - /* timestamp holds the number of seconds since January 1, 1904. */ - - return AF_SUCCEED; -} - -/* - Parse AES recording data. -*/ -status AIFFFile::parseAESD(const Tag &type, size_t size) -{ - unsigned char aesChannelStatusData[24]; - - assert(type == "AESD"); - assert(size == 24); - - Track *track = getTrack(); - - track->hasAESData = true; - - /* - Try to read 24 bytes of AES nonaudio data from the file. - Fail if the file disappoints. - */ - if (m_fh->read(aesChannelStatusData, 24) != 24) - return AF_FAIL; - - memcpy(track->aesData, aesChannelStatusData, 24); - - return AF_SUCCEED; -} - -/* - Parse miscellaneous data chunks such as name, author, copyright, - and annotation chunks. -*/ -status AIFFFile::parseMiscellaneous(const Tag &type, size_t size) -{ - int misctype = AF_MISC_UNRECOGNIZED; - - assert(type == "NAME" || - type == "AUTH" || - type == "(c) " || - type == "ANNO" || - type == "APPL" || - type == "MIDI"); - - /* Skip zero-length miscellaneous chunks. */ - if (size == 0) - return AF_FAIL; - - m_miscellaneousCount++; - m_miscellaneous = (Miscellaneous *) _af_realloc(m_miscellaneous, - m_miscellaneousCount * sizeof (Miscellaneous)); - - if (type == "NAME") - misctype = AF_MISC_NAME; - else if (type == "AUTH") - misctype = AF_MISC_AUTH; - else if (type == "(c) ") - misctype = AF_MISC_COPY; - else if (type == "ANNO") - misctype = AF_MISC_ANNO; - else if (type == "APPL") - misctype = AF_MISC_APPL; - else if (type == "MIDI") - misctype = AF_MISC_MIDI; - - m_miscellaneous[m_miscellaneousCount - 1].id = m_miscellaneousCount; - m_miscellaneous[m_miscellaneousCount - 1].type = misctype; - m_miscellaneous[m_miscellaneousCount - 1].size = size; - m_miscellaneous[m_miscellaneousCount - 1].position = 0; - m_miscellaneous[m_miscellaneousCount - 1].buffer = _af_malloc(size); - m_fh->read(m_miscellaneous[m_miscellaneousCount - 1].buffer, size); - - return AF_SUCCEED; -} - -/* - Parse instrument chunks, which contain information about using - sound data as a sampled instrument. -*/ -status AIFFFile::parseINST(const Tag &type, size_t size) -{ - uint8_t baseNote; - int8_t detune; - uint8_t lowNote, highNote, lowVelocity, highVelocity; - int16_t gain; - - uint16_t sustainLoopPlayMode, sustainLoopBegin, sustainLoopEnd; - uint16_t releaseLoopPlayMode, releaseLoopBegin, releaseLoopEnd; - - Instrument *instrument = (Instrument *) _af_calloc(1, sizeof (Instrument)); - instrument->id = AF_DEFAULT_INST; - instrument->values = (AFPVu *) _af_calloc(_AF_AIFF_NUM_INSTPARAMS, sizeof (AFPVu)); - instrument->loopCount = 2; - instrument->loops = (Loop *) _af_calloc(2, sizeof (Loop)); - - m_instrumentCount = 1; - m_instruments = instrument; - - readU8(&baseNote); - readS8(&detune); - readU8(&lowNote); - readU8(&highNote); - readU8(&lowVelocity); - readU8(&highVelocity); - readS16(&gain); - - instrument->values[0].l = baseNote; - instrument->values[1].l = detune; - instrument->values[2].l = lowVelocity; - instrument->values[3].l = highVelocity; - instrument->values[4].l = lowNote; - instrument->values[5].l = highNote; - instrument->values[6].l = gain; - - instrument->values[7].l = 1; /* sustain loop id */ - instrument->values[8].l = 2; /* release loop id */ - - readU16(&sustainLoopPlayMode); - readU16(&sustainLoopBegin); - readU16(&sustainLoopEnd); - - readU16(&releaseLoopPlayMode); - readU16(&releaseLoopBegin); - readU16(&releaseLoopEnd); - - instrument->loops[0].id = 1; - instrument->loops[0].mode = sustainLoopPlayMode; - instrument->loops[0].beginMarker = sustainLoopBegin; - instrument->loops[0].endMarker = sustainLoopEnd; - instrument->loops[0].trackid = AF_DEFAULT_TRACK; - - instrument->loops[1].id = 2; - instrument->loops[1].mode = releaseLoopPlayMode; - instrument->loops[1].beginMarker = releaseLoopBegin; - instrument->loops[1].endMarker = releaseLoopEnd; - instrument->loops[1].trackid = AF_DEFAULT_TRACK; - - return AF_SUCCEED; -} - -/* - Parse marker chunks, which contain the positions and names of loop markers. -*/ -status AIFFFile::parseMARK(const Tag &type, size_t size) -{ - assert(type == "MARK"); - - Track *track = getTrack(); - - uint16_t numMarkers; - readU16(&numMarkers); - - track->markerCount = numMarkers; - if (numMarkers) - track->markers = _af_marker_new(numMarkers); - - for (unsigned i=0; iread(&sizeByte, 1); - markerName = (char *) _af_malloc(sizeByte + 1); - m_fh->read(markerName, sizeByte); - - markerName[sizeByte] = '\0'; - - /* - If sizeByte is even, then 1+sizeByte (the length - of the string) is odd. Skip an extra byte to - make it even. - */ - - if ((sizeByte % 2) == 0) - m_fh->seek(1, File::SeekFromCurrent); - - track->markers[i].id = markerID; - track->markers[i].position = markerPosition; - track->markers[i].name = markerName; - track->markers[i].comment = _af_strdup(""); - } - - return AF_SUCCEED; -} - -/* - Parse common data chunks, which contain information regarding the - sampling rate, the number of sample frames, and the number of - sound channels. -*/ -status AIFFFile::parseCOMM(const Tag &type, size_t size) -{ - assert(type == "COMM"); - - Track *track = getTrack(); - - uint16_t numChannels; - uint32_t numSampleFrames; - uint16_t sampleSize; - unsigned char sampleRate[10]; - - readU16(&numChannels); - track->f.channelCount = numChannels; - - if (!numChannels) - { - _af_error(AF_BAD_CHANNELS, "invalid file with 0 channels"); - return AF_FAIL; - } - - readU32(&numSampleFrames); - track->totalfframes = numSampleFrames; - - readU16(&sampleSize); - track->f.sampleWidth = sampleSize; - - m_fh->read(sampleRate, 10); - track->f.sampleRate = _af_convert_from_ieee_extended(sampleRate); - - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - - track->f.framesPerPacket = 1; - - if (isAIFFC()) - { - Tag compressionID; - // Pascal strings are at most 255 bytes long. - char compressionName[256]; - - readTag(&compressionID); - - // Read the Pascal-style string containing the name. - readPString(compressionName); - - if (compressionID == "NONE" || compressionID == "twos") - { - track->f.compressionType = AF_COMPRESSION_NONE; - } - else if (compressionID == "in24") - { - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.sampleWidth = 24; - } - else if (compressionID == "in32") - { - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.sampleWidth = 32; - } - else if (compressionID == "ACE2" || - compressionID == "ACE8" || - compressionID == "MAC3" || - compressionID == "MAC6") - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "AIFF-C format does not support Apple's proprietary %s compression format", compressionName); - return AF_FAIL; - } - else if (compressionID == "ulaw" || compressionID == "ULAW") - { - track->f.compressionType = AF_COMPRESSION_G711_ULAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.sampleWidth = 16; - track->f.bytesPerPacket = track->f.channelCount; - } - else if (compressionID == "alaw" || compressionID == "ALAW") - { - track->f.compressionType = AF_COMPRESSION_G711_ALAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.sampleWidth = 16; - track->f.bytesPerPacket = track->f.channelCount; - } - else if (compressionID == "fl32" || compressionID == "FL32") - { - track->f.sampleFormat = AF_SAMPFMT_FLOAT; - track->f.sampleWidth = 32; - track->f.compressionType = AF_COMPRESSION_NONE; - } - else if (compressionID == "fl64" || compressionID == "FL64") - { - track->f.sampleFormat = AF_SAMPFMT_DOUBLE; - track->f.sampleWidth = 64; - track->f.compressionType = AF_COMPRESSION_NONE; - } - else if (compressionID == "sowt") - { - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - } - else if (compressionID == "ima4") - { - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.compressionType = AF_COMPRESSION_IMA; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - - initIMACompressionParams(); - - track->totalfframes *= 64; - } - else - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "AIFF-C compression type '%s' not currently supported", - compressionID.name().c_str()); - return AF_FAIL; - } - } - - if (track->f.isUncompressed()) - track->f.computeBytesPerPacketPCM(); - - if (_af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth) == AF_FAIL) - return AF_FAIL; - - return AF_SUCCEED; -} - -/* - Parse the stored sound chunk, which usually contains little more - than the sound data. -*/ -status AIFFFile::parseSSND(const Tag &type, size_t size) -{ - assert(type == "SSND"); - - Track *track = getTrack(); - - uint32_t offset, blockSize; - readU32(&offset); - readU32(&blockSize); - - track->data_size = size - 8 - offset; - - track->fpos_first_frame = m_fh->tell() + offset; - - return AF_SUCCEED; -} - -status AIFFFile::readInit(AFfilesetup setup) -{ - uint32_t type, size, formtype; - - bool hasCOMM = false; - bool hasFVER = false; - bool hasSSND = false; - - m_fh->seek(0, File::SeekFromBeginning); - - m_fh->read(&type, 4); - readU32(&size); - m_fh->read(&formtype, 4); - - if (memcmp(&type, "FORM", 4) != 0 || - (memcmp(&formtype, "AIFF", 4) && memcmp(&formtype, "AIFC", 4))) - return AF_FAIL; - - if (!allocateTrack()) - return AF_FAIL; - - /* Include the offset of the form type. */ - size_t index = 4; - while (index < size) - { - Tag chunkid; - uint32_t chunksize = 0; - status result = AF_SUCCEED; - - readTag(&chunkid); - readU32(&chunksize); - - if (chunkid == "COMM") - { - hasCOMM = true; - result = parseCOMM(chunkid, chunksize); - } - else if (chunkid == "FVER") - { - hasFVER = true; - parseFVER(chunkid, chunksize); - } - else if (chunkid == "INST") - { - parseINST(chunkid, chunksize); - } - else if (chunkid == "MARK") - { - parseMARK(chunkid, chunksize); - } - else if (chunkid == "AESD") - { - parseAESD(chunkid, chunksize); - } - else if (chunkid == "NAME" || - chunkid == "AUTH" || - chunkid == "(c) " || - chunkid == "ANNO" || - chunkid == "APPL" || - chunkid == "MIDI") - { - parseMiscellaneous(chunkid, chunksize); - } - /* - The sound data chunk is required if there are more than - zero sample frames. - */ - else if (chunkid == "SSND") - { - if (hasSSND) - { - _af_error(AF_BAD_AIFF_SSND, "AIFF file has more than one SSND chunk"); - return AF_FAIL; - } - hasSSND = true; - result = parseSSND(chunkid, chunksize); - } - - if (result == AF_FAIL) - return AF_FAIL; - - index += chunksize + 8; - - /* all chunks must be aligned on an even number of bytes */ - if ((index % 2) != 0) - index++; - - m_fh->seek(index + 8, File::SeekFromBeginning); - } - - if (!hasCOMM) - { - _af_error(AF_BAD_AIFF_COMM, "bad AIFF COMM chunk"); - } - - if (isAIFFC() && !hasFVER) - { - _af_error(AF_BAD_HEADER, "FVER chunk is required in AIFF-C"); - } - - /* The file has been successfully parsed. */ - return AF_SUCCEED; -} - -bool AIFFFile::recognizeAIFF(File *fh) -{ - uint8_t buffer[8]; - - fh->seek(0, File::SeekFromBeginning); - - if (fh->read(buffer, 8) != 8 || memcmp(buffer, "FORM", 4) != 0) - return false; - if (fh->read(buffer, 4) != 4 || memcmp(buffer, "AIFF", 4) != 0) - return false; - - return true; -} - -bool AIFFFile::recognizeAIFFC(File *fh) -{ - uint8_t buffer[8]; - - fh->seek(0, File::SeekFromBeginning); - - if (fh->read(buffer, 8) != 8 || memcmp(buffer, "FORM", 4) != 0) - return false; - if (fh->read(buffer, 4) != 4 || memcmp(buffer, "AIFC", 4) != 0) - return false; - - return true; -} - -AFfilesetup AIFFFile::completeSetup(AFfilesetup setup) -{ - TrackSetup *track; - - bool isAIFF = setup->fileFormat == AF_FILE_AIFF; - - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "AIFF/AIFF-C file must have 1 track"); - return AF_NULL_FILESETUP; - } - - track = &setup->tracks[0]; - - if (track->sampleFormatSet) - { - if (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) - { - _af_error(AF_BAD_FILEFMT, "AIFF/AIFF-C format does not support unsigned data"); - return AF_NULL_FILESETUP; - } - else if (isAIFF && track->f.sampleFormat != AF_SAMPFMT_TWOSCOMP) - { - _af_error(AF_BAD_FILEFMT, "AIFF format supports only two's complement integer data"); - return AF_NULL_FILESETUP; - } - } - else - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, - track->f.sampleWidth); - - /* Check sample width if writing two's complement. Otherwise ignore. */ - if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP && - (track->f.sampleWidth < 1 || track->f.sampleWidth > 32)) - { - _af_error(AF_BAD_WIDTH, - "invalid sample width %d for AIFF/AIFF-C file " - "(must be 1-32)", track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - - if (isAIFF && track->f.compressionType != AF_COMPRESSION_NONE) - { - _af_error(AF_BAD_FILESETUP, - "AIFF does not support compression; use AIFF-C"); - return AF_NULL_FILESETUP; - } - - if (track->f.compressionType != AF_COMPRESSION_NONE && - track->f.compressionType != AF_COMPRESSION_G711_ULAW && - track->f.compressionType != AF_COMPRESSION_G711_ALAW && - track->f.compressionType != AF_COMPRESSION_IMA) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "compression format not supported in AIFF-C"); - return AF_NULL_FILESETUP; - } - - if (track->f.isUncompressed() && - track->byteOrderSet && - track->f.byteOrder != AF_BYTEORDER_BIGENDIAN && - track->f.isByteOrderSignificant()) - { - _af_error(AF_BAD_BYTEORDER, - "AIFF/AIFF-C format supports only big-endian data"); - return AF_NULL_FILESETUP; - } - - if (track->f.isUncompressed()) - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - - if (setup->instrumentSet) - { - if (setup->instrumentCount != 0 && setup->instrumentCount != 1) - { - _af_error(AF_BAD_NUMINSTS, "AIFF/AIFF-C file must have 0 or 1 instrument chunk"); - return AF_NULL_FILESETUP; - } - if (setup->instruments != 0 && - setup->instruments[0].loopCount != 2) - { - _af_error(AF_BAD_NUMLOOPS, "AIFF/AIFF-C file with instrument must also have 2 loops"); - return AF_NULL_FILESETUP; - } - } - - if (setup->miscellaneousSet) - { - for (int i=0; imiscellaneousCount; i++) - { - switch (setup->miscellaneous[i].type) - { - case AF_MISC_COPY: - case AF_MISC_AUTH: - case AF_MISC_NAME: - case AF_MISC_ANNO: - case AF_MISC_APPL: - case AF_MISC_MIDI: - break; - - default: - _af_error(AF_BAD_MISCTYPE, "invalid miscellaneous type %d for AIFF/AIFF-C file", setup->miscellaneous[i].type); - return AF_NULL_FILESETUP; - } - } - } - - return _af_filesetup_copy(setup, &aiffDefaultFileSetup, true); -} - -bool AIFFFile::isInstrumentParameterValid(AUpvlist list, int i) -{ - int param, type; - - AUpvgetparam(list, i, ¶m); - AUpvgetvaltype(list, i, &type); - if (type != AU_PVTYPE_LONG) - return false; - - long lval; - AUpvgetval(list, i, &lval); - - switch (param) - { - case AF_INST_MIDI_BASENOTE: - return ((lval >= 0) && (lval <= 127)); - - case AF_INST_NUMCENTS_DETUNE: - return ((lval >= -50) && (lval <= 50)); - - case AF_INST_MIDI_LOVELOCITY: - return ((lval >= 1) && (lval <= 127)); - - case AF_INST_MIDI_HIVELOCITY: - return ((lval >= 1) && (lval <= 127)); - - case AF_INST_MIDI_LONOTE: - return ((lval >= 0) && (lval <= 127)); - - case AF_INST_MIDI_HINOTE: - return ((lval >= 0) && (lval <= 127)); - - case AF_INST_NUMDBS_GAIN: - case AF_INST_SUSLOOPID: - case AF_INST_RELLOOPID: - return true; - - default: - return false; - break; - } - - return true; -} - -int AIFFFile::getVersion() -{ - if (isAIFFC()) - return AIFC_VERSION_1; - return 0; -} - -status AIFFFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - initCompressionParams(); - - uint32_t fileSize = 0; - m_fh->write("FORM", 4); - writeU32(&fileSize); - - if (isAIFFC()) - m_fh->write("AIFC", 4); - else - m_fh->write("AIFF", 4); - - if (isAIFFC()) - writeFVER(); - - writeCOMM(); - writeMARK(); - writeINST(); - writeAESD(); - writeMiscellaneous(); - writeSSND(); - - return AF_SUCCEED; -} - -status AIFFFile::update() -{ - /* Get the length of the file. */ - uint32_t length = m_fh->length(); - length -= 8; - - /* Set the length of the FORM chunk. */ - m_fh->seek(4, File::SeekFromBeginning); - writeU32(&length); - - if (isAIFFC()) - writeFVER(); - - writeCOMM(); - writeMARK(); - writeINST(); - writeAESD(); - writeMiscellaneous(); - writeSSND(); - - return AF_SUCCEED; -} - -status AIFFFile::writeCOMM() -{ - /* - If COMM_offset hasn't been set yet, set it to the - current offset. - */ - if (m_COMM_offset == 0) - m_COMM_offset = m_fh->tell(); - else - m_fh->seek(m_COMM_offset, File::SeekFromBeginning); - - Track *track = getTrack(); - - Tag compressionTag; - /* Pascal strings can occupy only 255 bytes (+ a size byte). */ - char compressionName[256]; - - if (isAIFFC()) - { - if (track->f.compressionType == AF_COMPRESSION_NONE) - { - if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP) - { - compressionTag = "NONE"; - strcpy(compressionName, "not compressed"); - } - else if (track->f.sampleFormat == AF_SAMPFMT_FLOAT) - { - compressionTag = "fl32"; - strcpy(compressionName, "32-bit Floating Point"); - } - else if (track->f.sampleFormat == AF_SAMPFMT_DOUBLE) - { - compressionTag = "fl64"; - strcpy(compressionName, "64-bit Floating Point"); - } - /* - We disallow unsigned sample data for - AIFF files in _af_aiff_complete_setup, - so the next condition should never be - satisfied. - */ - else if (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) - { - _af_error(AF_BAD_SAMPFMT, - "AIFF/AIFF-C format does not support unsigned data"); - assert(0); - return AF_FAIL; - } - } - else if (track->f.compressionType == AF_COMPRESSION_G711_ULAW) - { - compressionTag = "ulaw"; - strcpy(compressionName, "CCITT G.711 u-law"); - } - else if (track->f.compressionType == AF_COMPRESSION_G711_ALAW) - { - compressionTag = "alaw"; - strcpy(compressionName, "CCITT G.711 A-law"); - } - else if (track->f.compressionType == AF_COMPRESSION_IMA) - { - compressionTag = "ima4"; - strcpy(compressionName, "IMA 4:1 compression"); - } - } - - m_fh->write("COMM", 4); - - /* - For AIFF-C files, the length of the COMM chunk is 22 - plus the length of the compression name plus the size - byte. If the length of the data is an odd number of - bytes, add a zero pad byte at the end, but don't - include the pad byte in the chunk's size. - */ - uint32_t chunkSize; - if (isAIFFC()) - chunkSize = 22 + strlen(compressionName) + 1; - else - chunkSize = 18; - writeU32(&chunkSize); - - /* number of channels, 2 bytes */ - uint16_t channelCount = track->f.channelCount; - writeU16(&channelCount); - - /* number of sample frames, 4 bytes */ - uint32_t frameCount = track->totalfframes; - if (track->f.compressionType == AF_COMPRESSION_IMA) - frameCount = track->totalfframes / track->f.framesPerPacket; - writeU32(&frameCount); - - /* sample size, 2 bytes */ - uint16_t sampleSize = track->f.sampleWidth; - writeU16(&sampleSize); - - /* sample rate, 10 bytes */ - uint8_t sampleRate[10]; - _af_convert_to_ieee_extended(track->f.sampleRate, sampleRate); - m_fh->write(sampleRate, 10); - - if (isAIFFC()) - { - writeTag(&compressionTag); - writePString(compressionName); - } - - return AF_SUCCEED; -} - -/* - The AESD chunk contains information pertinent to audio recording - devices. -*/ -status AIFFFile::writeAESD() -{ - Track *track = getTrack(); - - if (!track->hasAESData) - return AF_SUCCEED; - - if (m_AESD_offset == 0) - m_AESD_offset = m_fh->tell(); - else - m_fh->seek(m_AESD_offset, File::SeekFromBeginning); - - if (m_fh->write("AESD", 4) < 4) - return AF_FAIL; - - uint32_t size = 24; - if (!writeU32(&size)) - return AF_FAIL; - - if (m_fh->write(track->aesData, 24) < 24) - return AF_FAIL; - - return AF_SUCCEED; -} - -status AIFFFile::writeSSND() -{ - Track *track = getTrack(); - - if (m_SSND_offset == 0) - m_SSND_offset = m_fh->tell(); - else - m_fh->seek(m_SSND_offset, File::SeekFromBeginning); - - m_fh->write("SSND", 4); - - uint32_t chunkSize = track->data_size + 8; - writeU32(&chunkSize); - - uint32_t zero = 0; - /* data offset */ - writeU32(&zero); - /* block size */ - writeU32(&zero); - - if (track->fpos_first_frame == 0) - track->fpos_first_frame = m_fh->tell(); - - return AF_SUCCEED; -} - -status AIFFFile::writeINST() -{ - uint32_t length = 20; - - struct _INST instrumentdata; - - instrumentdata.sustainLoopPlayMode = - afGetLoopMode(this, AF_DEFAULT_INST, 1); - instrumentdata.sustainLoopBegin = - afGetLoopStart(this, AF_DEFAULT_INST, 1); - instrumentdata.sustainLoopEnd = - afGetLoopEnd(this, AF_DEFAULT_INST, 1); - - instrumentdata.releaseLoopPlayMode = - afGetLoopMode(this, AF_DEFAULT_INST, 2); - instrumentdata.releaseLoopBegin = - afGetLoopStart(this, AF_DEFAULT_INST, 2); - instrumentdata.releaseLoopEnd = - afGetLoopEnd(this, AF_DEFAULT_INST, 2); - - m_fh->write("INST", 4); - writeU32(&length); - - instrumentdata.baseNote = - afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE); - writeU8(&instrumentdata.baseNote); - instrumentdata.detune = - afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE); - writeS8(&instrumentdata.detune); - instrumentdata.lowNote = - afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_LONOTE); - writeU8(&instrumentdata.lowNote); - instrumentdata.highNote = - afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_HINOTE); - writeU8(&instrumentdata.highNote); - instrumentdata.lowVelocity = - afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_LOVELOCITY); - writeU8(&instrumentdata.lowVelocity); - instrumentdata.highVelocity = - afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_HIVELOCITY); - writeU8(&instrumentdata.highVelocity); - - instrumentdata.gain = - afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_NUMDBS_GAIN); - writeS16(&instrumentdata.gain); - - writeU16(&instrumentdata.sustainLoopPlayMode); - writeU16(&instrumentdata.sustainLoopBegin); - writeU16(&instrumentdata.sustainLoopEnd); - - writeU16(&instrumentdata.releaseLoopPlayMode); - writeU16(&instrumentdata.releaseLoopBegin); - writeU16(&instrumentdata.releaseLoopEnd); - - return AF_SUCCEED; -} - -status AIFFFile::writeMARK() -{ - Track *track = getTrack(); - if (!track->markerCount) - return AF_SUCCEED; - - if (m_MARK_offset == 0) - m_MARK_offset = m_fh->tell(); - else - m_fh->seek(m_MARK_offset, File::SeekFromBeginning); - - Tag markTag("MARK"); - uint32_t length = 0; - - writeTag(&markTag); - writeU32(&length); - - AFfileoffset chunkStartPosition = m_fh->tell(); - - uint16_t numMarkers = track->markerCount; - writeU16(&numMarkers); - - for (unsigned i=0; imarkers[i].id; - writeU16(&id); - - uint32_t position = track->markers[i].position; - writeU32(&position); - - const char *name = track->markers[i].name; - assert(name); - - // Write the name as a Pascal-style string. - writePString(name); - } - - AFfileoffset chunkEndPosition = m_fh->tell(); - length = chunkEndPosition - chunkStartPosition; - - m_fh->seek(chunkStartPosition - 4, File::SeekFromBeginning); - - writeU32(&length); - m_fh->seek(chunkEndPosition, File::SeekFromBeginning); - - return AF_SUCCEED; -} - -/* - The FVER chunk, if present, is always the first chunk in the file. -*/ -status AIFFFile::writeFVER() -{ - uint32_t chunkSize, timeStamp; - - assert(isAIFFC()); - - if (m_FVER_offset == 0) - m_FVER_offset = m_fh->tell(); - else - m_fh->seek(m_FVER_offset, File::SeekFromBeginning); - - m_fh->write("FVER", 4); - - chunkSize = 4; - writeU32(&chunkSize); - - timeStamp = AIFC_VERSION_1; - writeU32(&timeStamp); - - return AF_SUCCEED; -} - -/* - WriteMiscellaneous writes all the miscellaneous data chunks in a - file handle structure to an AIFF or AIFF-C file. -*/ -status AIFFFile::writeMiscellaneous() -{ - if (m_miscellaneousPosition == 0) - m_miscellaneousPosition = m_fh->tell(); - else - m_fh->seek(m_miscellaneousPosition, File::SeekFromBeginning); - - for (int i=0; itype) - { - case AF_MISC_NAME: - chunkType = "NAME"; break; - case AF_MISC_AUTH: - chunkType = "AUTH"; break; - case AF_MISC_COPY: - chunkType = "(c) "; break; - case AF_MISC_ANNO: - chunkType = "ANNO"; break; - case AF_MISC_MIDI: - chunkType = "MIDI"; break; - case AF_MISC_APPL: - chunkType = "APPL"; break; - } - - writeTag(&chunkType); - - chunkSize = misc->size; - writeU32(&chunkSize); - /* - Write the miscellaneous buffer and then a pad byte - if necessary. If the buffer is null, skip the space - for now. - */ - if (misc->buffer != NULL) - m_fh->write(misc->buffer, misc->size); - else - m_fh->seek(misc->size, File::SeekFromCurrent); - - if (misc->size % 2 != 0) - writeU8(&padByte); - } - - return AF_SUCCEED; -} - -void AIFFFile::initCompressionParams() -{ - Track *track = getTrack(); - if (track->f.compressionType == AF_COMPRESSION_IMA) - initIMACompressionParams(); -} - -void AIFFFile::initIMACompressionParams() -{ - Track *track = getTrack(); - - track->f.bytesPerPacket = 34 * track->f.channelCount; - track->f.framesPerPacket = 64; - - AUpvlist pv = AUpvnew(1); - AUpvsetparam(pv, 0, _AF_IMA_ADPCM_TYPE); - AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); - long l = _AF_IMA_ADPCM_TYPE_QT; - AUpvsetval(pv, 0, &l); - - track->f.compressionParams = pv; -} - -// Read a Pascal-style string. -bool AIFFFile::readPString(char s[256]) -{ - uint8_t length; - if (m_fh->read(&length, 1) != 1) - return false; - if (m_fh->read(s, length) != static_cast(length)) - return false; - s[length] = '\0'; - return true; -} - -// Write a Pascal-style string. -bool AIFFFile::writePString(const char *s) -{ - size_t length = strlen(s); - if (length > 255) - return false; - uint8_t sizeByte = static_cast(length); - if (m_fh->write(&sizeByte, 1) != 1) - return false; - if (m_fh->write(s, length) != (ssize_t) length) - return false; - /* - Add a pad byte if the length of the Pascal-style string - (including the size byte) is odd. - */ - if ((length % 2) == 0) - { - uint8_t zero = 0; - if (m_fh->write(&zero, 1) != 1) - return false; - } - return true; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/AIFF.h b/tools/audiofile-0.3.6/libaudiofile/AIFF.h deleted file mode 100644 index 1d6fdf53..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/AIFF.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, 2003-2004, 2010-2012, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - AIFF.h - - This file contains structures and constants related to the AIFF - and AIFF-C formats. -*/ - -#ifndef AIFF_H -#define AIFF_H - -#include "Compiler.h" -#include "FileHandle.h" - -#define _AF_AIFF_NUM_INSTPARAMS 9 -extern const InstParamInfo _af_aiff_inst_params[_AF_AIFF_NUM_INSTPARAMS]; -#define _AF_AIFFC_NUM_COMPTYPES 3 -extern const int _af_aiffc_compression_types[_AF_AIFFC_NUM_COMPTYPES]; - -class AIFFFile : public _AFfilehandle -{ -public: - AIFFFile(); - - static bool recognizeAIFF(File *fh); - static bool recognizeAIFFC(File *fh); - - static AFfilesetup completeSetup(AFfilesetup); - - int getVersion() OVERRIDE; - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - - status update() OVERRIDE; - - bool isInstrumentParameterValid(AUpvlist, int) OVERRIDE; - -private: - AFfileoffset m_miscellaneousPosition; - AFfileoffset m_FVER_offset; - AFfileoffset m_COMM_offset; - AFfileoffset m_MARK_offset; - AFfileoffset m_INST_offset; - AFfileoffset m_AESD_offset; - AFfileoffset m_SSND_offset; - - status parseFVER(const Tag &type, size_t size); - status parseAESD(const Tag &type, size_t size); - status parseMiscellaneous(const Tag &type, size_t size); - status parseINST(const Tag &type, size_t size); - status parseMARK(const Tag &type, size_t size); - status parseCOMM(const Tag &type, size_t size); - status parseSSND(const Tag &type, size_t size); - - status writeCOMM(); - status writeSSND(); - status writeMARK(); - status writeINST(); - status writeFVER(); - status writeAESD(); - status writeMiscellaneous(); - - void initCompressionParams(); - void initIMACompressionParams(); - - bool isAIFFC() const { return m_fileFormat == AF_FILE_AIFFC; } - - bool readPString(char s[256]); - bool writePString(const char *); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/AVR.cpp b/tools/audiofile-0.3.6/libaudiofile/AVR.cpp deleted file mode 100644 index ac83d90e..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/AVR.cpp +++ /dev/null @@ -1,345 +0,0 @@ -/* - Audio File Library - Copyright (C) 2004, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - AVR.cpp - - This file contains routines for reading and writing AVR (Audio - Visual Research) sound files. -*/ - -#include "config.h" -#include "AVR.h" - -#include -#include -#include -#include - -#include "File.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "byteorder.h" -#include "util.h" - -static const _AFfilesetup avrDefaultFileSetup = -{ - _AF_VALID_FILESETUP, /* valid */ - AF_FILE_AVR, /* fileFormat */ - true, /* trackSet */ - true, /* instrumentSet */ - true, /* miscellaneousSet */ - 1, /* trackCount */ - NULL, /* tracks */ - 0, /* instrumentCount */ - NULL, /* instruments */ - 0, /* miscellaneousCount */ - NULL /* miscellaneous */ -}; - -AVRFile::AVRFile() -{ - setFormatByteOrder(AF_BYTEORDER_BIGENDIAN); -} - -bool AVRFile::recognize(File *fh) -{ - uint32_t magic; - - fh->seek(0, File::SeekFromBeginning); - - if (fh->read(&magic, 4) != 4 || memcmp(&magic, "2BIT", 4) != 0) - return false; - - return true; -} - -status AVRFile::readInit(AFfilesetup setup) -{ - uint32_t magic; - char name[8]; - uint16_t mono, resolution, sign, loop, midi; - uint32_t rate, size, loopStart, loopEnd; - char reserved[26]; - char user[64]; - - m_fh->seek(0, File::SeekFromBeginning); - - if (m_fh->read(&magic, 4) != 4) - { - _af_error(AF_BAD_READ, "could not read AVR file header"); - return AF_FAIL; - } - - if (memcmp(&magic, "2BIT", 4) != 0) - { - _af_error(AF_BAD_FILEFMT, "file is not AVR format"); - return AF_FAIL; - } - - /* Read name. */ - m_fh->read(name, 8); - - readU16(&mono); - readU16(&resolution); - readU16(&sign); - readU16(&loop); - readU16(&midi); - - readU32(&rate); - readU32(&size); - readU32(&loopStart); - readU32(&loopEnd); - - m_fh->read(reserved, 26); - m_fh->read(user, 64); - - Track *track = allocateTrack(); - if (!track) - return AF_FAIL; - - /* Use only low-order three bytes of sample rate. */ - track->f.sampleRate = rate & 0xffffff; - - if (sign == 0) - track->f.sampleFormat = AF_SAMPFMT_UNSIGNED; - else if (sign == 0xffff) - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - else - { - _af_error(AF_BAD_SAMPFMT, "bad sample format in AVR file"); - return AF_FAIL; - } - - if (resolution != 8 && resolution != 16) - { - _af_error(AF_BAD_WIDTH, "bad sample width %d in AVR file", - resolution); - return AF_FAIL; - } - track->f.sampleWidth = resolution; - - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - - if (mono == 0) - track->f.channelCount = 1; - else if (mono == 0xffff) - track->f.channelCount = 2; - else - { - _af_error(AF_BAD_CHANNELS, - "invalid number of channels in AVR file"); - return AF_FAIL; - } - - track->f.compressionType = AF_COMPRESSION_NONE; - - track->f.framesPerPacket = 1; - track->f.computeBytesPerPacketPCM(); - - _af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth); - - track->fpos_first_frame = m_fh->tell(); - track->totalfframes = size; - track->data_size = track->totalfframes * track->f.bytesPerFrame(false); - track->nextfframe = 0; - track->fpos_next_frame = track->fpos_first_frame; - - /* The file has been parsed successfully. */ - return AF_SUCCEED; -} - -AFfilesetup AVRFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "AVR files must have exactly 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = setup->getTrack(); - if (!track) - return AF_NULL_FILESETUP; - - /* AVR allows only unsigned and two's complement integer data. */ - if (track->f.sampleFormat != AF_SAMPFMT_UNSIGNED && - track->f.sampleFormat != AF_SAMPFMT_TWOSCOMP) - { - _af_error(AF_BAD_FILEFMT, "AVR format does supports only unsigned and two's complement integer data"); - return AF_NULL_FILESETUP; - } - - /* For now we support only 8- and 16-bit samples. */ - if (track->f.sampleWidth != 8 && track->f.sampleWidth != 16) - { - _af_error(AF_BAD_WIDTH, "invalid sample width %d for AVR file (only 8- and 16-bit sample widths are allowed)", track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - - /* AVR does not support compression. */ - if (track->f.compressionType != AF_COMPRESSION_NONE) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "compression not supported for AVR files"); - return AF_NULL_FILESETUP; - } - - /* AVR audio data is big-endian. */ - if (track->f.byteOrder != AF_BYTEORDER_BIGENDIAN) - { - if (track->byteOrderSet) - { - _af_error(AF_BAD_BYTEORDER, - "AVR format supports only big-endian data"); - return AF_NULL_FILESETUP; - } - else - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "AVR files do not support AES data"); - return AF_NULL_FILESETUP; - } - - if (track->markersSet && track->markerCount != 0) - { - _af_error(AF_BAD_FILESETUP, "AVR format does not support markers"); - return AF_NULL_FILESETUP; - } - - if (setup->instrumentSet && setup->instrumentCount != 0) - { - _af_error(AF_BAD_FILESETUP, "AVR format does not support instruments"); - return AF_NULL_FILESETUP; - } - - if (setup->miscellaneousSet && setup->miscellaneousCount != 0) - { - _af_error(AF_BAD_FILESETUP, "AVR format does not support miscellaneous data"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &avrDefaultFileSetup, false); -} - -status AVRFile::update() -{ - uint32_t size, loopStart, loopEnd; - - Track *track = getTrack(); - - /* Seek to the position of the size field. */ - m_fh->seek(26, File::SeekFromBeginning); - - size = track->totalfframes; - - /* For the case of no loops, loopStart = 0 and loopEnd = size. */ - loopStart = 0; - loopEnd = size; - - writeU32(&size); - writeU32(&loopStart); - writeU32(&loopEnd); - - return AF_SUCCEED; -} - -static char *af_basename (char *filename) -{ - char *base; - base = strrchr(filename, '/'); - if (base == NULL) - return filename; - else - return base + 1; -} - -status AVRFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - if (m_fh->seek(0, File::SeekFromBeginning) != 0) - { - _af_error(AF_BAD_LSEEK, "bad seek"); - return AF_FAIL; - } - - Track *track = getTrack(); - - char name[8]; - uint16_t mono, resolution, sign, loop, midi; - uint32_t rate, size, loopStart, loopEnd; - char reserved[26]; - char user[64]; - - m_fh->write("2BIT", 4); - memset(name, 0, 8); - if (m_fileName != NULL) - strncpy(name, af_basename(m_fileName), 8); - m_fh->write(name, 8); - - if (track->f.channelCount == 1) - mono = 0x0; - else - mono = 0xffff; - writeU16(&mono); - - resolution = track->f.sampleWidth; - writeU16(&resolution); - - if (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) - sign = 0x0; - else - sign = 0xffff; - writeU16(&sign); - - /* We do not currently support loops. */ - loop = 0; - writeU16(&loop); - midi = 0xffff; - writeU16(&midi); - - rate = track->f.sampleRate; - /* Set the high-order byte of rate to 0xff. */ - rate |= 0xff000000; - size = track->totalfframes; - loopStart = 0; - loopEnd = size; - - writeU32(&rate); - writeU32(&size); - writeU32(&loopStart); - writeU32(&loopEnd); - - memset(reserved, 0, 26); - m_fh->write(reserved, 26); - - memset(user, 0, 64); - m_fh->write(user, 64); - - if (track->fpos_first_frame == 0) - track->fpos_first_frame = m_fh->tell(); - - return AF_SUCCEED; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/AVR.h b/tools/audiofile-0.3.6/libaudiofile/AVR.h deleted file mode 100644 index 4339055d..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/AVR.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - Audio File Library - Copyright (C) 2004, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - AVR.h - - This file contains headers and constants related to the AVR - (Audio Visual Research) sound file format. -*/ - -#ifndef AVR_H -#define AVR_H - -#include "Compiler.h" -#include "FileHandle.h" - -class AVRFile : public _AFfilehandle -{ -public: - AVRFile(); - - static bool recognize(File *fh); - static AFfilesetup completeSetup(AFfilesetup); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - status update() OVERRIDE; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/AudioFormat.cpp b/tools/audiofile-0.3.6/libaudiofile/AudioFormat.cpp deleted file mode 100644 index 3ac457c4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/AudioFormat.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "AudioFormat.h" - -#include "afinternal.h" -#include "byteorder.h" -#include "compression.h" -#include "units.h" -#include "util.h" -#include -#include - -size_t AudioFormat::bytesPerSample(bool stretch3to4) const -{ - switch (sampleFormat) - { - case AF_SAMPFMT_FLOAT: - return sizeof (float); - case AF_SAMPFMT_DOUBLE: - return sizeof (double); - default: - { - int size = (sampleWidth + 7) / 8; - if (compressionType == AF_COMPRESSION_NONE && - size == 3 && stretch3to4) - size = 4; - return size; - } - } -} - -size_t AudioFormat::bytesPerFrame(bool stretch3to4) const -{ - return bytesPerSample(stretch3to4) * channelCount; -} - -size_t AudioFormat::bytesPerSample() const -{ - return bytesPerSample(!isPacked()); -} - -size_t AudioFormat::bytesPerFrame() const -{ - return bytesPerFrame(!isPacked()); -} - -bool AudioFormat::isInteger() const -{ - return sampleFormat == AF_SAMPFMT_TWOSCOMP || - sampleFormat == AF_SAMPFMT_UNSIGNED; -} - -bool AudioFormat::isSigned() const -{ - return sampleFormat == AF_SAMPFMT_TWOSCOMP; -} - -bool AudioFormat::isUnsigned() const -{ - return sampleFormat == AF_SAMPFMT_UNSIGNED; -} - -bool AudioFormat::isFloat() const -{ - return sampleFormat == AF_SAMPFMT_FLOAT || - sampleFormat == AF_SAMPFMT_DOUBLE; -} - -bool AudioFormat::isCompressed() const -{ - return compressionType != AF_COMPRESSION_NONE; -} - -bool AudioFormat::isUncompressed() const -{ - return compressionType == AF_COMPRESSION_NONE; -} - -void AudioFormat::computeBytesPerPacketPCM() -{ - assert(isUncompressed()); - int bytesPerSample = (sampleWidth + 7) / 8; - bytesPerPacket = bytesPerSample * channelCount; -} - -std::string AudioFormat::description() const -{ - std::string d; - char s[1024]; - /* sampleRate, channelCount */ - sprintf(s, "{ %7.2f Hz %d ch ", sampleRate, channelCount); - d += s; - - /* sampleFormat, sampleWidth */ - switch (sampleFormat) - { - case AF_SAMPFMT_TWOSCOMP: - sprintf(s, "%db 2 ", sampleWidth); - break; - case AF_SAMPFMT_UNSIGNED: - sprintf(s, "%db u ", sampleWidth); - break; - case AF_SAMPFMT_FLOAT: - sprintf(s, "flt "); - break; - case AF_SAMPFMT_DOUBLE: - sprintf(s, "dbl "); - break; - default: - assert(false); - break; - } - - d += s; - - /* pcm */ - sprintf(s, "(%.30g+-%.30g [%.30g,%.30g]) ", - pcm.intercept, pcm.slope, - pcm.minClip, pcm.maxClip); - d += s; - - /* byteOrder */ - switch (byteOrder) - { - case AF_BYTEORDER_BIGENDIAN: - d += "big "; - break; - case AF_BYTEORDER_LITTLEENDIAN: - d += "little "; - break; - default: - assert(false); - break; - } - - if (isCompressed()) - { - const CompressionUnit *unit = _af_compression_unit_from_id(compressionType); - assert(unit); - d += "compression: "; - d += unit->label; - } - - return d; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/AudioFormat.h b/tools/audiofile-0.3.6/libaudiofile/AudioFormat.h deleted file mode 100644 index e6efc25f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/AudioFormat.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef AUDIOFORMAT_H -#define AUDIOFORMAT_H - -#include "aupvlist.h" - -#include -#include - -struct PCMInfo -{ - double slope, intercept, minClip, maxClip; -}; - -struct AudioFormat -{ - double sampleRate; /* sampling rate in Hz */ - int sampleFormat; /* AF_SAMPFMT_... */ - int sampleWidth; /* sample width in bits */ - int byteOrder; /* AF_BYTEORDER_... */ - - PCMInfo pcm; /* parameters of PCM data */ - - int channelCount; /* number of channels */ - - int compressionType; /* AF_COMPRESSION_... */ - AUpvlist compressionParams; /* NULL if no compression */ - - bool packed : 1; - - size_t framesPerPacket; - size_t bytesPerPacket; - - size_t bytesPerSample(bool stretch3to4) const; - size_t bytesPerFrame(bool stretch3to4) const; - size_t bytesPerSample() const; - size_t bytesPerFrame() const; - bool isInteger() const; - bool isSigned() const; - bool isUnsigned() const; - bool isFloat() const; - bool isCompressed() const; - bool isUncompressed() const; - bool isPacked() const { return packed; } - bool isByteOrderSignificant() const { return sampleWidth > 8; } - - void computeBytesPerPacketPCM(); - - std::string description() const; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Buffer.cpp b/tools/audiofile-0.3.6/libaudiofile/Buffer.cpp deleted file mode 100644 index 84b08481..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Buffer.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "Buffer.h" - -#include - -Buffer::Buffer() : m_data(0), m_size(0) -{ -} - -Buffer::Buffer(size_t size) : m_data(0), m_size(0) -{ - if (size) - m_data = ::operator new(size); - if (m_data) - { - m_size = size; - } -} - -Buffer::Buffer(const void *data, size_t size) : m_data(0), m_size(0) -{ - if (size) - m_data = ::operator new(size); - if (m_data) - { - ::memcpy(m_data, data, m_size); - m_size = size; - } -} - -Buffer::~Buffer() -{ - ::operator delete(m_data); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/Buffer.h b/tools/audiofile-0.3.6/libaudiofile/Buffer.h deleted file mode 100644 index a40a4119..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Buffer.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef Buffer_h -#define Buffer_h - -#include "Shared.h" - -#include - -class Buffer : public Shared -{ -public: - Buffer(); - Buffer(size_t size); - Buffer(const void *data, size_t size); - ~Buffer(); - - void *data() { return m_data; } - const void *data() const { return m_data; } - - size_t size() const { return m_size; } - -private: - void *m_data; - size_t m_size; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/CAF.cpp b/tools/audiofile-0.3.6/libaudiofile/CAF.cpp deleted file mode 100644 index 7e9ee5bd..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/CAF.cpp +++ /dev/null @@ -1,724 +0,0 @@ -/* - Audio File Library - Copyright (C) 2011-2013, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "CAF.h" - -#include "Buffer.h" -#include "File.h" -#include "PacketTable.h" -#include "Setup.h" -#include "Tag.h" -#include "Track.h" -#include "byteorder.h" -#include "util.h" - -#include -#include -#include -#include - -const int _af_caf_compression_types[_AF_CAF_NUM_COMPTYPES] = -{ - AF_COMPRESSION_G711_ULAW, - AF_COMPRESSION_G711_ALAW, - AF_COMPRESSION_IMA, - AF_COMPRESSION_ALAC -}; - -enum -{ - kCAFLinearPCMFormatFlagIsFloat = (1L << 0), - kCAFLinearPCMFormatFlagIsLittleEndian = (1L << 1) -}; - -enum -{ - kALACFormatFlag_16BitSourceData = 1, - kALACFormatFlag_20BitSourceData = 2, - kALACFormatFlag_24BitSourceData = 3, - kALACFormatFlag_32BitSourceData = 4 -}; - -static const unsigned kALACDefaultFramesPerPacket = 4096; - -static const _AFfilesetup cafDefaultFileSetup = -{ - _AF_VALID_FILESETUP, // valid - AF_FILE_CAF, // fileFormat - true, // trackSet - true, // instrumentSet - true, // miscellaneousSet - 1, // trackCount - NULL, // tracks - 1, // instrumentCount - NULL, // instruments - 0, // miscellaneousCount - NULL // miscellaneous -}; - -CAFFile::CAFFile() : - m_dataOffset(-1), - m_cookieDataOffset(-1) -{ - setFormatByteOrder(AF_BYTEORDER_BIGENDIAN); -} - -CAFFile::~CAFFile() -{ -} - -bool CAFFile::recognize(File *file) -{ - file->seek(0, File::SeekFromBeginning); - uint8_t buffer[8]; - if (file->read(buffer, 8) != 8 || memcmp(buffer, "caff", 4) != 0) - return false; - const uint8_t versionAndFlags[4] = { 0, 1, 0, 0 }; - if (memcmp(buffer + 4, versionAndFlags, 4) != 0) - return false; - return true; -} - -status CAFFile::readInit(AFfilesetup setup) -{ - m_fh->seek(8, File::SeekFromBeginning); - - if (!allocateTrack()) - return AF_FAIL; - - off_t currentOffset = m_fh->tell(); - off_t fileLength = m_fh->length(); - - while (currentOffset < fileLength) - { - Tag chunkType; - int64_t chunkLength; - if (!readTag(&chunkType) || - !readS64(&chunkLength)) - return AF_FAIL; - - currentOffset += 12; - - if (chunkType == "data" && chunkLength == -1) - chunkLength = fileLength - currentOffset; - else if (chunkLength < 0) - _af_error(AF_BAD_HEADER, - "invalid chunk length %jd for chunk type %s\n", - static_cast(chunkLength), chunkType.name().c_str()); - - if (chunkType == "desc") - { - if (parseDescription(chunkType, chunkLength) == AF_FAIL) - return AF_FAIL; - } - else if (chunkType == "data") - { - if (parseData(chunkType, chunkLength) == AF_FAIL) - return AF_FAIL; - } - else if (chunkType == "pakt") - { - if (parsePacketTable(chunkType, chunkLength) == AF_FAIL) - return AF_FAIL; - } - else if (chunkType == "kuki") - { - if (parseCookieData(chunkType, chunkLength) == AF_FAIL) - return AF_FAIL; - } - - currentOffset = m_fh->seek(currentOffset + chunkLength, - File::SeekFromBeginning); - } - - return AF_SUCCEED; -} - -status CAFFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - initCompressionParams(); - - Tag caff("caff"); - if (!writeTag(&caff)) return AF_FAIL; - const uint8_t versionAndFlags[4] = { 0, 1, 0, 0 }; - if (m_fh->write(versionAndFlags, 4) != 4) return AF_FAIL; - - if (writeDescription() == AF_FAIL) - return AF_FAIL; - if (writeCookieData() == AF_FAIL) - return AF_FAIL; - if (writeData(false) == AF_FAIL) - return AF_FAIL; - - return AF_SUCCEED; -} - -AFfilesetup CAFFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "CAF file must have 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = &setup->tracks[0]; - - if (track->sampleFormatSet) - { - if (track->f.isUnsigned()) - { - _af_error(AF_BAD_FILEFMT, "CAF format does not support unsigned data"); - return AF_NULL_FILESETUP; - } - } - else - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, - track->f.sampleWidth); - - if (track->f.isSigned() && (track->f.sampleWidth < 1 || track->f.sampleWidth > 32)) - { - _af_error(AF_BAD_WIDTH, - "invalid sample width %d for CAF file (must be 1-32)", - track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - - if (!track->byteOrderSet) - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - - if (track->f.compressionType != AF_COMPRESSION_NONE && - track->f.compressionType != AF_COMPRESSION_G711_ULAW && - track->f.compressionType != AF_COMPRESSION_G711_ALAW && - track->f.compressionType != AF_COMPRESSION_IMA && - track->f.compressionType != AF_COMPRESSION_ALAC) - { - _af_error(AF_BAD_COMPTYPE, - "compression format %d not supported in CAF file", - track->f.compressionType); - return AF_NULL_FILESETUP; - } - - if (track->markersSet && track->markerCount) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "CAF does not yet support markers"); - return AF_NULL_FILESETUP; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "CAF does not support AES data"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &cafDefaultFileSetup, true); -} - -status CAFFile::update() -{ - if (writeCookieData() == AF_FAIL) - return AF_FAIL; - if (writeData(true) == AF_FAIL) - return AF_FAIL; - if (writePacketTable() == AF_FAIL) - return AF_FAIL; - return AF_SUCCEED; -} - -status CAFFile::parseDescription(const Tag &, int64_t) -{ - double sampleRate; - Tag formatID; - uint32_t formatFlags; - uint32_t bytesPerPacket; - uint32_t framesPerPacket; - uint32_t channelsPerFrame; - uint32_t bitsPerChannel; - if (!readDouble(&sampleRate) || - !readTag(&formatID) || - !readU32(&formatFlags) || - !readU32(&bytesPerPacket) || - !readU32(&framesPerPacket) || - !readU32(&channelsPerFrame) || - !readU32(&bitsPerChannel)) - return AF_FAIL; - - if (!channelsPerFrame) - { - _af_error(AF_BAD_CHANNELS, "invalid file with 0 channels"); - return AF_FAIL; - } - - Track *track = getTrack(); - track->f.channelCount = channelsPerFrame; - track->f.sampleWidth = bitsPerChannel; - track->f.sampleRate = sampleRate; - track->f.framesPerPacket = 1; - - if (formatID == "lpcm") - { - track->f.compressionType = AF_COMPRESSION_NONE; - if (formatFlags & kCAFLinearPCMFormatFlagIsFloat) - { - if (bitsPerChannel != 32 && bitsPerChannel != 64) - { - _af_error(AF_BAD_WIDTH, "invalid bits per sample %d for floating-point audio data", bitsPerChannel); - return AF_FAIL; - } - track->f.sampleFormat = bitsPerChannel == 32 ? AF_SAMPFMT_FLOAT : - AF_SAMPFMT_DOUBLE; - } - else - { - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - } - track->f.byteOrder = (formatFlags & kCAFLinearPCMFormatFlagIsLittleEndian) ? - AF_BYTEORDER_LITTLEENDIAN : AF_BYTEORDER_BIGENDIAN; - - if (_af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth) == AF_FAIL) - return AF_FAIL; - - track->f.computeBytesPerPacketPCM(); - return AF_SUCCEED; - } - else if (formatID == "ulaw") - { - track->f.compressionType = AF_COMPRESSION_G711_ULAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); - track->f.bytesPerPacket = channelsPerFrame; - return AF_SUCCEED; - } - else if (formatID == "alaw") - { - track->f.compressionType = AF_COMPRESSION_G711_ALAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); - track->f.bytesPerPacket = channelsPerFrame; - return AF_SUCCEED; - } - else if (formatID == "ima4") - { - track->f.compressionType = AF_COMPRESSION_IMA; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); - initIMACompressionParams(); - return AF_SUCCEED; - } - else if (formatID == "alac") - { - track->f.compressionType = AF_COMPRESSION_ALAC; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - switch (formatFlags) - { - case kALACFormatFlag_16BitSourceData: - track->f.sampleWidth = 16; break; - case kALACFormatFlag_20BitSourceData: - track->f.sampleWidth = 20; break; - case kALACFormatFlag_24BitSourceData: - track->f.sampleWidth = 24; break; - case kALACFormatFlag_32BitSourceData: - track->f.sampleWidth = 32; break; - default: - _af_error(AF_BAD_CODEC_TYPE, - "unsupported format flags for ALAC: %u", formatFlags); - return AF_FAIL; - } - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, - track->f.sampleWidth); - track->f.framesPerPacket = framesPerPacket; - track->f.bytesPerPacket = 0; - return AF_SUCCEED; - } - else - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "Compression type %s not supported", - formatID.name().c_str()); - return AF_FAIL; - } -} - -status CAFFile::parseData(const Tag &tag, int64_t length) -{ - uint32_t editCount; - if (!readU32(&editCount)) - return AF_FAIL; - - Track *track = getTrack(); - if (length == -1) - track->data_size = m_fh->length() - m_fh->tell(); - else - track->data_size = length - 4; - track->fpos_first_frame = m_fh->tell(); - - track->computeTotalFileFrames(); - return AF_SUCCEED; -} - -static uint32_t readBERInteger(const uint8_t *input, size_t *numBytes) -{ - uint32_t result = 0; - uint8_t data; - size_t size = 0; - do - { - data = input[size]; - result = (result << 7) | (data & 0x7f); - if (++size > 5) - return 0; - } while ((data & 0x80) && size < *numBytes); - *numBytes = size; - return result; -} - -static void encodeBERInteger(uint32_t value, uint8_t *buffer, size_t *numBytes) -{ - if ((value & 0x7f) == value) - { - *numBytes = 1; - buffer[0] = value; - } - else if ((value & 0x3fff) == value) - { - *numBytes = 2; - buffer[0] = (value >> 7) | 0x80; - buffer[1] = value & 0x7f; - } - else if ((value & 0x1fffff) == value) - { - *numBytes = 3; - buffer[0] = (value >> 14) | 0x80; - buffer[1] = ((value >> 7) & 0x7f) | 0x80; - buffer[2] = value & 0x7f; - } - else if ((value & 0x0fffffff) == value) - { - *numBytes = 4; - buffer[0] = (value >> 21) | 0x80; - buffer[1] = ((value >> 14) & 0x7f) | 0x80; - buffer[2] = ((value >> 7) & 0x7f) | 0x80; - buffer[3] = value & 0x7f; - } - else - { - *numBytes = 5; - buffer[0] = (value >> 28) | 0x80; - buffer[1] = ((value >> 21) & 0x7f) | 0x80; - buffer[2] = ((value >> 14) & 0x7f) | 0x80; - buffer[3] = ((value >> 7) & 0x7f) | 0x80; - buffer[4] = value & 0x7f; - } -} - -status CAFFile::parsePacketTable(const Tag &tag, int64_t length) -{ - if (length < 24) - return AF_FAIL; - - int64_t numPackets; - int64_t numValidFrames; - int32_t primingFrames; - int32_t remainderFrames; - if (!readS64(&numPackets) || - !readS64(&numValidFrames) || - !readS32(&primingFrames) || - !readS32(&remainderFrames)) - { - return AF_FAIL; - } - - if (!numPackets) - return AF_SUCCEED; - - int64_t tableLength = length - 24; - - SharedPtr buffer = new Buffer(tableLength); - if (m_fh->read(buffer->data(), tableLength) != tableLength) - return AF_FAIL; - - SharedPtr packetTable = new PacketTable(numValidFrames, - primingFrames, remainderFrames); - - const uint8_t *data = static_cast(buffer->data()); - size_t position = 0; - while (position < buffer->size()) - { - size_t sizeRemaining = buffer->size() - position; - uint32_t bytesPerPacket = readBERInteger(data + position, &sizeRemaining); - if (bytesPerPacket == 0) - break; - packetTable->append(bytesPerPacket); - position += sizeRemaining; - } - - assert(numPackets == packetTable->numPackets()); - - Track *track = getTrack(); - track->m_packetTable = packetTable; - track->totalfframes = numValidFrames; - - return AF_SUCCEED; -} - -status CAFFile::parseCookieData(const Tag &tag, int64_t length) -{ - m_codecData = new Buffer(length); - if (m_fh->read(m_codecData->data(), length) != length) - return AF_FAIL; - - AUpvlist pv = AUpvnew(2); - - AUpvsetparam(pv, 0, _AF_CODEC_DATA_SIZE); - AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); - long l = length; - AUpvsetval(pv, 0, &l); - - AUpvsetparam(pv, 1, _AF_CODEC_DATA); - AUpvsetvaltype(pv, 1, AU_PVTYPE_PTR); - void *v = m_codecData->data(); - AUpvsetval(pv, 1, &v); - - Track *track = getTrack(); - track->f.compressionParams = pv; - - return AF_SUCCEED; -} - -status CAFFile::writeDescription() -{ - Track *track = getTrack(); - - Tag desc("desc"); - int64_t chunkLength = 32; - double sampleRate = track->f.sampleRate; - Tag formatID("lpcm"); - uint32_t formatFlags = 0; - if (track->f.byteOrder == AF_BYTEORDER_LITTLEENDIAN) - formatFlags |= kCAFLinearPCMFormatFlagIsLittleEndian; - if (track->f.isFloat()) - formatFlags |= kCAFLinearPCMFormatFlagIsFloat; - uint32_t bytesPerPacket = track->f.bytesPerFrame(false); - uint32_t framesPerPacket = 1; - uint32_t channelsPerFrame = track->f.channelCount; - uint32_t bitsPerChannel = track->f.sampleWidth; - - if (track->f.compressionType == AF_COMPRESSION_G711_ULAW) - { - formatID = "ulaw"; - formatFlags = 0; - bytesPerPacket = channelsPerFrame; - bitsPerChannel = 8; - } - else if (track->f.compressionType == AF_COMPRESSION_G711_ALAW) - { - formatID = "alaw"; - formatFlags = 0; - bytesPerPacket = channelsPerFrame; - bitsPerChannel = 8; - } - else if (track->f.compressionType == AF_COMPRESSION_IMA) - { - formatID = "ima4"; - formatFlags = 0; - bytesPerPacket = track->f.bytesPerPacket; - framesPerPacket = track->f.framesPerPacket; - bitsPerChannel = 16; - } - else if (track->f.compressionType == AF_COMPRESSION_ALAC) - { - formatID = "alac"; - switch (track->f.sampleWidth) - { - case 16: formatFlags = kALACFormatFlag_16BitSourceData; break; - case 20: formatFlags = kALACFormatFlag_20BitSourceData; break; - case 24: formatFlags = kALACFormatFlag_24BitSourceData; break; - case 32: formatFlags = kALACFormatFlag_32BitSourceData; break; - } - bytesPerPacket = track->f.bytesPerPacket; - framesPerPacket = track->f.framesPerPacket; - } - - if (!writeTag(&desc) || - !writeS64(&chunkLength) || - !writeDouble(&sampleRate) || - !writeTag(&formatID) || - !writeU32(&formatFlags) || - !writeU32(&bytesPerPacket) || - !writeU32(&framesPerPacket) || - !writeU32(&channelsPerFrame) || - !writeU32(&bitsPerChannel)) - return AF_FAIL; - return AF_SUCCEED; -} - -status CAFFile::writeData(bool update) -{ - Track *track = getTrack(); - - if (m_dataOffset == -1) - m_dataOffset = m_fh->tell(); - else - m_fh->seek(m_dataOffset, File::SeekFromBeginning); - - Tag data("data"); - int64_t dataLength = -1; - uint32_t editCount = 0; - if (update) - dataLength = track->data_size + 4; - - if (!writeTag(&data) || - !writeS64(&dataLength) || - !writeU32(&editCount)) - return AF_FAIL; - if (track->fpos_first_frame == 0) - track->fpos_first_frame = m_fh->tell(); - return AF_SUCCEED; -} - -status CAFFile::writePacketTable() -{ - Track *track = getTrack(); - - m_fh->seek(track->fpos_after_data, File::SeekFromBeginning); - - SharedPtr packetTable = track->m_packetTable; - if (!packetTable) - return AF_SUCCEED; - - int64_t numPackets = packetTable->numPackets(); - int64_t numValidFrames = packetTable->numValidFrames(); - int32_t primingFrames = packetTable->primingFrames(); - int32_t remainderFrames = packetTable->remainderFrames(); - - SharedPtr buffer = new Buffer(packetTable->numPackets() * 5); - - uint8_t *data = static_cast(buffer->data()); - size_t position = 0; - for (unsigned i=0; inumPackets(); i++) - { - uint32_t bytesPerPacket = packetTable->bytesPerPacket(i); - size_t numBytes = 0; - encodeBERInteger(bytesPerPacket, data + position, &numBytes); - position += numBytes; - } - - Tag pakt("pakt"); - int64_t packetTableLength = 24 + position; - - if (!writeTag(&pakt) || - !writeS64(&packetTableLength) || - !writeS64(&numPackets) || - !writeS64(&numValidFrames) || - !writeS32(&primingFrames) || - !writeS32(&remainderFrames) || - m_fh->write(buffer->data(), position) != static_cast(position)) - { - return AF_FAIL; - } - - return AF_SUCCEED; -} - -status CAFFile::writeCookieData() -{ - if (!m_codecData) - return AF_SUCCEED; - - if (m_cookieDataOffset == -1) - m_cookieDataOffset = m_fh->tell(); - else - m_fh->seek(m_cookieDataOffset, File::SeekFromBeginning); - - Tag kuki("kuki"); - int64_t cookieDataLength = m_codecData->size(); - if (!writeTag(&kuki) || - !writeS64(&cookieDataLength) || - m_fh->write(m_codecData->data(), m_codecData->size()) != static_cast(m_codecData->size())) - { - return AF_FAIL; - } - - return AF_SUCCEED; -} - -void CAFFile::initCompressionParams() -{ - Track *track = getTrack(); - if (track->f.compressionType == AF_COMPRESSION_IMA) - initIMACompressionParams(); - else if (track->f.compressionType == AF_COMPRESSION_ALAC) - initALACCompressionParams(); -} - -void CAFFile::initIMACompressionParams() -{ - Track *track = getTrack(); - - track->f.bytesPerPacket = 34 * track->f.channelCount; - track->f.framesPerPacket = 64; - - AUpvlist pv = AUpvnew(1); - AUpvsetparam(pv, 0, _AF_IMA_ADPCM_TYPE); - AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); - long l = _AF_IMA_ADPCM_TYPE_QT; - AUpvsetval(pv, 0, &l); - - track->f.compressionParams = pv; -} - -void CAFFile::initALACCompressionParams() -{ - if (m_access == _AF_READ_ACCESS) - return; - - Track *track = getTrack(); - - track->f.bytesPerPacket = 0; - track->f.framesPerPacket = kALACDefaultFramesPerPacket; - - const unsigned kALACSpecificConfigSize = 24; - const unsigned kChannelAtomSize = 12; - const unsigned kALACAudioChannelLayoutSize = 12; - - unsigned codecDataSize = kALACSpecificConfigSize; - if (track->f.channelCount > 2) - codecDataSize += kChannelAtomSize + kALACAudioChannelLayoutSize; - m_codecData = new Buffer(codecDataSize); - memset(m_codecData->data(), 0, m_codecData->size()); - - AUpvlist pv = AUpvnew(2); - - AUpvsetparam(pv, 0, _AF_CODEC_DATA_SIZE); - AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); - long l = codecDataSize; - AUpvsetval(pv, 0, &l); - - AUpvsetparam(pv, 1, _AF_CODEC_DATA); - AUpvsetvaltype(pv, 1, AU_PVTYPE_PTR); - void *v = m_codecData->data(); - AUpvsetval(pv, 1, &v); - - track->f.compressionParams = pv; - - track->m_packetTable = new PacketTable(); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/CAF.h b/tools/audiofile-0.3.6/libaudiofile/CAF.h deleted file mode 100644 index 5f420879..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/CAF.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - Audio File Library - Copyright (C) 2011-2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef CAF_H -#define CAF_H - -#include "Compiler.h" -#include "File.h" -#include "FileHandle.h" -#include "Tag.h" -#include - -#define _AF_CAF_NUM_COMPTYPES 4 -extern const int _af_caf_compression_types[_AF_CAF_NUM_COMPTYPES]; - -class Buffer; - -class CAFFile : public _AFfilehandle -{ -public: - static bool recognize(File *); - static AFfilesetup completeSetup(AFfilesetup); - - CAFFile(); - ~CAFFile(); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - status update() OVERRIDE; - -private: - AFfileoffset m_dataOffset; - AFfileoffset m_cookieDataOffset; - SharedPtr m_codecData; - - status parseDescription(const Tag &, int64_t); - status parseData(const Tag &, int64_t); - status parsePacketTable(const Tag &, int64_t); - status parseCookieData(const Tag &, int64_t); - - status writeDescription(); - status writeData(bool update); - status writePacketTable(); - status writeCookieData(); - - void initCompressionParams(); - void initIMACompressionParams(); - void initALACCompressionParams(); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Compiler.h b/tools/audiofile-0.3.6/libaudiofile/Compiler.h deleted file mode 100644 index 446ec005..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Compiler.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef COMPILER_H -#define COMPILER_H - -#if defined(__GNUC__) && !defined(__clang__) -#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) -#define GCC_VERSION_AT_LEAST(major, minor, patch) \ - (GCC_VERSION >= (major * 10000 + minor * 100 + patch)) -#if GCC_VERSION_AT_LEAST(4, 7, 0) && defined(__cplusplus) && __cplusplus >= 201103L -#define OVERRIDE override -#endif -#endif - -#if defined(__clang__) -#if __has_extension(cxx_override_control) -#define OVERRRIDE override -#endif -#endif - -#ifndef OVERRIDE -#define OVERRIDE -#endif - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/FLACFile.cpp b/tools/audiofile-0.3.6/libaudiofile/FLACFile.cpp deleted file mode 100644 index 7fea3101..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/FLACFile.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "FLACFile.h" - -#include "File.h" -#include "Setup.h" -#include "Track.h" -#include "byteorder.h" -#include "util.h" - -#include - -const int _af_flac_compression_types[_AF_FLAC_NUM_COMPTYPES] = -{ - AF_COMPRESSION_FLAC -}; - -const _AFfilesetup flacDefaultFileSetup = -{ - _AF_VALID_FILESETUP, - AF_FILE_FLAC, - true, - true, - true, - 1, // trackCount - NULL, // tracks - 0, // instrumentCount - NULL, // instruments - 0, // miscellaneousCount - NULL // miscellaneous -}; - -bool FLACFile::recognize(File *file) -{ - file->seek(0, File::SeekFromBeginning); - uint8_t buffer[4]; - if (file->read(buffer, 4) != 4 || memcmp(buffer, "fLaC", 4) != 0) - return false; - return true; -} - -FLACFile::FLACFile() -{ -} - -FLACFile::~FLACFile() -{ -} - -#if ENABLE(FLAC) - -AFfilesetup FLACFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "FLAC file must have 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = setup->getTrack(); - - if (track->sampleFormatSet && - track->f.sampleFormat != AF_SAMPFMT_TWOSCOMP) - { - _af_error(AF_BAD_SAMPFMT, - "FLAC files support only signed integer audio data"); - return AF_NULL_FILESETUP; - } - - if (track->sampleWidthSet && - track->f.sampleWidth != 16 && track->f.sampleWidth != 24) - { - _af_error(AF_BAD_WIDTH, - "FLAC files support only 16- or 24-bit audio data"); - return AF_NULL_FILESETUP; - } - - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, track->f.sampleWidth); - - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - - if (track->compressionSet && - track->f.compressionType != AF_COMPRESSION_FLAC) - { - _af_error(AF_BAD_COMPTYPE, "Only FLAC compression supported in FLAC files"); - return AF_NULL_FILESETUP; - } - - track->f.compressionType = AF_COMPRESSION_FLAC; - - if (track->markersSet && track->markerCount) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "FLAC does not yet support markers"); - return AF_NULL_FILESETUP; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "FLAC does not support AES data"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &flacDefaultFileSetup, true); -} - -status FLACFile::readInit(AFfilesetup) -{ - m_fh->seek(0, File::SeekFromBeginning); - - FLAC__StreamDecoder *decoder = FLAC__stream_decoder_new(); - - if (FLAC__stream_decoder_init_stream(decoder, - readCallback, - seekCallback, - tellCallback, - lengthCallback, - eofCallback, - writeCallback, - metadataCallback, - errorCallback, - this) != FLAC__STREAM_DECODER_INIT_STATUS_OK) - { - _af_error(AF_BAD_HEADER, "could not read FLAC file"); - return AF_FAIL; - } - - if (!FLAC__stream_decoder_process_until_end_of_metadata(decoder)) - return AF_FAIL; - - FLAC__uint64 position; - if (!FLAC__stream_decoder_get_decode_position(decoder, &position)) - return AF_FAIL; - - Track *track = getTrack(); - if (track) - { - track->fpos_first_frame = static_cast(position); - track->data_size = m_fh->length() - track->fpos_first_frame; - } - - FLAC__stream_decoder_delete(decoder); - - if (!track) - return AF_FAIL; - return AF_SUCCEED; -} - -status FLACFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - return AF_SUCCEED; -} - -status FLACFile::update() -{ - return AF_SUCCEED; -} - -void FLACFile::parseStreamInfo(const FLAC__StreamMetadata_StreamInfo &streamInfo) -{ - Track *track = allocateTrack(); - - track->f.channelCount = streamInfo.channels; - track->f.sampleRate = streamInfo.sample_rate; - - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - - track->f.framesPerPacket = 0; - track->f.bytesPerPacket = 0; - - track->f.compressionType = AF_COMPRESSION_FLAC; - track->f.compressionParams = NULL; - - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, streamInfo.bits_per_sample); - - track->totalfframes = streamInfo.total_samples; -} - -FLAC__StreamDecoderReadStatus FLACFile::readCallback(const FLAC__StreamDecoder *, FLAC__byte buffer[], size_t *bytes, void *clientData) -{ - FLACFile *flac = static_cast(clientData); - ssize_t result = flac->m_fh->read(buffer, *bytes); - if (result > 0) - { - *bytes = result; - return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; - } - - *bytes = 0; - return FLAC__STREAM_DECODER_READ_STATUS_ABORT; -} - -FLAC__StreamDecoderSeekStatus FLACFile::seekCallback(const FLAC__StreamDecoder *, FLAC__uint64 absoluteByteOffset, void *clientData) -{ - FLACFile *flac = static_cast(clientData); - if (flac->m_fh->seek(static_cast(absoluteByteOffset), File::SeekFromBeginning) < 0) - return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; - return FLAC__STREAM_DECODER_SEEK_STATUS_OK; -} - -FLAC__StreamDecoderTellStatus FLACFile::tellCallback(const FLAC__StreamDecoder *, FLAC__uint64 *absoluteByteOffset, void *clientData) -{ - FLACFile *flac = static_cast(clientData); - off_t result = flac->m_fh->tell(); - if (result < 0) - return FLAC__STREAM_DECODER_TELL_STATUS_ERROR; - *absoluteByteOffset = static_cast(result); - return FLAC__STREAM_DECODER_TELL_STATUS_OK; -} - -FLAC__StreamDecoderLengthStatus FLACFile::lengthCallback(const FLAC__StreamDecoder *, FLAC__uint64 *length, void *clientData) -{ - FLACFile *flac = static_cast(clientData); - off_t result = flac->m_fh->length(); - if (result < 0) - return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR; - *length = result; - return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; -} - -FLAC__bool FLACFile::eofCallback(const FLAC__StreamDecoder *, void *clientData) -{ - FLACFile *flac = static_cast(clientData); - return flac->m_fh->tell() == flac->m_fh->length(); -} - -FLAC__StreamDecoderWriteStatus FLACFile::writeCallback(const FLAC__StreamDecoder *, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *clientData) -{ - return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; -} - -void FLACFile::metadataCallback(const FLAC__StreamDecoder *, const FLAC__StreamMetadata *metadata, void *clientData) -{ - FLACFile *flac = static_cast(clientData); - if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) - flac->parseStreamInfo(metadata->data.stream_info); -} - -void FLACFile::errorCallback(const FLAC__StreamDecoder *, FLAC__StreamDecoderErrorStatus status, void *clientData) -{ - _af_error(AF_BAD_FILEFMT, "error %d parsing FLAC file", status); -} - -#else - -AFfilesetup FLACFile::completeSetup(AFfilesetup) -{ - _af_error(AF_BAD_FILEFMT, "FLAC is disabled"); - return AF_NULL_FILESETUP; -} - -status FLACFile::readInit(AFfilesetup) -{ - _af_error(AF_BAD_FILEFMT, "FLAC is disabled"); - return AF_FAIL; -} - -status FLACFile::writeInit(AFfilesetup) -{ - return AF_FAIL; -} - -status FLACFile::update() -{ - return AF_FAIL; -} - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/FLACFile.h b/tools/audiofile-0.3.6/libaudiofile/FLACFile.h deleted file mode 100644 index f074b23d..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/FLACFile.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef FLACFile_h -#define FLACFile_h - -#include "Compiler.h" -#include "FileHandle.h" -#include "Features.h" - -#if ENABLE(FLAC) -#include -#include -#endif - -#define _AF_FLAC_NUM_COMPTYPES 1 -extern const int _af_flac_compression_types[_AF_FLAC_NUM_COMPTYPES]; - -class FLACFile : public _AFfilehandle -{ -public: - static bool recognize(File *); - static AFfilesetup completeSetup(AFfilesetup); - - FLACFile(); - ~FLACFile(); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - status update() OVERRIDE; - -private: -#if ENABLE(FLAC) - void parseStreamInfo(const FLAC__StreamMetadata_StreamInfo &); - - static FLAC__StreamDecoderReadStatus readCallback(const FLAC__StreamDecoder *, FLAC__byte buffer[], size_t *bytes, void *clientData); - static FLAC__StreamDecoderSeekStatus seekCallback(const FLAC__StreamDecoder *, FLAC__uint64 absoluteByteOffset, void *clientData); - static FLAC__StreamDecoderTellStatus tellCallback(const FLAC__StreamDecoder *, FLAC__uint64 *absoluteByteOffset, void *clientData); - static FLAC__StreamDecoderLengthStatus lengthCallback(const FLAC__StreamDecoder *, FLAC__uint64 *length, void *clientData); - static FLAC__bool eofCallback(const FLAC__StreamDecoder *, void *clientData); - static FLAC__StreamDecoderWriteStatus writeCallback(const FLAC__StreamDecoder *, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *clientData); - static void metadataCallback(const FLAC__StreamDecoder *, const FLAC__StreamMetadata *metadata, void *clientData); - static void errorCallback(const FLAC__StreamDecoder *, FLAC__StreamDecoderErrorStatus status, void *clientData); -#endif -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Features.h b/tools/audiofile-0.3.6/libaudiofile/Features.h deleted file mode 100644 index c0c9a940..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Features.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef Features_h -#define Features_h - -#define ENABLE(FEATURE) (defined ENABLE_##FEATURE && ENABLE_##FEATURE) - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/File.cpp b/tools/audiofile-0.3.6/libaudiofile/File.cpp deleted file mode 100644 index 1a4f16d7..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/File.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/* - Copyright (C) 2010, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "config.h" -#include "File.h" - -#include "Compiler.h" -#include "af_vfs.h" - -#include -#include -#include -#include -#include -#include -#include - -class FilePOSIX : public File -{ -public: - FilePOSIX(int fd, AccessMode mode) : File(mode), m_fd(fd) { } - virtual ~FilePOSIX() { close(); } - - virtual int close() OVERRIDE; - virtual ssize_t read(void *data, size_t nbytes) OVERRIDE; - virtual ssize_t write(const void *data, size_t nbytes) OVERRIDE; - virtual off_t length() OVERRIDE; - virtual off_t seek(off_t offset, SeekOrigin origin) OVERRIDE; - virtual off_t tell() OVERRIDE; - -private: - int m_fd; -}; - -class FileVF : public File -{ -public: - FileVF(AFvirtualfile *vf, AccessMode mode) : File(mode), m_vf(vf) { } - virtual ~FileVF() { close(); } - - virtual int close() OVERRIDE; - virtual ssize_t read(void *data, size_t nbytes) OVERRIDE; - virtual ssize_t write(const void *data, size_t nbytes) OVERRIDE; - virtual off_t length() OVERRIDE; - virtual off_t seek(off_t offset, SeekOrigin origin) OVERRIDE; - virtual off_t tell() OVERRIDE; - -private: - AFvirtualfile *m_vf; -}; - -File *File::open(const char *path, File::AccessMode mode) -{ - int flags = 0; - if (mode == ReadAccess) - flags = O_RDONLY; - else if (mode == WriteAccess) - flags = O_CREAT | O_WRONLY | O_TRUNC; -#if defined(WIN32) || defined(__CYGWIN__) - flags |= O_BINARY; -#endif - int fd = ::open(path, flags, 0666); - if (fd == -1) - return NULL; - File *file = new FilePOSIX(fd, mode); - return file; -} - -File *File::create(int fd, File::AccessMode mode) -{ - return new FilePOSIX(fd, mode); -} - -File *File::create(AFvirtualfile *vf, File::AccessMode mode) -{ - return new FileVF(vf, mode); -} - -File::~File() -{ -} - -bool File::canSeek() -{ - return seek(0, File::SeekFromCurrent) != -1; -} - -int FilePOSIX::close() -{ - if (m_fd == -1) - return 0; - - int result = ::close(m_fd); - m_fd = -1; - return result; -} - -ssize_t FilePOSIX::read(void *data, size_t nbytes) -{ - return ::read(m_fd, data, nbytes); -} - -ssize_t FilePOSIX::write(const void *data, size_t nbytes) -{ - return ::write(m_fd, data, nbytes); -} - -off_t FilePOSIX::length() -{ - off_t current = tell(); - if (current == -1) - return -1; - off_t length = seek(0, SeekFromEnd); - if (length == -1) - return -1; - seek(current, SeekFromBeginning); - return length; -} - -off_t FilePOSIX::seek(off_t offset, File::SeekOrigin origin) -{ - int whence; - switch (origin) - { - case SeekFromBeginning: whence = SEEK_SET; break; - case SeekFromCurrent: whence = SEEK_CUR; break; - case SeekFromEnd: whence = SEEK_END; break; - default: assert(false); return -1; - } - return ::lseek(m_fd, offset, whence); -} - -off_t FilePOSIX::tell() -{ - return seek(0, File::SeekFromCurrent); -} - -int FileVF::close() -{ - if (m_vf) - af_virtual_file_destroy(m_vf); - m_vf = 0; - return 0; -} - -ssize_t FileVF::read(void *data, size_t nbytes) -{ - return m_vf->read(m_vf, data, nbytes); -} - -ssize_t FileVF::write(const void *data, size_t nbytes) -{ - return m_vf->write(m_vf, data, nbytes); -} - -off_t FileVF::length() -{ - return m_vf->length(m_vf); -} - -off_t FileVF::seek(off_t offset, SeekOrigin origin) -{ - if (origin == SeekFromEnd) - offset += length(); - return m_vf->seek(m_vf, offset, origin == SeekFromCurrent); -} - -off_t FileVF::tell() -{ - return m_vf->tell(m_vf); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/File.h b/tools/audiofile-0.3.6/libaudiofile/File.h deleted file mode 100644 index ce4f61c7..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/File.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - Copyright (C) 2010, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef FILE_H -#define FILE_H - -#include "Shared.h" -#include - -typedef struct _AFvirtualfile AFvirtualfile; - -class File : public Shared -{ -public: - enum AccessMode - { - ReadAccess, - WriteAccess - }; - - enum SeekOrigin - { - SeekFromBeginning, - SeekFromCurrent, - SeekFromEnd - }; - - static File *open(const char *path, AccessMode mode); - static File *create(int fd, AccessMode mode); - static File *create(AFvirtualfile *vf, AccessMode mode); - - virtual ~File(); - virtual int close() = 0; - virtual ssize_t read(void *data, size_t nbytes) = 0; - virtual ssize_t write(const void *data, size_t nbytes) = 0; - virtual off_t length() = 0; - virtual off_t seek(off_t offset, SeekOrigin origin) = 0; - virtual off_t tell() = 0; - - bool canSeek(); - - AccessMode accessMode() const { return m_accessMode; } - -private: - AccessMode m_accessMode; - -protected: - File(AccessMode mode) : m_accessMode(mode) { } -}; - -#endif // FILE_H diff --git a/tools/audiofile-0.3.6/libaudiofile/FileHandle.cpp b/tools/audiofile-0.3.6/libaudiofile/FileHandle.cpp deleted file mode 100644 index 8562d4b7..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/FileHandle.cpp +++ /dev/null @@ -1,488 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010-2012, Michael Pruett - Copyright (C) 2000-2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "FileHandle.h" - -#include "afinternal.h" -#include "audiofile.h" -#include "byteorder.h" -#include -#include - -#include "AIFF.h" -#include "AVR.h" -#include "CAF.h" -#include "FLACFile.h" -#include "IFF.h" -#include "IRCAM.h" -#include "NeXT.h" -#include "NIST.h" -#include "Raw.h" -#include "SampleVision.h" -#include "VOC.h" -#include "WAVE.h" - -#include "File.h" -#include "Instrument.h" -#include "Setup.h" -#include "Tag.h" -#include "Track.h" -#include "units.h" -#include "util.h" - -static void freeInstParams (AFPVu *values, int fileFormat) -{ - if (!values) - return; - - int parameterCount = _af_units[fileFormat].instrumentParameterCount; - - for (int i=0; itrackCount) == 0) - { - m_tracks = NULL; - return AF_SUCCEED; - } - - m_tracks = new Track[m_trackCount]; - if (!m_tracks) - return AF_FAIL; - - for (int i=0; itracks[i]; - - track->id = trackSetup->id; - track->f = trackSetup->f; - - if (track->copyMarkers(trackSetup) == AF_FAIL) - return AF_FAIL; - - track->hasAESData = trackSetup->aesDataSet; - } - - return AF_SUCCEED; -} - -status _AFfilehandle::copyInstrumentsFromSetup(AFfilesetup setup) -{ - if ((m_instrumentCount = setup->instrumentCount) == 0) - { - m_instruments = NULL; - return AF_SUCCEED; - } - - m_instruments = static_cast(_af_calloc(m_instrumentCount, - sizeof (Instrument))); - if (!m_instruments) - return AF_FAIL; - - for (int i=0; iinstruments[i].id; - - // Copy loops. - if ((m_instruments[i].loopCount = setup->instruments[i].loopCount) == 0) - { - m_instruments[i].loops = NULL; - } - else - { - m_instruments[i].loops = - static_cast(_af_calloc(m_instruments[i].loopCount, - sizeof (Loop))); - if (!m_instruments[i].loops) - return AF_FAIL; - for (int j=0; jid = setup->instruments[i].loops[j].id; - loop->mode = AF_LOOP_MODE_NOLOOP; - loop->count = 0; - loop->trackid = AF_DEFAULT_TRACK; - loop->beginMarker = 2*j + 1; - loop->endMarker = 2*j + 2; - } - } - - int instParamCount; - // Copy instrument parameters. - if ((instParamCount = _af_units[setup->fileFormat].instrumentParameterCount) == 0) - { - m_instruments[i].values = NULL; - } - else - { - m_instruments[i].values = - static_cast(_af_calloc(instParamCount, sizeof (AFPVu))); - if (!m_instruments[i].values) - return AF_FAIL; - for (int j=0; jfileFormat].instrumentParameters[j].defaultValue; - } - } - } - - return AF_SUCCEED; -} - -status _AFfilehandle::copyMiscellaneousFromSetup(AFfilesetup setup) -{ - if ((m_miscellaneousCount = setup->miscellaneousCount) == 0) - { - m_miscellaneous = NULL; - return AF_SUCCEED; - } - - m_miscellaneous = static_cast(_af_calloc(m_miscellaneousCount, - sizeof (Miscellaneous))); - if (!m_miscellaneous) - return AF_FAIL; - - for (int i=0; imiscellaneous[i].id; - m_miscellaneous[i].type = setup->miscellaneous[i].type; - m_miscellaneous[i].size = setup->miscellaneous[i].size; - m_miscellaneous[i].position = 0; - m_miscellaneous[i].buffer = NULL; - } - - return AF_SUCCEED; -} - -template -static bool readValue(File *f, T *value) -{ - return f->read(value, sizeof (*value)) == sizeof (*value); -} - -template -static bool writeValue(File *f, const T *value) -{ - return f->write(value, sizeof (*value)) == sizeof (*value); -} - -template -static T swapValue(T value, int order) -{ - if (order == AF_BYTEORDER_BIGENDIAN) - return bigToHost(value); - else if (order == AF_BYTEORDER_LITTLEENDIAN) - return littleToHost(value); - return value; -} - -template -static bool readSwap(File *f, T *value, int order) -{ - if (!readValue(f, value)) return false; - *value = swapValue(*value, order); - return true; -} - -template -static bool writeSwap(File *f, const T *value, int order) -{ - T t = swapValue(*value, order); - return writeValue(f, &t); -} - -bool _AFfilehandle::readU8(uint8_t *v) { return readValue(m_fh, v); } -bool _AFfilehandle::readS8(int8_t *v) { return readValue(m_fh, v); } - -bool _AFfilehandle::readU16(uint16_t *v) -{ - return readSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::readS16(int16_t *v) -{ - return readSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::readU32(uint32_t *v) -{ - return readSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::readS32(int32_t *v) -{ - return readSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::readU64(uint64_t *v) -{ - return readSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::readS64(int64_t *v) -{ - return readSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::readFloat(float *v) -{ - return readSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::readDouble(double *v) -{ - return readSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::writeU8(const uint8_t *v) { return writeValue(m_fh, v); } -bool _AFfilehandle::writeS8(const int8_t *v) { return writeValue(m_fh, v); } - -bool _AFfilehandle::writeU16(const uint16_t *v) -{ - return writeSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::writeS16(const int16_t *v) -{ - return writeSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::writeU32(const uint32_t *v) -{ - return writeSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::writeS32(const int32_t *v) -{ - return writeSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::writeU64(const uint64_t *v) -{ - return writeSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::writeS64(const int64_t *v) -{ - return writeSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::writeFloat(const float *v) -{ - return writeSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::writeDouble(const double *v) -{ - return writeSwap(m_fh, v, m_formatByteOrder); -} - -bool _AFfilehandle::readTag(Tag *t) -{ - uint32_t v; - if (m_fh->read(&v, sizeof (v)) == sizeof (v)) - { - *t = Tag(v); - return true; - } - return false; -} - -bool _AFfilehandle::writeTag(const Tag *t) -{ - uint32_t v = t->value(); - return m_fh->write(&v, sizeof (v)) == sizeof (v); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/FileHandle.h b/tools/audiofile-0.3.6/libaudiofile/FileHandle.h deleted file mode 100644 index c9d97008..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/FileHandle.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010-2011, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef FILEHANDLE_H -#define FILEHANDLE_H - -#include "afinternal.h" -#include - -class File; -class Tag; -struct Instrument; -struct Miscellaneous; -struct Track; - -struct _AFfilehandle -{ - static _AFfilehandle *create(int fileFormat); - - int m_valid; // _AF_VALID_FILEHANDLE - int m_access; // _AF_READ_ACCESS or _AF_WRITE_ACCESS - - bool m_seekok; - - File *m_fh; - - char *m_fileName; - - int m_fileFormat; - - int m_trackCount; - Track *m_tracks; - - int m_instrumentCount; - Instrument *m_instruments; - - int m_miscellaneousCount; - Miscellaneous *m_miscellaneous; - -private: - int m_formatByteOrder; - - status copyTracksFromSetup(AFfilesetup setup); - status copyInstrumentsFromSetup(AFfilesetup setup); - status copyMiscellaneousFromSetup(AFfilesetup setup); - -public: - virtual ~_AFfilehandle(); - - virtual int getVersion() { return 0; } - virtual status readInit(AFfilesetup) = 0; - virtual status writeInit(AFfilesetup) = 0; - virtual status update() = 0; - virtual bool isInstrumentParameterValid(AUpvlist, int) { return false; } - - bool checkCanRead(); - bool checkCanWrite(); - - Track *allocateTrack(); - Track *getTrack(int trackID = AF_DEFAULT_TRACK); - Instrument *getInstrument(int instrumentID); - Miscellaneous *getMiscellaneous(int miscellaneousID); - -protected: - _AFfilehandle(); - - status initFromSetup(AFfilesetup setup); - - void setFormatByteOrder(int byteOrder) { m_formatByteOrder = byteOrder; } - - bool readU8(uint8_t *); - bool readS8(int8_t *); - bool readU16(uint16_t *); - bool readS16(int16_t *); - bool readU32(uint32_t *); - bool readS32(int32_t *); - bool readU64(uint64_t *); - bool readS64(int64_t *); - bool readFloat(float *); - bool readDouble(double *); - - bool writeU8(const uint8_t *); - bool writeS8(const int8_t *); - bool writeU16(const uint16_t *); - bool writeS16(const int16_t *); - bool writeU32(const uint32_t *); - bool writeS32(const int32_t *); - bool writeU64(const uint64_t *); - bool writeS64(const int64_t *); - bool writeFloat(const float *); - bool writeDouble(const double *); - - bool readTag(Tag *t); - bool writeTag(const Tag *t); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/IFF.cpp b/tools/audiofile-0.3.6/libaudiofile/IFF.cpp deleted file mode 100644 index 27c845e7..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/IFF.cpp +++ /dev/null @@ -1,489 +0,0 @@ -/* - Audio File Library - Copyright (C) 2004, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - IFF.cpp - - This file contains routines for reading and writing IFF/8SVX - sound files. -*/ - -#include "config.h" -#include "IFF.h" - -#include -#include -#include -#include - -#include "File.h" -#include "Marker.h" -#include "Setup.h" -#include "Tag.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "byteorder.h" -#include "util.h" - -static const _AFfilesetup iffDefaultFileSetup = -{ - _AF_VALID_FILESETUP, /* valid */ - AF_FILE_IFF_8SVX, /* fileFormat */ - true, /* trackSet */ - true, /* instrumentSet */ - true, /* miscellaneousSet */ - 1, /* trackCount */ - NULL, /* tracks */ - 0, /* instrumentCount */ - NULL, /* instruments */ - 0, /* miscellaneousCount */ - NULL /* miscellaneous */ -}; - -bool IFFFile::recognize(File *fh) -{ - uint8_t buffer[8]; - - fh->seek(0, File::SeekFromBeginning); - - if (fh->read(buffer, 8) != 8 || memcmp(buffer, "FORM", 4) != 0) - return false; - if (fh->read(buffer, 4) != 4 || memcmp(buffer, "8SVX", 4) != 0) - return false; - - return true; -} - -IFFFile::IFFFile() -{ - setFormatByteOrder(AF_BYTEORDER_BIGENDIAN); - - m_miscellaneousPosition = 0; - m_VHDR_offset = 0; - m_BODY_offset = 0; -} - -/* - Parse miscellaneous data chunks such as name, author, copyright, - and annotation chunks. -*/ -status IFFFile::parseMiscellaneous(const Tag &type, size_t size) -{ - int misctype = AF_MISC_UNRECOGNIZED; - - assert(type == "NAME" || type == "AUTH" || - type == "(c) " || type == "ANNO"); - - /* Skip zero-length miscellaneous chunks. */ - if (size == 0) - return AF_FAIL; - - m_miscellaneousCount++; - m_miscellaneous = (Miscellaneous *) _af_realloc(m_miscellaneous, - m_miscellaneousCount * sizeof (Miscellaneous)); - - if (type == "NAME") - misctype = AF_MISC_NAME; - else if (type == "AUTH") - misctype = AF_MISC_AUTH; - else if (type == "(c) ") - misctype = AF_MISC_COPY; - else if (type == "ANNO") - misctype = AF_MISC_ANNO; - - m_miscellaneous[m_miscellaneousCount - 1].id = m_miscellaneousCount; - m_miscellaneous[m_miscellaneousCount - 1].type = misctype; - m_miscellaneous[m_miscellaneousCount - 1].size = size; - m_miscellaneous[m_miscellaneousCount - 1].position = 0; - m_miscellaneous[m_miscellaneousCount - 1].buffer = _af_malloc(size); - m_fh->read(m_miscellaneous[m_miscellaneousCount - 1].buffer, size); - - return AF_SUCCEED; -} - -/* - Parse voice header chunk. -*/ -status IFFFile::parseVHDR(const Tag &type, size_t size) -{ - assert(type == "VHDR"); - - Track *track = getTrack(); - - uint32_t oneShotSamples, repeatSamples, samplesPerRepeat; - uint16_t sampleRate; - uint8_t octaves, compression; - uint32_t volume; - - readU32(&oneShotSamples); - readU32(&repeatSamples); - readU32(&samplesPerRepeat); - readU16(&sampleRate); - readU8(&octaves); - readU8(&compression); - readU32(&volume); - - track->f.sampleWidth = 8; - track->f.sampleRate = sampleRate; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - track->f.channelCount = 1; - - track->f.framesPerPacket = 1; - track->f.computeBytesPerPacketPCM(); - - _af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth); - - return AF_SUCCEED; -} - -status IFFFile::parseBODY(const Tag &type, size_t size) -{ - Track *track = getTrack(); - - /* - IFF/8SVX files have only one audio channel with one - byte per sample, so the number of frames is equal to - the number of bytes. - */ - track->totalfframes = size; - track->data_size = size; - - /* Sound data follows. */ - track->fpos_first_frame = m_fh->tell(); - - return AF_SUCCEED; -} - -status IFFFile::readInit(AFfilesetup setup) -{ - m_fh->seek(0, File::SeekFromBeginning); - - Tag type; - uint32_t size; - Tag formtype; - - readTag(&type); - readU32(&size); - readTag(&formtype); - - if (type != "FORM" || formtype != "8SVX") - return AF_FAIL; - - /* IFF/8SVX files have only one track. */ - Track *track = allocateTrack(); - if (!track) - return AF_FAIL; - - /* Set the index to include the form type ('8SVX' in this case). */ - size_t index = 4; - while (index < size) - { - Tag chunkid; - uint32_t chunksize = 0; - status result = AF_SUCCEED; - - readTag(&chunkid); - readU32(&chunksize); - - if (chunkid == "VHDR") - { - result = parseVHDR(chunkid, chunksize); - } - else if (chunkid == "BODY") - { - result = parseBODY(chunkid, chunksize); - } - else if (chunkid == "NAME" || - chunkid == "AUTH" || - chunkid == "(c) " || - chunkid == "ANNO") - { - parseMiscellaneous(chunkid, chunksize); - } - - if (result == AF_FAIL) - return AF_FAIL; - - /* - Increment the index by the size of the chunk - plus the size of the chunk header. - */ - index += chunksize + 8; - - /* All chunks must be aligned on an even number of bytes. */ - if ((index % 2) != 0) - index++; - - /* Set the seek position to the beginning of the next chunk. */ - m_fh->seek(index + 8, File::SeekFromBeginning); - } - - /* The file has been successfully parsed. */ - return AF_SUCCEED; -} - -AFfilesetup IFFFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "IFF/8SVX file must have 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = &setup->tracks[0]; - - if (track->sampleFormatSet && - track->f.sampleFormat != AF_SAMPFMT_TWOSCOMP) - { - _af_error(AF_BAD_SAMPFMT, - "IFF/8SVX format supports only two's complement integer data"); - return AF_NULL_FILESETUP; - } - - if (track->sampleFormatSet && track->f.sampleWidth != 8) - { - _af_error(AF_BAD_WIDTH, - "IFF/8SVX file allows only 8 bits per sample " - "(%d bits requested)", track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - - if (track->channelCountSet && track->f.channelCount != 1) - { - _af_error(AF_BAD_CHANNELS, - "invalid channel count (%d) for IFF/8SVX format " - "(only 1 channel supported)", - track->f.channelCount); - return AF_NULL_FILESETUP; - } - - if (track->f.compressionType != AF_COMPRESSION_NONE) - { - _af_error(AF_BAD_COMPRESSION, - "IFF/8SVX does not support compression"); - return AF_NULL_FILESETUP; - } - - /* Ignore requested byte order since samples are only one byte. */ - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - /* Either one channel was requested or no request was made. */ - track->f.channelCount = 1; - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 8); - - if (track->markersSet && track->markerCount != 0) - { - _af_error(AF_BAD_NUMMARKS, - "IFF/8SVX format does not support markers"); - return AF_NULL_FILESETUP; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "IFF/8SVX format does not support AES data"); - return AF_NULL_FILESETUP; - } - - if (setup->instrumentSet && setup->instrumentCount != 0) - { - _af_error(AF_BAD_NUMINSTS, - "IFF/8SVX format does not support instruments"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &iffDefaultFileSetup, true); -} - -status IFFFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - uint32_t fileSize = 0; - - m_fh->write("FORM", 4); - writeU32(&fileSize); - - m_fh->write("8SVX", 4); - - writeVHDR(); - writeMiscellaneous(); - writeBODY(); - - return AF_SUCCEED; -} - -status IFFFile::update() -{ - uint32_t length; - - writeVHDR(); - writeMiscellaneous(); - writeBODY(); - - /* Get the length of the file. */ - length = m_fh->length(); - length -= 8; - - /* Set the length of the FORM chunk. */ - m_fh->seek(4, File::SeekFromBeginning); - writeU32(&length); - - return AF_SUCCEED; -} - -status IFFFile::writeVHDR() -{ - uint32_t chunkSize; - uint32_t oneShotSamples, repeatSamples, samplesPerRepeat; - uint16_t sampleRate; - uint8_t octaves, compression; - uint32_t volume; - - /* - If VHDR_offset hasn't been set yet, set it to the - current offset. - */ - if (m_VHDR_offset == 0) - m_VHDR_offset = m_fh->tell(); - else - m_fh->seek(m_VHDR_offset, File::SeekFromBeginning); - - Track *track = getTrack(); - - m_fh->write("VHDR", 4); - - chunkSize = 20; - writeU32(&chunkSize); - - /* - IFF/8SVX files have only one audio channel, so the - number of samples is equal to the number of frames. - */ - oneShotSamples = track->totalfframes; - writeU32(&oneShotSamples); - repeatSamples = 0; - writeU32(&repeatSamples); - samplesPerRepeat = 0; - writeU32(&samplesPerRepeat); - - sampleRate = track->f.sampleRate; - writeU16(&sampleRate); - - octaves = 0; - compression = 0; - writeU8(&octaves); - writeU8(&compression); - - /* Volume is in fixed-point notation; 65536 means gain of 1.0. */ - volume = 65536; - writeU32(&volume); - - return AF_SUCCEED; -} - -status IFFFile::writeBODY() -{ - uint32_t chunkSize; - - Track *track = getTrack(); - - if (m_BODY_offset == 0) - m_BODY_offset = m_fh->tell(); - else - m_fh->seek(m_BODY_offset, File::SeekFromBeginning); - - m_fh->write("BODY", 4); - - /* - IFF/8SVX supports only one channel, so the number of - frames is equal to the number of samples, and each - sample is one byte. - */ - chunkSize = track->totalfframes; - writeU32(&chunkSize); - - if (track->fpos_first_frame == 0) - track->fpos_first_frame = m_fh->tell(); - - /* Add a pad byte to the end of the chunk if the chunk size is odd. */ - if ((chunkSize % 2) == 1) - { - uint8_t zero = 0; - m_fh->seek(m_BODY_offset + 8 + chunkSize, File::SeekFromBeginning); - writeU8(&zero); - } - - return AF_SUCCEED; -} - -/* - WriteMiscellaneous writes all the miscellaneous data chunks in a - file handle structure to an IFF/8SVX file. -*/ -status IFFFile::writeMiscellaneous() -{ - if (m_miscellaneousPosition == 0) - m_miscellaneousPosition = m_fh->tell(); - else - m_fh->seek(m_miscellaneousPosition, File::SeekFromBeginning); - - for (int i=0; itype) - { - case AF_MISC_NAME: - chunkType = "NAME"; break; - case AF_MISC_AUTH: - chunkType = "AUTH"; break; - case AF_MISC_COPY: - chunkType = "(c) "; break; - case AF_MISC_ANNO: - chunkType = "ANNO"; break; - } - - writeTag(&chunkType); - - chunkSize = misc->size; - writeU32(&chunkSize); - - /* - Write the miscellaneous buffer and then a pad byte - if necessary. If the buffer is null, skip the space - for now. - */ - if (misc->buffer != NULL) - m_fh->write(misc->buffer, misc->size); - else - m_fh->seek(misc->size, File::SeekFromCurrent); - - if (misc->size % 2 != 0) - writeU8(&padByte); - } - - return AF_SUCCEED; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/IFF.h b/tools/audiofile-0.3.6/libaudiofile/IFF.h deleted file mode 100644 index 943d01c6..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/IFF.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - Audio File Library - Copyright (C) 2004, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - IFF.h - - This file declares constants and functions related to the - IFF/8SVX file format. -*/ - -#ifndef IFF_H -#define IFF_H - -#include "Compiler.h" -#include "FileHandle.h" - -class IFFFile : public _AFfilehandle -{ -public: - static bool recognize(File *fh); - static AFfilesetup completeSetup(AFfilesetup); - - IFFFile(); - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - status update() OVERRIDE; - -private: - AFfileoffset m_miscellaneousPosition; - AFfileoffset m_VHDR_offset; - AFfileoffset m_BODY_offset; - - status parseMiscellaneous(const Tag &type, size_t size); - status parseVHDR(const Tag &type, size_t size); - status parseBODY(const Tag &type, size_t size); - - status writeVHDR(); - status writeMiscellaneous(); - status writeBODY(); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/IRCAM.cpp b/tools/audiofile-0.3.6/libaudiofile/IRCAM.cpp deleted file mode 100644 index 5d5f78c6..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/IRCAM.cpp +++ /dev/null @@ -1,441 +0,0 @@ -/* - Audio File Library - Copyright (C) 2001, Silicon Graphics, Inc. - Copyright (C) 2011, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - IRCAM.cpp - - This file contains routines for reading and writing - Berkeley/IRCAM/CARL sound files. -*/ - -#include "config.h" -#include "IRCAM.h" - -#include -#include -#include -#include - -#include "File.h" -#include "Marker.h" -#include "Setup.h" -#include "Track.h" -#include "byteorder.h" -#include "util.h" - -enum -{ - SF_CHAR = 1, - SF_SHORT = 2, - SF_24INT = 3, - SF_LONG = 0x40004, - SF_FLOAT = 4, - SF_DOUBLE = 8, - SF_ALAW = 0x10001, - SF_ULAW = 0x20001 -}; - -#define SF_MAXCHAN 4 -#define SF_MAXCOMMENT 512 -#define SF_MINCOMMENT 256 - -enum -{ - SF_END, - SF_MAXAMP, - SF_COMMENT, - SF_LINKCODE -}; - -#define SIZEOF_BSD_HEADER 1024 - -static const uint8_t ircam_vax_le_magic[4] = {0x64, 0xa3, 0x01, 0x00}, - ircam_vax_be_magic[4] = {0x00, 0x01, 0xa3, 0x64}, - ircam_sun_be_magic[4] = {0x64, 0xa3, 0x02, 0x00}, - ircam_sun_le_magic[4] = {0x00, 0x02, 0xa3, 0x64}, - ircam_mips_le_magic[4] = {0x64, 0xa3, 0x03, 0x00}, - ircam_mips_be_magic[4] = {0x00, 0x03, 0xa3, 0x64}, - ircam_next_be_magic[4] = {0x64, 0xa3, 0x04, 0x00}, - ircam_next_le_magic[4] = {0x00, 0x04, 0xa3, 0x64}; - -static const _AFfilesetup ircam_default_filesetup = -{ - _AF_VALID_FILESETUP, /* valid */ - AF_FILE_IRCAM, /* fileFormat */ - true, /* trackSet */ - true, /* instrumentSet */ - true, /* miscellaneousSet */ - 1, /* trackCount */ - NULL, /* tracks */ - 0, /* instrumentCount */ - NULL, /* instruments */ - 0, /* miscellaneousCount */ - NULL /* miscellaneous */ -}; - -const int _af_ircam_compression_types[_AF_IRCAM_NUM_COMPTYPES] = -{ - AF_COMPRESSION_G711_ULAW, - AF_COMPRESSION_G711_ALAW -}; - -bool IRCAMFile::recognize(File *fh) -{ - uint8_t buffer[4]; - - fh->seek(0, File::SeekFromBeginning); - - if (fh->read(buffer, 4) != 4) - return false; - - /* Check to see if the file's magic number matches. */ - if (!memcmp(buffer, ircam_vax_le_magic, 4) || - !memcmp(buffer, ircam_vax_be_magic, 4) || - !memcmp(buffer, ircam_sun_be_magic, 4) || - !memcmp(buffer, ircam_sun_le_magic, 4) || - !memcmp(buffer, ircam_mips_le_magic, 4) || - !memcmp(buffer, ircam_mips_be_magic, 4) || - !memcmp(buffer, ircam_next_be_magic, 4) || - !memcmp(buffer, ircam_next_le_magic, 4)) - { - return true; - } - - return false; -} - -AFfilesetup IRCAMFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "BICSF file must have 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = &setup->tracks[0]; - if (track->sampleFormatSet) - { - if (track->f.isUnsigned()) - { - _af_error(AF_BAD_SAMPFMT, - "BICSF format does not support unsigned data"); - return AF_NULL_FILESETUP; - } - - if (track->f.isSigned() && - track->f.sampleWidth != 8 && - track->f.sampleWidth != 16 && - track->f.sampleWidth != 24 && - track->f.sampleWidth != 32) - { - _af_error(AF_BAD_WIDTH, - "BICSF format supports only 8-, 16-, 24-, or 32-bit " - "two's complement audio data"); - return AF_NULL_FILESETUP; - } - } - - if (track->rateSet && track->f.sampleRate <= 0.0) - { - _af_error(AF_BAD_RATE, - "invalid sample rate %.30g for BICSF file", - track->f.sampleRate); - return AF_NULL_FILESETUP; - } - - if (track->channelCountSet && track->f.channelCount != 1 && - track->f.channelCount != 2 && track->f.channelCount != 4) - { - _af_error(AF_BAD_CHANNELS, - "invalid channel count (%d) for BICSF format " - "(1, 2, or 4 channels only)", - track->f.channelCount); - return AF_NULL_FILESETUP; - } - - if (track->compressionSet && - track->f.compressionType != AF_COMPRESSION_NONE && - track->f.compressionType != AF_COMPRESSION_G711_ULAW && - track->f.compressionType != AF_COMPRESSION_G711_ALAW) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, - "BICSF format does not support compression type %d", - track->f.compressionType); - return AF_NULL_FILESETUP; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "BICSF file cannot have AES data"); - return AF_NULL_FILESETUP; - } - - if (track->markersSet && track->markerCount != 0) - { - _af_error(AF_BAD_NUMMARKS, "BICSF format does not support markers"); - return AF_NULL_FILESETUP; - } - - if (setup->instrumentSet && setup->instrumentCount != 0) - { - _af_error(AF_BAD_NUMINSTS, "BICSF format does not support instruments"); - return AF_NULL_FILESETUP; - } - - /* XXXmpruett: We don't support miscellaneous chunks for now. */ - if (setup->miscellaneousSet && setup->miscellaneousCount != 0) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "BICSF format does not currently support miscellaneous chunks"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &ircam_default_filesetup, true); -} - -status IRCAMFile::readInit(AFfilesetup setup) -{ - float maxAmp = 1.0; - - m_fh->seek(0, File::SeekFromBeginning); - - uint8_t magic[4]; - if (m_fh->read(magic, 4) != 4) - { - _af_error(AF_BAD_READ, "Could not read BICSF file header"); - return AF_FAIL; - } - - if (memcmp(magic, ircam_vax_le_magic, 4) != 0 && - memcmp(magic, ircam_vax_be_magic, 4) != 0 && - memcmp(magic, ircam_sun_be_magic, 4) != 0 && - memcmp(magic, ircam_sun_le_magic, 4) != 0 && - memcmp(magic, ircam_mips_le_magic, 4) != 0 && - memcmp(magic, ircam_mips_be_magic, 4) != 0 && - memcmp(magic, ircam_next_be_magic, 4) != 0 && - memcmp(magic, ircam_next_le_magic, 4) != 0) - { - _af_error(AF_BAD_FILEFMT, - "file is not a BICSF file (bad magic number)"); - return AF_FAIL; - } - - // Check whether the file's magic number indicates little-endian data. - bool isLittleEndian = !memcmp(magic, ircam_vax_le_magic, 4) || - !memcmp(magic, ircam_sun_le_magic, 4) || - !memcmp(magic, ircam_mips_le_magic, 4) || - !memcmp(magic, ircam_next_le_magic, 4); - - setFormatByteOrder(isLittleEndian ? AF_BYTEORDER_LITTLEENDIAN : - AF_BYTEORDER_BIGENDIAN); - - float rate; - readFloat(&rate); - uint32_t channels; - readU32(&channels); - uint32_t packMode; - readU32(&packMode); - - Track *track = allocateTrack(); - if (!track) - return AF_FAIL; - - track->f.sampleRate = rate; - track->f.compressionType = AF_COMPRESSION_NONE; - - if (isLittleEndian) - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - else - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - - if (channels != 1 && channels != 2 && channels != 4) - { - _af_error(AF_BAD_FILEFMT, - "invalid channel count (%d) for BICSF format (1, 2, or 4 only)", - channels); - return AF_FAIL; - } - - track->f.channelCount = channels; - - track->f.framesPerPacket = 1; - - switch (packMode) - { - case SF_CHAR: - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.sampleWidth = 8; - break; - case SF_SHORT: - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.sampleWidth = 16; - break; - case SF_24INT: - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.sampleWidth = 24; - break; - case SF_LONG: - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.sampleWidth = 32; - break; - case SF_FLOAT: - track->f.sampleFormat = AF_SAMPFMT_FLOAT; - track->f.sampleWidth = 32; - break; - case SF_DOUBLE: - track->f.sampleFormat = AF_SAMPFMT_DOUBLE; - track->f.sampleWidth = 64; - break; - case SF_ALAW: - track->f.compressionType = AF_COMPRESSION_G711_ALAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.sampleWidth = 16; - track->f.bytesPerPacket = channels; - break; - case SF_ULAW: - track->f.compressionType = AF_COMPRESSION_G711_ULAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.sampleWidth = 16; - track->f.bytesPerPacket = channels; - break; - default: - _af_error(AF_BAD_NOT_IMPLEMENTED, - "BICSF data format %d not supported", packMode); - return AF_FAIL; - } - - if (track->f.isUncompressed()) - track->f.computeBytesPerPacketPCM(); - - if (_af_set_sample_format(&track->f, track->f.sampleFormat, - track->f.sampleWidth) == AF_FAIL) - { - return AF_FAIL; - } - - if (track->f.sampleFormat == AF_SAMPFMT_FLOAT) - track->f.pcm.slope = maxAmp; - - track->data_size = m_fh->length() - SIZEOF_BSD_HEADER; - track->computeTotalFileFrames(); - - track->fpos_first_frame = SIZEOF_BSD_HEADER; - track->nextfframe = 0; - track->fpos_next_frame = track->fpos_first_frame; - - return AF_SUCCEED; -} - -/* We write IRCAM files using the native byte order. */ -status IRCAMFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - uint32_t dataOffset = SIZEOF_BSD_HEADER; - - Track *track = getTrack(); - track->totalfframes = 0; - track->fpos_first_frame = dataOffset; - track->nextfframe = 0; - track->fpos_next_frame = track->fpos_first_frame; - - /* Choose the magic number appropriate for the byte order. */ - const uint8_t *magic; -#ifdef WORDS_BIGENDIAN - magic = ircam_sun_be_magic; -#else - magic = ircam_vax_le_magic; -#endif - - uint32_t channels = track->f.channelCount; - float rate = track->f.sampleRate; - - if (track->f.compressionType != AF_COMPRESSION_NONE && - track->f.compressionType != AF_COMPRESSION_G711_ULAW && - track->f.compressionType != AF_COMPRESSION_G711_ALAW) - { - _af_error(AF_BAD_COMPTYPE, - "unsupported compression type %d in IRCAM sound file", - track->f.compressionType); - return AF_FAIL; - } - - uint32_t packMode = 0; - if (track->f.compressionType == AF_COMPRESSION_G711_ULAW) - packMode = SF_ULAW; - else if (track->f.compressionType == AF_COMPRESSION_G711_ALAW) - packMode = SF_ALAW; - else if (track->f.isSigned()) - { - switch (track->f.bytesPerSample(false)) - { - case 1: packMode = SF_CHAR; break; - case 2: packMode = SF_SHORT; break; - case 3: packMode = SF_24INT; break; - case 4: packMode = SF_LONG; break; - default: - _af_error(AF_BAD_SAMPFMT, - "unsupported sample width %d for two's complement BICSF file", - track->f.sampleWidth); - return AF_FAIL; - } - } - else if (track->f.isFloat()) - { - if (track->f.sampleWidth == 32) - packMode = SF_FLOAT; - else if (track->f.sampleWidth == 64) - packMode = SF_DOUBLE; - else - { - _af_error(AF_BAD_SAMPFMT, - "unsupported sample width %d for BICSF file", - track->f.sampleWidth); - return AF_FAIL; - } - } - else if (track->f.isUnsigned()) - { - _af_error(AF_BAD_SAMPFMT, "BICSF format does not support unsigned integer audio data"); - return AF_FAIL; - } - - m_fh->seek(0, File::SeekFromBeginning); - m_fh->write(magic, 4); - writeFloat(&rate); - writeU32(&channels); - writeU32(&packMode); - - /* Zero the entire description block. */ - uint8_t zeros[SIZEOF_BSD_HEADER]; - memset(zeros, 0, SIZEOF_BSD_HEADER); - m_fh->write(zeros, SIZEOF_BSD_HEADER - 4*4); - - return AF_SUCCEED; -} - -status IRCAMFile::update() -{ - return AF_SUCCEED; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/IRCAM.h b/tools/audiofile-0.3.6/libaudiofile/IRCAM.h deleted file mode 100644 index bec49d4a..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/IRCAM.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - Audio File Library - Copyright (C) 2001, Silicon Graphics, Inc. - Copyright (C) 2011, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - IRCAM.h - - This file contains constants and function prototypes related to - the Berkeley/IRCAM/CARL Sound File format. -*/ - -#ifndef IRCAM_H -#define IRCAM_H - -#include "Compiler.h" -#include "FileHandle.h" - -#define _AF_IRCAM_NUM_COMPTYPES 2 -extern const int _af_ircam_compression_types[_AF_IRCAM_NUM_COMPTYPES]; - -class IRCAMFile : public _AFfilehandle -{ -public: - static bool recognize(File *fh); - static AFfilesetup completeSetup(AFfilesetup); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - status update() OVERRIDE; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Instrument.cpp b/tools/audiofile-0.3.6/libaudiofile/Instrument.cpp deleted file mode 100644 index 84e68b3d..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Instrument.cpp +++ /dev/null @@ -1,302 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - Instrument.cpp - - Info about instrument parameters: - - Each unit has an array of _InstParamInfo structures, one for - each instrument parameter. Each of these structures describes - the inst parameters. - - id: a 4-byte id as in AIFF file - type: data type AU_PVLIST_* - name: text name - defaultValue: default value, to which it is set when a file with - instruments is first opened for writing. - - Each inst has only an array of values (_AFPVu's). Each value in the - instrument's array is the value of the corresponding index into the - unit's instparaminfo array. - - So for a unit u and an instrument i, u.instparam[N] describes - the parameter whose value is given in i.value[N]. -*/ - -#include "config.h" - -#include "FileHandle.h" -#include "Instrument.h" -#include "Setup.h" -#include "afinternal.h" -#include "audiofile.h" -#include "units.h" -#include "util.h" - -#include - -bool InstrumentSetup::allocateLoops(int count) -{ - freeLoops(); - loops = (LoopSetup *) _af_calloc(count, sizeof (LoopSetup)); - if (loops) - { - loopCount = count; - return true; - } - return false; -} - -void InstrumentSetup::freeLoops() -{ - if (loops) - free(loops); - loops = NULL; - loopCount = 0; -} - -/* - Initialize instrument id list for audio file. -*/ -void afInitInstIDs (AFfilesetup setup, const int *instids, int ninsts) -{ - if (!_af_filesetup_ok(setup)) - return; - - if (!_af_unique_ids(instids, ninsts, "instrument", AF_BAD_INSTID)) - return; - - _af_setup_free_instruments(setup); - - setup->instrumentCount = ninsts; - setup->instrumentSet = true; - - setup->instruments = _af_instsetup_new(setup->instrumentCount); - - for (int i=0; i < setup->instrumentCount; i++) - setup->instruments[i].id = instids[i]; -} - -int afGetInstIDs (AFfilehandle file, int *instids) -{ - if (!_af_filehandle_ok(file)) - return -1; - - if (instids) - for (int i=0; i < file->m_instrumentCount; i++) - instids[i] = file->m_instruments[i].id; - - return file->m_instrumentCount; -} - -/* - This routine checks and sets instrument parameters. - npv is number of valid AUpvlist pairs. -*/ -void _af_instparam_set (AFfilehandle file, int instid, AUpvlist pvlist, int npv) -{ - if (!_af_filehandle_ok(file)) - return; - - if (!file->checkCanWrite()) - return; - - Instrument *instrument = file->getInstrument(instid); - if (!instrument) - return; - - if (AUpvgetmaxitems(pvlist) < npv) - npv = AUpvgetmaxitems(pvlist); - - for (int i=0; i < npv; i++) - { - int param; - - AUpvgetparam(pvlist, i, ¶m); - - int j; - if ((j = _af_instparam_index_from_id(file->m_fileFormat, param)) == -1) - /* no parameter with that id; ignore */ - continue; - - if (!file->isInstrumentParameterValid(pvlist, i)) - /* bad parameter value; ignore */ - continue; - - int type = _af_units[file->m_fileFormat].instrumentParameters[j].type; - - switch (type) - { - case AU_PVTYPE_LONG: - AUpvgetval(pvlist, i, &instrument->values[j].l); - break; - case AU_PVTYPE_DOUBLE: - AUpvgetval(pvlist, i, &instrument->values[j].d); - break; - case AU_PVTYPE_PTR: - AUpvgetval(pvlist, i, &instrument->values[j].v); - break; - default: - return; - } - } -} - -void afSetInstParams (AFfilehandle file, int instid, AUpvlist pvlist, int npv) -{ - _af_instparam_set(file, instid, pvlist, npv); -} - -void afSetInstParamLong (AFfilehandle file, int instid, int param, long value) -{ - AUpvlist pvlist = AUpvnew(1); - - AUpvsetparam(pvlist, 0, param); - AUpvsetvaltype(pvlist, 0, AU_PVTYPE_LONG); - AUpvsetval(pvlist, 0, &value); - - _af_instparam_set(file, instid, pvlist, 1); - - AUpvfree(pvlist); -} - -/* - This routine gets instrument parameters. - npv is number of valid AUpvlist pairs -*/ -void _af_instparam_get (AFfilehandle file, int instid, AUpvlist pvlist, int npv, - bool forceLong) -{ - if (!_af_filehandle_ok(file)) - return; - - Instrument *instrument = file->getInstrument(instid); - if (!instrument) - return; - - if (AUpvgetmaxitems(pvlist) < npv) - npv = AUpvgetmaxitems(pvlist); - - for (int i=0; i < npv; i++) - { - int param; - AUpvgetparam(pvlist, i, ¶m); - - int j; - if ((j = _af_instparam_index_from_id(file->m_fileFormat, param)) == -1) - /* no parameter with that id; ignore */ - continue; - - int type = _af_units[file->m_fileFormat].instrumentParameters[j].type; - - /* - forceLong is true when this routine called by - afGetInstParamLong(). - */ - if (forceLong && type != AU_PVTYPE_LONG) - { - _af_error(AF_BAD_INSTPTYPE, "type of instrument parameter %d is not AU_PVTYPE_LONG", param); - continue; - } - - AUpvsetvaltype(pvlist, i, type); - - switch (type) - { - case AU_PVTYPE_LONG: - AUpvsetval(pvlist, i, &instrument->values[j].l); - break; - case AU_PVTYPE_DOUBLE: - AUpvsetval(pvlist, i, &instrument->values[j].d); - break; - case AU_PVTYPE_PTR: - AUpvsetval(pvlist, i, &instrument->values[j].v); - break; - - default: - _af_error(AF_BAD_INSTPTYPE, "invalid instrument parameter type %d", type); - return; - } - } -} - -/* - afGetInstParams -- get a parameter-value array containing - instrument parameters for the specified instrument chunk -*/ -void afGetInstParams (AFfilehandle file, int inst, AUpvlist pvlist, int npv) -{ - _af_instparam_get(file, inst, pvlist, npv, false); -} - -long afGetInstParamLong (AFfilehandle file, int inst, int param) -{ - long val; - AUpvlist pvlist = AUpvnew(1); - - AUpvsetparam(pvlist, 0, param); - AUpvsetvaltype(pvlist, 0, AU_PVTYPE_LONG); - - _af_instparam_get(file, inst, pvlist, 1, true); - - AUpvgetval(pvlist, 0, &val); - AUpvfree(pvlist); - - return(val); -} - -/* - Search _af_units[fileFormat].instrumentParameters for the instrument - parameter with the specified id. - - Report an error and return -1 if no such instrument parameter - exists. -*/ - -int _af_instparam_index_from_id (int filefmt, int id) -{ - int i; - - for (i = 0; i < _af_units[filefmt].instrumentParameterCount; i++) - if (_af_units[filefmt].instrumentParameters[i].id == id) - break; - - if (i == _af_units[filefmt].instrumentParameterCount) - { - _af_error(AF_BAD_INSTPID, "invalid instrument parameter id %d", - id); - return -1; - } - - return i; -} - -Loop *Instrument::getLoop(int loopID) -{ - for (int i=0; i - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - Instrument.h - - This file declares routines for dealing with instruments. -*/ - -#ifndef INSTRUMENT_H -#define INSTRUMENT_H - -#include "afinternal.h" -#include "audiofile.h" -#include "aupvlist.h" - -struct LoopSetup; -struct Loop; - -struct InstrumentSetup -{ - int id; - - int loopCount; - LoopSetup *loops; - - bool loopSet; - - bool allocateLoops(int count); - void freeLoops(); -}; - -struct Instrument -{ - int id; - - int loopCount; - Loop *loops; - - AFPVu *values; - - Loop *getLoop(int loopID); -}; - -void _af_instparam_get (AFfilehandle file, int instid, AUpvlist pvlist, - int npv, bool forceLong); - -void _af_instparam_set (AFfilehandle file, int instid, AUpvlist pvlist, - int npv); - -int _af_instparam_index_from_id (int fileFormat, int id); - -#endif /* INSTRUMENT_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/Loop.cpp b/tools/audiofile-0.3.6/libaudiofile/Loop.cpp deleted file mode 100644 index 87be4398..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Loop.cpp +++ /dev/null @@ -1,313 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - Loop.cpp - - All routines that operate on loops. -*/ - -#include "config.h" - -#include "FileHandle.h" -#include "Instrument.h" -#include "Setup.h" -#include "afinternal.h" -#include "audiofile.h" -#include "util.h" - -void afInitLoopIDs (AFfilesetup setup, int instid, const int *loopids, int nloops) -{ - if (!_af_filesetup_ok(setup)) - return; - - if (!_af_unique_ids(loopids, nloops, "loop", AF_BAD_LOOPID)) - return; - - InstrumentSetup *instrument = setup->getInstrument(instid); - if (!instrument) - return; - - instrument->freeLoops(); - if (!instrument->allocateLoops(nloops)) - return; - - for (int i=0; i < nloops; i++) - instrument->loops[i].id = loopids[i]; -} - -int afGetLoopIDs (AFfilehandle file, int instid, int *loopids) -{ - if (!_af_filehandle_ok(file)) - return AF_FAIL; - - Instrument *instrument = file->getInstrument(instid); - if (!instrument) - return AF_FAIL; - - if (loopids) - for (int i=0; i < instrument->loopCount; i++) - loopids[i] = instrument->loops[i].id; - - return instrument->loopCount; -} - -/* - getLoop returns pointer to requested loop if it exists, and if - mustWrite is true, only if handle is writable. -*/ - -static Loop *getLoop (AFfilehandle handle, int instid, int loopid, - bool mustWrite) -{ - if (!_af_filehandle_ok(handle)) - return NULL; - - if (mustWrite && !handle->checkCanWrite()) - return NULL; - - Instrument *instrument = handle->getInstrument(instid); - if (!instrument) - return NULL; - - return instrument->getLoop(loopid); -} - -/* - Set loop mode (as in AF_LOOP_MODE_...). -*/ -void afSetLoopMode (AFfilehandle file, int instid, int loopid, int mode) -{ - Loop *loop = getLoop(file, instid, loopid, true); - - if (!loop) - return; - - if (mode != AF_LOOP_MODE_NOLOOP && - mode != AF_LOOP_MODE_FORW && - mode != AF_LOOP_MODE_FORWBAKW) - { - _af_error(AF_BAD_LOOPMODE, "unrecognized loop mode %d", mode); - return; - } - - loop->mode = mode; -} - -/* - Get loop mode (as in AF_LOOP_MODE_...). -*/ -int afGetLoopMode (AFfilehandle file, int instid, int loopid) -{ - Loop *loop = getLoop(file, instid, loopid, false); - - if (!loop) - return -1; - - return loop->mode; -} - -/* - Set loop count. -*/ -int afSetLoopCount (AFfilehandle file, int instid, int loopid, int count) -{ - Loop *loop = getLoop(file, instid, loopid, true); - - if (!loop) - return AF_FAIL; - - if (count < 1) - { - _af_error(AF_BAD_LOOPCOUNT, "invalid loop count: %d", count); - return AF_FAIL; - } - - loop->count = count; - return AF_SUCCEED; -} - -/* - Get loop count. -*/ -int afGetLoopCount(AFfilehandle file, int instid, int loopid) -{ - Loop *loop = getLoop(file, instid, loopid, false); - - if (!loop) - return -1; - - return loop->count; -} - -/* - Set loop start marker id in the file structure -*/ -void afSetLoopStart(AFfilehandle file, int instid, int loopid, int markid) -{ - Loop *loop = getLoop(file, instid, loopid, true); - - if (!loop) - return; - - loop->beginMarker = markid; -} - -/* - Get loop start marker id. -*/ -int afGetLoopStart (AFfilehandle file, int instid, int loopid) -{ - Loop *loop = getLoop(file, instid, loopid, false); - - if (!loop) - return -1; - - return loop->beginMarker; -} - -/* - Set loop start frame in the file structure. -*/ -int afSetLoopStartFrame (AFfilehandle file, int instid, int loopid, AFframecount startFrame) -{ - Loop *loop = getLoop(file, instid, loopid, true); - - if (!loop) - return -1; - - if (startFrame < 0) - { - _af_error(AF_BAD_FRAME, "loop start frame must not be negative"); - return AF_FAIL; - } - - int trackid = loop->trackid; - int beginMarker = loop->beginMarker; - - afSetMarkPosition(file, trackid, beginMarker, startFrame); - return AF_SUCCEED; -} - -/* - Get loop start frame. -*/ -AFframecount afGetLoopStartFrame (AFfilehandle file, int instid, int loopid) -{ - Loop *loop = getLoop(file, instid, loopid, false); - if (!loop) - return -1; - - int trackid = loop->trackid; - int beginMarker = loop->beginMarker; - - return afGetMarkPosition(file, trackid, beginMarker); -} - -/* - Set loop track id. -*/ -void afSetLoopTrack (AFfilehandle file, int instid, int loopid, int track) -{ - Loop *loop = getLoop(file, instid, loopid, true); - - if (!loop) return; - - loop->trackid = track; -} - -/* - Get loop track. -*/ -int afGetLoopTrack (AFfilehandle file, int instid, int loopid) -{ - Loop *loop = getLoop(file, instid, loopid, false); - - if (!loop) - return -1; - - return loop->trackid; -} - -/* - Set loop end frame marker id. -*/ -void afSetLoopEnd (AFfilehandle file, int instid, int loopid, int markid) -{ - Loop *loop = getLoop(file, instid, loopid, true); - - if (!loop) - return; - - loop->endMarker = markid; -} - -/* - Get loop end frame marker id. -*/ -int afGetLoopEnd (AFfilehandle file, int instid, int loopid) -{ - Loop *loop = getLoop(file, instid, loopid, false); - - if (!loop) - return -1; - - return loop->endMarker; -} - -/* - Set loop end frame. -*/ -int afSetLoopEndFrame (AFfilehandle file, int instid, int loopid, AFframecount endFrame) -{ - Loop *loop = getLoop(file, instid, loopid, true); - if (!loop) - return -1; - - if (endFrame < 0) - { - _af_error(AF_BAD_FRAME, "loop end frame must not be negative"); - return AF_FAIL; - } - - int trackid = loop->trackid; - int endMarker = loop->endMarker; - - afSetMarkPosition(file, trackid, endMarker, endFrame); - return AF_SUCCEED; -} - -/* - Get loop end frame. -*/ - -AFframecount afGetLoopEndFrame (AFfilehandle file, int instid, int loopid) -{ - Loop *loop = getLoop(file, instid, loopid, false); - - if (!loop) - return -1; - - int trackid = loop->trackid; - int endMarker = loop->endMarker; - - return afGetMarkPosition(file, trackid, endMarker); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/Makefile b/tools/audiofile-0.3.6/libaudiofile/Makefile deleted file mode 100644 index ba4d5bfa..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Makefile +++ /dev/null @@ -1,1069 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# libaudiofile/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -TESTS = UnitTests$(EXEEXT) -check_PROGRAMS = $(am__EXEEXT_1) -subdir = libaudiofile -DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -am__DEPENDENCIES_1 = -libaudiofile_la_DEPENDENCIES = modules/libmodules.la alac/libalac.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_libaudiofile_la_OBJECTS = AIFF.lo AVR.lo AudioFormat.lo Buffer.lo \ - CAF.lo FLACFile.lo File.lo FileHandle.lo IFF.lo IRCAM.lo \ - Instrument.lo Loop.lo Marker.lo Miscellaneous.lo NIST.lo \ - NeXT.lo PacketTable.lo Raw.lo SampleVision.lo Setup.lo \ - Track.lo UUID.lo VOC.lo WAVE.lo aes.lo af_vfs.lo aupv.lo \ - compression.lo data.lo debug.lo error.lo extended.lo format.lo \ - g711.lo openclose.lo pcm.lo query.lo units.lo util.lo -libaudiofile_la_OBJECTS = $(am_libaudiofile_la_OBJECTS) -libaudiofile_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(libaudiofile_la_LDFLAGS) $(LDFLAGS) -o $@ -am__EXEEXT_1 = UnitTests$(EXEEXT) -am_UnitTests_OBJECTS = UnitTests-UT_RebufferModule.$(OBJEXT) -UnitTests_OBJECTS = $(am_UnitTests_OBJECTS) -UnitTests_DEPENDENCIES = libaudiofile.la $(LIBGTEST) -UnitTests_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(UnitTests_CXXFLAGS) \ - $(CXXFLAGS) $(UnitTests_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libaudiofile_la_SOURCES) $(UnitTests_SOURCES) -DIST_SOURCES = $(libaudiofile_la_SOURCES) $(UnitTests_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -HEADERS = $(include_HEADERS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -SUBDIRS = alac modules -lib_LTLIBRARIES = libaudiofile.la -EXTRA_DIST = audiofile.exports -libaudiofile_la_SOURCES = \ - AIFF.cpp \ - AIFF.h \ - AVR.cpp \ - AVR.h \ - AudioFormat.cpp \ - AudioFormat.h \ - Buffer.cpp \ - Buffer.h \ - CAF.cpp \ - CAF.h \ - Compiler.h \ - FLACFile.cpp \ - FLACFile.h \ - Features.h \ - File.cpp \ - File.h \ - FileHandle.cpp \ - FileHandle.h \ - IFF.cpp \ - IFF.h \ - IRCAM.cpp \ - IRCAM.h \ - Instrument.cpp \ - Instrument.h \ - Loop.cpp \ - Marker.cpp \ - Marker.h \ - Miscellaneous.cpp \ - NIST.cpp \ - NIST.h \ - NeXT.cpp \ - NeXT.h \ - PacketTable.cpp \ - PacketTable.h \ - Raw.cpp \ - Raw.h \ - SampleVision.cpp \ - SampleVision.h \ - Setup.cpp \ - Setup.h \ - Shared.h \ - Tag.h \ - Track.cpp \ - Track.h \ - UUID.cpp \ - UUID.h \ - VOC.cpp \ - VOC.h \ - WAVE.cpp \ - WAVE.h \ - aes.cpp \ - af_vfs.cpp \ - af_vfs.h \ - afinternal.h \ - aupv.c \ - aupvinternal.h \ - aupvlist.h \ - byteorder.h \ - byteorder.h \ - compression.cpp \ - compression.h \ - data.cpp \ - debug.cpp \ - debug.h \ - error.c \ - error.h \ - extended.c \ - extended.h \ - format.cpp \ - g711.c \ - g711.h \ - openclose.cpp \ - pcm.cpp \ - pcm.h \ - query.cpp \ - units.cpp \ - units.h \ - util.cpp \ - util.h \ - util.h - -libaudiofile_la_LIBADD = \ - modules/libmodules.la \ - alac/libalac.la \ - $(COVERAGE_LIBS) \ - $(FLAC_LIBS) \ - -lm - -libaudiofile_la_LDFLAGS = -version-info $(AUDIOFILE_VERSION_INFO) \ - -no-undefined \ - -export-symbols $(srcdir)/audiofile.exports - -include_HEADERS = audiofile.h aupvlist.h af_vfs.h -#VALGRIND_FLAGS = --quiet --leak-check=full --show-reachable=yes --error-exitcode=1 -#TESTS_ENVIRONMENT = $(top_builddir)/libtool --mode=execute $(VALGRIND) $(VALGRIND_FLAGS) -LIBGTEST = ../gtest/libgtest.la -UnitTests_SOURCES = modules/UT_RebufferModule.cpp -UnitTests_LDADD = libaudiofile.la $(LIBGTEST) -UnitTests_CPPFLAGS = -I$(top_srcdir) -UnitTests_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 -UnitTests_LDFLAGS = -static - -# GNU gcc -# AM_CFLAGS = -Wall -g -# SGI MIPSpro cc -# AM_CFLAGS = -fullwarn -g -# No debugging. -AM_CFLAGS = -DNDEBUG -Wall $(WERROR_CFLAGS) $(COVERAGE_CFLAGS) $(FLAC_CFLAGS) -fvisibility=hidden -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -CLEANFILES = *.gcda *.gcno -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libaudiofile/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libaudiofile/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libaudiofile.la: $(libaudiofile_la_OBJECTS) $(libaudiofile_la_DEPENDENCIES) $(EXTRA_libaudiofile_la_DEPENDENCIES) - $(libaudiofile_la_LINK) -rpath $(libdir) $(libaudiofile_la_OBJECTS) $(libaudiofile_la_LIBADD) $(LIBS) - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -UnitTests$(EXEEXT): $(UnitTests_OBJECTS) $(UnitTests_DEPENDENCIES) $(EXTRA_UnitTests_DEPENDENCIES) - @rm -f UnitTests$(EXEEXT) - $(UnitTests_LINK) $(UnitTests_OBJECTS) $(UnitTests_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/AIFF.Plo -include ./$(DEPDIR)/AVR.Plo -include ./$(DEPDIR)/AudioFormat.Plo -include ./$(DEPDIR)/Buffer.Plo -include ./$(DEPDIR)/CAF.Plo -include ./$(DEPDIR)/FLACFile.Plo -include ./$(DEPDIR)/File.Plo -include ./$(DEPDIR)/FileHandle.Plo -include ./$(DEPDIR)/IFF.Plo -include ./$(DEPDIR)/IRCAM.Plo -include ./$(DEPDIR)/Instrument.Plo -include ./$(DEPDIR)/Loop.Plo -include ./$(DEPDIR)/Marker.Plo -include ./$(DEPDIR)/Miscellaneous.Plo -include ./$(DEPDIR)/NIST.Plo -include ./$(DEPDIR)/NeXT.Plo -include ./$(DEPDIR)/PacketTable.Plo -include ./$(DEPDIR)/Raw.Plo -include ./$(DEPDIR)/SampleVision.Plo -include ./$(DEPDIR)/Setup.Plo -include ./$(DEPDIR)/Track.Plo -include ./$(DEPDIR)/UUID.Plo -include ./$(DEPDIR)/UnitTests-UT_RebufferModule.Po -include ./$(DEPDIR)/VOC.Plo -include ./$(DEPDIR)/WAVE.Plo -include ./$(DEPDIR)/aes.Plo -include ./$(DEPDIR)/af_vfs.Plo -include ./$(DEPDIR)/aupv.Plo -include ./$(DEPDIR)/compression.Plo -include ./$(DEPDIR)/data.Plo -include ./$(DEPDIR)/debug.Plo -include ./$(DEPDIR)/error.Plo -include ./$(DEPDIR)/extended.Plo -include ./$(DEPDIR)/format.Plo -include ./$(DEPDIR)/g711.Plo -include ./$(DEPDIR)/openclose.Plo -include ./$(DEPDIR)/pcm.Plo -include ./$(DEPDIR)/query.Plo -include ./$(DEPDIR)/units.Plo -include ./$(DEPDIR)/util.Plo - -.c.o: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: - $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LTCOMPILE) -c -o $@ $< - -.cpp.o: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: - $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(LTCXXCOMPILE) -c -o $@ $< - -UnitTests-UT_RebufferModule.o: modules/UT_RebufferModule.cpp - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(UnitTests_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-UT_RebufferModule.o -MD -MP -MF $(DEPDIR)/UnitTests-UT_RebufferModule.Tpo -c -o UnitTests-UT_RebufferModule.o `test -f 'modules/UT_RebufferModule.cpp' || echo '$(srcdir)/'`modules/UT_RebufferModule.cpp - $(am__mv) $(DEPDIR)/UnitTests-UT_RebufferModule.Tpo $(DEPDIR)/UnitTests-UT_RebufferModule.Po -# source='modules/UT_RebufferModule.cpp' object='UnitTests-UT_RebufferModule.o' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(UnitTests_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-UT_RebufferModule.o `test -f 'modules/UT_RebufferModule.cpp' || echo '$(srcdir)/'`modules/UT_RebufferModule.cpp - -UnitTests-UT_RebufferModule.obj: modules/UT_RebufferModule.cpp - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(UnitTests_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-UT_RebufferModule.obj -MD -MP -MF $(DEPDIR)/UnitTests-UT_RebufferModule.Tpo -c -o UnitTests-UT_RebufferModule.obj `if test -f 'modules/UT_RebufferModule.cpp'; then $(CYGPATH_W) 'modules/UT_RebufferModule.cpp'; else $(CYGPATH_W) '$(srcdir)/modules/UT_RebufferModule.cpp'; fi` - $(am__mv) $(DEPDIR)/UnitTests-UT_RebufferModule.Tpo $(DEPDIR)/UnitTests-UT_RebufferModule.Po -# source='modules/UT_RebufferModule.cpp' object='UnitTests-UT_RebufferModule.obj' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(UnitTests_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-UT_RebufferModule.obj `if test -f 'modules/UT_RebufferModule.cpp'; then $(CYGPATH_W) 'modules/UT_RebufferModule.cpp'; else $(CYGPATH_W) '$(srcdir)/modules/UT_RebufferModule.cpp'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-recursive -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-includeHEADERS - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool ctags ctags-recursive distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-includeHEADERS install-info \ - install-info-am install-libLTLIBRARIES install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-includeHEADERS uninstall-libLTLIBRARIES - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/libaudiofile/Makefile.am b/tools/audiofile-0.3.6/libaudiofile/Makefile.am deleted file mode 100644 index d502cf26..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Makefile.am +++ /dev/null @@ -1,127 +0,0 @@ -SUBDIRS = alac modules - -lib_LTLIBRARIES = libaudiofile.la - -EXTRA_DIST = audiofile.exports - -libaudiofile_la_SOURCES = \ - AIFF.cpp \ - AIFF.h \ - AVR.cpp \ - AVR.h \ - AudioFormat.cpp \ - AudioFormat.h \ - Buffer.cpp \ - Buffer.h \ - CAF.cpp \ - CAF.h \ - Compiler.h \ - FLACFile.cpp \ - FLACFile.h \ - Features.h \ - File.cpp \ - File.h \ - FileHandle.cpp \ - FileHandle.h \ - IFF.cpp \ - IFF.h \ - IRCAM.cpp \ - IRCAM.h \ - Instrument.cpp \ - Instrument.h \ - Loop.cpp \ - Marker.cpp \ - Marker.h \ - Miscellaneous.cpp \ - NIST.cpp \ - NIST.h \ - NeXT.cpp \ - NeXT.h \ - PacketTable.cpp \ - PacketTable.h \ - Raw.cpp \ - Raw.h \ - SampleVision.cpp \ - SampleVision.h \ - Setup.cpp \ - Setup.h \ - Shared.h \ - Tag.h \ - Track.cpp \ - Track.h \ - UUID.cpp \ - UUID.h \ - VOC.cpp \ - VOC.h \ - WAVE.cpp \ - WAVE.h \ - aes.cpp \ - af_vfs.cpp \ - af_vfs.h \ - afinternal.h \ - aupv.c \ - aupvinternal.h \ - aupvlist.h \ - byteorder.h \ - byteorder.h \ - compression.cpp \ - compression.h \ - data.cpp \ - debug.cpp \ - debug.h \ - error.c \ - error.h \ - extended.c \ - extended.h \ - format.cpp \ - g711.c \ - g711.h \ - openclose.cpp \ - pcm.cpp \ - pcm.h \ - query.cpp \ - units.cpp \ - units.h \ - util.cpp \ - util.h \ - util.h - -libaudiofile_la_LIBADD = \ - modules/libmodules.la \ - alac/libalac.la \ - $(COVERAGE_LIBS) \ - $(FLAC_LIBS) \ - -lm - -libaudiofile_la_LDFLAGS = -version-info $(AUDIOFILE_VERSION_INFO) \ - -no-undefined \ - -export-symbols $(srcdir)/audiofile.exports - -include_HEADERS = audiofile.h aupvlist.h af_vfs.h - -TESTS = UnitTests - -check_PROGRAMS = $(TESTS) - -if ENABLE_VALGRIND -VALGRIND_FLAGS = --quiet --leak-check=full --show-reachable=yes --error-exitcode=1 -TESTS_ENVIRONMENT = $(top_builddir)/libtool --mode=execute $(VALGRIND) $(VALGRIND_FLAGS) -endif - -LIBGTEST = ../gtest/libgtest.la - -UnitTests_SOURCES = modules/UT_RebufferModule.cpp -UnitTests_LDADD = libaudiofile.la $(LIBGTEST) -UnitTests_CPPFLAGS = -I$(top_srcdir) -UnitTests_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 -UnitTests_LDFLAGS = -static - -# GNU gcc -# AM_CFLAGS = -Wall -g -# SGI MIPSpro cc -# AM_CFLAGS = -fullwarn -g -# No debugging. -AM_CFLAGS = -DNDEBUG -Wall $(WERROR_CFLAGS) $(COVERAGE_CFLAGS) $(FLAC_CFLAGS) -fvisibility=hidden -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden - -CLEANFILES = *.gcda *.gcno diff --git a/tools/audiofile-0.3.6/libaudiofile/Makefile.in b/tools/audiofile-0.3.6/libaudiofile/Makefile.in deleted file mode 100644 index ebe40778..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Makefile.in +++ /dev/null @@ -1,1069 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -TESTS = UnitTests$(EXEEXT) -check_PROGRAMS = $(am__EXEEXT_1) -subdir = libaudiofile -DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -am__DEPENDENCIES_1 = -libaudiofile_la_DEPENDENCIES = modules/libmodules.la alac/libalac.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_libaudiofile_la_OBJECTS = AIFF.lo AVR.lo AudioFormat.lo Buffer.lo \ - CAF.lo FLACFile.lo File.lo FileHandle.lo IFF.lo IRCAM.lo \ - Instrument.lo Loop.lo Marker.lo Miscellaneous.lo NIST.lo \ - NeXT.lo PacketTable.lo Raw.lo SampleVision.lo Setup.lo \ - Track.lo UUID.lo VOC.lo WAVE.lo aes.lo af_vfs.lo aupv.lo \ - compression.lo data.lo debug.lo error.lo extended.lo format.lo \ - g711.lo openclose.lo pcm.lo query.lo units.lo util.lo -libaudiofile_la_OBJECTS = $(am_libaudiofile_la_OBJECTS) -libaudiofile_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(libaudiofile_la_LDFLAGS) $(LDFLAGS) -o $@ -am__EXEEXT_1 = UnitTests$(EXEEXT) -am_UnitTests_OBJECTS = UnitTests-UT_RebufferModule.$(OBJEXT) -UnitTests_OBJECTS = $(am_UnitTests_OBJECTS) -UnitTests_DEPENDENCIES = libaudiofile.la $(LIBGTEST) -UnitTests_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(UnitTests_CXXFLAGS) \ - $(CXXFLAGS) $(UnitTests_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libaudiofile_la_SOURCES) $(UnitTests_SOURCES) -DIST_SOURCES = $(libaudiofile_la_SOURCES) $(UnitTests_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -HEADERS = $(include_HEADERS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = alac modules -lib_LTLIBRARIES = libaudiofile.la -EXTRA_DIST = audiofile.exports -libaudiofile_la_SOURCES = \ - AIFF.cpp \ - AIFF.h \ - AVR.cpp \ - AVR.h \ - AudioFormat.cpp \ - AudioFormat.h \ - Buffer.cpp \ - Buffer.h \ - CAF.cpp \ - CAF.h \ - Compiler.h \ - FLACFile.cpp \ - FLACFile.h \ - Features.h \ - File.cpp \ - File.h \ - FileHandle.cpp \ - FileHandle.h \ - IFF.cpp \ - IFF.h \ - IRCAM.cpp \ - IRCAM.h \ - Instrument.cpp \ - Instrument.h \ - Loop.cpp \ - Marker.cpp \ - Marker.h \ - Miscellaneous.cpp \ - NIST.cpp \ - NIST.h \ - NeXT.cpp \ - NeXT.h \ - PacketTable.cpp \ - PacketTable.h \ - Raw.cpp \ - Raw.h \ - SampleVision.cpp \ - SampleVision.h \ - Setup.cpp \ - Setup.h \ - Shared.h \ - Tag.h \ - Track.cpp \ - Track.h \ - UUID.cpp \ - UUID.h \ - VOC.cpp \ - VOC.h \ - WAVE.cpp \ - WAVE.h \ - aes.cpp \ - af_vfs.cpp \ - af_vfs.h \ - afinternal.h \ - aupv.c \ - aupvinternal.h \ - aupvlist.h \ - byteorder.h \ - byteorder.h \ - compression.cpp \ - compression.h \ - data.cpp \ - debug.cpp \ - debug.h \ - error.c \ - error.h \ - extended.c \ - extended.h \ - format.cpp \ - g711.c \ - g711.h \ - openclose.cpp \ - pcm.cpp \ - pcm.h \ - query.cpp \ - units.cpp \ - units.h \ - util.cpp \ - util.h \ - util.h - -libaudiofile_la_LIBADD = \ - modules/libmodules.la \ - alac/libalac.la \ - $(COVERAGE_LIBS) \ - $(FLAC_LIBS) \ - -lm - -libaudiofile_la_LDFLAGS = -version-info $(AUDIOFILE_VERSION_INFO) \ - -no-undefined \ - -export-symbols $(srcdir)/audiofile.exports - -include_HEADERS = audiofile.h aupvlist.h af_vfs.h -@ENABLE_VALGRIND_TRUE@VALGRIND_FLAGS = --quiet --leak-check=full --show-reachable=yes --error-exitcode=1 -@ENABLE_VALGRIND_TRUE@TESTS_ENVIRONMENT = $(top_builddir)/libtool --mode=execute $(VALGRIND) $(VALGRIND_FLAGS) -LIBGTEST = ../gtest/libgtest.la -UnitTests_SOURCES = modules/UT_RebufferModule.cpp -UnitTests_LDADD = libaudiofile.la $(LIBGTEST) -UnitTests_CPPFLAGS = -I$(top_srcdir) -UnitTests_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 -UnitTests_LDFLAGS = -static - -# GNU gcc -# AM_CFLAGS = -Wall -g -# SGI MIPSpro cc -# AM_CFLAGS = -fullwarn -g -# No debugging. -AM_CFLAGS = -DNDEBUG -Wall $(WERROR_CFLAGS) $(COVERAGE_CFLAGS) $(FLAC_CFLAGS) -fvisibility=hidden -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -CLEANFILES = *.gcda *.gcno -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libaudiofile/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libaudiofile/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libaudiofile.la: $(libaudiofile_la_OBJECTS) $(libaudiofile_la_DEPENDENCIES) $(EXTRA_libaudiofile_la_DEPENDENCIES) - $(libaudiofile_la_LINK) -rpath $(libdir) $(libaudiofile_la_OBJECTS) $(libaudiofile_la_LIBADD) $(LIBS) - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -UnitTests$(EXEEXT): $(UnitTests_OBJECTS) $(UnitTests_DEPENDENCIES) $(EXTRA_UnitTests_DEPENDENCIES) - @rm -f UnitTests$(EXEEXT) - $(UnitTests_LINK) $(UnitTests_OBJECTS) $(UnitTests_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AIFF.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AVR.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AudioFormat.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Buffer.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CAF.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FLACFile.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/File.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileHandle.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFF.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IRCAM.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Instrument.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Loop.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Marker.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Miscellaneous.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NIST.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NeXT.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PacketTable.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Raw.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SampleVision.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Setup.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Track.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UUID.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-UT_RebufferModule.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VOC.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WAVE.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aes.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/af_vfs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aupv.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compression.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extended.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/g711.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openclose.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/query.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/units.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< - -UnitTests-UT_RebufferModule.o: modules/UT_RebufferModule.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(UnitTests_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-UT_RebufferModule.o -MD -MP -MF $(DEPDIR)/UnitTests-UT_RebufferModule.Tpo -c -o UnitTests-UT_RebufferModule.o `test -f 'modules/UT_RebufferModule.cpp' || echo '$(srcdir)/'`modules/UT_RebufferModule.cpp -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/UnitTests-UT_RebufferModule.Tpo $(DEPDIR)/UnitTests-UT_RebufferModule.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='modules/UT_RebufferModule.cpp' object='UnitTests-UT_RebufferModule.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(UnitTests_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-UT_RebufferModule.o `test -f 'modules/UT_RebufferModule.cpp' || echo '$(srcdir)/'`modules/UT_RebufferModule.cpp - -UnitTests-UT_RebufferModule.obj: modules/UT_RebufferModule.cpp -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(UnitTests_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-UT_RebufferModule.obj -MD -MP -MF $(DEPDIR)/UnitTests-UT_RebufferModule.Tpo -c -o UnitTests-UT_RebufferModule.obj `if test -f 'modules/UT_RebufferModule.cpp'; then $(CYGPATH_W) 'modules/UT_RebufferModule.cpp'; else $(CYGPATH_W) '$(srcdir)/modules/UT_RebufferModule.cpp'; fi` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/UnitTests-UT_RebufferModule.Tpo $(DEPDIR)/UnitTests-UT_RebufferModule.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='modules/UT_RebufferModule.cpp' object='UnitTests-UT_RebufferModule.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(UnitTests_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-UT_RebufferModule.obj `if test -f 'modules/UT_RebufferModule.cpp'; then $(CYGPATH_W) 'modules/UT_RebufferModule.cpp'; else $(CYGPATH_W) '$(srcdir)/modules/UT_RebufferModule.cpp'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-recursive -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-includeHEADERS - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool ctags ctags-recursive distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-includeHEADERS install-info \ - install-info-am install-libLTLIBRARIES install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-includeHEADERS uninstall-libLTLIBRARIES - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/libaudiofile/Marker.cpp b/tools/audiofile-0.3.6/libaudiofile/Marker.cpp deleted file mode 100644 index e36fa945..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Marker.cpp +++ /dev/null @@ -1,257 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - Marker.cpp - - This file contains routines for dealing with loop markers. -*/ - -#include "config.h" -#include "Marker.h" - -#include -#include -#include - -#include "FileHandle.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "util.h" - -void afInitMarkIDs(AFfilesetup setup, int trackid, const int *markids, int nmarks) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - if (track->markers != NULL) - { - for (int i=0; imarkerCount; i++) - { - if (track->markers[i].name != NULL) - free(track->markers[i].name); - if (track->markers[i].comment != NULL) - free(track->markers[i].comment); - } - free(track->markers); - } - - track->markers = (MarkerSetup *) _af_calloc(nmarks, sizeof (struct MarkerSetup)); - track->markerCount = nmarks; - - for (int i=0; imarkers[i].id = markids[i]; - track->markers[i].name = _af_strdup(""); - track->markers[i].comment = _af_strdup(""); - } - - track->markersSet = true; -} - -void afInitMarkName(AFfilesetup setup, int trackid, int markid, - const char *namestr) -{ - int markno; - int length; - - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - for (markno=0; marknomarkerCount; markno++) - { - if (track->markers[markno].id == markid) - break; - } - - if (markno == track->markerCount) - { - _af_error(AF_BAD_MARKID, "no marker id %d for file setup", markid); - return; - } - - length = strlen(namestr); - if (length > 255) - { - _af_error(AF_BAD_STRLEN, - "warning: marker name truncated to 255 characters"); - length = 255; - } - - if (track->markers[markno].name) - free(track->markers[markno].name); - if ((track->markers[markno].name = (char *) _af_malloc(length+1)) == NULL) - return; - strncpy(track->markers[markno].name, namestr, length); - /* - The null terminator is not set by strncpy if - strlen(namestr) > length. Set it here. - */ - track->markers[markno].name[length] = '\0'; -} - -void afInitMarkComment(AFfilesetup setup, int trackid, int markid, - const char *commstr) -{ - int markno; - int length; - - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - for (markno=0; marknomarkerCount; markno++) - { - if (track->markers[markno].id == markid) - break; - } - - if (markno == track->markerCount) - { - _af_error(AF_BAD_MARKID, "no marker id %d for file setup", markid); - return; - } - - length = strlen(commstr); - - if (track->markers[markno].comment) - free(track->markers[markno].comment); - if ((track->markers[markno].comment = (char *) _af_malloc(length+1)) == NULL) - return; - strcpy(track->markers[markno].comment, commstr); -} - -char *afGetMarkName (AFfilehandle file, int trackid, int markid) -{ - if (!_af_filehandle_ok(file)) - return NULL; - - Track *track = file->getTrack(trackid); - if (!track) - return NULL; - - Marker *marker = track->getMarker(markid); - if (!marker) - return NULL; - - return marker->name; -} - -char *afGetMarkComment (AFfilehandle file, int trackid, int markid) -{ - if (!_af_filehandle_ok(file)) - return NULL; - - Track *track = file->getTrack(trackid); - if (!track) - return NULL; - - Marker *marker = track->getMarker(markid); - if (!marker) - return NULL; - - return marker->comment; -} - -void afSetMarkPosition (AFfilehandle file, int trackid, int markid, - AFframecount position) -{ - if (!_af_filehandle_ok(file)) - return; - - if (!file->checkCanWrite()) - return; - - Track *track = file->getTrack(trackid); - if (!track) - return; - - Marker *marker = track->getMarker(markid); - if (!marker) - return; - - if (position < 0) - { - _af_error(AF_BAD_MARKPOS, "invalid marker position %jd", - static_cast(position)); - position = 0; - } - - marker->position = position; -} - -int afGetMarkIDs (AFfilehandle file, int trackid, int markids[]) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - if (markids != NULL) - { - for (int i=0; imarkerCount; i++) - { - markids[i] = track->markers[i].id; - } - } - - return track->markerCount; -} - -AFframecount afGetMarkPosition (AFfilehandle file, int trackid, int markid) -{ - if (!_af_filehandle_ok(file)) - return 0L; - - Track *track = file->getTrack(trackid); - if (!track) - return 0L; - - Marker *marker = track->getMarker(markid); - if (!marker) - return 0L; - - return marker->position; -} - -Marker *_af_marker_new (int count) -{ - Marker *markers = (Marker *) _af_calloc(count, sizeof (Marker)); - if (markers == NULL) - return NULL; - - return markers; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/Marker.h b/tools/audiofile-0.3.6/libaudiofile/Marker.h deleted file mode 100644 index 9dec093f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Marker.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef MARKER_H -#define MARKER_H - -struct MarkerSetup -{ - int id; - char *name, *comment; -}; - -struct Marker -{ - short id; - unsigned long position; - char *name; - char *comment; -}; - -struct Track; - -Marker *_af_marker_new (int count); -Marker *_af_marker_find_by_id (Track *track, int id); - -#endif /* MARKER_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/Miscellaneous.cpp b/tools/audiofile-0.3.6/libaudiofile/Miscellaneous.cpp deleted file mode 100644 index 3e25eb6c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Miscellaneous.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - Miscellaneous.cpp - - This file contains routines for dealing with the Audio File - Library's internal miscellaneous data types. -*/ - -#include "config.h" - -#include -#include -#include -#include - -#include "FileHandle.h" -#include "Setup.h" -#include "afinternal.h" -#include "audiofile.h" -#include "util.h" - -void afInitMiscIDs (AFfilesetup setup, const int *ids, int nids) -{ - if (!_af_filesetup_ok(setup)) - return; - - if (setup->miscellaneous != NULL) - { - free(setup->miscellaneous); - } - - setup->miscellaneousCount = nids; - - if (nids == 0) - setup->miscellaneous = NULL; - else - { - setup->miscellaneous = (MiscellaneousSetup *) _af_calloc(nids, - sizeof (MiscellaneousSetup)); - - if (setup->miscellaneous == NULL) - return; - - for (int i=0; imiscellaneous[i].id = ids[i]; - setup->miscellaneous[i].type = 0; - setup->miscellaneous[i].size = 0; - } - } - - setup->miscellaneousSet = true; -} - -int afGetMiscIDs (AFfilehandle file, int *ids) -{ - if (!_af_filehandle_ok(file)) - return -1; - - if (ids != NULL) - { - for (int i=0; im_miscellaneousCount; i++) - { - ids[i] = file->m_miscellaneous[i].id; - } - } - - return file->m_miscellaneousCount; -} - -void afInitMiscType (AFfilesetup setup, int miscellaneousid, int type) -{ - if (!_af_filesetup_ok(setup)) - return; - - MiscellaneousSetup *miscellaneous = setup->getMiscellaneous(miscellaneousid); - if (miscellaneous) - miscellaneous->type = type; -} - -int afGetMiscType (AFfilehandle file, int miscellaneousid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); - if (miscellaneous) - return miscellaneous->type; - return -1; -} - -void afInitMiscSize (AFfilesetup setup, int miscellaneousid, int size) -{ - if (!_af_filesetup_ok(setup)) - return; - - MiscellaneousSetup *miscellaneous = setup->getMiscellaneous(miscellaneousid); - if (miscellaneous) - miscellaneous->size = size; -} - -int afGetMiscSize (AFfilehandle file, int miscellaneousid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); - if (miscellaneous) - return miscellaneous->size; - return -1; -} - -int afWriteMisc (AFfilehandle file, int miscellaneousid, const void *buf, int bytes) -{ - if (!_af_filehandle_ok(file)) - return -1; - - if (!file->checkCanWrite()) - return -1; - - Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); - if (!miscellaneous) - return -1; - - if (bytes <= 0) - { - _af_error(AF_BAD_MISCSIZE, "invalid size (%d) for miscellaneous chunk", bytes); - return -1; - } - - if (miscellaneous->buffer == NULL && miscellaneous->size != 0) - { - miscellaneous->buffer = _af_malloc(miscellaneous->size); - if (miscellaneous->buffer == NULL) - return -1; - memset(miscellaneous->buffer, 0, miscellaneous->size); - } - - int localsize = std::min(bytes, - miscellaneous->size - miscellaneous->position); - memcpy((char *) miscellaneous->buffer + miscellaneous->position, - buf, localsize); - miscellaneous->position += localsize; - return localsize; -} - -int afReadMisc (AFfilehandle file, int miscellaneousid, void *buf, int bytes) -{ - if (!_af_filehandle_ok(file)) - return -1; - - if (!file->checkCanRead()) - return -1; - - Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); - if (!miscellaneous) - return -1; - - if (bytes <= 0) - { - _af_error(AF_BAD_MISCSIZE, "invalid size (%d) for miscellaneous chunk", bytes); - return -1; - } - - int localsize = std::min(bytes, - miscellaneous->size - miscellaneous->position); - memcpy(buf, (char *) miscellaneous->buffer + miscellaneous->position, - localsize); - miscellaneous->position += localsize; - return localsize; -} - -int afSeekMisc (AFfilehandle file, int miscellaneousid, int offset) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); - if (!miscellaneous) - return -1; - - if (offset >= miscellaneous->size) - { - _af_error(AF_BAD_MISCSEEK, - "offset %d too big for miscellaneous chunk %d " - "(%d data bytes)", - offset, miscellaneousid, miscellaneous->size); - return -1; - } - - miscellaneous->position = offset; - - return offset; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/NIST.cpp b/tools/audiofile-0.3.6/libaudiofile/NIST.cpp deleted file mode 100644 index ba32c3c7..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/NIST.cpp +++ /dev/null @@ -1,467 +0,0 @@ -/* - Audio File Library - Copyright (C) 2004, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - NIST.cpp - - This file contains code for reading NIST SPHERE files. -*/ - -#include "config.h" -#include "NIST.h" - -#include -#include -#include -#include -#include - -#include "Setup.h" -#include "Track.h" -#include "File.h" -#include "afinternal.h" -#include "audiofile.h" -#include "byteorder.h" -#include "util.h" - -#define NIST_SPHERE_HEADER_LENGTH 1024 -#define NIST_SPHERE_MAX_FIELD_LENGTH 80 - -static const _AFfilesetup nistDefaultFileSetup = -{ - _AF_VALID_FILESETUP, /* valid */ - AF_FILE_NIST_SPHERE, /* fileFormat */ - true, /* trackSet */ - true, /* instrumentSet */ - true, /* miscellaneousSet */ - 1, /* trackCount */ - NULL, /* tracks */ - 0, /* instrumentCount */ - NULL, /* instruments */ - 0, /* miscellaneousCount */ - NULL /* miscellaneous */ -}; - -bool NISTFile::recognize(File *fh) -{ - uint8_t buffer[16]; - - fh->seek(0, File::SeekFromBeginning); - - if (fh->read(buffer, 16) != 16) - return false; - - /* Check to see if the file's magic number matches. */ - if (memcmp(buffer, "NIST_1A\n 1024\n", 16) == 0) - return true; - - return false; -} - -AFfilesetup NISTFile::completeSetup(AFfilesetup setup) -{ - TrackSetup *track; - - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "NIST SPHERE file must have 1 track"); - return AF_NULL_FILESETUP; - } - - track = &setup->tracks[0]; - - if (track->sampleFormatSet) - { - /* XXXmpruett: Currently we allow only 1-16 bit sample width. */ - if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP && - (track->f.sampleWidth < 1 || track->f.sampleWidth > 16)) - { - _af_error(AF_BAD_WIDTH, - "invalid sample width %d bits for NIST SPHERE format", - track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - else if (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) - { - _af_error(AF_BAD_SAMPFMT, - "NIST SPHERE format does not support unsigned data"); - return AF_NULL_FILESETUP; - } - else if (track->f.sampleFormat == AF_SAMPFMT_FLOAT || - track->f.sampleFormat == AF_SAMPFMT_DOUBLE) - { - _af_error(AF_BAD_SAMPFMT, - "NIST SPHERE format does not support floating-point data"); - return AF_NULL_FILESETUP; - } - } - - if (track->rateSet && track->f.sampleRate <= 0.0) - { - _af_error(AF_BAD_RATE, - "invalid sample rate %.30g for NIST SPHERE file", - track->f.sampleRate); - return AF_NULL_FILESETUP; - } - - if (track->compressionSet && track->f.compressionType != AF_COMPRESSION_NONE && - track->f.compressionType != AF_COMPRESSION_G711_ULAW && - track->f.compressionType != AF_COMPRESSION_G711_ALAW) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, - "NIST SPHERE format supports only G.711 u-law or A-law compression"); - return AF_NULL_FILESETUP; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "NIST SPHERE file cannot have AES data"); - return AF_NULL_FILESETUP; - } - - if (track->markersSet && track->markerCount != 0) - { - _af_error(AF_BAD_NUMMARKS, "NIST SPHERE format does not support markers"); - return AF_NULL_FILESETUP; - } - - if (setup->instrumentSet && setup->instrumentCount != 0) - { - _af_error(AF_BAD_NUMINSTS, "NIST SPHERE format does not support instruments"); - return AF_NULL_FILESETUP; - } - - /* XXXmpruett: We don't support miscellaneous chunks for now. */ - if (setup->miscellaneousSet && setup->miscellaneousCount != 0) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "NIST SPHERE format does not currently support miscellaneous chunks"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &nistDefaultFileSetup, true); -} - -static bool nist_header_read_int (const char *header, const char *key, int *val) -{ - const char *cp; - char keystring[256], scanstring[256]; - - snprintf(keystring, 256, "\n%s -i", key); - - if ((cp = strstr(header, keystring)) != NULL) - { - snprintf(scanstring, 256, "\n%s -i %%d", key); - sscanf(cp, scanstring, val); - return true; - } - - return false; -} - -static bool nist_header_read_string (const char *header, const char *key, int *length, char *val) -{ - const char *cp; - char keystring[256], scanstring[256]; - - snprintf(keystring, 256, "\n%s -s", key); - - if ((cp = strstr(header, keystring)) != NULL) - { - snprintf(scanstring, 256, "\n%s -s%%d %%79s", key); - sscanf(cp, scanstring, length, val); - return true; - } - - return false; -} - -status NISTFile::readInit(AFfilesetup setup) -{ - char header[NIST_SPHERE_HEADER_LENGTH + 1]; - int intval; - char strval[NIST_SPHERE_MAX_FIELD_LENGTH]; - int sample_n_bytes; - - m_fh->seek(0, File::SeekFromBeginning); - - if (m_fh->read(header, NIST_SPHERE_HEADER_LENGTH) != NIST_SPHERE_HEADER_LENGTH) - { - _af_error(AF_BAD_READ, "Could not read NIST SPHERE file header"); - return AF_FAIL; - } - - header[NIST_SPHERE_HEADER_LENGTH] = '\0'; - - if (memcmp(header, "NIST_1A\n 1024\n", 16) != 0) - { - _af_error(AF_BAD_FILEFMT, "Bad NIST SPHERE file header"); - return AF_FAIL; - } - - Track *track = allocateTrack(); - if (!track) - return AF_FAIL; - - // Read channel count. - if (nist_header_read_int(header, "channel_count", &intval)) - { - if (intval < 1) - { - _af_error(AF_BAD_CHANNELS, "invalid number of channels %d", - intval); - return AF_FAIL; - } - track->f.channelCount = intval; - } - else - { - _af_error(AF_BAD_HEADER, "number of channels not specified"); - return AF_FAIL; - } - - // Read number of bytes per sample. - if (!nist_header_read_int(header, "sample_n_bytes", &sample_n_bytes)) - { - _af_error(AF_BAD_HEADER, "bytes per sample not specified"); - return AF_FAIL; - } - - track->f.framesPerPacket = 1; - - /* - Since some older NIST SPHERE files lack a sample_coding - field, if sample_n_bytes is 1, assume mu-law; - otherwise assume linear PCM. - */ - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - if (sample_n_bytes == 1) - { - track->f.compressionType = AF_COMPRESSION_G711_ULAW; - track->f.sampleWidth = 16; - track->f.bytesPerPacket = track->f.channelCount; - } - else - { - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.sampleWidth = sample_n_bytes * 8; - track->f.computeBytesPerPacketPCM(); - } - - if (nist_header_read_string(header, "sample_coding", &intval, strval)) - { - if (strcmp(strval, "pcm") == 0) - ; - else if (strcmp(strval, "ulaw") == 0 || strcmp(strval, "mu-law") == 0) - { - track->f.compressionType = AF_COMPRESSION_G711_ULAW; - track->f.sampleWidth = 16; - } - else if (strcmp(strval, "alaw") == 0) - { - track->f.compressionType = AF_COMPRESSION_G711_ALAW; - track->f.sampleWidth = 16; - } - else - { - _af_error(AF_BAD_SAMPFMT, - "unrecognized NIST SPHERE sample format %s", strval); - return AF_FAIL; - } - } - - // Read string representing byte order. - if (nist_header_read_string(header, "sample_byte_format", &intval, strval)) - { - if (intval > 1) - { - if (strncmp(strval, "01", 2) == 0) - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - else - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - } - else - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - } - else - { - /* - Fail if this field is not present and sample - width is more than one byte. - */ - if (track->f.compressionType == AF_COMPRESSION_NONE && - track->f.sampleWidth > 8) - { - _af_error(AF_BAD_HEADER, "sample byte order not specified"); - return AF_FAIL; - } - } - - // Read significant bits per sample. - if (nist_header_read_int(header, "sample_sig_bits", &intval)) - { - if (intval < 1 || intval > 32) - { - _af_error(AF_BAD_WIDTH, "invalid sample width %d bits\n", - intval); - return AF_FAIL; - } - - /* - Use specified significant bits value as the - sample width for uncompressed data as long - as the number of bytes per sample remains - unchanged. - */ - if (track->f.compressionType == AF_COMPRESSION_NONE && - (intval + 7) / 8 == sample_n_bytes) - { - track->f.sampleWidth = intval; - } - } - - // Read sample rate. - if (nist_header_read_int(header, "sample_rate", &intval)) - { - if (intval <= 0) - { - _af_error(AF_BAD_RATE, "invalid sample rate %d Hz\n", intval); - return AF_FAIL; - } - track->f.sampleRate = intval; - } - else - { - _af_error(AF_BAD_HEADER, "sample rate not specified"); - return AF_FAIL; - } - - // Read sample count. - if (nist_header_read_int(header, "sample_count", &intval)) - { - track->totalfframes = intval; - } - else - { - _af_error(AF_BAD_HEADER, "number of samples not specified"); - return AF_FAIL; - } - - if (_af_set_sample_format(&track->f, track->f.sampleFormat, - track->f.sampleWidth) == AF_FAIL) - { - return AF_FAIL; - } - - track->fpos_first_frame = NIST_SPHERE_HEADER_LENGTH; - track->data_size = m_fh->length() - NIST_SPHERE_HEADER_LENGTH; - track->nextfframe = 0; - track->fpos_next_frame = track->fpos_first_frame; - - return AF_SUCCEED; -} - -static const char *sample_byte_format (AudioFormat *fmt) -{ - int nbytes = _af_format_sample_size(fmt, false); - - assert(nbytes == 1 || nbytes == 2); - - if (nbytes == 1) - return "0"; - else if (nbytes == 2) - { - if (fmt->byteOrder == AF_BYTEORDER_BIGENDIAN) - return "10"; - else - return "01"; - } - - /* NOTREACHED */ - return NULL; -} - -static const char *sample_coding (AudioFormat *fmt) -{ - if (fmt->compressionType == AF_COMPRESSION_NONE) - return "pcm"; - else if (fmt->compressionType == AF_COMPRESSION_G711_ULAW) - return "ulaw"; - else if (fmt->compressionType == AF_COMPRESSION_G711_ALAW) - return "alaw"; - - /* NOTREACHED */ - return NULL; -} - -status NISTFile::writeHeader() -{ - Track *track = getTrack(); - - char header[NIST_SPHERE_HEADER_LENGTH]; - int printed = snprintf(header, NIST_SPHERE_HEADER_LENGTH, - "NIST_1A\n 1024\n" - "channel_count -i %d\n" - "sample_count -i %d\n" - "sample_rate -i %d\n" - "sample_n_bytes -i %d\n" - "sample_byte_format -s%d %s\n" - "sample_sig_bits -i %d\n" - "sample_coding -s%d %s\n" - "end_head\n", - track->f.channelCount, - (int) track->totalfframes, - (int) track->f.sampleRate, - (int) _af_format_sample_size(&track->f, false), - (int) _af_format_sample_size(&track->f, false), sample_byte_format(&track->f), - track->f.sampleWidth, - (int) strlen(sample_coding(&track->f)), sample_coding(&track->f)); - - /* Fill the remaining space in the buffer with space characters. */ - if (printed < NIST_SPHERE_HEADER_LENGTH) - memset(header + printed, ' ', NIST_SPHERE_HEADER_LENGTH - printed); - - return m_fh->write(header, NIST_SPHERE_HEADER_LENGTH) == NIST_SPHERE_HEADER_LENGTH ? AF_SUCCEED : AF_FAIL; -} - -status NISTFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - Track *track = getTrack(); - - track->totalfframes = 0; - track->fpos_first_frame = NIST_SPHERE_HEADER_LENGTH; - track->nextfframe = 0; - track->fpos_next_frame = track->fpos_first_frame; - - m_fh->seek(0, File::SeekFromBeginning); - writeHeader(); - - return AF_SUCCEED; -} - -status NISTFile::update() -{ - m_fh->seek(0, File::SeekFromBeginning); - writeHeader(); - - return AF_SUCCEED; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/NIST.h b/tools/audiofile-0.3.6/libaudiofile/NIST.h deleted file mode 100644 index 949a6d0e..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/NIST.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - Audio File Library - Copyright (C) 2004, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - NIST.h - - This file declares code for reading and writing NIST SPHERE files. -*/ - -#ifndef NIST_H -#define NIST_H - -#include "Compiler.h" -#include "FileHandle.h" - -class NISTFile : public _AFfilehandle -{ -public: - static bool recognize(File *fh); - static AFfilesetup completeSetup(AFfilesetup setup); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - status update() OVERRIDE; - -private: - status writeHeader(); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/NeXT.cpp b/tools/audiofile-0.3.6/libaudiofile/NeXT.cpp deleted file mode 100644 index c462dbe1..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/NeXT.cpp +++ /dev/null @@ -1,366 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, 2011-2013, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - NeXT.cpp - - This file contains routines for reading and writing NeXT/Sun - .snd/.au sound files. -*/ - -#include "config.h" -#include "NeXT.h" - -#include -#include -#include -#include - -#include "File.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "byteorder.h" -#include "util.h" - -const int _af_next_compression_types[_AF_NEXT_NUM_COMPTYPES] = -{ - AF_COMPRESSION_G711_ULAW, - AF_COMPRESSION_G711_ALAW -}; - -static const _AFfilesetup nextDefaultFileSetup = -{ - _AF_VALID_FILESETUP, /* valid */ - AF_FILE_NEXTSND, /* fileFormat */ - true, /* trackSet */ - true, /* instrumentSet */ - true, /* miscellaneousSet */ - 1, /* trackCount */ - NULL, /* tracks */ - 0, /* instrumentCount */ - NULL, /* instruments */ - 0, /* miscellaneousCount */ - NULL /* miscellaneous */ -}; - -enum -{ - _AU_FORMAT_UNSPECIFIED = 0, - _AU_FORMAT_MULAW_8 = 1, /* CCITT G.711 mu-law 8-bit */ - _AU_FORMAT_LINEAR_8 = 2, - _AU_FORMAT_LINEAR_16 = 3, - _AU_FORMAT_LINEAR_24 = 4, - _AU_FORMAT_LINEAR_32 = 5, - _AU_FORMAT_FLOAT = 6, - _AU_FORMAT_DOUBLE = 7, - _AU_FORMAT_INDIRECT = 8, - _AU_FORMAT_NESTED = 9, - _AU_FORMAT_DSP_CORE = 10, - _AU_FORMAT_DSP_DATA_8 = 11, /* 8-bit fixed point */ - _AU_FORMAT_DSP_DATA_16 = 12, /* 16-bit fixed point */ - _AU_FORMAT_DSP_DATA_24 = 13, /* 24-bit fixed point */ - _AU_FORMAT_DSP_DATA_32 = 14, /* 32-bit fixed point */ - _AU_FORMAT_DISPLAY = 16, - _AU_FORMAT_MULAW_SQUELCH = 17, /* 8-bit mu-law, squelched */ - _AU_FORMAT_EMPHASIZED = 18, - _AU_FORMAT_COMPRESSED = 19, - _AU_FORMAT_COMPRESSED_EMPHASIZED = 20, - _AU_FORMAT_DSP_COMMANDS = 21, - _AU_FORMAT_DSP_COMMANDS_SAMPLES = 22, - _AU_FORMAT_ADPCM_G721 = 23, /* CCITT G.721 ADPCM 32 kbits/s */ - _AU_FORMAT_ADPCM_G722 = 24, /* CCITT G.722 ADPCM */ - _AU_FORMAT_ADPCM_G723_3 = 25, /* CCITT G.723 ADPCM 24 kbits/s */ - _AU_FORMAT_ADPCM_G723_5 = 26, /* CCITT G.723 ADPCM 40 kbits/s */ - _AU_FORMAT_ALAW_8 = 27, /* CCITT G.711 a-law */ - _AU_FORMAT_AES = 28, - _AU_FORMAT_DELTA_MULAW_8 = 29 -}; - -static const uint32_t _AU_LENGTH_UNSPECIFIED = 0xffffffff; - -NeXTFile::NeXTFile() -{ - setFormatByteOrder(AF_BYTEORDER_BIGENDIAN); -} - -status NeXTFile::readInit(AFfilesetup setup) -{ - uint32_t id, offset, length, encoding, sampleRate, channelCount; - - m_fh->seek(0, File::SeekFromBeginning); - - m_fh->read(&id, 4); - assert(!memcmp(&id, ".snd", 4)); - - readU32(&offset); - readU32(&length); - readU32(&encoding); - readU32(&sampleRate); - readU32(&channelCount); - - if (!channelCount) - { - _af_error(AF_BAD_CHANNELS, "invalid file with 0 channels"); - return AF_FAIL; - } - - Track *track = allocateTrack(); - if (!track) - return AF_FAIL; - - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - track->f.sampleRate = sampleRate; - track->f.channelCount = channelCount; - track->f.framesPerPacket = 1; - - /* Override the compression type later if necessary. */ - track->f.compressionType = AF_COMPRESSION_NONE; - - track->fpos_first_frame = offset; - - off_t lengthAvailable = m_fh->length() - offset; - if (length == _AU_LENGTH_UNSPECIFIED || static_cast(length) > lengthAvailable) - length = lengthAvailable; - - track->data_size = length; - - switch (encoding) - { - case _AU_FORMAT_MULAW_8: - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.compressionType = AF_COMPRESSION_G711_ULAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.bytesPerPacket = track->f.channelCount; - break; - case _AU_FORMAT_ALAW_8: - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.compressionType = AF_COMPRESSION_G711_ALAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.bytesPerPacket = track->f.channelCount; - break; - case _AU_FORMAT_LINEAR_8: - track->f.sampleWidth = 8; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - break; - case _AU_FORMAT_LINEAR_16: - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - break; - case _AU_FORMAT_LINEAR_24: - track->f.sampleWidth = 24; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - break; - case _AU_FORMAT_LINEAR_32: - track->f.sampleWidth = 32; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - break; - case _AU_FORMAT_FLOAT: - track->f.sampleWidth = 32; - track->f.sampleFormat = AF_SAMPFMT_FLOAT; - break; - case _AU_FORMAT_DOUBLE: - track->f.sampleWidth = 64; - track->f.sampleFormat = AF_SAMPFMT_DOUBLE; - break; - - default: - /* - This encoding method is not recognized. - */ - _af_error(AF_BAD_SAMPFMT, "bad sample format"); - return AF_FAIL; - } - - if (track->f.isUncompressed()) - track->f.computeBytesPerPacketPCM(); - - _af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth); - - track->computeTotalFileFrames(); - - return AF_SUCCEED; -} - -bool NeXTFile::recognize(File *fh) -{ - uint8_t buffer[4]; - - fh->seek(0, File::SeekFromBeginning); - - if (fh->read(buffer, 4) != 4 || memcmp(buffer, ".snd", 4) != 0) - return false; - - return true; -} - -AFfilesetup NeXTFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "NeXT files must have exactly 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = setup->getTrack(); - if (!track) - return AF_NULL_FILESETUP; - - if (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) - { - _af_error(AF_BAD_FILEFMT, "NeXT format does not support unsigned data"); - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, track->f.sampleWidth); - } - - if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP) - { - if (track->f.sampleWidth != 8 && - track->f.sampleWidth != 16 && - track->f.sampleWidth != 24 && - track->f.sampleWidth != 32) - { - _af_error(AF_BAD_WIDTH, "invalid sample width %d for NeXT file (only 8-, 16-, 24-, and 32-bit data are allowed)", track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - } - - if (track->f.compressionType != AF_COMPRESSION_NONE && - track->f.compressionType != AF_COMPRESSION_G711_ULAW && - track->f.compressionType != AF_COMPRESSION_G711_ALAW) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "compression format not implemented for NeXT files"); - return AF_NULL_FILESETUP; - } - - if (track->f.isUncompressed() && - track->byteOrderSet && - track->f.byteOrder != AF_BYTEORDER_BIGENDIAN && - track->f.isByteOrderSignificant()) - { - _af_error(AF_BAD_BYTEORDER, "NeXT format supports only big-endian data"); - return AF_NULL_FILESETUP; - } - - if (track->f.isUncompressed()) - track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "NeXT files cannot have AES data"); - return AF_NULL_FILESETUP; - } - - if (track->markersSet && track->markerCount != 0) - { - _af_error(AF_BAD_FILESETUP, "NeXT format does not support markers"); - return AF_NULL_FILESETUP; - } - - if (setup->instrumentSet && setup->instrumentCount != 0) - { - _af_error(AF_BAD_FILESETUP, "NeXT format does not support instruments"); - return AF_NULL_FILESETUP; - } - - if (setup->miscellaneousSet && setup->miscellaneousCount != 0) - { - _af_error(AF_BAD_FILESETUP, "NeXT format does not support miscellaneous data"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &nextDefaultFileSetup, false); -} - -static uint32_t nextencodingtype (AudioFormat *format); - -status NeXTFile::update() -{ - writeHeader(); - return AF_SUCCEED; -} - -status NeXTFile::writeHeader() -{ - Track *track = getTrack(); - - if (m_fh->seek(0, File::SeekFromBeginning) != 0) - _af_error(AF_BAD_LSEEK, "bad seek"); - - uint32_t offset = track->fpos_first_frame; - uint32_t length = track->data_size; - uint32_t encoding = nextencodingtype(&track->f); - uint32_t sampleRate = track->f.sampleRate; - uint32_t channelCount = track->f.channelCount; - - m_fh->write(".snd", 4); - writeU32(&offset); - writeU32(&length); - writeU32(&encoding); - writeU32(&sampleRate); - writeU32(&channelCount); - - return AF_SUCCEED; -} - -static uint32_t nextencodingtype (AudioFormat *format) -{ - uint32_t encoding = 0; - - if (format->compressionType != AF_COMPRESSION_NONE) - { - if (format->compressionType == AF_COMPRESSION_G711_ULAW) - encoding = _AU_FORMAT_MULAW_8; - else if (format->compressionType == AF_COMPRESSION_G711_ALAW) - encoding = _AU_FORMAT_ALAW_8; - } - else if (format->sampleFormat == AF_SAMPFMT_TWOSCOMP) - { - if (format->sampleWidth == 8) - encoding = _AU_FORMAT_LINEAR_8; - else if (format->sampleWidth == 16) - encoding = _AU_FORMAT_LINEAR_16; - else if (format->sampleWidth == 24) - encoding = _AU_FORMAT_LINEAR_24; - else if (format->sampleWidth == 32) - encoding = _AU_FORMAT_LINEAR_32; - } - else if (format->sampleFormat == AF_SAMPFMT_FLOAT) - encoding = _AU_FORMAT_FLOAT; - else if (format->sampleFormat == AF_SAMPFMT_DOUBLE) - encoding = _AU_FORMAT_DOUBLE; - - return encoding; -} - -status NeXTFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - writeHeader(); - - Track *track = getTrack(); - track->fpos_first_frame = 28; - - return AF_SUCCEED; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/NeXT.h b/tools/audiofile-0.3.6/libaudiofile/NeXT.h deleted file mode 100644 index a732679e..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/NeXT.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - NeXT.h - - This file contains headers and constants related to the NeXT/Sun - .snd audio file format. -*/ - -#ifndef NEXT_H -#define NEXT_H - -#include "Compiler.h" -#include "FileHandle.h" - -#define _AF_NEXT_NUM_COMPTYPES 2 -extern const int _af_next_compression_types[_AF_NEXT_NUM_COMPTYPES]; - -class NeXTFile : public _AFfilehandle -{ -public: - NeXTFile(); - - static bool recognize(File *fh); - static AFfilesetup completeSetup(AFfilesetup); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - status update() OVERRIDE; - -private: - status writeHeader(); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/PacketTable.cpp b/tools/audiofile-0.3.6/libaudiofile/PacketTable.cpp deleted file mode 100644 index 9acf7d4a..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/PacketTable.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "PacketTable.h" - -PacketTable::PacketTable(int64_t numValidFrames, int32_t primingFrames, - int32_t remainderFrames) : - m_numValidFrames(numValidFrames), - m_primingFrames(primingFrames), - m_remainderFrames(remainderFrames) -{ -} - -PacketTable::PacketTable() -{ - m_numValidFrames = 0; - m_primingFrames = 0; - m_remainderFrames = 0; -} - -PacketTable::~PacketTable() -{ -} - -void PacketTable::setNumValidFrames(int64_t numValidFrames) -{ - m_numValidFrames = numValidFrames; -} - -void PacketTable::setPrimingFrames(int32_t primingFrames) -{ - m_primingFrames = primingFrames; -} - -void PacketTable::setRemainderFrames(int32_t remainderFrames) -{ - m_remainderFrames = remainderFrames; -} - -void PacketTable::append(size_t bytesPerPacket) -{ - m_bytesPerPacket.push_back(bytesPerPacket); -} - -AFfileoffset PacketTable::startOfPacket(size_t packet) const -{ - AFfileoffset offset = 0; - for (size_t i=0; i - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef PacketTable_h -#define PacketTable_h - -#include "Shared.h" - -#include - -#include -#include -#include - -class PacketTable : public Shared -{ -public: - PacketTable(); - PacketTable(int64_t numValidFrames, - int32_t primingFrames, - int32_t remainderFrames); - ~PacketTable(); - - size_t numPackets() const { return m_bytesPerPacket.size(); } - int64_t numValidFrames() const { return m_numValidFrames; } - void setNumValidFrames(int64_t numValidFrames); - int32_t primingFrames() const { return m_primingFrames; } - void setPrimingFrames(int32_t primingFrames); - int32_t remainderFrames() const { return m_remainderFrames; } - void setRemainderFrames(int32_t remainderFrames); - - void append(size_t bytesPerPacket); - size_t bytesPerPacket(size_t packet) const { return m_bytesPerPacket[packet]; } - AFfileoffset startOfPacket(size_t packet) const; - -private: - int64_t m_numValidFrames; - int32_t m_primingFrames; - int32_t m_remainderFrames; - - std::vector m_bytesPerPacket; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Raw.cpp b/tools/audiofile-0.3.6/libaudiofile/Raw.cpp deleted file mode 100644 index 8c2b2b5a..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Raw.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - Raw.cpp - - This file contains code for reading and writing raw audio - data files. -*/ - -#include "config.h" -#include "Raw.h" - -#include "File.h" -#include "Setup.h" -#include "Track.h" -#include "util.h" - -static const _AFfilesetup rawDefaultFileSetup = -{ - _AF_VALID_FILESETUP, // valid - AF_FILE_RAWDATA, // fileFormat - true, // trackSet - true, // instrumentSet - true, // miscellaneousSet - 1, // trackCount - NULL, // tracks - 0, // instrumentCount - NULL, // instruments - 0, // miscellaneousCount - NULL // miscellaneous -}; - -const int _af_raw_compression_types[_AF_RAW_NUM_COMPTYPES] = -{ - AF_COMPRESSION_G711_ULAW, - AF_COMPRESSION_G711_ALAW -}; - -bool RawFile::recognize(File *fh) -{ - return false; -} - -status RawFile::readInit(AFfilesetup filesetup) -{ - if (!filesetup) - { - _af_error(AF_BAD_FILESETUP, "a valid AFfilesetup is required for reading raw data"); - return AF_FAIL; - } - - if (initFromSetup(filesetup) == AF_FAIL) - return AF_FAIL; - - Track *track = getTrack(); - - /* Set the track's data offset. */ - if (filesetup->tracks[0].dataOffsetSet) - track->fpos_first_frame = filesetup->tracks[0].dataOffset; - else - track->fpos_first_frame = 0; - - /* Set the track's frame count. */ - if (filesetup->tracks[0].frameCountSet) - { - track->totalfframes = filesetup->tracks[0].frameCount; - } - else - { - AFfileoffset filesize = m_fh->length(); - if (filesize == -1) - track->totalfframes = -1; - else - { - /* Ensure that the data offset is valid. */ - if (track->fpos_first_frame > filesize) - { - _af_error(AF_BAD_FILESETUP, "data offset is larger than file size"); - return AF_FAIL; - } - - filesize -= track->fpos_first_frame; - track->totalfframes = filesize / (int) _af_format_frame_size(&track->f, false); - } - track->data_size = filesize; - } - - return AF_SUCCEED; -} - -status RawFile::writeInit(AFfilesetup filesetup) -{ - if (initFromSetup(filesetup) == AF_FAIL) - return AF_FAIL; - - Track *track = getTrack(); - - track->totalfframes = 0; - if (filesetup->tracks[0].dataOffsetSet) - track->fpos_first_frame = filesetup->tracks[0].dataOffset; - else - track->fpos_first_frame = 0; - - return AF_SUCCEED; -} - -status RawFile::update() -{ - return AF_SUCCEED; -} - -AFfilesetup RawFile::completeSetup(AFfilesetup setup) -{ - AFfilesetup newSetup; - - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_FILESETUP, "raw file must have exactly one track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = setup->getTrack(); - if (!track) - { - _af_error(AF_BAD_FILESETUP, "could not access track in file setup"); - return AF_NULL_FILESETUP; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "raw file cannot have AES data"); - return AF_NULL_FILESETUP; - } - - if (track->markersSet && track->markerCount != 0) - { - _af_error(AF_BAD_NUMMARKS, "raw file cannot have markers"); - return AF_NULL_FILESETUP; - } - - if (setup->instrumentSet && setup->instrumentCount != 0) - { - _af_error(AF_BAD_NUMINSTS, "raw file cannot have instruments"); - return AF_NULL_FILESETUP; - } - - if (setup->miscellaneousSet && setup->miscellaneousCount != 0) - { - _af_error(AF_BAD_NUMMISC, "raw file cannot have miscellaneous data"); - return AF_NULL_FILESETUP; - } - - newSetup = (_AFfilesetup *) _af_malloc(sizeof (_AFfilesetup)); - *newSetup = rawDefaultFileSetup; - - newSetup->tracks = (TrackSetup *) _af_malloc(sizeof (TrackSetup)); - newSetup->tracks[0] = setup->tracks[0]; - newSetup->tracks[0].f.compressionParams = NULL; - - newSetup->tracks[0].markerCount = 0; - newSetup->tracks[0].markers = NULL; - - return newSetup; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/Raw.h b/tools/audiofile-0.3.6/libaudiofile/Raw.h deleted file mode 100644 index 04eef5d4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Raw.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - Raw.h -*/ - -#ifndef RAW_H -#define RAW_H - -#include "Compiler.h" -#include "FileHandle.h" - -#define _AF_RAW_NUM_COMPTYPES 2 -extern const int _af_raw_compression_types[_AF_RAW_NUM_COMPTYPES]; - -class RawFile : public _AFfilehandle -{ -public: - static bool recognize(File *fh); - static AFfilesetup completeSetup(AFfilesetup); - - status readInit(AFfilesetup setup) OVERRIDE; - status writeInit(AFfilesetup setup) OVERRIDE; - status update() OVERRIDE; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/SampleVision.cpp b/tools/audiofile-0.3.6/libaudiofile/SampleVision.cpp deleted file mode 100644 index 3872458e..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/SampleVision.cpp +++ /dev/null @@ -1,333 +0,0 @@ -/* - Audio File Library - Copyright (C) 2012, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "SampleVision.h" - -#include "File.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "util.h" -#include - -static const char *kSMPMagic = "SOUND SAMPLE DATA "; -static const unsigned kSMPMagicLength = 18; -static const char *kSMPVersion = "2.1 "; -static const unsigned kSMPVersionLength = 4; -static const unsigned kSMPNameLength = 30; -static const unsigned kSMPCommentLength = 60; -static const unsigned kSMPMarkerNameLength = 10; -static const uint32_t kSMPInvalidSamplePosition = 0xffffffffu; - -static const uint8_t kSMPMIDIUnityPlaybackNote = 60; - -static const _AFfilesetup sSampleVisionDefaultFileSetup = -{ - _AF_VALID_FILESETUP, - AF_FILE_SAMPLEVISION, - true, // trackSet - true, // instrumentSet - true, // miscellaneousSet - 1, // trackCount - NULL, // tracks - 1, // instrumentCount - NULL, // instruments - 0, // miscellaneousCount - NULL // miscellaneous -}; - -static void trimTrailingSpaces(char *s) -{ - int n = strlen(s); - if (!n) - return; - while (--n > 0 && s[n] == ' ') - ; - s[n+1] = '\0'; -} - -SampleVisionFile::SampleVisionFile() : - m_frameCountOffset(-1) -{ - setFormatByteOrder(AF_BYTEORDER_LITTLEENDIAN); -} - -SampleVisionFile::~SampleVisionFile() -{ -} - -bool SampleVisionFile::recognize(File *fh) -{ - fh->seek(0, File::SeekFromBeginning); - char magic[kSMPMagicLength]; - if (fh->read(magic, kSMPMagicLength) != (ssize_t) kSMPMagicLength) - return false; - return !strncmp(magic, kSMPMagic, kSMPMagicLength); -} - -AFfilesetup SampleVisionFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "SampleVision file must have 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = &setup->tracks[0]; - if (track->sampleFormatSet) - { - if (!track->f.isSigned() || track->f.sampleWidth != 16) - { - _af_error(AF_BAD_SAMPFMT, - "SampleVision format supports only 16-bit signed integer audio data"); - return AF_NULL_FILESETUP; - } - } - else - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, - track->f.sampleWidth); - - if (track->byteOrderSet && track->f.byteOrder != AF_BYTEORDER_LITTLEENDIAN) - { - // Treat error as correctable. - _af_error(AF_BAD_BYTEORDER, "SampleVision supports only little-endian data"); - } - - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - - if (track->compressionSet && !track->f.isUncompressed()) - { - _af_error(AF_BAD_COMPTYPE, "SampleVision does not support compressed audio data"); - return AF_NULL_FILESETUP; - } - - if (track->markersSet && track->markerCount) - { - _af_error(AF_BAD_NUMMARKS, "SampleVision does not support markers"); - return AF_NULL_FILESETUP; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "SampleVision does not support AES data"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &sSampleVisionDefaultFileSetup, true); -} - -status SampleVisionFile::readInit(AFfilesetup) -{ - m_fh->seek(0, File::SeekFromBeginning); - - char magic[kSMPMagicLength]; - if (m_fh->read(magic, kSMPMagicLength) != (ssize_t) kSMPMagicLength) - return AF_FAIL; - if (strncmp(magic, kSMPMagic, kSMPMagicLength) != 0) - return AF_FAIL; - - char version[kSMPVersionLength]; - if (m_fh->read(version, kSMPVersionLength) != (ssize_t) kSMPVersionLength) - return AF_FAIL; - if (strncmp(version, kSMPVersion, kSMPVersionLength) != 0) - return AF_FAIL; - - Track *track = allocateTrack(); - - char name[kSMPNameLength + 1]; - m_fh->read(name, kSMPNameLength); - name[kSMPNameLength] = '\0'; - trimTrailingSpaces(name); - if (strlen(name) > 0) - addMiscellaneous(AF_MISC_NAME, name); - - char comment[kSMPCommentLength + 1]; - m_fh->read(comment, kSMPCommentLength); - comment[kSMPCommentLength] = '\0'; - trimTrailingSpaces(comment); - if (strlen(comment) > 0) - addMiscellaneous(AF_MISC_COMMENT, comment); - - uint32_t frameCount; - readU32(&frameCount); - track->totalfframes = frameCount; - track->fpos_first_frame = m_fh->tell(); - track->data_size = 2 * frameCount; - - m_fh->seek(track->data_size, File::SeekFromCurrent); - - uint16_t reserved; - readU16(&reserved); - - parseLoops(); - parseMarkers(); - - uint8_t midiNote; - uint32_t sampleRate; - uint32_t smpteOffset; - uint32_t cycleLength; - - readU8(&midiNote); - readU32(&sampleRate); - readU32(&smpteOffset); - readU32(&cycleLength); - - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - track->f.sampleRate = sampleRate; - track->f.channelCount = 1; - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.framesPerPacket = 1; - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); - track->f.computeBytesPerPacketPCM(); - - return AF_SUCCEED; -} - -status SampleVisionFile::parseLoops() -{ - for (int i=0; i<8; i++) - { - uint32_t startFrame, endFrame; - uint8_t type; - uint16_t count; - readU32(&startFrame); - readU32(&endFrame); - readU8(&type); - readU16(&count); - } - return AF_SUCCEED; -} - -status SampleVisionFile::parseMarkers() -{ - for (int i=0; i<8; i++) - { - char name[kSMPMarkerNameLength + 1]; - m_fh->read(name, kSMPMarkerNameLength); - name[kSMPMarkerNameLength] = '\0'; - uint32_t position; - readU32(&position); - } - return AF_SUCCEED; -} - -void SampleVisionFile::addMiscellaneous(int type, const char *data) -{ - m_miscellaneousCount++; - m_miscellaneous = (Miscellaneous *) _af_realloc(m_miscellaneous, - m_miscellaneousCount * sizeof (Miscellaneous)); - - Miscellaneous &m = m_miscellaneous[m_miscellaneousCount - 1]; - m.id = m_miscellaneousCount; - m.type = type; - m.size = strlen(data); - m.position = 0; - m.buffer = _af_malloc(m.size); - memcpy(m.buffer, data, m.size); -} - -status SampleVisionFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - m_fh->write(kSMPMagic, kSMPMagicLength); - m_fh->write(kSMPVersion, kSMPVersionLength); - - char name[kSMPNameLength + 1]; - char comment[kSMPCommentLength + 1]; - memset(name, ' ', kSMPNameLength); - memset(comment, ' ', kSMPCommentLength); - m_fh->write(name, kSMPNameLength); - m_fh->write(comment, kSMPCommentLength); - - uint32_t frameCount = 0; - m_frameCountOffset = m_fh->tell(); - writeU32(&frameCount); - - Track *track = getTrack(); - track->fpos_first_frame = m_fh->tell(); - - return AF_SUCCEED; -} - -status SampleVisionFile::update() -{ - m_fh->seek(m_frameCountOffset, File::SeekFromBeginning); - Track *track = getTrack(); - uint32_t frameCount = track->totalfframes; - writeU32(&frameCount); - writeTrailer(); - return AF_SUCCEED; -} - -status SampleVisionFile::writeTrailer() -{ - Track *track = getTrack(); - - m_fh->seek(track->fpos_after_data, File::SeekFromBeginning); - - uint16_t reserved = 0; - writeU16(&reserved); - - writeLoops(); - writeMarkers(); - - uint8_t midiNote = kSMPMIDIUnityPlaybackNote; - uint32_t sampleRate = track->f.sampleRate; - uint32_t smpteOffset = 0; - uint32_t cycleLength = 0; - - writeU8(&midiNote); - writeU32(&sampleRate); - writeU32(&smpteOffset); - writeU32(&cycleLength); - return AF_SUCCEED; -} - -status SampleVisionFile::writeLoops() -{ - for (int i=0; i<8; i++) - { - uint32_t startFrame = kSMPInvalidSamplePosition, endFrame = 0; - uint8_t type = 0; - uint16_t count = 0; - writeU32(&startFrame); - writeU32(&endFrame); - writeU8(&type); - writeU16(&count); - } - return AF_SUCCEED; -} - -status SampleVisionFile::writeMarkers() -{ - for (int i=0; i<8; i++) - { - char name[kSMPMarkerNameLength + 1]; - memset(name, ' ', kSMPMarkerNameLength); - name[kSMPMarkerNameLength] = '\0'; - m_fh->write(name, kSMPMarkerNameLength); - uint32_t position = kSMPInvalidSamplePosition; - writeU32(&position); - } - return AF_SUCCEED; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/SampleVision.h b/tools/audiofile-0.3.6/libaudiofile/SampleVision.h deleted file mode 100644 index 7404f272..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/SampleVision.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - Audio File Library - Copyright (C) 2012, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef SAMPLE_VISION_H -#define SAMPLE_VISION_H - -#include "Compiler.h" -#include "FileHandle.h" - -class SampleVisionFile : public _AFfilehandle -{ -public: - SampleVisionFile(); - virtual ~SampleVisionFile(); - - static bool recognize(File *fh); - - static AFfilesetup completeSetup(AFfilesetup); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - - status update() OVERRIDE; - -private: - AFfileoffset m_frameCountOffset; - - status parseLoops(); - status parseMarkers(); - status writeTrailer(); - status writeLoops(); - status writeMarkers(); - - void addMiscellaneous(int type, const char *data); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Setup.cpp b/tools/audiofile-0.3.6/libaudiofile/Setup.cpp deleted file mode 100644 index cd320028..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Setup.cpp +++ /dev/null @@ -1,560 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - Setup.cpp -*/ - -#include "config.h" -#include "Setup.h" - -#include -#include - -#include "FileHandle.h" -#include "Instrument.h" -#include "Marker.h" -#include "Track.h" -#include "afinternal.h" -#include "byteorder.h" -#include "audiofile.h" -#include "pcm.h" -#include "units.h" -#include "util.h" - -static const _AFfilesetup _af_default_file_setup = -{ - _AF_VALID_FILESETUP, /* valid */ -#if WORDS_BIGENDIAN - AF_FILE_AIFFC, /* file format */ -#else - AF_FILE_WAVE, /* file format */ -#endif - false, /* trackSet */ - false, /* instrumentSet */ - false, /* miscellaneousSet */ - 1, /* trackCount */ - NULL, /* tracks */ - 1, /* instrumentCount */ - NULL, /* instruments */ - 0, /* miscellaneousCount */ - NULL /* miscellaneous */ -}; - -static const InstrumentSetup _af_default_instrumentsetup = -{ - 0, /* id */ - 2, /* loopCount */ - NULL, /* loops */ - false /* loopSet */ -}; - -static const TrackSetup _af_default_tracksetup = -{ - 0, - { - 44100.0, - AF_SAMPFMT_TWOSCOMP, - 16, - _AF_BYTEORDER_NATIVE, - { SLOPE_INT16, 0, MIN_INT16, MAX_INT16 }, - 2, - AF_COMPRESSION_NONE, - NULL - }, - false, /* rateSet */ - false, /* sampleFormatSet */ - false, /* sampleWidthSet */ - false, /* byteOrderSet */ - false, /* channelCountSet */ - false, /* compressionSet */ - false, /* aesDataSet */ - false, /* markersSet */ - false, /* dataOffsetSet */ - false, /* frameCountSet */ - - 4, /* markerCount */ - NULL, /* markers */ - 0, /* dataOffset */ - 0 /* frameCount */ -}; - -TrackSetup *_af_tracksetup_new (int trackCount) -{ - TrackSetup *tracks; - - if (trackCount == 0) - return NULL; - - tracks = (TrackSetup *) _af_calloc(trackCount, sizeof (TrackSetup)); - if (tracks == NULL) - return NULL; - - for (int i=0; itracks = _af_tracksetup_new(setup->trackCount); - - setup->instruments = _af_instsetup_new(setup->instrumentCount); - - if (setup->miscellaneousCount == 0) - setup->miscellaneous = NULL; - else - { - setup->miscellaneous = (MiscellaneousSetup *) _af_calloc(setup->miscellaneousCount, - sizeof (MiscellaneousSetup)); - for (int i=0; imiscellaneousCount; i++) - { - setup->miscellaneous[i].id = i+1; - setup->miscellaneous[i].type = 0; - setup->miscellaneous[i].size = 0; - } - } - - return setup; -} - -/* - Free the specified track's markers and their subfields. -*/ -void _af_setup_free_markers (AFfilesetup setup, int trackno) -{ - if (setup->tracks[trackno].markerCount != 0) - { - for (int i=0; itracks[trackno].markerCount; i++) - { - free(setup->tracks[trackno].markers[i].name); - free(setup->tracks[trackno].markers[i].comment); - } - - free(setup->tracks[trackno].markers); - } - - setup->tracks[trackno].markers = NULL; - setup->tracks[trackno].markerCount = 0; -} - -/* - Free the specified setup's tracks and their subfields. -*/ -void _af_setup_free_tracks (AFfilesetup setup) -{ - if (setup->tracks) - { - for (int i=0; itrackCount; i++) - { - _af_setup_free_markers(setup, i); - } - - free(setup->tracks); - } - - setup->tracks = NULL; - setup->trackCount = 0; -} - -/* - Free the specified setup's instruments and their subfields. -*/ -void _af_setup_free_instruments (AFfilesetup setup) -{ - if (setup->instruments) - { - for (int i=0; i < setup->instrumentCount; i++) - setup->instruments[i].freeLoops(); - - free(setup->instruments); - } - - setup->instruments = NULL; - setup->instrumentCount = 0; -} - -void afFreeFileSetup (AFfilesetup setup) -{ - if (!_af_filesetup_ok(setup)) - return; - - _af_setup_free_tracks(setup); - - _af_setup_free_instruments(setup); - - if (setup->miscellaneousCount) - { - free(setup->miscellaneous); - setup->miscellaneous = NULL; - setup->miscellaneousCount = 0; - } - - memset(setup, 0, sizeof (_AFfilesetup)); - free(setup); -} - -void afInitFileFormat (AFfilesetup setup, int filefmt) -{ - if (!_af_filesetup_ok(setup)) - return; - - if (filefmt < 0 || filefmt >= _AF_NUM_UNITS) - { - _af_error(AF_BAD_FILEFMT, "unrecognized file format %d", - filefmt); - return; - } - - if (!_af_units[filefmt].implemented) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, - "%s format not currently supported", - _af_units[filefmt].name); - return; - } - - setup->fileFormat = filefmt; -} - -void afInitChannels (AFfilesetup setup, int trackid, int channels) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - if (channels < 1) - { - _af_error(AF_BAD_CHANNELS, "invalid number of channels %d", - channels); - return; - } - - track->f.channelCount = channels; - track->channelCountSet = true; -} - -void afInitSampleFormat (AFfilesetup setup, int trackid, int sampfmt, int sampwidth) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - _af_set_sample_format(&track->f, sampfmt, sampwidth); - - track->sampleFormatSet = true; - track->sampleWidthSet = true; -} - -void afInitByteOrder (AFfilesetup setup, int trackid, int byteorder) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - if (byteorder != AF_BYTEORDER_BIGENDIAN && - byteorder != AF_BYTEORDER_LITTLEENDIAN) - { - _af_error(AF_BAD_BYTEORDER, "invalid byte order %d", byteorder); - return; - } - - track->f.byteOrder = byteorder; - track->byteOrderSet = true; -} - -void afInitRate (AFfilesetup setup, int trackid, double rate) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - if (rate <= 0.0) - { - _af_error(AF_BAD_RATE, "invalid sample rate %.30g", rate); - return; - } - - track->f.sampleRate = rate; - track->rateSet = true; -} - -/* - track data: data offset within the file (initialized for raw reading only) -*/ -void afInitDataOffset (AFfilesetup setup, int trackid, AFfileoffset offset) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - if (offset < 0) - { - _af_error(AF_BAD_DATAOFFSET, "invalid data offset %jd", - static_cast(offset)); - return; - } - - track->dataOffset = offset; - track->dataOffsetSet = true; -} - -/* - track data: data offset within the file (initialized for raw reading only) -*/ -void afInitFrameCount (AFfilesetup setup, int trackid, AFfileoffset count) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - if (count < 0) - { - _af_error(AF_BAD_FRAMECNT, "invalid frame count %jd", - static_cast(count)); - return; - } - - track->frameCount = count; - track->frameCountSet = true; -} - -#define alloccopy(type, n, var, copyfrom) \ -{ \ - if (n == 0) \ - var = NULL; \ - else \ - { \ - if ((var = (type *) _af_calloc(n, sizeof (type))) == NULL) \ - goto fail; \ - memcpy((var), (copyfrom), (n) * sizeof (type)); \ - } \ -} - -AFfilesetup _af_filesetup_copy (const _AFfilesetup *setup, - const _AFfilesetup *defaultSetup, bool copyMarks) -{ - AFfilesetup newsetup; - int instrumentCount, miscellaneousCount, trackCount; - - newsetup = (_AFfilesetup *) _af_malloc(sizeof (_AFfilesetup)); - if (newsetup == AF_NULL_FILESETUP) - return AF_NULL_FILESETUP; - - *newsetup = *defaultSetup; - - newsetup->tracks = NULL; - newsetup->instruments = NULL; - newsetup->miscellaneous = NULL; - - /* Copy tracks. */ - trackCount = setup->trackSet ? setup->trackCount : - newsetup->trackSet ? newsetup->trackCount : 0; - alloccopy(TrackSetup, trackCount, newsetup->tracks, setup->tracks); - newsetup->trackCount = trackCount; - - /* Copy instruments. */ - instrumentCount = setup->instrumentSet ? setup->instrumentCount : - newsetup->instrumentSet ? newsetup->instrumentCount : 0; - alloccopy(InstrumentSetup, instrumentCount, newsetup->instruments, setup->instruments); - newsetup->instrumentCount = instrumentCount; - - /* Copy miscellaneous information. */ - miscellaneousCount = setup->miscellaneousSet ? setup->miscellaneousCount : - newsetup->miscellaneousSet ? newsetup->miscellaneousCount : 0; - alloccopy(MiscellaneousSetup, miscellaneousCount, newsetup->miscellaneous, setup->miscellaneous); - newsetup->miscellaneousCount = miscellaneousCount; - - for (int i=0; itrackCount; i++) - { - TrackSetup *track = &newsetup->tracks[i]; - - /* XXXmpruett set compression information */ - - if (!setup->tracks[i].markersSet && !copyMarks) - { - track->markers = NULL; - track->markerCount = 0; - continue; - } - - alloccopy(MarkerSetup, setup->tracks[i].markerCount, - track->markers, setup->tracks[i].markers); - track->markerCount = setup->tracks[i].markerCount; - - for (int j=0; jtracks[i].markerCount; j++) - { - track->markers[j].name = - _af_strdup(setup->tracks[i].markers[j].name); - if (track->markers[j].name == NULL) - goto fail; - - track->markers[j].comment = - _af_strdup(setup->tracks[i].markers[j].comment); - if (track->markers[j].comment == NULL) - goto fail; - } - } - - for (int i=0; iinstrumentCount; i++) - { - InstrumentSetup *instrument = &newsetup->instruments[i]; - alloccopy(LoopSetup, setup->instruments[i].loopCount, - instrument->loops, setup->instruments[i].loops); - } - - return newsetup; - - fail: - if (newsetup->miscellaneous) - free(newsetup->miscellaneous); - if (newsetup->instruments) - free(newsetup->instruments); - if (newsetup->tracks) - free(newsetup->tracks); - if (newsetup) - free(newsetup); - - return AF_NULL_FILESETUP; -} - -TrackSetup *_AFfilesetup::getTrack(int trackID) -{ - for (int i=0; i - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef SETUP_H -#define SETUP_H - -#include "afinternal.h" - -struct InstrumentSetup; -struct MiscellaneousSetup; -struct TrackSetup; - -struct _AFfilesetup -{ - int valid; - - int fileFormat; - - bool trackSet, instrumentSet, miscellaneousSet; - - int trackCount; - TrackSetup *tracks; - - int instrumentCount; - InstrumentSetup *instruments; - - int miscellaneousCount; - MiscellaneousSetup *miscellaneous; - - TrackSetup *getTrack(int trackID = AF_DEFAULT_TRACK); - InstrumentSetup *getInstrument(int instrumentID); - MiscellaneousSetup *getMiscellaneous(int miscellaneousID); -}; - -void _af_setup_free_markers (AFfilesetup setup, int trackno); -void _af_setup_free_tracks (AFfilesetup setup); -void _af_setup_free_instruments (AFfilesetup setup); - -AFfilesetup _af_filesetup_copy (const _AFfilesetup *setup, - const _AFfilesetup *defaultSetup, bool copyMarks); - -InstrumentSetup *_af_instsetup_new (int count); - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Shared.h b/tools/audiofile-0.3.6/libaudiofile/Shared.h deleted file mode 100644 index d3469e96..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Shared.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - Copyright (C) 2010, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef SHARED_H -#define SHARED_H - -template -class Shared -{ -public: - Shared() : m_refCount(0) - { - } - void retain() { m_refCount++; } - void release() { if (--m_refCount == 0) delete static_cast(this); } - -protected: - ~Shared() - { - } - -private: - int m_refCount; - - Shared(const Shared &); - Shared &operator =(const Shared &); -}; - -template -class SharedPtr -{ -public: - SharedPtr() : m_ptr(0) - { - } - SharedPtr(T *ptr) : m_ptr(ptr) - { - if (m_ptr) m_ptr->retain(); - } - SharedPtr(const SharedPtr &p) : m_ptr(p.m_ptr) - { - if (m_ptr) m_ptr->retain(); - } - ~SharedPtr() - { - if (T *p = m_ptr) p->release(); - } - - SharedPtr &operator =(T *ptr) - { - if (m_ptr != ptr) - { - if (ptr) ptr->retain(); - if (m_ptr) m_ptr->release(); - m_ptr = ptr; - } - return *this; - } - SharedPtr &operator =(const SharedPtr &p) - { - if (m_ptr != p.m_ptr) - { - if (p.m_ptr) p.m_ptr->retain(); - if (m_ptr) m_ptr->release(); - m_ptr = p.m_ptr; - } - return *this; - } - - T *get() const { return m_ptr; } - T &operator *() const { return *m_ptr; } - T *operator ->() const { return m_ptr; } - - typedef T *SharedPtr::*UnspecifiedBoolType; - operator UnspecifiedBoolType() const { return m_ptr ? &SharedPtr::m_ptr : 0; } - - bool operator !() const { return !m_ptr; } - -private: - T *m_ptr; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Tag.h b/tools/audiofile-0.3.6/libaudiofile/Tag.h deleted file mode 100644 index 9ae8cf00..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Tag.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Audio File Library - Copyright (C) 2011, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef TAG_H -#define TAG_H - -#include -#include -#include -#include - -class Tag -{ -public: - Tag() : m_value(0) { } - Tag(uint32_t value) : m_value(value) { } - Tag(const char *s) - { - assert(strlen(s) == 4); - memcpy(&m_value, s, 4); - } - - uint32_t value() const { return m_value; } - - bool operator==(const Tag &t) const { return m_value == t.m_value; } - bool operator!=(const Tag &t) const { return m_value != t.m_value; } - - std::string name() const - { - char s[5]; - memcpy(s, &m_value, 4); - s[4] = '\0'; - return std::string(s); - } - -private: - uint32_t m_value; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/Track.cpp b/tools/audiofile-0.3.6/libaudiofile/Track.cpp deleted file mode 100644 index 440207e9..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Track.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - track.c - - This file contains functions for dealing with tracks within an - audio file. -*/ - -#include "config.h" -#include "Track.h" - -#include -#include -#include -#include - -#include "audiofile.h" -#include "afinternal.h" -#include "util.h" -#include "Marker.h" -#include "PacketTable.h" -#include "modules/Module.h" -#include "modules/ModuleState.h" - -void afInitTrackIDs (AFfilesetup file, const int *trackids, int trackCount) -{ - assert(file); - assert(trackids); - assert(trackCount == 1); - assert(trackids[0] == AF_DEFAULT_TRACK); -} - -int afGetTrackIDs (AFfilehandle file, int *trackids) -{ - assert(file); - - if (trackids != NULL) - trackids[0] = AF_DEFAULT_TRACK; - - return 1; -} - -Track::Track() -{ - id = AF_DEFAULT_TRACK; - - f.compressionParams = NULL; - v.compressionParams = NULL; - - channelMatrix = NULL; - - markerCount = 0; - markers = NULL; - - hasAESData = false; - memset(aesData, 0, 24); - - totalfframes = 0; - nextfframe = 0; - frames2ignore = 0; - fpos_first_frame = 0; - fpos_next_frame = 0; - fpos_after_data = 0; - totalvframes = 0; - nextvframe = 0; - data_size = 0; -} - -Track::~Track() -{ - if (f.compressionParams) - { - AUpvfree(f.compressionParams); - f.compressionParams = NULL; - } - - if (v.compressionParams) - { - AUpvfree(v.compressionParams); - v.compressionParams = NULL; - } - - free(channelMatrix); - channelMatrix = NULL; - - if (markers) - { - for (int j=0; jmarkerCount) == 0) - { - markers = NULL; - return AF_SUCCEED; - } - - markers = _af_marker_new(markerCount); - if (!markers) - return AF_FAIL; - - for (int i=0; imarkers[i].id; - markers[i].name = _af_strdup(setup->markers[i].name); - if (!markers[i].name) - return AF_FAIL; - - markers[i].comment = _af_strdup(setup->markers[i].comment); - if (!markers[i].comment) - return AF_FAIL; - markers[i].position = 0; - } - - return AF_SUCCEED; -} - -void Track::computeTotalFileFrames() -{ - if (f.bytesPerPacket && f.framesPerPacket) - totalfframes = (data_size / f.bytesPerPacket) * f.framesPerPacket; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/Track.h b/tools/audiofile-0.3.6/libaudiofile/Track.h deleted file mode 100644 index 5c83a481..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/Track.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - track.h -*/ - -#ifndef TRACK_H -#define TRACK_H - -#include "AudioFormat.h" -#include "Shared.h" -#include "afinternal.h" - -class ModuleState; -class PacketTable; -struct Marker; -struct MarkerSetup; - -struct TrackSetup -{ - int id; - - AudioFormat f; - - bool rateSet, sampleFormatSet, sampleWidthSet, byteOrderSet, - channelCountSet, compressionSet, aesDataSet, markersSet, - dataOffsetSet, frameCountSet; - - int markerCount; - MarkerSetup *markers; - - AFfileoffset dataOffset; - AFframecount frameCount; -}; - -struct Track -{ - Track(); - ~Track(); - - int id; /* usually AF_DEFAULT_TRACKID */ - - AudioFormat f, v; /* file and virtual audio formats */ - - SharedPtr m_packetTable; - - double *channelMatrix; - - int markerCount; - Marker *markers; - - bool hasAESData; /* Is AES nonaudio data present? */ - unsigned char aesData[24]; /* AES nonaudio data */ - - AFframecount totalfframes; /* frameCount */ - AFframecount nextfframe; /* currentFrame */ - AFframecount frames2ignore; - AFfileoffset fpos_first_frame; /* dataStart */ - AFfileoffset fpos_next_frame; - AFfileoffset fpos_after_data; - AFframecount totalvframes; - AFframecount nextvframe; - AFfileoffset data_size; /* trackBytes */ - - SharedPtr ms; - - double taper, dynamic_range; - bool ratecvt_filter_params_set; - - bool filemodhappy; - - void print(); - - Marker *getMarker(int markerID); - status copyMarkers(TrackSetup *setup); - - void computeTotalFileFrames(); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/UUID.cpp b/tools/audiofile-0.3.6/libaudiofile/UUID.cpp deleted file mode 100644 index 5e4d8baa..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/UUID.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2011, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "config.h" -#include "UUID.h" - -#include -#include - -bool UUID::operator==(const UUID &u) const -{ - return !memcmp(data, u.data, 16); -} - -bool UUID::operator!=(const UUID &u) const -{ - return memcmp(data, u.data, 16) != 0; -} - -std::string UUID::name() const -{ - char s[37]; - uint32_t u1 = - (data[0] << 24) | - (data[1] << 16) | - (data[2] << 8) | - data[3]; - uint16_t u2 = - (data[4] << 8) | - data[5]; - uint16_t u3 = - (data[6] << 8) | - data[7]; - uint16_t u4 = - (data[8] << 8) | - data[9]; - snprintf(s, 37, "%08x-%04x-%04x-%04x-%02x%02x%02x%02x%02x%02x", - u1, u2, u3, u4, - data[10], data[11], data[12], data[13], data[14], data[15]); - return std::string(s); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/UUID.h b/tools/audiofile-0.3.6/libaudiofile/UUID.h deleted file mode 100644 index 76f724f9..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/UUID.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright (C) 2011, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef UUID_H -#define UUID_H - -#include -#include - -struct UUID -{ - uint8_t data[16]; - - bool operator==(const UUID &) const; - bool operator!=(const UUID &) const; - std::string name() const; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/VOC.cpp b/tools/audiofile-0.3.6/libaudiofile/VOC.cpp deleted file mode 100644 index 4b1e0f85..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/VOC.cpp +++ /dev/null @@ -1,431 +0,0 @@ -/* - Audio File Library - Copyright (C) 2011-2013, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "VOC.h" - -#include "File.h" -#include "Track.h" -#include "Setup.h" -#include "byteorder.h" -#include "util.h" - -#include -#include - -const int _af_voc_compression_types[_AF_VOC_NUM_COMPTYPES] = -{ - AF_COMPRESSION_G711_ULAW, - AF_COMPRESSION_G711_ALAW -}; - -static const int kVOCMagicLength = 20; -static const char kVOCMagic[kVOCMagicLength + 1] = "Creative Voice File\x1a"; - -enum -{ - kVOCTerminator = 0, - kVOCSoundData = 1, - kVOCSoundDataContinuation = 2, - kVOCSilence = 3, - kVOCMarker = 4, - kVOCText = 5, - kVOCRepeatStart = 6, - kVOCRepeatEnd = 7, - kVOCExtendedInfo = 8, - kVOCSoundDataNew = 9 -}; - -enum -{ - kVOCFormatU8 = 0, - kVOCFormatCreativeADPCM4_8 = 1, - kVOCFormatCreativeADPCM3_8 = 2, - kVOCFormatCreativeADPCM2_8 = 3, - kVOCFormatS16 = 4, - kVOCFormatAlaw = 6, - kVOCFormatUlaw = 7, - kVOCFormatCreativeADPCM4_16 = 0x200, -}; - -static const _AFfilesetup vocDefaultFileSetup = -{ - _AF_VALID_FILESETUP, // valid - AF_FILE_VOC, // fileFormat - true, // trackSet - true, // instrumentSet - true, // miscellaneousSet - 1, // trackCount - NULL, // tracks - 1, // instrumentCount - NULL, // instruments - 0, // miscellaneousCount - NULL // miscellaneous -}; - -VOCFile::VOCFile() : - m_soundDataOffset(-1) -{ - setFormatByteOrder(AF_BYTEORDER_LITTLEENDIAN); -} - -bool VOCFile::recognize(File *f) -{ - f->seek(0, File::SeekFromBeginning); - char buffer[kVOCMagicLength]; - if (f->read(buffer, kVOCMagicLength) != kVOCMagicLength) - return false; - if (memcmp(buffer, kVOCMagic, kVOCMagicLength) != 0) - return false; - return true; -} - -AFfilesetup VOCFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "VOC file must have 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = &setup->tracks[0]; - if (track->sampleFormatSet) - { - if (!track->f.isInteger()) - { - _af_error(AF_BAD_SAMPFMT, - "VOC format supports only integer audio data"); - return AF_NULL_FILESETUP; - } - - if ((track->f.isSigned() && track->f.sampleWidth != 16) || - (track->f.isUnsigned() && track->f.sampleWidth != 8)) - { - _af_error(AF_BAD_SAMPFMT, - "VOC format supports only 16-bit signed or 8-bit unsigned data"); - return AF_NULL_FILESETUP; - } - } - else - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, - track->f.sampleWidth); - - if (track->f.isUncompressed() && - track->byteOrderSet && - track->f.byteOrder != AF_BYTEORDER_LITTLEENDIAN && - track->f.isByteOrderSignificant()) - { - _af_error(AF_BAD_BYTEORDER, "VOC supports only little-endian data"); - return AF_NULL_FILESETUP; - } - - if (track->f.isUncompressed()) - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - - if (track->f.compressionType != AF_COMPRESSION_NONE && - track->f.compressionType != AF_COMPRESSION_G711_ULAW && - track->f.compressionType != AF_COMPRESSION_G711_ALAW) - { - _af_error(AF_BAD_COMPTYPE, - "compression format %d not supported in VOC file", - track->f.compressionType); - return AF_NULL_FILESETUP; - } - - if (track->markersSet && track->markerCount) - { - _af_error(AF_BAD_NUMMARKS, "VOC does not support markers"); - return AF_NULL_FILESETUP; - } - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "VOC does not support AES data"); - return AF_NULL_FILESETUP; - } - - return _af_filesetup_copy(setup, &vocDefaultFileSetup, true); -} - -status VOCFile::readInit(AFfilesetup) -{ - m_fh->seek(20, File::SeekFromBeginning); - - uint16_t dataOffset, version, checksum; - readU16(&dataOffset); - readU16(&version); - readU16(&checksum); - - Track *track = allocateTrack(); - - bool hasExtendedInfo = false; - bool foundSoundData = false; - - off_t position = m_fh->tell(); - off_t fileLength = m_fh->length(); - while (position < fileLength) - { - uint32_t blockHeader; - if (!readU32(&blockHeader)) - break; - uint8_t blockType = blockHeader & 0xff; - uint32_t blockSize = blockHeader >> 8; - - if (blockType == kVOCSoundData) - { - if (foundSoundData) - { - _af_error(AF_BAD_HEADER, "VOC file contains multiple sound data blocks"); - return AF_FAIL; - } - - foundSoundData = true; - - uint8_t frequencyDivisor, codec; - readU8(&frequencyDivisor); - readU8(&codec); - - if (!hasExtendedInfo) - { - track->f.channelCount = 1; - track->f.sampleRate = 1000000 / (256 - frequencyDivisor); - } - - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - track->f.framesPerPacket = 1; - - if (codec == kVOCFormatU8) - { - _af_set_sample_format(&track->f, AF_SAMPFMT_UNSIGNED, 8); - track->f.computeBytesPerPacketPCM(); - } - else if (codec == kVOCFormatCreativeADPCM4_8 || - codec == kVOCFormatCreativeADPCM3_8 || - codec == kVOCFormatCreativeADPCM2_8) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, - "Creative ADPCM compression is not currently suppported"); - return AF_FAIL; - } - else - { - _af_error(AF_BAD_CODEC_TYPE, - "VOC file contains unrecognized codec type %d", codec); - return AF_FAIL; - } - - track->fpos_first_frame = m_fh->tell(); - track->data_size = m_fh->length() - 1 - track->fpos_first_frame; - track->computeTotalFileFrames(); - } - else if (blockType == kVOCExtendedInfo) - { - if (foundSoundData) - { - _af_error(AF_BAD_HEADER, "VOC extended information found after sound data"); - return AF_FAIL; - } - - hasExtendedInfo = true; - - uint16_t frequencyDivisor; - uint8_t bitsPerSample; - uint8_t isStereo; - readU16(&frequencyDivisor); - readU8(&bitsPerSample); - readU8(&isStereo); - - track->f.sampleWidth = bitsPerSample; - track->f.channelCount = isStereo ? 2 : 1; - uint32_t frequencyDividend = 256000000 / (isStereo ? 2 : 1); - track->f.sampleRate = frequencyDividend / (65536 - frequencyDivisor); - } - else if (blockType == kVOCSoundDataNew) - { - if (foundSoundData) - { - _af_error(AF_BAD_HEADER, "VOC file contains multiple sound data blocks"); - return AF_FAIL; - } - - foundSoundData = true; - - uint32_t sampleRate; - uint8_t bitsPerSample, channels; - uint16_t format; - uint32_t pad; - readU32(&sampleRate); - readU8(&bitsPerSample); - readU8(&channels); - readU16(&format); - readU32(&pad); - - if (!channels) - { - _af_error(AF_BAD_CHANNELS, "invalid file with 0 channels"); - return AF_FAIL; - } - - track->fpos_first_frame = m_fh->tell(); - track->data_size = blockSize - 12; - - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - track->f.sampleRate = sampleRate; - track->f.channelCount = channels; - track->f.framesPerPacket = 1; - - if (format == kVOCFormatU8) - { - _af_set_sample_format(&track->f, AF_SAMPFMT_UNSIGNED, 8); - track->f.computeBytesPerPacketPCM(); - } - else if (format == kVOCFormatS16) - { - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); - track->f.computeBytesPerPacketPCM(); - } - else if (format == kVOCFormatAlaw) - { - track->f.compressionType = AF_COMPRESSION_G711_ALAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.bytesPerPacket = track->f.channelCount; - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); - } - else if (format == kVOCFormatUlaw) - { - track->f.compressionType = AF_COMPRESSION_G711_ULAW; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.bytesPerPacket = track->f.channelCount; - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); - } - else if (format == kVOCFormatCreativeADPCM4_8 || - format == kVOCFormatCreativeADPCM3_8 || - format == kVOCFormatCreativeADPCM2_8 || - format == kVOCFormatCreativeADPCM4_16) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, - "Creative ADPCM compression is not currently supported"); - return AF_FAIL; - } - else - { - _af_error(AF_BAD_CODEC_TYPE, - "VOC file contains unrecognized codec type %d", format); - return AF_FAIL; - } - - track->computeTotalFileFrames(); - } - - position += 4 + blockSize; - - m_fh->seek(position, File::SeekFromBeginning); - } - - return AF_SUCCEED; -} - -status VOCFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - m_fh->write(kVOCMagic, kVOCMagicLength); - uint16_t dataOffset = 0x001a; - uint16_t version = 0x0114; - uint16_t checksum = 0x1234 + ~version; - writeU16(&dataOffset); - writeU16(&version); - writeU16(&checksum); - - return writeSoundData(); -} - -status VOCFile::update() -{ - if (writeSoundData() == AF_FAIL || writeTerminator() == AF_FAIL) - return AF_FAIL; - return AF_SUCCEED; -} - -status VOCFile::writeSoundData() -{ - if (m_soundDataOffset == -1) - m_soundDataOffset = m_fh->tell(); - else - m_fh->seek(m_soundDataOffset, File::SeekFromBeginning); - - Track *track = getTrack(); - - assert((track->f.isSigned() && track->f.sampleWidth == 16) || - (track->f.isUnsigned() && track->f.sampleWidth == 8)); - - uint8_t blockType = kVOCSoundDataNew; - uint32_t blockSize = 12 + track->data_size; - uint32_t blockHeader = blockSize << 8 | blockType; - if (!writeU32(&blockHeader)) - return AF_FAIL; - - uint32_t sampleRate = track->f.sampleRate; - uint8_t bitsPerSample = track->f.sampleWidth; - uint8_t channels = track->f.channelCount; - uint16_t format; - if (track->f.compressionType == AF_COMPRESSION_G711_ULAW) - { - format = kVOCFormatUlaw; - bitsPerSample = 8; - } - else if (track->f.compressionType == AF_COMPRESSION_G711_ALAW) - { - format = kVOCFormatAlaw; - bitsPerSample = 8; - } - else if (track->f.compressionType == AF_COMPRESSION_NONE) - { - if (track->f.isUnsigned()) - format = kVOCFormatU8; - else - format = kVOCFormatS16; - } - uint32_t pad = 0; - if (!writeU32(&sampleRate) || - !writeU8(&bitsPerSample) || - !writeU8(&channels) || - !writeU16(&format) || - !writeU32(&pad)) - return AF_FAIL; - - if (track->fpos_first_frame == 0) - track->fpos_first_frame = m_fh->tell(); - - return AF_SUCCEED; -} - -status VOCFile::writeTerminator() -{ - Track *track = getTrack(); - m_fh->seek(track->fpos_first_frame + track->data_size, File::SeekFromBeginning); - uint8_t terminator = kVOCTerminator; - if (!writeU8(&terminator)) - return AF_FAIL; - return AF_SUCCEED; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/VOC.h b/tools/audiofile-0.3.6/libaudiofile/VOC.h deleted file mode 100644 index 18554f1f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/VOC.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - Audio File Library - Copyright (C) 2011, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef VOC_H -#define VOC_H - -#include "Compiler.h" -#include "FileHandle.h" - -#define _AF_VOC_NUM_COMPTYPES 2 -extern const int _af_voc_compression_types[_AF_VOC_NUM_COMPTYPES]; - -class VOCFile : public _AFfilehandle -{ -public: - VOCFile(); - - static bool recognize(File *); - static AFfilesetup completeSetup(AFfilesetup); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - status update() OVERRIDE; - -private: - status writeSoundData(); - status writeTerminator(); - - AFfileoffset m_soundDataOffset; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/WAVE.cpp b/tools/audiofile-0.3.6/libaudiofile/WAVE.cpp deleted file mode 100644 index 9dd85114..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/WAVE.cpp +++ /dev/null @@ -1,1602 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, 2003-2004, 2010-2013, Michael Pruett - Copyright (C) 2000-2002, Silicon Graphics, Inc. - Copyright (C) 2002-2003, Davy Durham - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - WAVE.cpp - - This file contains code for reading and writing RIFF WAVE format - sound files. -*/ - -#include "config.h" -#include "WAVE.h" - -#include -#include -#include -#include -#include - -#include "File.h" -#include "Instrument.h" -#include "Marker.h" -#include "Setup.h" -#include "Tag.h" -#include "Track.h" -#include "UUID.h" -#include "byteorder.h" -#include "util.h" - -/* These constants are from RFC 2361. */ -enum -{ - WAVE_FORMAT_UNKNOWN = 0x0000, /* Microsoft Unknown Wave Format */ - WAVE_FORMAT_PCM = 0x0001, /* Microsoft PCM Format */ - WAVE_FORMAT_ADPCM = 0x0002, /* Microsoft ADPCM Format */ - WAVE_FORMAT_IEEE_FLOAT = 0x0003, /* IEEE Float */ - WAVE_FORMAT_VSELP = 0x0004, /* Compaq Computer's VSELP */ - WAVE_FORMAT_IBM_CVSD = 0x0005, /* IBM CVSD */ - WAVE_FORMAT_ALAW = 0x0006, /* Microsoft ALAW */ - WAVE_FORMAT_MULAW = 0x0007, /* Microsoft MULAW */ - WAVE_FORMAT_OKI_ADPCM = 0x0010, /* OKI ADPCM */ - WAVE_FORMAT_DVI_ADPCM = 0x0011, /* Intel's DVI ADPCM */ - WAVE_FORMAT_MEDIASPACE_ADPCM = 0x0012, /* Videologic's MediaSpace ADPCM */ - WAVE_FORMAT_SIERRA_ADPCM = 0x0013, /* Sierra ADPCM */ - WAVE_FORMAT_G723_ADPCM = 0x0014, /* G.723 ADPCM */ - WAVE_FORMAT_DIGISTD = 0x0015, /* DSP Solutions' DIGISTD */ - WAVE_FORMAT_DIGIFIX = 0x0016, /* DSP Solutions' DIGIFIX */ - WAVE_FORMAT_DIALOGIC_OKI_ADPCM = 0x0017, /* Dialogic OKI ADPCM */ - WAVE_FORMAT_MEDIAVISION_ADPCM = 0x0018, /* MediaVision ADPCM */ - WAVE_FORMAT_CU_CODEC = 0x0019, /* HP CU */ - WAVE_FORMAT_YAMAHA_ADPCM = 0x0020, /* Yamaha ADPCM */ - WAVE_FORMAT_SONARC = 0x0021, /* Speech Compression's Sonarc */ - WAVE_FORMAT_DSP_TRUESPEECH = 0x0022, /* DSP Group's True Speech */ - WAVE_FORMAT_ECHOSC1 = 0x0023, /* Echo Speech's EchoSC1 */ - WAVE_FORMAT_AUDIOFILE_AF36 = 0x0024, /* Audiofile AF36 */ - WAVE_FORMAT_APTX = 0x0025, /* APTX */ - WAVE_FORMAT_DOLBY_AC2 = 0x0030, /* Dolby AC2 */ - WAVE_FORMAT_GSM610 = 0x0031, /* GSM610 */ - WAVE_FORMAT_MSNAUDIO = 0x0032, /* MSNAudio */ - WAVE_FORMAT_ANTEX_ADPCME = 0x0033, /* Antex ADPCME */ - - WAVE_FORMAT_MPEG = 0x0050, /* MPEG */ - WAVE_FORMAT_MPEGLAYER3 = 0x0055, /* MPEG layer 3 */ - WAVE_FORMAT_LUCENT_G723 = 0x0059, /* Lucent G.723 */ - WAVE_FORMAT_G726_ADPCM = 0x0064, /* G.726 ADPCM */ - WAVE_FORMAT_G722_ADPCM = 0x0065, /* G.722 ADPCM */ - - IBM_FORMAT_MULAW = 0x0101, - IBM_FORMAT_ALAW = 0x0102, - IBM_FORMAT_ADPCM = 0x0103, - - WAVE_FORMAT_CREATIVE_ADPCM = 0x0200, - - WAVE_FORMAT_EXTENSIBLE = 0xfffe -}; - -const int _af_wave_compression_types[_AF_WAVE_NUM_COMPTYPES] = -{ - AF_COMPRESSION_G711_ULAW, - AF_COMPRESSION_G711_ALAW, - AF_COMPRESSION_IMA, - AF_COMPRESSION_MS_ADPCM -}; - -const InstParamInfo _af_wave_inst_params[_AF_WAVE_NUM_INSTPARAMS] = -{ - { AF_INST_MIDI_BASENOTE, AU_PVTYPE_LONG, "MIDI base note", {60} }, - { AF_INST_NUMCENTS_DETUNE, AU_PVTYPE_LONG, "Detune in cents", {0} }, - { AF_INST_MIDI_LOVELOCITY, AU_PVTYPE_LONG, "Low velocity", {1} }, - { AF_INST_MIDI_HIVELOCITY, AU_PVTYPE_LONG, "High velocity", {127} }, - { AF_INST_MIDI_LONOTE, AU_PVTYPE_LONG, "Low note", {0} }, - { AF_INST_MIDI_HINOTE, AU_PVTYPE_LONG, "High note", {127} }, - { AF_INST_NUMDBS_GAIN, AU_PVTYPE_LONG, "Gain in dB", {0} } -}; - -static const _AFfilesetup waveDefaultFileSetup = -{ - _AF_VALID_FILESETUP, /* valid */ - AF_FILE_WAVE, /* fileFormat */ - true, /* trackSet */ - true, /* instrumentSet */ - true, /* miscellaneousSet */ - 1, /* trackCount */ - NULL, /* tracks */ - 0, /* instrumentCount */ - NULL, /* instruments */ - 0, /* miscellaneousCount */ - NULL /* miscellaneous */ -}; - -static const UUID _af_wave_guid_pcm = -{{ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -}}; -static const UUID _af_wave_guid_ieee_float = -{{ - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -}}; -static const UUID _af_wave_guid_ulaw = -{{ - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -}}; -static const UUID _af_wave_guid_alaw = -{{ - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -}}; - -WAVEFile::WAVEFile() -{ - setFormatByteOrder(AF_BYTEORDER_LITTLEENDIAN); - - m_factOffset = 0; - m_miscellaneousOffset = 0; - m_markOffset = 0; - m_dataSizeOffset = 0; - - m_msadpcmNumCoefficients = 0; -} - -status WAVEFile::parseFrameCount(const Tag &id, uint32_t size) -{ - Track *track = getTrack(); - - uint32_t totalFrames; - readU32(&totalFrames); - - track->totalfframes = totalFrames; - - return AF_SUCCEED; -} - -status WAVEFile::parseFormat(const Tag &id, uint32_t size) -{ - Track *track = getTrack(); - - uint16_t formatTag; - readU16(&formatTag); - uint16_t channelCount; - readU16(&channelCount); - uint32_t sampleRate; - readU32(&sampleRate); - uint32_t averageBytesPerSecond; - readU32(&averageBytesPerSecond); - uint16_t blockAlign; - readU16(&blockAlign); - - if (!channelCount) - { - _af_error(AF_BAD_CHANNELS, "invalid file with 0 channels"); - return AF_FAIL; - } - - track->f.channelCount = channelCount; - track->f.sampleRate = sampleRate; - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - - /* Default to uncompressed audio data. */ - track->f.compressionType = AF_COMPRESSION_NONE; - track->f.framesPerPacket = 1; - - switch (formatTag) - { - case WAVE_FORMAT_PCM: - { - uint16_t bitsPerSample; - readU16(&bitsPerSample); - - track->f.sampleWidth = bitsPerSample; - - if (bitsPerSample == 0 || bitsPerSample > 32) - { - _af_error(AF_BAD_WIDTH, - "bad sample width of %d bits", - bitsPerSample); - return AF_FAIL; - } - - if (bitsPerSample <= 8) - track->f.sampleFormat = AF_SAMPFMT_UNSIGNED; - else - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - } - break; - - case WAVE_FORMAT_MULAW: - case IBM_FORMAT_MULAW: - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.compressionType = AF_COMPRESSION_G711_ULAW; - track->f.bytesPerPacket = track->f.channelCount; - break; - - case WAVE_FORMAT_ALAW: - case IBM_FORMAT_ALAW: - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.compressionType = AF_COMPRESSION_G711_ALAW; - track->f.bytesPerPacket = track->f.channelCount; - break; - - case WAVE_FORMAT_IEEE_FLOAT: - { - uint16_t bitsPerSample; - readU16(&bitsPerSample); - - if (bitsPerSample == 64) - { - track->f.sampleWidth = 64; - track->f.sampleFormat = AF_SAMPFMT_DOUBLE; - } - else - { - track->f.sampleWidth = 32; - track->f.sampleFormat = AF_SAMPFMT_FLOAT; - } - } - break; - - case WAVE_FORMAT_ADPCM: - { - uint16_t bitsPerSample, extraByteCount, - samplesPerBlock, numCoefficients; - - if (track->f.channelCount != 1 && - track->f.channelCount != 2) - { - _af_error(AF_BAD_CHANNELS, - "WAVE file with MS ADPCM compression " - "must have 1 or 2 channels"); - } - - readU16(&bitsPerSample); - readU16(&extraByteCount); - readU16(&samplesPerBlock); - readU16(&numCoefficients); - - /* numCoefficients should be at least 7. */ - assert(numCoefficients >= 7 && numCoefficients <= 255); - - m_msadpcmNumCoefficients = numCoefficients; - - for (int i=0; if.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.compressionType = AF_COMPRESSION_MS_ADPCM; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - - track->f.framesPerPacket = samplesPerBlock; - track->f.bytesPerPacket = blockAlign; - - // Create the parameter list. - AUpvlist pv = AUpvnew(2); - AUpvsetparam(pv, 0, _AF_MS_ADPCM_NUM_COEFFICIENTS); - AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); - long l = m_msadpcmNumCoefficients; - AUpvsetval(pv, 0, &l); - - AUpvsetparam(pv, 1, _AF_MS_ADPCM_COEFFICIENTS); - AUpvsetvaltype(pv, 1, AU_PVTYPE_PTR); - void *v = m_msadpcmCoefficients; - AUpvsetval(pv, 1, &v); - - track->f.compressionParams = pv; - } - break; - - case WAVE_FORMAT_DVI_ADPCM: - { - uint16_t bitsPerSample, extraByteCount, samplesPerBlock; - - readU16(&bitsPerSample); - readU16(&extraByteCount); - readU16(&samplesPerBlock); - - if (bitsPerSample != 4) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, - "IMA ADPCM compression supports only 4 bits per sample"); - } - - int bytesPerBlock = (samplesPerBlock + 14) / 8 * 4 * channelCount; - if (bytesPerBlock > blockAlign || (samplesPerBlock % 8) != 1) - { - _af_error(AF_BAD_CODEC_CONFIG, - "Invalid samples per block for IMA ADPCM compression"); - } - - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.compressionType = AF_COMPRESSION_IMA; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - - initIMACompressionParams(); - - track->f.framesPerPacket = samplesPerBlock; - track->f.bytesPerPacket = blockAlign; - } - break; - - case WAVE_FORMAT_EXTENSIBLE: - { - uint16_t bitsPerSample; - readU16(&bitsPerSample); - uint16_t extraByteCount; - readU16(&extraByteCount); - uint16_t reserved; - readU16(&reserved); - uint32_t channelMask; - readU32(&channelMask); - UUID subformat; - readUUID(&subformat); - if (subformat == _af_wave_guid_pcm) - { - track->f.sampleWidth = bitsPerSample; - - if (bitsPerSample == 0 || bitsPerSample > 32) - { - _af_error(AF_BAD_WIDTH, - "bad sample width of %d bits", - bitsPerSample); - return AF_FAIL; - } - - // Use valid bits per sample if bytes per sample is the same. - if (reserved <= bitsPerSample && - (reserved + 7) / 8 == (bitsPerSample + 7) / 8) - track->f.sampleWidth = reserved; - - if (bitsPerSample <= 8) - track->f.sampleFormat = AF_SAMPFMT_UNSIGNED; - else - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - } - else if (subformat == _af_wave_guid_ieee_float) - { - if (bitsPerSample == 64) - { - track->f.sampleWidth = 64; - track->f.sampleFormat = AF_SAMPFMT_DOUBLE; - } - else - { - track->f.sampleWidth = 32; - track->f.sampleFormat = AF_SAMPFMT_FLOAT; - } - } - else if (subformat == _af_wave_guid_alaw || - subformat == _af_wave_guid_ulaw) - { - track->f.compressionType = subformat == _af_wave_guid_alaw ? - AF_COMPRESSION_G711_ALAW : AF_COMPRESSION_G711_ULAW; - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - track->f.byteOrder = _AF_BYTEORDER_NATIVE; - track->f.bytesPerPacket = channelCount; - } - else - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE extensible data format %s is not currently supported", subformat.name().c_str()); - return AF_FAIL; - } - } - break; - - case WAVE_FORMAT_YAMAHA_ADPCM: - case WAVE_FORMAT_OKI_ADPCM: - case WAVE_FORMAT_CREATIVE_ADPCM: - case IBM_FORMAT_ADPCM: - _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE ADPCM data format 0x%x is not currently supported", formatTag); - return AF_FAIL; - break; - - case WAVE_FORMAT_MPEG: - _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE MPEG data format is not supported"); - return AF_FAIL; - break; - - case WAVE_FORMAT_MPEGLAYER3: - _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE MPEG layer 3 data format is not supported"); - return AF_FAIL; - break; - - default: - _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE file data format 0x%x not currently supported != 0xfffe ? %d, != EXTENSIBLE? %d", formatTag, formatTag != 0xfffe, formatTag != WAVE_FORMAT_EXTENSIBLE); - return AF_FAIL; - break; - } - - if (track->f.isUncompressed()) - track->f.computeBytesPerPacketPCM(); - - _af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth); - - return AF_SUCCEED; -} - -status WAVEFile::parseData(const Tag &id, uint32_t size) -{ - Track *track = getTrack(); - - track->fpos_first_frame = m_fh->tell(); - track->data_size = size; - - return AF_SUCCEED; -} - -status WAVEFile::parsePlayList(const Tag &id, uint32_t size) -{ - uint32_t segmentCount; - readU32(&segmentCount); - - if (segmentCount == 0) - { - m_instrumentCount = 0; - m_instruments = NULL; - return AF_SUCCEED; - } - - for (unsigned segment=0; segmentmarkerCount = markerCount; - - if (markerCount == 0) - { - track->markers = NULL; - return AF_SUCCEED; - } - - if ((track->markers = _af_marker_new(markerCount)) == NULL) - return AF_FAIL; - - for (unsigned i=0; imarkers[i]; - - readU32(&id); - readU32(&position); - readU32(&chunkid); - readU32(&chunkByteOffset); - readU32(&blockByteOffset); - - /* - sampleFrameOffset represents the position of - the mark in units of frames. - */ - readU32(&sampleFrameOffset); - - marker->id = id; - marker->position = sampleFrameOffset; - marker->name = _af_strdup(""); - marker->comment = _af_strdup(""); - } - - return AF_SUCCEED; -} - -/* Parse an adtl sub-chunk within a LIST chunk. */ -status WAVEFile::parseADTLSubChunk(const Tag &id, uint32_t size) -{ - Track *track = getTrack(); - - AFfileoffset endPos = m_fh->tell() + size; - - while (m_fh->tell() < endPos) - { - Tag chunkID; - uint32_t chunkSize; - - readTag(&chunkID); - readU32(&chunkSize); - - if (chunkID == "labl" || chunkID == "note") - { - uint32_t id; - long length=chunkSize-4; - char *p = (char *) _af_malloc(length); - - readU32(&id); - m_fh->read(p, length); - - Marker *marker = track->getMarker(id); - - if (marker) - { - if (chunkID == "labl") - { - free(marker->name); - marker->name = p; - } - else if (chunkID == "note") - { - free(marker->comment); - marker->comment = p; - } - else - free(p); - } - else - free(p); - - /* - If chunkSize is odd, skip an extra byte - at the end of the chunk. - */ - if ((chunkSize % 2) != 0) - m_fh->seek(1, File::SeekFromCurrent); - } - else - { - /* If chunkSize is odd, skip an extra byte. */ - m_fh->seek(chunkSize + (chunkSize % 2), File::SeekFromCurrent); - } - } - return AF_SUCCEED; -} - -/* Parse an INFO sub-chunk within a LIST chunk. */ -status WAVEFile::parseINFOSubChunk(const Tag &id, uint32_t size) -{ - AFfileoffset endPos = m_fh->tell() + size; - - while (m_fh->tell() < endPos) - { - int misctype = AF_MISC_UNRECOGNIZED; - Tag miscid; - uint32_t miscsize; - - readTag(&miscid); - readU32(&miscsize); - - if (miscid == "IART") - misctype = AF_MISC_AUTH; - else if (miscid == "INAM") - misctype = AF_MISC_NAME; - else if (miscid == "ICOP") - misctype = AF_MISC_COPY; - else if (miscid == "ICMT") - misctype = AF_MISC_ICMT; - else if (miscid == "ICRD") - misctype = AF_MISC_ICRD; - else if (miscid == "ISFT") - misctype = AF_MISC_ISFT; - - if (misctype != AF_MISC_UNRECOGNIZED) - { - char *string = (char *) _af_malloc(miscsize); - - m_fh->read(string, miscsize); - - m_miscellaneousCount++; - m_miscellaneous = (Miscellaneous *) _af_realloc(m_miscellaneous, sizeof (Miscellaneous) * m_miscellaneousCount); - - m_miscellaneous[m_miscellaneousCount-1].id = m_miscellaneousCount; - m_miscellaneous[m_miscellaneousCount-1].type = misctype; - m_miscellaneous[m_miscellaneousCount-1].size = miscsize; - m_miscellaneous[m_miscellaneousCount-1].position = 0; - m_miscellaneous[m_miscellaneousCount-1].buffer = string; - } - else - { - m_fh->seek(miscsize, File::SeekFromCurrent); - } - - /* Make the current position an even number of bytes. */ - if (miscsize % 2 != 0) - m_fh->seek(1, File::SeekFromCurrent); - } - return AF_SUCCEED; -} - -status WAVEFile::parseList(const Tag &id, uint32_t size) -{ - Tag typeID; - readTag(&typeID); - size-=4; - - if (typeID == "adtl") - { - /* Handle adtl sub-chunks. */ - return parseADTLSubChunk(typeID, size); - } - else if (typeID == "INFO") - { - /* Handle INFO sub-chunks. */ - return parseINFOSubChunk(typeID, size); - } - else - { - /* Skip unhandled sub-chunks. */ - m_fh->seek(size, File::SeekFromCurrent); - return AF_SUCCEED; - } - return AF_SUCCEED; -} - -status WAVEFile::parseInstrument(const Tag &id, uint32_t size) -{ - uint8_t baseNote; - int8_t detune, gain; - uint8_t lowNote, highNote, lowVelocity, highVelocity; - uint8_t padByte; - - readU8(&baseNote); - readS8(&detune); - readS8(&gain); - readU8(&lowNote); - readU8(&highNote); - readU8(&lowVelocity); - readU8(&highVelocity); - readU8(&padByte); - - return AF_SUCCEED; -} - -bool WAVEFile::recognize(File *fh) -{ - uint8_t buffer[8]; - - fh->seek(0, File::SeekFromBeginning); - - if (fh->read(buffer, 8) != 8 || memcmp(buffer, "RIFF", 4) != 0) - return false; - if (fh->read(buffer, 4) != 4 || memcmp(buffer, "WAVE", 4) != 0) - return false; - - return true; -} - -status WAVEFile::readInit(AFfilesetup setup) -{ - Tag type, formtype; - uint32_t size; - uint32_t index = 0; - - bool hasFormat = false; - bool hasData = false; - bool hasFrameCount = false; - - Track *track = allocateTrack(); - - m_fh->seek(0, File::SeekFromBeginning); - - readTag(&type); - readU32(&size); - readTag(&formtype); - - assert(type == "RIFF"); - assert(formtype == "WAVE"); - - /* Include the offset of the form type. */ - index += 4; - - while (index < size) - { - Tag chunkid; - uint32_t chunksize = 0; - status result; - - readTag(&chunkid); - readU32(&chunksize); - - if (chunkid == "fmt ") - { - result = parseFormat(chunkid, chunksize); - if (result == AF_FAIL) - return AF_FAIL; - - hasFormat = true; - } - else if (chunkid == "data") - { - /* The format chunk must precede the data chunk. */ - if (!hasFormat) - { - _af_error(AF_BAD_HEADER, "missing format chunk in WAVE file"); - return AF_FAIL; - } - - result = parseData(chunkid, chunksize); - if (result == AF_FAIL) - return AF_FAIL; - - hasData = true; - } - else if (chunkid == "inst") - { - result = parseInstrument(chunkid, chunksize); - if (result == AF_FAIL) - return AF_FAIL; - } - else if (chunkid == "fact") - { - hasFrameCount = true; - result = parseFrameCount(chunkid, chunksize); - if (result == AF_FAIL) - return AF_FAIL; - } - else if (chunkid == "cue ") - { - result = parseCues(chunkid, chunksize); - if (result == AF_FAIL) - return AF_FAIL; - } - else if (chunkid == "LIST" || chunkid == "list") - { - result = parseList(chunkid, chunksize); - if (result == AF_FAIL) - return AF_FAIL; - } - else if (chunkid == "INST") - { - result = parseInstrument(chunkid, chunksize); - if (result == AF_FAIL) - return AF_FAIL; - } - else if (chunkid == "plst") - { - result = parsePlayList(chunkid, chunksize); - if (result == AF_FAIL) - return AF_FAIL; - } - - index += chunksize + 8; - - /* All chunks must be aligned on an even number of bytes */ - if ((index % 2) != 0) - index++; - - m_fh->seek(index + 8, File::SeekFromBeginning); - } - - /* The format chunk and the data chunk are required. */ - if (!hasFormat || !hasData) - { - return AF_FAIL; - } - - /* - At this point we know that the file has a format chunk and a - data chunk, so we can assume that track->f and track->data_size - have been initialized. - */ - if (!hasFrameCount) - { - if (track->f.bytesPerPacket && track->f.framesPerPacket) - { - track->computeTotalFileFrames(); - } - else - { - _af_error(AF_BAD_HEADER, "Frame count required but not found"); - return AF_FAIL; - } - } - - return AF_SUCCEED; -} - -AFfilesetup WAVEFile::completeSetup(AFfilesetup setup) -{ - if (setup->trackSet && setup->trackCount != 1) - { - _af_error(AF_BAD_NUMTRACKS, "WAVE file must have 1 track"); - return AF_NULL_FILESETUP; - } - - TrackSetup *track = setup->getTrack(); - - if (track->f.isCompressed()) - { - if (!track->sampleFormatSet) - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); - else - _af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth); - } - else if (track->sampleFormatSet) - { - switch (track->f.sampleFormat) - { - case AF_SAMPFMT_FLOAT: - if (track->sampleWidthSet && - track->f.sampleWidth != 32) - { - _af_error(AF_BAD_WIDTH, - "Warning: invalid sample width for floating-point WAVE file: %d (must be 32 bits)\n", - track->f.sampleWidth); - _af_set_sample_format(&track->f, AF_SAMPFMT_FLOAT, 32); - } - break; - - case AF_SAMPFMT_DOUBLE: - if (track->sampleWidthSet && - track->f.sampleWidth != 64) - { - _af_error(AF_BAD_WIDTH, - "Warning: invalid sample width for double-precision floating-point WAVE file: %d (must be 64 bits)\n", - track->f.sampleWidth); - _af_set_sample_format(&track->f, AF_SAMPFMT_DOUBLE, 64); - } - break; - - case AF_SAMPFMT_UNSIGNED: - if (track->sampleWidthSet) - { - if (track->f.sampleWidth < 1 || track->f.sampleWidth > 32) - { - _af_error(AF_BAD_WIDTH, "invalid sample width for WAVE file: %d (must be 1-32 bits)\n", track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - if (track->f.sampleWidth > 8) - { - _af_error(AF_BAD_SAMPFMT, "WAVE integer data of more than 8 bits must be two's complement signed"); - _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, track->f.sampleWidth); - } - } - else - /* - If the sample width is not set but the user requests - unsigned data, set the width to 8 bits. - */ - _af_set_sample_format(&track->f, track->f.sampleFormat, 8); - break; - - case AF_SAMPFMT_TWOSCOMP: - if (track->sampleWidthSet) - { - if (track->f.sampleWidth < 1 || track->f.sampleWidth > 32) - { - _af_error(AF_BAD_WIDTH, "invalid sample width %d for WAVE file (must be 1-32)", track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - else if (track->f.sampleWidth <= 8) - { - _af_error(AF_BAD_SAMPFMT, "Warning: WAVE format integer data of 1-8 bits must be unsigned; setting sample format to unsigned"); - _af_set_sample_format(&track->f, AF_SAMPFMT_UNSIGNED, track->f.sampleWidth); - } - } - else - /* - If no sample width was specified, we default to 16 bits - for signed integer data. - */ - _af_set_sample_format(&track->f, track->f.sampleFormat, 16); - break; - } - } - /* - Otherwise set the sample format depending on the sample - width or set completely to default. - */ - else - { - if (!track->sampleWidthSet) - { - track->f.sampleWidth = 16; - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - } - else - { - if (track->f.sampleWidth < 1 || track->f.sampleWidth > 32) - { - _af_error(AF_BAD_WIDTH, "invalid sample width %d for WAVE file (must be 1-32)", track->f.sampleWidth); - return AF_NULL_FILESETUP; - } - else if (track->f.sampleWidth > 8) - /* Here track->f.sampleWidth is in {1..32}. */ - track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; - else - /* Here track->f.sampleWidth is in {1..8}. */ - track->f.sampleFormat = AF_SAMPFMT_UNSIGNED; - } - } - - if (track->f.compressionType != AF_COMPRESSION_NONE && - track->f.compressionType != AF_COMPRESSION_G711_ULAW && - track->f.compressionType != AF_COMPRESSION_G711_ALAW && - track->f.compressionType != AF_COMPRESSION_IMA && - track->f.compressionType != AF_COMPRESSION_MS_ADPCM) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, "compression format not supported in WAVE format"); - return AF_NULL_FILESETUP; - } - - if (track->f.isUncompressed() && - track->byteOrderSet && - track->f.byteOrder != AF_BYTEORDER_LITTLEENDIAN && - track->f.isByteOrderSignificant()) - { - _af_error(AF_BAD_BYTEORDER, "WAVE format only supports little-endian data"); - return AF_NULL_FILESETUP; - } - - if (track->f.isUncompressed()) - track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; - - if (track->aesDataSet) - { - _af_error(AF_BAD_FILESETUP, "WAVE files cannot have AES data"); - return AF_NULL_FILESETUP; - } - - if (setup->instrumentSet) - { - if (setup->instrumentCount > 1) - { - _af_error(AF_BAD_NUMINSTS, "WAVE files can have 0 or 1 instrument"); - return AF_NULL_FILESETUP; - } - else if (setup->instrumentCount == 1) - { - if (setup->instruments[0].loopSet && - setup->instruments[0].loopCount > 0 && - (!track->markersSet || track->markerCount == 0)) - { - _af_error(AF_BAD_NUMMARKS, "WAVE files with loops must contain at least 1 marker"); - return AF_NULL_FILESETUP; - } - } - } - - /* Make sure the miscellaneous data is of an acceptable type. */ - if (setup->miscellaneousSet) - { - for (int i=0; imiscellaneousCount; i++) - { - switch (setup->miscellaneous[i].type) - { - case AF_MISC_COPY: - case AF_MISC_AUTH: - case AF_MISC_NAME: - case AF_MISC_ICRD: - case AF_MISC_ISFT: - case AF_MISC_ICMT: - break; - default: - _af_error(AF_BAD_MISCTYPE, "illegal miscellaneous type [%d] for WAVE file", setup->miscellaneous[i].type); - return AF_NULL_FILESETUP; - } - } - } - - /* - Allocate an AFfilesetup and make all the unset fields correct. - */ - AFfilesetup newsetup = _af_filesetup_copy(setup, &waveDefaultFileSetup, false); - - /* Make sure we do not copy loops if they are not specified in setup. */ - if (setup->instrumentSet && setup->instrumentCount > 0 && - setup->instruments[0].loopSet) - { - free(newsetup->instruments[0].loops); - newsetup->instruments[0].loopCount = 0; - } - - return newsetup; -} - -bool WAVEFile::isInstrumentParameterValid(AUpvlist list, int i) -{ - int param, type; - - AUpvgetparam(list, i, ¶m); - AUpvgetvaltype(list, i, &type); - if (type != AU_PVTYPE_LONG) - return false; - - long lval; - AUpvgetval(list, i, &lval); - - switch (param) - { - case AF_INST_MIDI_BASENOTE: - return ((lval >= 0) && (lval <= 127)); - - case AF_INST_NUMCENTS_DETUNE: - return ((lval >= -50) && (lval <= 50)); - - case AF_INST_MIDI_LOVELOCITY: - return ((lval >= 1) && (lval <= 127)); - - case AF_INST_MIDI_HIVELOCITY: - return ((lval >= 1) && (lval <= 127)); - - case AF_INST_MIDI_LONOTE: - return ((lval >= 0) && (lval <= 127)); - - case AF_INST_MIDI_HINOTE: - return ((lval >= 0) && (lval <= 127)); - - case AF_INST_NUMDBS_GAIN: - return true; - - default: - return false; - } - - return true; -} - -status WAVEFile::writeFormat() -{ - uint16_t formatTag, channelCount; - uint32_t sampleRate, averageBytesPerSecond; - uint16_t blockAlign; - uint32_t chunkSize; - uint16_t bitsPerSample; - - Track *track = getTrack(); - - m_fh->write("fmt ", 4); - - switch (track->f.compressionType) - { - case AF_COMPRESSION_NONE: - chunkSize = 16; - if (track->f.sampleFormat == AF_SAMPFMT_FLOAT || - track->f.sampleFormat == AF_SAMPFMT_DOUBLE) - { - formatTag = WAVE_FORMAT_IEEE_FLOAT; - } - else if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP || - track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) - { - formatTag = WAVE_FORMAT_PCM; - } - else - { - _af_error(AF_BAD_COMPTYPE, "bad sample format"); - return AF_FAIL; - } - - blockAlign = _af_format_frame_size(&track->f, false); - bitsPerSample = 8 * _af_format_sample_size(&track->f, false); - break; - - /* - G.711 compression uses eight bits per sample. - */ - case AF_COMPRESSION_G711_ULAW: - chunkSize = 18; - formatTag = IBM_FORMAT_MULAW; - blockAlign = track->f.channelCount; - bitsPerSample = 8; - break; - - case AF_COMPRESSION_G711_ALAW: - chunkSize = 18; - formatTag = IBM_FORMAT_ALAW; - blockAlign = track->f.channelCount; - bitsPerSample = 8; - break; - - case AF_COMPRESSION_IMA: - chunkSize = 20; - formatTag = WAVE_FORMAT_DVI_ADPCM; - blockAlign = track->f.bytesPerPacket; - bitsPerSample = 4; - break; - - case AF_COMPRESSION_MS_ADPCM: - chunkSize = 50; - formatTag = WAVE_FORMAT_ADPCM; - blockAlign = track->f.bytesPerPacket; - bitsPerSample = 4; - break; - - default: - _af_error(AF_BAD_COMPTYPE, "bad compression type"); - return AF_FAIL; - } - - writeU32(&chunkSize); - writeU16(&formatTag); - - channelCount = track->f.channelCount; - writeU16(&channelCount); - - sampleRate = track->f.sampleRate; - writeU32(&sampleRate); - - averageBytesPerSecond = - track->f.sampleRate * _af_format_frame_size(&track->f, false); - if (track->f.compressionType == AF_COMPRESSION_IMA || - track->f.compressionType == AF_COMPRESSION_MS_ADPCM) - averageBytesPerSecond = track->f.sampleRate * track->f.bytesPerPacket / - track->f.framesPerPacket; - writeU32(&averageBytesPerSecond); - - writeU16(&blockAlign); - - writeU16(&bitsPerSample); - - if (track->f.compressionType == AF_COMPRESSION_G711_ULAW || - track->f.compressionType == AF_COMPRESSION_G711_ALAW) - { - uint16_t zero = 0; - writeU16(&zero); - } - else if (track->f.compressionType == AF_COMPRESSION_IMA) - { - uint16_t extraByteCount = 2; - writeU16(&extraByteCount); - uint16_t samplesPerBlock = track->f.framesPerPacket; - writeU16(&samplesPerBlock); - } - else if (track->f.compressionType == AF_COMPRESSION_MS_ADPCM) - { - uint16_t extraByteCount = 2 + 2 + m_msadpcmNumCoefficients * 4; - writeU16(&extraByteCount); - uint16_t samplesPerBlock = track->f.framesPerPacket; - writeU16(&samplesPerBlock); - - uint16_t numCoefficients = m_msadpcmNumCoefficients; - writeU16(&numCoefficients); - - for (int i=0; if.compressionType == AF_COMPRESSION_NONE && - (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP || - track->f.sampleFormat == AF_SAMPFMT_UNSIGNED)) - return AF_SUCCEED; - - /* - If the offset for the fact chunk hasn't been set yet, - set it to the file's current position. - */ - if (m_factOffset == 0) - m_factOffset = m_fh->tell(); - else - m_fh->seek(m_factOffset, File::SeekFromBeginning); - - m_fh->write("fact", 4); - writeU32(&factSize); - - totalFrameCount = track->totalfframes; - writeU32(&totalFrameCount); - - return AF_SUCCEED; -} - -status WAVEFile::writeData() -{ - Track *track = getTrack(); - - m_fh->write("data", 4); - m_dataSizeOffset = m_fh->tell(); - - uint32_t chunkSize = track->data_size; - - writeU32(&chunkSize); - track->fpos_first_frame = m_fh->tell(); - - return AF_SUCCEED; -} - -status WAVEFile::update() -{ - Track *track = getTrack(); - - if (track->fpos_first_frame != 0) - { - uint32_t dataLength, fileLength; - - // Update the frame count chunk if present. - writeFrameCount(); - - // Update the length of the data chunk. - m_fh->seek(m_dataSizeOffset, File::SeekFromBeginning); - dataLength = (uint32_t) track->data_size; - writeU32(&dataLength); - - // Update the length of the RIFF chunk. - fileLength = (uint32_t) m_fh->length(); - fileLength -= 8; - - m_fh->seek(4, File::SeekFromBeginning); - writeU32(&fileLength); - } - - /* - Write the actual data that was set after initializing - the miscellaneous IDs. The size of the data will be - unchanged. - */ - writeMiscellaneous(); - - // Write the new positions; the size of the data will be unchanged. - writeCues(); - - return AF_SUCCEED; -} - -/* Convert an Audio File Library miscellaneous type to a WAVE type. */ -static bool misc_type_to_wave (int misctype, Tag *miscid) -{ - if (misctype == AF_MISC_AUTH) - *miscid = "IART"; - else if (misctype == AF_MISC_NAME) - *miscid = "INAM"; - else if (misctype == AF_MISC_COPY) - *miscid = "ICOP"; - else if (misctype == AF_MISC_ICMT) - *miscid = "ICMT"; - else if (misctype == AF_MISC_ICRD) - *miscid = "ICRD"; - else if (misctype == AF_MISC_ISFT) - *miscid = "ISFT"; - else - return false; - - return true; -} - -status WAVEFile::writeMiscellaneous() -{ - if (m_miscellaneousCount != 0) - { - uint32_t miscellaneousBytes; - uint32_t chunkSize; - - /* Start at 12 to account for 'LIST', size, and 'INFO'. */ - miscellaneousBytes = 12; - - /* Then calculate the size of the whole INFO chunk. */ - for (int i=0; itell(); - else - m_fh->seek(m_miscellaneousOffset, File::SeekFromBeginning); - - /* - Write the data. On the first call to this - function (from _af_wave_write_init), the - data won't be available, fh->seek is used to - reserve space until the data has been provided. - On subseuent calls to this function (from - _af_wave_update), the data will really be written. - */ - - /* Write 'LIST'. */ - m_fh->write("LIST", 4); - - /* Write the size of the following chunk. */ - chunkSize = miscellaneousBytes-8; - writeU32(&chunkSize); - - /* Write 'INFO'. */ - m_fh->write("INFO", 4); - - /* Write each miscellaneous chunk. */ - for (int i=0; iwrite(m_miscellaneous[i].buffer, m_miscellaneous[i].size); - - // Pad if necessary. - if ((m_miscellaneous[i].size%2) != 0) - writeU8(&zero); - } - else - { - int size; - size = m_miscellaneous[i].size; - - // Pad if necessary. - if ((size % 2) != 0) - size++; - m_fh->seek(size, File::SeekFromCurrent); - } - } - } - - return AF_SUCCEED; -} - -status WAVEFile::writeCues() -{ - Track *track = getTrack(); - - if (!track->markerCount) - return AF_SUCCEED; - - if (m_markOffset == 0) - m_markOffset = m_fh->tell(); - else - m_fh->seek(m_markOffset, File::SeekFromBeginning); - - Tag cue("cue "); - writeTag(&cue); - - /* - The cue chunk consists of 4 bytes for the number of cue points - followed by 24 bytes for each cue point record. - */ - uint32_t cueChunkSize = 4 + track->markerCount * 24; - writeU32(&cueChunkSize); - uint32_t numCues = track->markerCount; - writeU32(&numCues); - - // Write each marker to the file. - for (int i=0; imarkerCount; i++) - { - uint32_t identifier = track->markers[i].id; - writeU32(&identifier); - - uint32_t position = i; - writeU32(&position); - - Tag data("data"); - writeTag(&data); - - /* - For an uncompressed WAVE file which contains only one data chunk, - chunkStart and blockStart are zero. - */ - uint32_t chunkStart = 0; - writeU32(&chunkStart); - - uint32_t blockStart = 0; - writeU32(&blockStart); - - AFframecount markPosition = track->markers[i].position; - uint32_t sampleOffset = markPosition; - writeU32(&sampleOffset); - } - - // Now write the cue names and comments within a master list chunk. - uint32_t listChunkSize = 4; - for (int i=0; imarkerCount; i++) - { - const char *name = track->markers[i].name; - const char *comment = track->markers[i].comment; - - /* - Each 'labl' or 'note' chunk consists of 4 bytes for the chunk ID, - 4 bytes for the chunk data size, 4 bytes for the cue point ID, - and then the length of the label as a null-terminated string. - - In all, this is 12 bytes plus the length of the string, its null - termination byte, and a trailing pad byte if the length of the - chunk is otherwise odd. - */ - listChunkSize += 12 + zStringLength(name); - listChunkSize += 12 + zStringLength(comment); - } - - Tag list("LIST"); - writeTag(&list); - writeU32(&listChunkSize); - Tag adtl("adtl"); - writeTag(&adtl); - - for (int i=0; imarkerCount; i++) - { - uint32_t cuePointID = track->markers[i].id; - - const char *name = track->markers[i].name; - uint32_t labelSize = 4 + zStringLength(name); - Tag lablTag("labl"); - writeTag(&lablTag); - writeU32(&labelSize); - writeU32(&cuePointID); - writeZString(name); - - const char *comment = track->markers[i].comment; - uint32_t noteSize = 4 + zStringLength(comment); - Tag noteTag("note"); - writeTag(¬eTag); - writeU32(¬eSize); - writeU32(&cuePointID); - writeZString(comment); - } - - return AF_SUCCEED; -} - -bool WAVEFile::writeZString(const char *s) -{ - ssize_t lengthPlusNull = strlen(s) + 1; - if (m_fh->write(s, lengthPlusNull) != lengthPlusNull) - return false; - if (lengthPlusNull & 1) - { - uint8_t zero = 0; - if (!writeU8(&zero)) - return false; - } - return true; -} - -size_t WAVEFile::zStringLength(const char *s) -{ - size_t lengthPlusNull = strlen(s) + 1; - return lengthPlusNull + (lengthPlusNull & 1); -} - -status WAVEFile::writeInit(AFfilesetup setup) -{ - if (initFromSetup(setup) == AF_FAIL) - return AF_FAIL; - - initCompressionParams(); - - uint32_t zero = 0; - - m_fh->seek(0, File::SeekFromBeginning); - m_fh->write("RIFF", 4); - m_fh->write(&zero, 4); - m_fh->write("WAVE", 4); - - writeMiscellaneous(); - writeCues(); - writeFormat(); - writeFrameCount(); - writeData(); - - return AF_SUCCEED; -} - -bool WAVEFile::readUUID(UUID *u) -{ - return m_fh->read(u->data, 16) == 16; -} - -bool WAVEFile::writeUUID(const UUID *u) -{ - return m_fh->write(u->data, 16) == 16; -} - -void WAVEFile::initCompressionParams() -{ - Track *track = getTrack(); - if (track->f.compressionType == AF_COMPRESSION_IMA) - initIMACompressionParams(); - else if (track->f.compressionType == AF_COMPRESSION_MS_ADPCM) - initMSADPCMCompressionParams(); -} - -void WAVEFile::initIMACompressionParams() -{ - Track *track = getTrack(); - - track->f.framesPerPacket = 505; - track->f.bytesPerPacket = 256 * track->f.channelCount; - - AUpvlist pv = AUpvnew(1); - AUpvsetparam(pv, 0, _AF_IMA_ADPCM_TYPE); - AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); - long l = _AF_IMA_ADPCM_TYPE_WAVE; - AUpvsetval(pv, 0, &l); - - track->f.compressionParams = pv; -} - -void WAVEFile::initMSADPCMCompressionParams() -{ - const int16_t coefficients[7][2] = - { - { 256, 0 }, - { 512, -256 }, - { 0, 0 }, - { 192, 64 }, - { 240, 0 }, - { 460, -208 }, - { 392, -232 } - }; - memcpy(m_msadpcmCoefficients, coefficients, sizeof (int16_t) * 7 * 2); - m_msadpcmNumCoefficients = 7; - - Track *track = getTrack(); - - track->f.framesPerPacket = 500; - track->f.bytesPerPacket = 256 * track->f.channelCount; - - AUpvlist pv = AUpvnew(2); - AUpvsetparam(pv, 0, _AF_MS_ADPCM_NUM_COEFFICIENTS); - AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); - long l = m_msadpcmNumCoefficients; - AUpvsetval(pv, 0, &l); - - AUpvsetparam(pv, 1, _AF_MS_ADPCM_COEFFICIENTS); - AUpvsetvaltype(pv, 1, AU_PVTYPE_PTR); - void *v = m_msadpcmCoefficients; - AUpvsetval(pv, 1, &v); - - track->f.compressionParams = pv; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/WAVE.h b/tools/audiofile-0.3.6/libaudiofile/WAVE.h deleted file mode 100644 index e78d4a24..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/WAVE.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, 2003, 2010-2012, Michael Pruett - Copyright (C) 2002-2003, Davy Durham - Copyright (C) 2000-2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - WAVE.h - - This file contains structures and constants related to the RIFF - WAVE sound file format. -*/ - -#ifndef WAVE_H -#define WAVE_H - -#include "Compiler.h" -#include "FileHandle.h" -#include - -#define _AF_WAVE_NUM_INSTPARAMS 7 -extern const InstParamInfo _af_wave_inst_params[_AF_WAVE_NUM_INSTPARAMS]; -#define _AF_WAVE_NUM_COMPTYPES 4 -extern const int _af_wave_compression_types[_AF_WAVE_NUM_COMPTYPES]; - -struct UUID; - -class WAVEFile : public _AFfilehandle -{ -public: - static bool recognize(File *fh); - static AFfilesetup completeSetup(AFfilesetup); - - WAVEFile(); - - status readInit(AFfilesetup) OVERRIDE; - status writeInit(AFfilesetup) OVERRIDE; - - status update() OVERRIDE; - - bool isInstrumentParameterValid(AUpvlist, int) OVERRIDE; - -private: - AFfileoffset m_factOffset; // start of fact (frame count) chunk - AFfileoffset m_miscellaneousOffset; - AFfileoffset m_markOffset; - AFfileoffset m_dataSizeOffset; - - /* - The index into the coefficient array is of type - uint8_t, so we can safely limit msadpcmCoefficients to - be 256 coefficient pairs. - */ - int m_msadpcmNumCoefficients; - int16_t m_msadpcmCoefficients[256][2]; - - status parseFrameCount(const Tag &type, uint32_t size); - status parseFormat(const Tag &type, uint32_t size); - status parseData(const Tag &type, uint32_t size); - status parsePlayList(const Tag &type, uint32_t size); - status parseCues(const Tag &type, uint32_t size); - status parseADTLSubChunk(const Tag &type, uint32_t size); - status parseINFOSubChunk(const Tag &type, uint32_t size); - status parseList(const Tag &type, uint32_t size); - status parseInstrument(const Tag &type, uint32_t size); - - status writeFormat(); - status writeFrameCount(); - status writeMiscellaneous(); - status writeCues(); - status writeData(); - - bool readUUID(UUID *g); - bool writeUUID(const UUID *g); - - bool writeZString(const char *); - size_t zStringLength(const char *); - - void initCompressionParams(); - void initIMACompressionParams(); - void initMSADPCMCompressionParams(); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/aes.cpp b/tools/audiofile-0.3.6/libaudiofile/aes.cpp deleted file mode 100644 index fe7bc013..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/aes.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-1999, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - aes.c - - This file contains routines for dealing with AES recording data. -*/ - -#include "config.h" - -#include -#include - -#include "FileHandle.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "util.h" - -void afInitAESChannelData (AFfilesetup setup, int trackid) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - track->aesDataSet = true; -} - -void afInitAESChannelDataTo (AFfilesetup setup, int trackid, int willBeData) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - track->aesDataSet = willBeData; -} - -int afGetAESChannelData (AFfilehandle file, int trackid, unsigned char buf[24]) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - if (!track->hasAESData) - { - if (buf) - memset(buf, 0, 24); - return 0; - } - - if (buf) - memcpy(buf, track->aesData, 24); - - return 1; -} - -void afSetAESChannelData (AFfilehandle file, int trackid, unsigned char buf[24]) -{ - if (!_af_filehandle_ok(file)) - return; - - Track *track = file->getTrack(trackid); - if (!track) - return; - - if (!file->checkCanWrite()) - return; - - if (track->hasAESData) - { - memcpy(track->aesData, buf, 24); - } - else - { - _af_error(AF_BAD_NOAESDATA, - "unable to store AES channel status data for track %d", - trackid); - } -} diff --git a/tools/audiofile-0.3.6/libaudiofile/af_vfs.cpp b/tools/audiofile-0.3.6/libaudiofile/af_vfs.cpp deleted file mode 100644 index 3462d594..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/af_vfs.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - Audio File Library - Copyright (C) 1999, Elliot Lee - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - af_vfs.cpp - - Virtual file operations for the Audio File Library. -*/ - -#include "config.h" - -#include "afinternal.h" -#include "af_vfs.h" - -#include - -AFvirtualfile *af_virtual_file_new() -{ - return (AFvirtualfile *) calloc(sizeof (AFvirtualfile), 1); -} - -void af_virtual_file_destroy(AFvirtualfile *vfile) -{ - vfile->destroy(vfile); - - free(vfile); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/af_vfs.h b/tools/audiofile-0.3.6/libaudiofile/af_vfs.h deleted file mode 100644 index 19c1541f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/af_vfs.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - Audio File Library - Copyright (C) 1999, Elliot Lee - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - af_vfs.h - - Virtual file operations for the Audio File Library. -*/ - -#ifndef AUDIOFILE_VFS_H -#define AUDIOFILE_VFS_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__) -#define AFAPI __attribute__((visibility("default"))) -#else -#define AFAPI -#endif - -struct _AFvirtualfile -{ - ssize_t (*read) (AFvirtualfile *vfile, void *data, size_t nbytes); - AFfileoffset (*length) (AFvirtualfile *vfile); - ssize_t (*write) (AFvirtualfile *vfile, const void *data, size_t nbytes); - void (*destroy) (AFvirtualfile *vfile); - AFfileoffset (*seek) (AFvirtualfile *vfile, AFfileoffset offset, int is_relative); - AFfileoffset (*tell) (AFvirtualfile *vfile); - - void *closure; -}; - -AFAPI AFvirtualfile *af_virtual_file_new (void); -AFAPI void af_virtual_file_destroy (AFvirtualfile *vfile); - -#undef AFAPI - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/afinternal.h b/tools/audiofile-0.3.6/libaudiofile/afinternal.h deleted file mode 100644 index ce9a31b1..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/afinternal.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - afinternal.h - - This file defines the internal structures for the Audio File Library. -*/ - -#ifndef AFINTERNAL_H -#define AFINTERNAL_H - -#include -#include "audiofile.h" -#include "error.h" - -enum status -{ - AF_SUCCEED = 0, - AF_FAIL = -1 -}; - -union AFPVu -{ - long l; - double d; - void *v; -}; - -struct InstParamInfo -{ - int id; - int type; - const char *name; - AFPVu defaultValue; -}; - -struct Loop -{ - int id; - int mode; /* AF_LOOP_MODE_... */ - int count; /* how many times the loop is played */ - int beginMarker, endMarker; - int trackid; -}; - -struct LoopSetup -{ - int id; -}; - -struct Miscellaneous -{ - int id; - int type; - int size; - - void *buffer; - - int position; // offset within the miscellaneous chunk -}; - -struct MiscellaneousSetup -{ - int id; - int type; - int size; -}; - -struct TrackSetup; - -class File; -struct Track; - -enum -{ - _AF_VALID_FILEHANDLE = 38212, - _AF_VALID_FILESETUP = 38213 -}; - -enum -{ - _AF_READ_ACCESS = 1, - _AF_WRITE_ACCESS = 2 -}; - -// The following are tokens for compression parameters in PV lists. -enum -{ - _AF_MS_ADPCM_NUM_COEFFICIENTS = 800, /* type: long */ - _AF_MS_ADPCM_COEFFICIENTS = 801, /* type: array of int16_t[2] */ - _AF_IMA_ADPCM_TYPE = 810, - _AF_IMA_ADPCM_TYPE_WAVE = 1, - _AF_IMA_ADPCM_TYPE_QT = 2, - _AF_CODEC_DATA = 900, // type: pointer - _AF_CODEC_DATA_SIZE = 901 // type: long -}; - -/* NeXT/Sun sampling rate */ -#define _AF_SRATE_CODEC (8012.8210513) - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACBitUtilities.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACBitUtilities.Plo deleted file mode 100644 index 61cefb7a..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACBitUtilities.Plo +++ /dev/null @@ -1,35 +0,0 @@ -ALACBitUtilities.lo: ALACBitUtilities.c \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - ALACBitUtilities.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -ALACBitUtilities.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACDecoder.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACDecoder.Plo deleted file mode 100644 index 1e161e43..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACDecoder.Plo +++ /dev/null @@ -1,64 +0,0 @@ -ALACDecoder.lo: ALACDecoder.cpp \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - ALACDecoder.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ALACAudioTypes.h ../../config.h dplib.h aglib.h matrixlib.h \ - ALACBitUtilities.h EndianPortable.h -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -ALACDecoder.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -ALACAudioTypes.h: -../../config.h: -dplib.h: -aglib.h: -matrixlib.h: -ALACBitUtilities.h: -EndianPortable.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACEncoder.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACEncoder.Plo deleted file mode 100644 index 2e0f81fd..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ALACEncoder.Plo +++ /dev/null @@ -1,74 +0,0 @@ -ALACEncoder.lo: ALACEncoder.cpp \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - ALACEncoder.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ALACAudioTypes.h ../../config.h aglib.h dplib.h matrixlib.h \ - ALACBitUtilities.h EndianPortable.h -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -ALACEncoder.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -ALACAudioTypes.h: -../../config.h: -aglib.h: -dplib.h: -matrixlib.h: -ALACBitUtilities.h: -EndianPortable.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/EndianPortable.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/EndianPortable.Plo deleted file mode 100644 index 33e38834..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/EndianPortable.Plo +++ /dev/null @@ -1,25 +0,0 @@ -EndianPortable.lo: EndianPortable.c ../../config.h EndianPortable.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h -../../config.h: -EndianPortable.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ag_dec.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ag_dec.Plo deleted file mode 100644 index 17dc2322..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ag_dec.Plo +++ /dev/null @@ -1,48 +0,0 @@ -ag_dec.lo: ag_dec.c aglib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ALACBitUtilities.h ALACAudioTypes.h ../../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -aglib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -ALACBitUtilities.h: -ALACAudioTypes.h: -../../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ag_enc.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ag_enc.Plo deleted file mode 100644 index f202d0db..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/ag_enc.Plo +++ /dev/null @@ -1,49 +0,0 @@ -ag_enc.lo: ag_enc.c aglib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ALACBitUtilities.h EndianPortable.h ALACAudioTypes.h ../../config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -aglib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -ALACBitUtilities.h: -EndianPortable.h: -ALACAudioTypes.h: -../../config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/dp_dec.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/dp_dec.Plo deleted file mode 100644 index 7b8da113..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/dp_dec.Plo +++ /dev/null @@ -1,28 +0,0 @@ -dp_dec.lo: dp_dec.c dplib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -dplib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/dp_enc.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/dp_enc.Plo deleted file mode 100644 index a550f6b5..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/dp_enc.Plo +++ /dev/null @@ -1,28 +0,0 @@ -dp_enc.lo: dp_enc.c dplib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -dplib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/matrix_dec.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/matrix_dec.Plo deleted file mode 100644 index 4871c19b..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/matrix_dec.Plo +++ /dev/null @@ -1,27 +0,0 @@ -matrix_dec.lo: matrix_dec.c matrixlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ALACAudioTypes.h ../../config.h -matrixlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -ALACAudioTypes.h: -../../config.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/matrix_enc.Plo b/tools/audiofile-0.3.6/libaudiofile/alac/.deps/matrix_enc.Plo deleted file mode 100644 index 05f3e923..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/.deps/matrix_enc.Plo +++ /dev/null @@ -1,27 +0,0 @@ -matrix_enc.lo: matrix_enc.c matrixlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ALACAudioTypes.h ../../config.h -matrixlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -ALACAudioTypes.h: -../../config.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ALACAudioTypes.h b/tools/audiofile-0.3.6/libaudiofile/alac/ALACAudioTypes.h deleted file mode 100644 index 1ad71ee7..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ALACAudioTypes.h +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: ALACAudioTypes.h -*/ - -#ifndef ALACAUDIOTYPES_H -#define ALACAUDIOTYPES_H - -#if PRAGMA_ONCE -#pragma once -#endif - -#include "config.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if PRAGMA_STRUCT_ALIGN - #pragma options align=mac68k -#elif PRAGMA_STRUCT_PACKPUSH - #pragma pack(push, 2) -#elif PRAGMA_STRUCT_PACK - #pragma pack(2) -#endif - -#include - -#ifdef WORDS_BIGENDIAN -#define TARGET_RT_BIG_ENDIAN 1 -#endif - -#define kChannelAtomSize 12 - -enum -{ - kALAC_UnimplementedError = -4, - kALAC_FileNotFoundError = -43, - kALAC_ParamError = -50, - kALAC_MemFullError = -108 -}; - -enum -{ - kALACFormatAppleLossless = 'alac', - kALACFormatLinearPCM = 'lpcm' -}; - -enum -{ - kALACMaxChannels = 8, - kALACMaxEscapeHeaderBytes = 8, - kALACMaxSearches = 16, - kALACMaxCoefs = 16, - kALACDefaultFramesPerPacket = 4096 -}; - -typedef uint32_t ALACChannelLayoutTag; - -enum -{ - kALACFormatFlagIsFloat = (1 << 0), // 0x1 - kALACFormatFlagIsBigEndian = (1 << 1), // 0x2 - kALACFormatFlagIsSignedInteger = (1 << 2), // 0x4 - kALACFormatFlagIsPacked = (1 << 3), // 0x8 - kALACFormatFlagIsAlignedHigh = (1 << 4), // 0x10 -}; - -enum -{ -#if TARGET_RT_BIG_ENDIAN - kALACFormatFlagsNativeEndian = kALACFormatFlagIsBigEndian -#else - kALACFormatFlagsNativeEndian = 0 -#endif -}; - -// this is required to be an IEEE 64bit float -typedef double alac_float64_t; - -// These are the Channel Layout Tags used in the Channel Layout Info portion of the ALAC magic cookie -enum -{ - kALACChannelLayoutTag_Mono = (100<<16) | 1, // C - kALACChannelLayoutTag_Stereo = (101<<16) | 2, // L R - kALACChannelLayoutTag_MPEG_3_0_B = (113<<16) | 3, // C L R - kALACChannelLayoutTag_MPEG_4_0_B = (116<<16) | 4, // C L R Cs - kALACChannelLayoutTag_MPEG_5_0_D = (120<<16) | 5, // C L R Ls Rs - kALACChannelLayoutTag_MPEG_5_1_D = (124<<16) | 6, // C L R Ls Rs LFE - kALACChannelLayoutTag_AAC_6_1 = (142<<16) | 7, // C L R Ls Rs Cs LFE - kALACChannelLayoutTag_MPEG_7_1_B = (127<<16) | 8 // C Lc Rc L R Ls Rs LFE (doc: IS-13818-7 MPEG2-AAC) -}; - -// ALAC currently only utilizes these channels layouts. There is a one for one correspondance between a -// given number of channels and one of these layout tags -static const ALACChannelLayoutTag ALACChannelLayoutTags[kALACMaxChannels] = -{ - kALACChannelLayoutTag_Mono, // C - kALACChannelLayoutTag_Stereo, // L R - kALACChannelLayoutTag_MPEG_3_0_B, // C L R - kALACChannelLayoutTag_MPEG_4_0_B, // C L R Cs - kALACChannelLayoutTag_MPEG_5_0_D, // C L R Ls Rs - kALACChannelLayoutTag_MPEG_5_1_D, // C L R Ls Rs LFE - kALACChannelLayoutTag_AAC_6_1, // C L R Ls Rs Cs LFE - kALACChannelLayoutTag_MPEG_7_1_B // C Lc Rc L R Ls Rs LFE (doc: IS-13818-7 MPEG2-AAC) -}; - -// AudioChannelLayout from CoreAudioTypes.h. We never need the AudioChannelDescription so we remove it -struct ALACAudioChannelLayout -{ - ALACChannelLayoutTag mChannelLayoutTag; - uint32_t mChannelBitmap; - uint32_t mNumberChannelDescriptions; -}; -typedef struct ALACAudioChannelLayout ALACAudioChannelLayout; - -struct AudioFormatDescription -{ - alac_float64_t mSampleRate; - uint32_t mFormatID; - uint32_t mFormatFlags; - uint32_t mBytesPerPacket; - uint32_t mFramesPerPacket; - uint32_t mBytesPerFrame; - uint32_t mChannelsPerFrame; - uint32_t mBitsPerChannel; - uint32_t mReserved; -}; -typedef struct AudioFormatDescription AudioFormatDescription; - -/* Lossless Definitions */ - -enum -{ - kALACCodecFormat = 'alac', - kALACVersion = 0, - kALACCompatibleVersion = kALACVersion, - kALACDefaultFrameSize = 4096 -}; - -// note: this struct is wrapped in an 'alac' atom in the sample description extension area -// note: in QT movies, it will be further wrapped in a 'wave' atom surrounded by 'frma' and 'term' atoms -typedef struct ALACSpecificConfig -{ - uint32_t frameLength; - uint8_t compatibleVersion; - uint8_t bitDepth; // max 32 - uint8_t pb; // 0 <= pb <= 255 - uint8_t mb; - uint8_t kb; - uint8_t numChannels; - uint16_t maxRun; - uint32_t maxFrameBytes; - uint32_t avgBitRate; - uint32_t sampleRate; - -} ALACSpecificConfig; - - -// The AudioChannelLayout atom type is not exposed yet so define it here -enum -{ - AudioChannelLayoutAID = 'chan' -}; - -#if PRAGMA_STRUCT_ALIGN - #pragma options align=reset -#elif PRAGMA_STRUCT_PACKPUSH - #pragma pack(pop) -#elif PRAGMA_STRUCT_PACK - #pragma pack() -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* ALACAUDIOTYPES_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ALACBitUtilities.c b/tools/audiofile-0.3.6/libaudiofile/alac/ALACBitUtilities.c deleted file mode 100644 index 94148897..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ALACBitUtilities.c +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/*============================================================================= - File: ALACBitUtilities.c - - $NoKeywords: $ -=============================================================================*/ - -#include -#include "ALACBitUtilities.h" - -// BitBufferInit -// -void BitBufferInit( BitBuffer * bits, uint8_t * buffer, uint32_t byteSize ) -{ - bits->cur = buffer; - bits->end = bits->cur + byteSize; - bits->bitIndex = 0; - bits->byteSize = byteSize; -} - -// BitBufferRead -// -uint32_t BitBufferRead( BitBuffer * bits, uint8_t numBits ) -{ - uint32_t returnBits; - - //Assert( numBits <= 16 ); - - returnBits = ((uint32_t)bits->cur[0] << 16) | ((uint32_t)bits->cur[1] << 8) | ((uint32_t)bits->cur[2]); - returnBits = returnBits << bits->bitIndex; - returnBits &= 0x00FFFFFF; - - bits->bitIndex += numBits; - - returnBits = returnBits >> (24 - numBits); - - bits->cur += (bits->bitIndex >> 3); - bits->bitIndex &= 7; - - //Assert( bits->cur <= bits->end ); - - return returnBits; -} - -// BitBufferReadSmall -// -// Reads up to 8 bits -uint8_t BitBufferReadSmall( BitBuffer * bits, uint8_t numBits ) -{ - uint16_t returnBits; - - //Assert( numBits <= 8 ); - - returnBits = (bits->cur[0] << 8) | bits->cur[1]; - returnBits = returnBits << bits->bitIndex; - - bits->bitIndex += numBits; - - returnBits = returnBits >> (16 - numBits); - - bits->cur += (bits->bitIndex >> 3); - bits->bitIndex &= 7; - - //Assert( bits->cur <= bits->end ); - - return (uint8_t)returnBits; -} - -// BitBufferReadOne -// -// Reads one byte -uint8_t BitBufferReadOne( BitBuffer * bits ) -{ - uint8_t returnBits; - - returnBits = (bits->cur[0] >> (7 - bits->bitIndex)) & 1; - - bits->bitIndex++; - - bits->cur += (bits->bitIndex >> 3); - bits->bitIndex &= 7; - - //Assert( bits->cur <= bits->end ); - - return returnBits; -} - -// BitBufferPeek -// -uint32_t BitBufferPeek( BitBuffer * bits, uint8_t numBits ) -{ - return ((((((uint32_t) bits->cur[0] << 16) | ((uint32_t) bits->cur[1] << 8) | - ((uint32_t) bits->cur[2])) << bits->bitIndex) & 0x00FFFFFF) >> (24 - numBits)); -} - -// BitBufferPeekOne -// -uint32_t BitBufferPeekOne( BitBuffer * bits ) -{ - return ((bits->cur[0] >> (7 - bits->bitIndex)) & 1); -} - -// BitBufferUnpackBERSize -// -uint32_t BitBufferUnpackBERSize( BitBuffer * bits ) -{ - uint32_t size; - uint8_t tmp; - - for ( size = 0, tmp = 0x80u; tmp &= 0x80u; size = (size << 7u) | (tmp & 0x7fu) ) - tmp = (uint8_t) BitBufferReadSmall( bits, 8 ); - - return size; -} - -// BitBufferGetPosition -// -uint32_t BitBufferGetPosition( BitBuffer * bits ) -{ - uint8_t * begin; - - begin = bits->end - bits->byteSize; - - return ((uint32_t)(bits->cur - begin) * 8) + bits->bitIndex; -} - -// BitBufferByteAlign -// -void BitBufferByteAlign( BitBuffer * bits, int32_t addZeros ) -{ - // align bit buffer to next byte boundary, writing zeros if requested - if ( bits->bitIndex == 0 ) - return; - - if ( addZeros ) - BitBufferWrite( bits, 0, 8 - bits->bitIndex ); - else - BitBufferAdvance( bits, 8 - bits->bitIndex ); -} - -// BitBufferAdvance -// -void BitBufferAdvance( BitBuffer * bits, uint32_t numBits ) -{ - if ( numBits ) - { - bits->bitIndex += numBits; - bits->cur += (bits->bitIndex >> 3); - bits->bitIndex &= 7; - } -} - -// BitBufferRewind -// -void BitBufferRewind( BitBuffer * bits, uint32_t numBits ) -{ - uint32_t numBytes; - - if ( numBits == 0 ) - return; - - if ( bits->bitIndex >= numBits ) - { - bits->bitIndex -= numBits; - return; - } - - numBits -= bits->bitIndex; - bits->bitIndex = 0; - - numBytes = numBits / 8; - numBits = numBits % 8; - - bits->cur -= numBytes; - - if ( numBits > 0 ) - { - bits->bitIndex = 8 - numBits; - bits->cur--; - } - - if ( bits->cur < (bits->end - bits->byteSize) ) - { - //DebugCMsg("BitBufferRewind: Rewound too far."); - - bits->cur = (bits->end - bits->byteSize); - bits->bitIndex = 0; - } -} - -// BitBufferWrite -// -void BitBufferWrite( BitBuffer * bits, uint32_t bitValues, uint32_t numBits ) -{ - uint32_t invBitIndex; - - RequireAction( bits != nil, return; ); - RequireActionSilent( numBits > 0, return; ); - - invBitIndex = 8 - bits->bitIndex; - - while ( numBits > 0 ) - { - uint32_t tmp; - uint8_t shift; - uint8_t mask; - uint32_t curNum; - - curNum = MIN( invBitIndex, numBits ); - - tmp = bitValues >> (numBits - curNum); - - shift = (uint8_t)(invBitIndex - curNum); - mask = 0xffu >> (8 - curNum); // must be done in two steps to avoid compiler sequencing ambiguity - mask <<= shift; - - bits->cur[0] = (bits->cur[0] & ~mask) | (((uint8_t) tmp << shift) & mask); - numBits -= curNum; - - // increment to next byte if need be - invBitIndex -= curNum; - if ( invBitIndex == 0 ) - { - invBitIndex = 8; - bits->cur++; - } - } - - bits->bitIndex = 8 - invBitIndex; -} - -void BitBufferReset( BitBuffer * bits ) -//void BitBufferInit( BitBuffer * bits, uint8_t * buffer, uint32_t byteSize ) -{ - bits->cur = bits->end - bits->byteSize; - bits->bitIndex = 0; -} - -#if PRAGMA_MARK -#pragma mark - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ALACBitUtilities.h b/tools/audiofile-0.3.6/libaudiofile/alac/ALACBitUtilities.h deleted file mode 100644 index 97e9ebe7..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ALACBitUtilities.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/*============================================================================= - File: ALACBitUtilities.h - - $NoKeywords: $ -=============================================================================*/ - -#ifndef __ALACBITUTILITIES_H -#define __ALACBITUTILITIES_H - -#include - -#ifndef MIN -#define MIN(x, y) ( (x)<(y) ?(x) :(y) ) -#endif //MIN -#ifndef MAX -#define MAX(x, y) ( (x)>(y) ?(x): (y) ) -#endif //MAX - -#ifndef nil -#define nil NULL -#endif - -#define RequireAction(condition, action) if (!(condition)) { action } -#define RequireActionSilent(condition, action) if (!(condition)) { action } -#define RequireNoErr(condition, action) if ((condition)) { action } - -#ifdef __cplusplus -extern "C" { -#endif - -enum -{ - ALAC_noErr = 0 -}; - - -typedef enum -{ - - ID_SCE = 0, /* Single Channel Element */ - ID_CPE = 1, /* Channel Pair Element */ - ID_CCE = 2, /* Coupling Channel Element */ - ID_LFE = 3, /* LFE Channel Element */ - ID_DSE = 4, /* not yet supported */ - ID_PCE = 5, - ID_FIL = 6, - ID_END = 7 -} ELEMENT_TYPE; - -// types -typedef struct BitBuffer -{ - uint8_t * cur; - uint8_t * end; - uint32_t bitIndex; - uint32_t byteSize; - -} BitBuffer; - -/* - BitBuffer routines - - these routines take a fixed size buffer and read/write to it - - bounds checking must be done by the client -*/ -void BitBufferInit( BitBuffer * bits, uint8_t * buffer, uint32_t byteSize ); -uint32_t BitBufferRead( BitBuffer * bits, uint8_t numBits ); // note: cannot read more than 16 bits at a time -uint8_t BitBufferReadSmall( BitBuffer * bits, uint8_t numBits ); -uint8_t BitBufferReadOne( BitBuffer * bits ); -uint32_t BitBufferPeek( BitBuffer * bits, uint8_t numBits ); // note: cannot read more than 16 bits at a time -uint32_t BitBufferPeekOne( BitBuffer * bits ); -uint32_t BitBufferUnpackBERSize( BitBuffer * bits ); -uint32_t BitBufferGetPosition( BitBuffer * bits ); -void BitBufferByteAlign( BitBuffer * bits, int32_t addZeros ); -void BitBufferAdvance( BitBuffer * bits, uint32_t numBits ); -void BitBufferRewind( BitBuffer * bits, uint32_t numBits ); -void BitBufferWrite( BitBuffer * bits, uint32_t value, uint32_t numBits ); -void BitBufferReset( BitBuffer * bits); - - -#ifdef __cplusplus -} -#endif - -#endif /* __BITUTILITIES_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ALACDecoder.cpp b/tools/audiofile-0.3.6/libaudiofile/alac/ALACDecoder.cpp deleted file mode 100644 index 35cf06e9..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ALACDecoder.cpp +++ /dev/null @@ -1,726 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: ALACDecoder.cpp -*/ - -#include -#include - -#include "ALACDecoder.h" - -#include "dplib.h" -#include "aglib.h" -#include "matrixlib.h" - -#include "ALACBitUtilities.h" -#include "EndianPortable.h" - -// constants/data -const uint32_t kMaxBitDepth = 32; // max allowed bit depth is 32 - - -// prototypes -static void Zero16( int16_t * buffer, uint32_t numItems, uint32_t stride ); -static void Zero24( uint8_t * buffer, uint32_t numItems, uint32_t stride ); -static void Zero32( int32_t * buffer, uint32_t numItems, uint32_t stride ); - -/* - Constructor -*/ -ALACDecoder::ALACDecoder() : - mMixBufferU( nil ), - mMixBufferV( nil ), - mPredictor( nil ), - mShiftBuffer( nil ) -{ - memset( &mConfig, 0, sizeof(mConfig) ); -} - -/* - Destructor -*/ -ALACDecoder::~ALACDecoder() -{ - // delete the matrix mixing buffers - if ( mMixBufferU ) - { - free(mMixBufferU); - mMixBufferU = NULL; - } - if ( mMixBufferV ) - { - free(mMixBufferV); - mMixBufferV = NULL; - } - - // delete the dynamic predictor's "corrector" buffer - // - note: mShiftBuffer shares memory with this buffer - if ( mPredictor ) - { - free(mPredictor); - mPredictor = NULL; - } -} - -/* - Init() - - initialize the decoder with the given configuration -*/ -int32_t ALACDecoder::Init( void * inMagicCookie, uint32_t inMagicCookieSize ) -{ - int32_t status = ALAC_noErr; - ALACSpecificConfig theConfig; - uint8_t * theActualCookie = (uint8_t *)inMagicCookie; - uint32_t theCookieBytesRemaining = inMagicCookieSize; - - // For historical reasons the decoder needs to be resilient to magic cookies vended by older encoders. - // As specified in the ALACMagicCookieDescription.txt document, there may be additional data encapsulating - // the ALACSpecificConfig. This would consist of format ('frma') and 'alac' atoms which precede the - // ALACSpecificConfig. - // See ALACMagicCookieDescription.txt for additional documentation concerning the 'magic cookie' - - // skip format ('frma') atom if present - if (theActualCookie[4] == 'f' && theActualCookie[5] == 'r' && theActualCookie[6] == 'm' && theActualCookie[7] == 'a') - { - theActualCookie += 12; - theCookieBytesRemaining -= 12; - } - - // skip 'alac' atom header if present - if (theActualCookie[4] == 'a' && theActualCookie[5] == 'l' && theActualCookie[6] == 'a' && theActualCookie[7] == 'c') - { - theActualCookie += 12; - theCookieBytesRemaining -= 12; - } - - // read the ALACSpecificConfig - if (theCookieBytesRemaining >= sizeof(ALACSpecificConfig)) - { - memcpy(&theConfig, theActualCookie, sizeof(ALACSpecificConfig)); - - theConfig.frameLength = Swap32BtoN(theConfig.frameLength); - theConfig.maxRun = Swap16BtoN(theConfig.maxRun); - theConfig.maxFrameBytes = Swap32BtoN(theConfig.maxFrameBytes); - theConfig.avgBitRate = Swap32BtoN(theConfig.avgBitRate); - theConfig.sampleRate = Swap32BtoN(theConfig.sampleRate); - - mConfig = theConfig; - - RequireAction( mConfig.compatibleVersion <= kALACVersion, return kALAC_ParamError; ); - - // allocate mix buffers - mMixBufferU = (int32_t *) calloc( mConfig.frameLength * sizeof(int32_t), 1 ); - mMixBufferV = (int32_t *) calloc( mConfig.frameLength * sizeof(int32_t), 1 ); - - // allocate dynamic predictor buffer - mPredictor = (int32_t *) calloc( mConfig.frameLength * sizeof(int32_t), 1 ); - - // "shift off" buffer shares memory with predictor buffer - mShiftBuffer = (uint16_t *) mPredictor; - - RequireAction( (mMixBufferU != nil) && (mMixBufferV != nil) && (mPredictor != nil), - status = kALAC_MemFullError; goto Exit; ); - } - else - { - status = kALAC_ParamError; - } - - // skip to Channel Layout Info - // theActualCookie += sizeof(ALACSpecificConfig); - - // Currently, the Channel Layout Info portion of the magic cookie (as defined in the - // ALACMagicCookieDescription.txt document) is unused by the decoder. - -Exit: - return status; -} - -/* - Decode() - - the decoded samples are interleaved into the output buffer in the order they arrive in - the bitstream -*/ -int32_t ALACDecoder::Decode( BitBuffer * bits, uint8_t * sampleBuffer, uint32_t numSamples, uint32_t numChannels, uint32_t * outNumSamples ) -{ - BitBuffer shiftBits; - uint32_t bits1, bits2; - uint8_t tag; - uint8_t elementInstanceTag; - AGParamRec agParams; - uint32_t channelIndex; - int16_t coefsU[32]; // max possible size is 32 although NUMCOEPAIRS is the current limit - int16_t coefsV[32]; - uint8_t numU, numV; - uint8_t mixBits; - int8_t mixRes; - uint16_t unusedHeader; - uint8_t escapeFlag; - uint32_t chanBits; - uint8_t bytesShifted; - uint32_t shift; - uint8_t modeU, modeV; - uint32_t denShiftU, denShiftV; - uint16_t pbFactorU, pbFactorV; - uint16_t pb; - int16_t * samples; - int16_t * out16; - uint8_t * out20; - uint8_t * out24; - int32_t * out32; - uint8_t headerByte; - uint8_t partialFrame; - uint32_t extraBits; - int32_t val; - uint32_t i, j; - int32_t status; - - RequireAction( (bits != nil) && (sampleBuffer != nil) && (outNumSamples != nil), return kALAC_ParamError; ); - RequireAction( numChannels > 0, return kALAC_ParamError; ); - - mActiveElements = 0; - channelIndex = 0; - - samples = (int16_t *) sampleBuffer; - - status = ALAC_noErr; - *outNumSamples = numSamples; - - while ( status == ALAC_noErr ) - { - // bail if we ran off the end of the buffer - RequireAction( bits->cur < bits->end, status = kALAC_ParamError; goto Exit; ); - - // copy global decode params for this element - pb = mConfig.pb; - - // read element tag - tag = BitBufferReadSmall( bits, 3 ); - switch ( tag ) - { - case ID_SCE: - case ID_LFE: - { - // mono/LFE channel - elementInstanceTag = BitBufferReadSmall( bits, 4 ); - mActiveElements |= (1u << elementInstanceTag); - - // read the 12 unused header bits - unusedHeader = (uint16_t) BitBufferRead( bits, 12 ); - RequireAction( unusedHeader == 0, status = kALAC_ParamError; goto Exit; ); - - // read the 1-bit "partial frame" flag, 2-bit "shift-off" flag & 1-bit "escape" flag - headerByte = (uint8_t) BitBufferRead( bits, 4 ); - - partialFrame = headerByte >> 3; - - bytesShifted = (headerByte >> 1) & 0x3u; - RequireAction( bytesShifted != 3, status = kALAC_ParamError; goto Exit; ); - - shift = bytesShifted * 8; - - escapeFlag = headerByte & 0x1; - - chanBits = mConfig.bitDepth - (bytesShifted * 8); - - // check for partial frame to override requested numSamples - if ( partialFrame != 0 ) - { - numSamples = BitBufferRead( bits, 16 ) << 16; - numSamples |= BitBufferRead( bits, 16 ); - } - - if ( escapeFlag == 0 ) - { - // compressed frame, read rest of parameters - mixBits = (uint8_t) BitBufferRead( bits, 8 ); - mixRes = (int8_t) BitBufferRead( bits, 8 ); - //Assert( (mixBits == 0) && (mixRes == 0) ); // no mixing for mono - - headerByte = (uint8_t) BitBufferRead( bits, 8 ); - modeU = headerByte >> 4; - denShiftU = headerByte & 0xfu; - - headerByte = (uint8_t) BitBufferRead( bits, 8 ); - pbFactorU = headerByte >> 5; - numU = headerByte & 0x1fu; - - for ( i = 0; i < numU; i++ ) - coefsU[i] = (int16_t) BitBufferRead( bits, 16 ); - - // if shift active, skip the the shift buffer but remember where it starts - if ( bytesShifted != 0 ) - { - shiftBits = *bits; - BitBufferAdvance( bits, (bytesShifted * 8) * numSamples ); - } - - // decompress - set_ag_params( &agParams, mConfig.mb, (pb * pbFactorU) / 4, mConfig.kb, numSamples, numSamples, mConfig.maxRun ); - status = dyn_decomp( &agParams, bits, mPredictor, numSamples, chanBits, &bits1 ); - RequireNoErr( status, goto Exit; ); - - if ( modeU == 0 ) - { - unpc_block( mPredictor, mMixBufferU, numSamples, &coefsU[0], numU, chanBits, denShiftU ); - } - else - { - // the special "numActive == 31" mode can be done in-place - unpc_block( mPredictor, mPredictor, numSamples, nil, 31, chanBits, 0 ); - unpc_block( mPredictor, mMixBufferU, numSamples, &coefsU[0], numU, chanBits, denShiftU ); - } - } - else - { - //Assert( bytesShifted == 0 ); - - // uncompressed frame, copy data into the mix buffer to use common output code - shift = 32 - chanBits; - if ( chanBits <= 16 ) - { - for ( i = 0; i < numSamples; i++ ) - { - val = (int32_t) BitBufferRead( bits, (uint8_t) chanBits ); - val = (val << shift) >> shift; - mMixBufferU[i] = val; - } - } - else - { - // BitBufferRead() can't read more than 16 bits at a time so break up the reads - extraBits = chanBits - 16; - for ( i = 0; i < numSamples; i++ ) - { - val = (int32_t) BitBufferRead( bits, 16 ); - val = (val << 16) >> shift; - mMixBufferU[i] = val | BitBufferRead( bits, (uint8_t) extraBits ); - } - } - - mixBits = mixRes = 0; - bits1 = chanBits * numSamples; - bytesShifted = 0; - } - - // now read the shifted values into the shift buffer - if ( bytesShifted != 0 ) - { - shift = bytesShifted * 8; - //Assert( shift <= 16 ); - - for ( i = 0; i < numSamples; i++ ) - mShiftBuffer[i] = (uint16_t) BitBufferRead( &shiftBits, (uint8_t) shift ); - } - - // convert 32-bit integers into output buffer - switch ( mConfig.bitDepth ) - { - case 16: - out16 = &((int16_t *)sampleBuffer)[channelIndex]; - for ( i = 0, j = 0; i < numSamples; i++, j += numChannels ) - out16[j] = (int16_t) mMixBufferU[i]; - break; - case 20: - out20 = (uint8_t *)sampleBuffer + (channelIndex * 3); - copyPredictorTo20( mMixBufferU, out20, numChannels, numSamples ); - break; - case 24: - out24 = (uint8_t *)sampleBuffer + (channelIndex * 3); - if ( bytesShifted != 0 ) - copyPredictorTo24Shift( mMixBufferU, mShiftBuffer, out24, numChannels, numSamples, bytesShifted ); - else - copyPredictorTo24( mMixBufferU, out24, numChannels, numSamples ); - break; - case 32: - out32 = &((int32_t *)sampleBuffer)[channelIndex]; - if ( bytesShifted != 0 ) - copyPredictorTo32Shift( mMixBufferU, mShiftBuffer, out32, numChannels, numSamples, bytesShifted ); - else - copyPredictorTo32( mMixBufferU, out32, numChannels, numSamples); - break; - } - - channelIndex += 1; - *outNumSamples = numSamples; - break; - } - - case ID_CPE: - { - // if decoding this pair would take us over the max channels limit, bail - if ( (channelIndex + 2) > numChannels ) - goto NoMoreChannels; - - // stereo channel pair - elementInstanceTag = BitBufferReadSmall( bits, 4 ); - mActiveElements |= (1u << elementInstanceTag); - - // read the 12 unused header bits - unusedHeader = (uint16_t) BitBufferRead( bits, 12 ); - RequireAction( unusedHeader == 0, status = kALAC_ParamError; goto Exit; ); - - // read the 1-bit "partial frame" flag, 2-bit "shift-off" flag & 1-bit "escape" flag - headerByte = (uint8_t) BitBufferRead( bits, 4 ); - - partialFrame = headerByte >> 3; - - bytesShifted = (headerByte >> 1) & 0x3u; - RequireAction( bytesShifted != 3, status = kALAC_ParamError; goto Exit; ); - - shift = bytesShifted * 8; - - escapeFlag = headerByte & 0x1; - - chanBits = mConfig.bitDepth - (bytesShifted * 8) + 1; - - // check for partial frame length to override requested numSamples - if ( partialFrame != 0 ) - { - numSamples = BitBufferRead( bits, 16 ) << 16; - numSamples |= BitBufferRead( bits, 16 ); - } - - if ( escapeFlag == 0 ) - { - // compressed frame, read rest of parameters - mixBits = (uint8_t) BitBufferRead( bits, 8 ); - mixRes = (int8_t) BitBufferRead( bits, 8 ); - - headerByte = (uint8_t) BitBufferRead( bits, 8 ); - modeU = headerByte >> 4; - denShiftU = headerByte & 0xfu; - - headerByte = (uint8_t) BitBufferRead( bits, 8 ); - pbFactorU = headerByte >> 5; - numU = headerByte & 0x1fu; - for ( i = 0; i < numU; i++ ) - coefsU[i] = (int16_t) BitBufferRead( bits, 16 ); - - headerByte = (uint8_t) BitBufferRead( bits, 8 ); - modeV = headerByte >> 4; - denShiftV = headerByte & 0xfu; - - headerByte = (uint8_t) BitBufferRead( bits, 8 ); - pbFactorV = headerByte >> 5; - numV = headerByte & 0x1fu; - for ( i = 0; i < numV; i++ ) - coefsV[i] = (int16_t) BitBufferRead( bits, 16 ); - - // if shift active, skip the interleaved shifted values but remember where they start - if ( bytesShifted != 0 ) - { - shiftBits = *bits; - BitBufferAdvance( bits, (bytesShifted * 8) * 2 * numSamples ); - } - - // decompress and run predictor for "left" channel - set_ag_params( &agParams, mConfig.mb, (pb * pbFactorU) / 4, mConfig.kb, numSamples, numSamples, mConfig.maxRun ); - status = dyn_decomp( &agParams, bits, mPredictor, numSamples, chanBits, &bits1 ); - RequireNoErr( status, goto Exit; ); - - if ( modeU == 0 ) - { - unpc_block( mPredictor, mMixBufferU, numSamples, &coefsU[0], numU, chanBits, denShiftU ); - } - else - { - // the special "numActive == 31" mode can be done in-place - unpc_block( mPredictor, mPredictor, numSamples, nil, 31, chanBits, 0 ); - unpc_block( mPredictor, mMixBufferU, numSamples, &coefsU[0], numU, chanBits, denShiftU ); - } - - // decompress and run predictor for "right" channel - set_ag_params( &agParams, mConfig.mb, (pb * pbFactorV) / 4, mConfig.kb, numSamples, numSamples, mConfig.maxRun ); - status = dyn_decomp( &agParams, bits, mPredictor, numSamples, chanBits, &bits2 ); - RequireNoErr( status, goto Exit; ); - - if ( modeV == 0 ) - { - unpc_block( mPredictor, mMixBufferV, numSamples, &coefsV[0], numV, chanBits, denShiftV ); - } - else - { - // the special "numActive == 31" mode can be done in-place - unpc_block( mPredictor, mPredictor, numSamples, nil, 31, chanBits, 0 ); - unpc_block( mPredictor, mMixBufferV, numSamples, &coefsV[0], numV, chanBits, denShiftV ); - } - } - else - { - //Assert( bytesShifted == 0 ); - - // uncompressed frame, copy data into the mix buffers to use common output code - chanBits = mConfig.bitDepth; - shift = 32 - chanBits; - if ( chanBits <= 16 ) - { - for ( i = 0; i < numSamples; i++ ) - { - val = (int32_t) BitBufferRead( bits, (uint8_t) chanBits ); - val = (val << shift) >> shift; - mMixBufferU[i] = val; - - val = (int32_t) BitBufferRead( bits, (uint8_t) chanBits ); - val = (val << shift) >> shift; - mMixBufferV[i] = val; - } - } - else - { - // BitBufferRead() can't read more than 16 bits at a time so break up the reads - extraBits = chanBits - 16; - for ( i = 0; i < numSamples; i++ ) - { - val = (int32_t) BitBufferRead( bits, 16 ); - val = (val << 16) >> shift; - mMixBufferU[i] = val | BitBufferRead( bits, (uint8_t)extraBits ); - - val = (int32_t) BitBufferRead( bits, 16 ); - val = (val << 16) >> shift; - mMixBufferV[i] = val | BitBufferRead( bits, (uint8_t)extraBits ); - } - } - - bits1 = chanBits * numSamples; - bits2 = chanBits * numSamples; - mixBits = mixRes = 0; - bytesShifted = 0; - } - - // now read the shifted values into the shift buffer - if ( bytesShifted != 0 ) - { - shift = bytesShifted * 8; - //Assert( shift <= 16 ); - - for ( i = 0; i < (numSamples * 2); i += 2 ) - { - mShiftBuffer[i + 0] = (uint16_t) BitBufferRead( &shiftBits, (uint8_t) shift ); - mShiftBuffer[i + 1] = (uint16_t) BitBufferRead( &shiftBits, (uint8_t) shift ); - } - } - - // un-mix the data and convert to output format - // - note that mixRes = 0 means just interleave so we use that path for uncompressed frames - switch ( mConfig.bitDepth ) - { - case 16: - out16 = &((int16_t *)sampleBuffer)[channelIndex]; - unmix16( mMixBufferU, mMixBufferV, out16, numChannels, numSamples, mixBits, mixRes ); - break; - case 20: - out20 = (uint8_t *)sampleBuffer + (channelIndex * 3); - unmix20( mMixBufferU, mMixBufferV, out20, numChannels, numSamples, mixBits, mixRes ); - break; - case 24: - out24 = (uint8_t *)sampleBuffer + (channelIndex * 3); - unmix24( mMixBufferU, mMixBufferV, out24, numChannels, numSamples, - mixBits, mixRes, mShiftBuffer, bytesShifted ); - break; - case 32: - out32 = &((int32_t *)sampleBuffer)[channelIndex]; - unmix32( mMixBufferU, mMixBufferV, out32, numChannels, numSamples, - mixBits, mixRes, mShiftBuffer, bytesShifted ); - break; - } - - channelIndex += 2; - *outNumSamples = numSamples; - break; - } - - case ID_CCE: - case ID_PCE: - { - // unsupported element, bail - //AssertNoErr( tag ); - status = kALAC_ParamError; - break; - } - - case ID_DSE: - { - // data stream element -- parse but ignore - status = this->DataStreamElement( bits ); - break; - } - - case ID_FIL: - { - // fill element -- parse but ignore - status = this->FillElement( bits ); - break; - } - - case ID_END: - { - // frame end, all done so byte align the frame and check for overruns - BitBufferByteAlign( bits, false ); - //Assert( bits->cur == bits->end ); - goto Exit; - } - } - -#if ! DEBUG - // if we've decoded all of our channels, bail (but not in debug b/c we want to know if we're seeing bad bits) - // - this also protects us if the config does not match the bitstream or crap data bits follow the audio bits - if ( channelIndex >= numChannels ) - break; -#endif - } - -NoMoreChannels: - - // if we get here and haven't decoded all of the requested channels, fill the remaining channels with zeros - for ( ; channelIndex < numChannels; channelIndex++ ) - { - switch ( mConfig.bitDepth ) - { - case 16: - { - int16_t * fill16 = &((int16_t *)sampleBuffer)[channelIndex]; - Zero16( fill16, numSamples, numChannels ); - break; - } - case 24: - { - uint8_t * fill24 = (uint8_t *)sampleBuffer + (channelIndex * 3); - Zero24( fill24, numSamples, numChannels ); - break; - } - case 32: - { - int32_t * fill32 = &((int32_t *)sampleBuffer)[channelIndex]; - Zero32( fill32, numSamples, numChannels ); - break; - } - } - } - -Exit: - return status; -} - -#if PRAGMA_MARK -#pragma mark - -#endif - -/* - FillElement() - - they're just filler so we don't need 'em -*/ -int32_t ALACDecoder::FillElement( BitBuffer * bits ) -{ - int16_t count; - - // 4-bit count or (4-bit + 8-bit count) if 4-bit count == 15 - // - plus this weird -1 thing I still don't fully understand - count = BitBufferReadSmall( bits, 4 ); - if ( count == 15 ) - count += (int16_t) BitBufferReadSmall( bits, 8 ) - 1; - - BitBufferAdvance( bits, count * 8 ); - - RequireAction( bits->cur <= bits->end, return kALAC_ParamError; ); - - return ALAC_noErr; -} - -/* - DataStreamElement() - - we don't care about data stream elements so just skip them -*/ -int32_t ALACDecoder::DataStreamElement( BitBuffer * bits ) -{ - uint8_t element_instance_tag; - int32_t data_byte_align_flag; - uint16_t count; - - // the tag associates this data stream element with a given audio element - element_instance_tag = BitBufferReadSmall( bits, 4 ); - - data_byte_align_flag = BitBufferReadOne( bits ); - - // 8-bit count or (8-bit + 8-bit count) if 8-bit count == 255 - count = BitBufferReadSmall( bits, 8 ); - if ( count == 255 ) - count += BitBufferReadSmall( bits, 8 ); - - // the align flag means the bitstream should be byte-aligned before reading the following data bytes - if ( data_byte_align_flag ) - BitBufferByteAlign( bits, false ); - - // skip the data bytes - BitBufferAdvance( bits, count * 8 ); - - RequireAction( bits->cur <= bits->end, return kALAC_ParamError; ); - - return ALAC_noErr; -} - -/* - ZeroN() - - helper routines to clear out output channel buffers when decoding fewer channels than requested -*/ -static void Zero16( int16_t * buffer, uint32_t numItems, uint32_t stride ) -{ - if ( stride == 1 ) - { - memset( buffer, 0, numItems * sizeof(int16_t) ); - } - else - { - for ( uint32_t index = 0; index < (numItems * stride); index += stride ) - buffer[index] = 0; - } -} - -static void Zero24( uint8_t * buffer, uint32_t numItems, uint32_t stride ) -{ - if ( stride == 1 ) - { - memset( buffer, 0, numItems * 3 ); - } - else - { - for ( uint32_t index = 0; index < (numItems * stride * 3); index += (stride * 3) ) - { - buffer[index + 0] = 0; - buffer[index + 1] = 0; - buffer[index + 2] = 0; - } - } -} - -static void Zero32( int32_t * buffer, uint32_t numItems, uint32_t stride ) -{ - if ( stride == 1 ) - { - memset( buffer, 0, numItems * sizeof(int32_t) ); - } - else - { - for ( uint32_t index = 0; index < (numItems * stride); index += stride ) - buffer[index] = 0; - } -} diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ALACDecoder.h b/tools/audiofile-0.3.6/libaudiofile/alac/ALACDecoder.h deleted file mode 100644 index 7802eab0..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ALACDecoder.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: ALACDecoder.h -*/ - -#ifndef _ALACDECODER_H -#define _ALACDECODER_H - -#if PRAGMA_ONCE -#pragma once -#endif - -#include - -#include "ALACAudioTypes.h" - -struct BitBuffer; - -class ALACDecoder -{ - public: - ALACDecoder(); - ~ALACDecoder(); - - int32_t Init( void * inMagicCookie, uint32_t inMagicCookieSize ); - int32_t Decode( struct BitBuffer * bits, uint8_t * sampleBuffer, uint32_t numSamples, uint32_t numChannels, uint32_t * outNumSamples ); - - public: - // decoding parameters (public for use in the analyzer) - ALACSpecificConfig mConfig; - - protected: - int32_t FillElement( struct BitBuffer * bits ); - int32_t DataStreamElement( struct BitBuffer * bits ); - - uint16_t mActiveElements; - - // decoding buffers - int32_t * mMixBufferU; - int32_t * mMixBufferV; - int32_t * mPredictor; - uint16_t * mShiftBuffer; // note: this points to mPredictor's memory but different - // variable for clarity and type difference -}; - -#endif /* _ALACDECODER_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ALACEncoder.cpp b/tools/audiofile-0.3.6/libaudiofile/alac/ALACEncoder.cpp deleted file mode 100644 index da922c29..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ALACEncoder.cpp +++ /dev/null @@ -1,1421 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: ALACEncoder.cpp -*/ - -// build stuff -#define VERBOSE_DEBUG 0 - -// headers -#include -#include -#include - -#include "ALACEncoder.h" - -#include "aglib.h" -#include "dplib.h" -#include "matrixlib.h" - -#include "ALACBitUtilities.h" -#include "ALACAudioTypes.h" -#include "EndianPortable.h" - -// Note: in C you can't typecast to a 2-dimensional array pointer but that's what we need when -// picking which coefs to use so we declare this typedef b/c we *can* typecast to this type -typedef int16_t (*SearchCoefs)[kALACMaxCoefs]; - -// defines/constants -const uint32_t kALACEncoderMagic = 'dpge'; -const uint32_t kMaxSampleSize = 32; // max allowed bit width is 32 -const uint32_t kDefaultMixBits = 2; -const uint32_t kDefaultMixRes = 0; -const uint32_t kMaxRes = 4; -const uint32_t kDefaultNumUV = 8; -const uint32_t kMinUV = 4; -const uint32_t kMaxUV = 8; - -// static functions -#if VERBOSE_DEBUG -static void AddFiller( BitBuffer * bits, int32_t numBytes ); -#endif - - -/* - Map Format: 3-bit field per channel which is the same as the "element tag" that should be placed - at the beginning of the frame for that channel. Indicates whether SCE, CPE, or LFE. - Each particular field is accessed via the current channel index. Note that the channel - index increments by two for channel pairs. - - For example: - - C L R 3-channel input = (ID_CPE << 3) | (ID_SCE) - index 0 value = (map & (0x7ul << (0 * 3))) >> (0 * 3) - index 1 value = (map & (0x7ul << (1 * 3))) >> (1 * 3) - - C L R Ls Rs LFE 5.1-channel input = (ID_LFE << 15) | (ID_CPE << 9) | (ID_CPE << 3) | (ID_SCE) - index 0 value = (map & (0x7ul << (0 * 3))) >> (0 * 3) - index 1 value = (map & (0x7ul << (1 * 3))) >> (1 * 3) - index 3 value = (map & (0x7ul << (3 * 3))) >> (3 * 3) - index 5 value = (map & (0x7ul << (5 * 3))) >> (5 * 3) - index 7 value = (map & (0x7ul << (7 * 3))) >> (7 * 3) -*/ -static const uint32_t sChannelMaps[kALACMaxChannels] = -{ - ID_SCE, - ID_CPE, - (ID_CPE << 3) | (ID_SCE), - (ID_SCE << 9) | (ID_CPE << 3) | (ID_SCE), - (ID_CPE << 9) | (ID_CPE << 3) | (ID_SCE), - (ID_SCE << 15) | (ID_CPE << 9) | (ID_CPE << 3) | (ID_SCE), - (ID_SCE << 18) | (ID_SCE << 15) | (ID_CPE << 9) | (ID_CPE << 3) | (ID_SCE), - (ID_SCE << 21) | (ID_CPE << 15) | (ID_CPE << 9) | (ID_CPE << 3) | (ID_SCE) -}; - -static const uint32_t sSupportediPodSampleRates[] = -{ - 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 -}; - -/* - Constructor -*/ -ALACEncoder::ALACEncoder() : - mBitDepth( 0 ), - mFastMode( 0 ), - mMixBufferU( nil ), - mMixBufferV( nil ), - mPredictorU( nil ), - mPredictorV( nil ), - mShiftBufferUV( nil ), - mWorkBuffer( nil ), - - - mTotalBytesGenerated( 0 ), - mAvgBitRate( 0 ), - mMaxFrameBytes( 0 ) -{ - // overrides - mFrameSize = kALACDefaultFrameSize; -} - -/* - Destructor -*/ -ALACEncoder::~ALACEncoder() -{ - // delete the matrix mixing buffers - if ( mMixBufferU ) - { - free(mMixBufferU); - mMixBufferU = NULL; - } - if ( mMixBufferV ) - { - free(mMixBufferV); - mMixBufferV = NULL; - } - - // delete the dynamic predictor's "corrector" buffers - if ( mPredictorU ) - { - free(mPredictorU); - mPredictorU = NULL; - } - if ( mPredictorV ) - { - free(mPredictorV); - mPredictorV = NULL; - } - - // delete the unused byte shift buffer - if ( mShiftBufferUV ) - { - free(mShiftBufferUV); - mShiftBufferUV = NULL; - } - - // delete the work buffer - if ( mWorkBuffer ) - { - free(mWorkBuffer); - mWorkBuffer = NULL; - } -} - -#if PRAGMA_MARK -#pragma mark - -#endif - -/* - HEADER SPECIFICATION - - For every segment we adopt the following header: - - 1 byte reserved (always 0) - 1 byte flags (see below) - [4 byte frame length] (optional, see below) - ---Next, the per-segment ALAC parameters--- - 1 byte mixBits (middle-side parameter) - 1 byte mixRes (middle-side parameter, interpreted as signed char) - - 1 byte shiftU (4 bits modeU, 4 bits denShiftU) - 1 byte filterU (3 bits pbFactorU, 5 bits numU) - (numU) shorts (signed DP coefficients for V channel) - ---Next, 2nd-channel ALAC parameters in case of stereo mode--- - 1 byte shiftV (4 bits modeV, 4 bits denShiftV) - 1 byte filterV (3 bits pbFactorV, 5 bits numV) - (numV) shorts (signed DP coefficients for V channel) - ---After this come the shift-off bytes for (>= 24)-bit data (n-byte shift) if indicated--- - ---Then comes the AG-compressor bitstream--- - - - FLAGS - ----- - - The presence of certain flag bits changes the header format such that the parameters might - not even be sent. The currently defined flags format is: - - 0000psse - - where 0 = reserved, must be 0 - p = 1-bit field "partial frame" flag indicating 32-bit frame length follows this byte - ss = 2-bit field indicating "number of shift-off bytes ignored by compression" - e = 1-bit field indicating "escape" - - The "partial frame" flag means that the following segment is not equal to the frame length specified - in the out-of-band decoder configuration. This allows the decoder to deal with end-of-file partial - segments without incurring the 32-bit overhead for each segment. - - The "shift-off" field indicates the number of bytes at the bottom of the word that were passed through - uncompressed. The reason for this is that the entropy inherent in the LS bytes of >= 24-bit words - quite often means that the frame would have to be "escaped" b/c the compressed size would be >= the - uncompressed size. However, by shifting the input values down and running the remaining bits through - the normal compression algorithm, a net win can be achieved. If this field is non-zero, it means that - the shifted-off bytes follow after the parameter section of the header and before the compressed - bitstream. Note that doing this also allows us to use matrixing on 32-bit inputs after one or more - bytes are shifted off the bottom which helps the eventual compression ratio. For stereo channels, - the shifted off bytes are interleaved. - - The "escape" flag means that this segment was not compressed b/c the compressed size would be - >= uncompressed size. In that case, the audio data was passed through uncompressed after the header. - The other header parameter bytes will not be sent. - - - PARAMETERS - ---------- - - If the segment is not a partial or escape segment, the total header size (in bytes) is given exactly by: - - 4 + (2 + 2 * numU) (mono mode) - 4 + (2 + 2 * numV) + (2 + 2 * numV) (stereo mode) - - where the ALAC filter-lengths numU, numV are bounded by a - constant (in the current source, numU, numV <= NUMCOEPAIRS), and - this forces an absolute upper bound on header size. - - Each segment-decode process loads up these bytes from the front of the - local stream, in the above order, then follows with the entropy-encoded - bits for the given segment. - - To generalize middle-side, there are various mixing modes including middle-side, each lossless, - as embodied in the mix() and unmix() functions. These functions exploit a generalized middle-side - transformation: - - u := [(rL + (m-r)R)/m]; - v := L - R; - - where [ ] denotes integer floor. The (lossless) inverse is - - L = u + v - [rV/m]; - R = L - v; - - In the segment header, m and r are encoded in mixBits and mixRes. - Classical "middle-side" is obtained with m = 2, r = 1, but now - we have more generalized mixes. - - NOTES - ----- - The relevance of the ALAC coefficients is explained in detail - in patent documents. -*/ - -/* - EncodeStereo() - - encode a channel pair -*/ -int32_t ALACEncoder::EncodeStereo( BitBuffer * bitstream, void * inputBuffer, uint32_t stride, uint32_t channelIndex, uint32_t numSamples ) -{ - BitBuffer workBits; - BitBuffer startBits = *bitstream; // squirrel away copy of current state in case we need to go back and do an escape packet - AGParamRec agParams; - uint32_t bits1, bits2; - uint32_t dilate; - int32_t mixBits, mixRes, maxRes; - uint32_t minBits, minBits1, minBits2; - uint32_t numU, numV; - uint32_t mode; - uint32_t pbFactor; - uint32_t chanBits; - uint32_t denShift; - uint8_t bytesShifted; - SearchCoefs coefsU; - SearchCoefs coefsV; - uint32_t index; - uint8_t partialFrame; - uint32_t escapeBits; - bool doEscape; - int32_t status = ALAC_noErr; - - // make sure we handle this bit-depth before we get going - RequireAction( (mBitDepth == 16) || (mBitDepth == 20) || (mBitDepth == 24) || (mBitDepth == 32), return kALAC_ParamError; ); - - // reload coefs pointers for this channel pair - // - note that, while you might think they should be re-initialized per block, retaining state across blocks - // actually results in better overall compression - // - strangely, re-using the same coefs for the different passes of the "mixRes" search loop instead of using - // different coefs for the different passes of "mixRes" results in even better compression - coefsU = (SearchCoefs) mCoefsU[channelIndex]; - coefsV = (SearchCoefs) mCoefsV[channelIndex]; - - // matrix encoding adds an extra bit but 32-bit inputs cannot be matrixed b/c 33 is too many - // so enable 16-bit "shift off" and encode in 17-bit mode - // - in addition, 24-bit mode really improves with one byte shifted off - if ( mBitDepth == 32 ) - bytesShifted = 2; - else if ( mBitDepth >= 24 ) - bytesShifted = 1; - else - bytesShifted = 0; - - chanBits = mBitDepth - (bytesShifted * 8) + 1; - - // flag whether or not this is a partial frame - partialFrame = (numSamples == mFrameSize) ? 0 : 1; - - // brute-force encode optimization loop - // - run over variations of the encoding params to find the best choice - mixBits = kDefaultMixBits; - maxRes = kMaxRes; - numU = numV = kDefaultNumUV; - denShift = DENSHIFT_DEFAULT; - mode = 0; - pbFactor = 4; - dilate = 8; - - minBits = minBits1 = minBits2 = 1ul << 31; - - int32_t bestRes = mLastMixRes[channelIndex]; - - for ( mixRes = 0; mixRes <= maxRes; mixRes++ ) - { - // mix the stereo inputs - switch ( mBitDepth ) - { - case 16: - mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); - break; - case 20: - mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); - break; - case 24: - // includes extraction of shifted-off bytes - mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, - mixBits, mixRes, mShiftBufferUV, bytesShifted ); - break; - case 32: - // includes extraction of shifted-off bytes - mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, - mixBits, mixRes, mShiftBufferUV, bytesShifted ); - break; - } - - BitBufferInit( &workBits, mWorkBuffer, mMaxOutputBytes ); - - // run the dynamic predictors - pc_block( mMixBufferU, mPredictorU, numSamples/dilate, coefsU[numU - 1], numU, chanBits, DENSHIFT_DEFAULT ); - pc_block( mMixBufferV, mPredictorV, numSamples/dilate, coefsV[numV - 1], numV, chanBits, DENSHIFT_DEFAULT ); - - // run the lossless compressor on each channel - set_ag_params( &agParams, MB0, (pbFactor * PB0) / 4, KB0, numSamples/dilate, numSamples/dilate, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorU, &workBits, numSamples/dilate, chanBits, &bits1 ); - RequireNoErr( status, goto Exit; ); - - set_ag_params( &agParams, MB0, (pbFactor * PB0) / 4, KB0, numSamples/dilate, numSamples/dilate, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorV, &workBits, numSamples/dilate, chanBits, &bits2 ); - RequireNoErr( status, goto Exit; ); - - // look for best match - if ( (bits1 + bits2) < minBits1 ) - { - minBits1 = bits1 + bits2; - bestRes = mixRes; - } - } - - mLastMixRes[channelIndex] = (int16_t)bestRes; - - // mix the stereo inputs with the current best mixRes - mixRes = mLastMixRes[channelIndex]; - switch ( mBitDepth ) - { - case 16: - mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); - break; - case 20: - mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); - break; - case 24: - // also extracts the shifted off bytes into the shift buffers - mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, - mixBits, mixRes, mShiftBufferUV, bytesShifted ); - break; - case 32: - // also extracts the shifted off bytes into the shift buffers - mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, - mixBits, mixRes, mShiftBufferUV, bytesShifted ); - break; - } - - // now it's time for the predictor coefficient search loop - numU = numV = kMinUV; - minBits1 = minBits2 = 1ul << 31; - - for ( uint32_t numUV = kMinUV; numUV <= kMaxUV; numUV += 4 ) - { - BitBufferInit( &workBits, mWorkBuffer, mMaxOutputBytes ); - - dilate = 32; - - // run the predictor over the same data multiple times to help it converge - for ( uint32_t converge = 0; converge < 8; converge++ ) - { - pc_block( mMixBufferU, mPredictorU, numSamples/dilate, coefsU[numUV-1], numUV, chanBits, DENSHIFT_DEFAULT ); - pc_block( mMixBufferV, mPredictorV, numSamples/dilate, coefsV[numUV-1], numUV, chanBits, DENSHIFT_DEFAULT ); - } - - dilate = 8; - - set_ag_params( &agParams, MB0, (pbFactor * PB0)/4, KB0, numSamples/dilate, numSamples/dilate, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorU, &workBits, numSamples/dilate, chanBits, &bits1 ); - - if ( (bits1 * dilate + 16 * numUV) < minBits1 ) - { - minBits1 = bits1 * dilate + 16 * numUV; - numU = numUV; - } - - set_ag_params( &agParams, MB0, (pbFactor * PB0)/4, KB0, numSamples/dilate, numSamples/dilate, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorV, &workBits, numSamples/dilate, chanBits, &bits2 ); - - if ( (bits2 * dilate + 16 * numUV) < minBits2 ) - { - minBits2 = bits2 * dilate + 16 * numUV; - numV = numUV; - } - } - - // test for escape hatch if best calculated compressed size turns out to be more than the input size - minBits = minBits1 + minBits2 + (8 /* mixRes/maxRes/etc. */ * 8) + ((partialFrame == true) ? 32 : 0); - if ( bytesShifted != 0 ) - minBits += (numSamples * (bytesShifted * 8) * 2); - - escapeBits = (numSamples * mBitDepth * 2) + ((partialFrame == true) ? 32 : 0) + (2 * 8); /* 2 common header bytes */ - - doEscape = (minBits >= escapeBits) ? true : false; - - if ( doEscape == false ) - { - // write bitstream header and coefs - BitBufferWrite( bitstream, 0, 12 ); - BitBufferWrite( bitstream, (partialFrame << 3) | (bytesShifted << 1), 4 ); - if ( partialFrame ) - BitBufferWrite( bitstream, numSamples, 32 ); - BitBufferWrite( bitstream, mixBits, 8 ); - BitBufferWrite( bitstream, mixRes, 8 ); - - //Assert( (mode < 16) && (DENSHIFT_DEFAULT < 16) ); - //Assert( (pbFactor < 8) && (numU < 32) ); - //Assert( (pbFactor < 8) && (numV < 32) ); - - BitBufferWrite( bitstream, (mode << 4) | DENSHIFT_DEFAULT, 8 ); - BitBufferWrite( bitstream, (pbFactor << 5) | numU, 8 ); - for ( index = 0; index < numU; index++ ) - BitBufferWrite( bitstream, coefsU[numU - 1][index], 16 ); - - BitBufferWrite( bitstream, (mode << 4) | DENSHIFT_DEFAULT, 8 ); - BitBufferWrite( bitstream, (pbFactor << 5) | numV, 8 ); - for ( index = 0; index < numV; index++ ) - BitBufferWrite( bitstream, coefsV[numV - 1][index], 16 ); - - // if shift active, write the interleaved shift buffers - if ( bytesShifted != 0 ) - { - uint32_t bitShift = bytesShifted * 8; - - //Assert( bitShift <= 16 ); - - for ( index = 0; index < (numSamples * 2); index += 2 ) - { - uint32_t shiftedVal; - - shiftedVal = ((uint32_t)mShiftBufferUV[index + 0] << bitShift) | (uint32_t)mShiftBufferUV[index + 1]; - BitBufferWrite( bitstream, shiftedVal, bitShift * 2 ); - } - } - - // run the dynamic predictor and lossless compression for the "left" channel - // - note: to avoid allocating more buffers, we're mixing and matching between the available buffers instead - // of only using "U" buffers for the U-channel and "V" buffers for the V-channel - if ( mode == 0 ) - { - pc_block( mMixBufferU, mPredictorU, numSamples, coefsU[numU - 1], numU, chanBits, DENSHIFT_DEFAULT ); - } - else - { - pc_block( mMixBufferU, mPredictorV, numSamples, coefsU[numU - 1], numU, chanBits, DENSHIFT_DEFAULT ); - pc_block( mPredictorV, mPredictorU, numSamples, nil, 31, chanBits, 0 ); - } - - set_ag_params( &agParams, MB0, (pbFactor * PB0) / 4, KB0, numSamples, numSamples, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorU, bitstream, numSamples, chanBits, &bits1 ); - RequireNoErr( status, goto Exit; ); - - // run the dynamic predictor and lossless compression for the "right" channel - if ( mode == 0 ) - { - pc_block( mMixBufferV, mPredictorV, numSamples, coefsV[numV - 1], numV, chanBits, DENSHIFT_DEFAULT ); - } - else - { - pc_block( mMixBufferV, mPredictorU, numSamples, coefsV[numV - 1], numV, chanBits, DENSHIFT_DEFAULT ); - pc_block( mPredictorU, mPredictorV, numSamples, nil, 31, chanBits, 0 ); - } - - set_ag_params( &agParams, MB0, (pbFactor * PB0) / 4, KB0, numSamples, numSamples, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorV, bitstream, numSamples, chanBits, &bits2 ); - RequireNoErr( status, goto Exit; ); - - /* if we happened to create a compressed packet that was actually bigger than an escape packet would be, - chuck it and do an escape packet - */ - minBits = BitBufferGetPosition( bitstream ) - BitBufferGetPosition( &startBits ); - if ( minBits >= escapeBits ) - { - *bitstream = startBits; // reset bitstream state - doEscape = true; - } - } - - if ( doEscape == true ) - { - /* escape */ - status = this->EncodeStereoEscape( bitstream, inputBuffer, stride, numSamples ); - -#if VERBOSE_DEBUG - DebugMsg( "escape!: %lu vs %lu", minBits, escapeBits ); -#endif - } - -Exit: - return status; -} - -/* - EncodeStereoFast() - - encode a channel pair without the search loop for maximum possible speed -*/ -int32_t ALACEncoder::EncodeStereoFast( BitBuffer * bitstream, void * inputBuffer, uint32_t stride, uint32_t channelIndex, uint32_t numSamples ) -{ - BitBuffer startBits = *bitstream; // squirrel away current bit position in case we decide to use escape hatch - AGParamRec agParams; - uint32_t bits1, bits2; - int32_t mixBits, mixRes; - uint32_t minBits, minBits1, minBits2; - uint32_t numU, numV; - uint32_t mode; - uint32_t pbFactor; - uint32_t chanBits; - uint32_t denShift; - uint8_t bytesShifted; - SearchCoefs coefsU; - SearchCoefs coefsV; - uint32_t index; - uint8_t partialFrame; - uint32_t escapeBits; - bool doEscape; - int32_t status; - - // make sure we handle this bit-depth before we get going - RequireAction( (mBitDepth == 16) || (mBitDepth == 20) || (mBitDepth == 24) || (mBitDepth == 32), return kALAC_ParamError; ); - - // reload coefs pointers for this channel pair - // - note that, while you might think they should be re-initialized per block, retaining state across blocks - // actually results in better overall compression - // - strangely, re-using the same coefs for the different passes of the "mixRes" search loop instead of using - // different coefs for the different passes of "mixRes" results in even better compression - coefsU = (SearchCoefs) mCoefsU[channelIndex]; - coefsV = (SearchCoefs) mCoefsV[channelIndex]; - - // matrix encoding adds an extra bit but 32-bit inputs cannot be matrixed b/c 33 is too many - // so enable 16-bit "shift off" and encode in 17-bit mode - // - in addition, 24-bit mode really improves with one byte shifted off - if ( mBitDepth == 32 ) - bytesShifted = 2; - else if ( mBitDepth >= 24 ) - bytesShifted = 1; - else - bytesShifted = 0; - - chanBits = mBitDepth - (bytesShifted * 8) + 1; - - // flag whether or not this is a partial frame - partialFrame = (numSamples == mFrameSize) ? 0 : 1; - - // set up default encoding parameters for "fast" mode - mixBits = kDefaultMixBits; - mixRes = kDefaultMixRes; - numU = numV = kDefaultNumUV; - denShift = DENSHIFT_DEFAULT; - mode = 0; - pbFactor = 4; - - minBits = minBits1 = minBits2 = 1ul << 31; - - // mix the stereo inputs with default mixBits/mixRes - switch ( mBitDepth ) - { - case 16: - mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); - break; - case 20: - mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); - break; - case 24: - // also extracts the shifted off bytes into the shift buffers - mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, - mixBits, mixRes, mShiftBufferUV, bytesShifted ); - break; - case 32: - // also extracts the shifted off bytes into the shift buffers - mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, - mixBits, mixRes, mShiftBufferUV, bytesShifted ); - break; - } - - /* speculatively write the bitstream assuming the compressed version will be smaller */ - - // write bitstream header and coefs - BitBufferWrite( bitstream, 0, 12 ); - BitBufferWrite( bitstream, (partialFrame << 3) | (bytesShifted << 1), 4 ); - if ( partialFrame ) - BitBufferWrite( bitstream, numSamples, 32 ); - BitBufferWrite( bitstream, mixBits, 8 ); - BitBufferWrite( bitstream, mixRes, 8 ); - - //Assert( (mode < 16) && (DENSHIFT_DEFAULT < 16) ); - //Assert( (pbFactor < 8) && (numU < 32) ); - //Assert( (pbFactor < 8) && (numV < 32) ); - - BitBufferWrite( bitstream, (mode << 4) | DENSHIFT_DEFAULT, 8 ); - BitBufferWrite( bitstream, (pbFactor << 5) | numU, 8 ); - for ( index = 0; index < numU; index++ ) - BitBufferWrite( bitstream, coefsU[numU - 1][index], 16 ); - - BitBufferWrite( bitstream, (mode << 4) | DENSHIFT_DEFAULT, 8 ); - BitBufferWrite( bitstream, (pbFactor << 5) | numV, 8 ); - for ( index = 0; index < numV; index++ ) - BitBufferWrite( bitstream, coefsV[numV - 1][index], 16 ); - - // if shift active, write the interleaved shift buffers - if ( bytesShifted != 0 ) - { - uint32_t bitShift = bytesShifted * 8; - - //Assert( bitShift <= 16 ); - - for ( index = 0; index < (numSamples * 2); index += 2 ) - { - uint32_t shiftedVal; - - shiftedVal = ((uint32_t)mShiftBufferUV[index + 0] << bitShift) | (uint32_t)mShiftBufferUV[index + 1]; - BitBufferWrite( bitstream, shiftedVal, bitShift * 2 ); - } - } - - // run the dynamic predictor and lossless compression for the "left" channel - // - note: we always use mode 0 in the "fast" path so we don't need the code for mode != 0 - pc_block( mMixBufferU, mPredictorU, numSamples, coefsU[numU - 1], numU, chanBits, DENSHIFT_DEFAULT ); - - set_ag_params( &agParams, MB0, (pbFactor * PB0) / 4, KB0, numSamples, numSamples, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorU, bitstream, numSamples, chanBits, &bits1 ); - RequireNoErr( status, goto Exit; ); - - // run the dynamic predictor and lossless compression for the "right" channel - pc_block( mMixBufferV, mPredictorV, numSamples, coefsV[numV - 1], numV, chanBits, DENSHIFT_DEFAULT ); - - set_ag_params( &agParams, MB0, (pbFactor * PB0) / 4, KB0, numSamples, numSamples, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorV, bitstream, numSamples, chanBits, &bits2 ); - RequireNoErr( status, goto Exit; ); - - // do bit requirement calculations - minBits1 = bits1 + (numU * sizeof(int16_t) * 8); - minBits2 = bits2 + (numV * sizeof(int16_t) * 8); - - // test for escape hatch if best calculated compressed size turns out to be more than the input size - minBits = minBits1 + minBits2 + (8 /* mixRes/maxRes/etc. */ * 8) + ((partialFrame == true) ? 32 : 0); - if ( bytesShifted != 0 ) - minBits += (numSamples * (bytesShifted * 8) * 2); - - escapeBits = (numSamples * mBitDepth * 2) + ((partialFrame == true) ? 32 : 0) + (2 * 8); /* 2 common header bytes */ - - doEscape = (minBits >= escapeBits) ? true : false; - - if ( doEscape == false ) - { - /* if we happened to create a compressed packet that was actually bigger than an escape packet would be, - chuck it and do an escape packet - */ - minBits = BitBufferGetPosition( bitstream ) - BitBufferGetPosition( &startBits ); - if ( minBits >= escapeBits ) - { - doEscape = true; - } - - } - - if ( doEscape == true ) - { - /* escape */ - - // reset bitstream position since we speculatively wrote the compressed version - *bitstream = startBits; - - // write escape frame - status = this->EncodeStereoEscape( bitstream, inputBuffer, stride, numSamples ); - -#if VERBOSE_DEBUG - DebugMsg( "escape!: %u vs %u", minBits, (numSamples * mBitDepth * 2) ); -#endif - } - -Exit: - return status; -} - -/* - EncodeStereoEscape() - - encode stereo escape frame -*/ -int32_t ALACEncoder::EncodeStereoEscape( BitBuffer * bitstream, void * inputBuffer, uint32_t stride, uint32_t numSamples ) -{ - int16_t * input16; - int32_t * input32; - uint8_t partialFrame; - uint32_t index; - - // flag whether or not this is a partial frame - partialFrame = (numSamples == mFrameSize) ? 0 : 1; - - // write bitstream header - BitBufferWrite( bitstream, 0, 12 ); - BitBufferWrite( bitstream, (partialFrame << 3) | 1, 4 ); // LSB = 1 means "frame not compressed" - if ( partialFrame ) - BitBufferWrite( bitstream, numSamples, 32 ); - - // just copy the input data to the output buffer - switch ( mBitDepth ) - { - case 16: - input16 = (int16_t *) inputBuffer; - - for ( index = 0; index < (numSamples * stride); index += stride ) - { - BitBufferWrite( bitstream, input16[index + 0], 16 ); - BitBufferWrite( bitstream, input16[index + 1], 16 ); - } - break; - case 20: - // mix20() with mixres param = 0 means de-interleave so use it to simplify things - mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0 ); - for ( index = 0; index < numSamples; index++ ) - { - BitBufferWrite( bitstream, mMixBufferU[index], 20 ); - BitBufferWrite( bitstream, mMixBufferV[index], 20 ); - } - break; - case 24: - // mix24() with mixres param = 0 means de-interleave so use it to simplify things - mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0, mShiftBufferUV, 0 ); - for ( index = 0; index < numSamples; index++ ) - { - BitBufferWrite( bitstream, mMixBufferU[index], 24 ); - BitBufferWrite( bitstream, mMixBufferV[index], 24 ); - } - break; - case 32: - input32 = (int32_t *) inputBuffer; - - for ( index = 0; index < (numSamples * stride); index += stride ) - { - BitBufferWrite( bitstream, input32[index + 0], 32 ); - BitBufferWrite( bitstream, input32[index + 1], 32 ); - } - break; - } - - return ALAC_noErr; -} - -/* - EncodeMono() - - encode a mono input buffer -*/ -int32_t ALACEncoder::EncodeMono( BitBuffer * bitstream, void * inputBuffer, uint32_t stride, uint32_t channelIndex, uint32_t numSamples ) -{ - BitBuffer startBits = *bitstream; // squirrel away copy of current state in case we need to go back and do an escape packet - AGParamRec agParams; - uint32_t bits1; - uint32_t numU; - SearchCoefs coefsU; - uint32_t dilate; - uint32_t minBits, bestU; - uint32_t minU, maxU; - uint32_t index, index2; - uint8_t bytesShifted; - uint32_t shift; - uint32_t mask; - uint32_t chanBits; - uint8_t pbFactor; - uint8_t partialFrame; - int16_t * input16; - int32_t * input32; - uint32_t escapeBits; - bool doEscape; - int32_t status; - - // make sure we handle this bit-depth before we get going - RequireAction( (mBitDepth == 16) || (mBitDepth == 20) || (mBitDepth == 24) || (mBitDepth == 32), return kALAC_ParamError; ); - - status = ALAC_noErr; - - // reload coefs array from previous frame - coefsU = (SearchCoefs) mCoefsU[channelIndex]; - - // pick bit depth for actual encoding - // - we lop off the lower byte(s) for 24-/32-bit encodings - if ( mBitDepth == 32 ) - bytesShifted = 2; - else if ( mBitDepth >= 24 ) - bytesShifted = 1; - else - bytesShifted = 0; - - shift = bytesShifted * 8; - mask = (1ul << shift) - 1; - chanBits = mBitDepth - (bytesShifted * 8); - - // flag whether or not this is a partial frame - partialFrame = (numSamples == mFrameSize) ? 0 : 1; - - // convert N-bit data to 32-bit for predictor - switch ( mBitDepth ) - { - case 16: - { - // convert 16-bit data to 32-bit for predictor - input16 = (int16_t *) inputBuffer; - for ( index = 0, index2 = 0; index < numSamples; index++, index2 += stride ) - mMixBufferU[index] = (int32_t) input16[index2]; - break; - } - case 20: - // convert 20-bit data to 32-bit for predictor - copy20ToPredictor( (uint8_t *) inputBuffer, stride, mMixBufferU, numSamples ); - break; - case 24: - // convert 24-bit data to 32-bit for the predictor and extract the shifted off byte(s) - copy24ToPredictor( (uint8_t *) inputBuffer, stride, mMixBufferU, numSamples ); - for ( index = 0; index < numSamples; index++ ) - { - mShiftBufferUV[index] = (uint16_t)(mMixBufferU[index] & mask); - mMixBufferU[index] >>= shift; - } - break; - case 32: - { - // just copy the 32-bit input data for the predictor and extract the shifted off byte(s) - input32 = (int32_t *) inputBuffer; - - for ( index = 0, index2 = 0; index < numSamples; index++, index2 += stride ) - { - int32_t val = input32[index2]; - - mShiftBufferUV[index] = (uint16_t)(val & mask); - mMixBufferU[index] = val >> shift; - } - break; - } - } - - // brute-force encode optimization loop (implied "encode depth" of 0 if comparing to cmd line tool) - // - run over variations of the encoding params to find the best choice - minU = 4; - maxU = 8; - minBits = 1ul << 31; - pbFactor = 4; - - minBits = 1ul << 31; - bestU = minU; - - for ( numU = minU; numU <= maxU; numU += 4 ) - { - BitBuffer workBits; - uint32_t numBits; - - BitBufferInit( &workBits, mWorkBuffer, mMaxOutputBytes ); - - dilate = 32; - for ( uint32_t converge = 0; converge < 7; converge++ ) - pc_block( mMixBufferU, mPredictorU, numSamples/dilate, coefsU[numU-1], numU, chanBits, DENSHIFT_DEFAULT ); - - dilate = 8; - pc_block( mMixBufferU, mPredictorU, numSamples/dilate, coefsU[numU-1], numU, chanBits, DENSHIFT_DEFAULT ); - - set_ag_params( &agParams, MB0, (pbFactor * PB0) / 4, KB0, numSamples/dilate, numSamples/dilate, MAX_RUN_DEFAULT ); - status = dyn_comp( &agParams, mPredictorU, &workBits, numSamples/dilate, chanBits, &bits1 ); - RequireNoErr( status, goto Exit; ); - - numBits = (dilate * bits1) + (16 * numU); - if ( numBits < minBits ) - { - bestU = numU; - minBits = numBits; - } - } - - // test for escape hatch if best calculated compressed size turns out to be more than the input size - // - first, add bits for the header bytes mixRes/maxRes/shiftU/filterU - minBits += (4 /* mixRes/maxRes/etc. */ * 8) + ((partialFrame == true) ? 32 : 0); - if ( bytesShifted != 0 ) - minBits += (numSamples * (bytesShifted * 8)); - - escapeBits = (numSamples * mBitDepth) + ((partialFrame == true) ? 32 : 0) + (2 * 8); /* 2 common header bytes */ - - doEscape = (minBits >= escapeBits) ? true : false; - - if ( doEscape == false ) - { - // write bitstream header - BitBufferWrite( bitstream, 0, 12 ); - BitBufferWrite( bitstream, (partialFrame << 3) | (bytesShifted << 1), 4 ); - if ( partialFrame ) - BitBufferWrite( bitstream, numSamples, 32 ); - BitBufferWrite( bitstream, 0, 16 ); // mixBits = mixRes = 0 - - // write the params and predictor coefs - numU = bestU; - BitBufferWrite( bitstream, (0 << 4) | DENSHIFT_DEFAULT, 8 ); // modeU = 0 - BitBufferWrite( bitstream, (pbFactor << 5) | numU, 8 ); - for ( index = 0; index < numU; index++ ) - BitBufferWrite( bitstream, coefsU[numU-1][index], 16 ); - - // if shift active, write the interleaved shift buffers - if ( bytesShifted != 0 ) - { - for ( index = 0; index < numSamples; index++ ) - BitBufferWrite( bitstream, mShiftBufferUV[index], shift ); - } - - // run the dynamic predictor with the best result - pc_block( mMixBufferU, mPredictorU, numSamples, coefsU[numU-1], numU, chanBits, DENSHIFT_DEFAULT ); - - // do lossless compression - set_standard_ag_params( &agParams, numSamples, numSamples ); - status = dyn_comp( &agParams, mPredictorU, bitstream, numSamples, chanBits, &bits1 ); - //AssertNoErr( status ); - - - /* if we happened to create a compressed packet that was actually bigger than an escape packet would be, - chuck it and do an escape packet - */ - minBits = BitBufferGetPosition( bitstream ) - BitBufferGetPosition( &startBits ); - if ( minBits >= escapeBits ) - { - *bitstream = startBits; // reset bitstream state - doEscape = true; - } - } - - if ( doEscape == true ) - { - // write bitstream header and coefs - BitBufferWrite( bitstream, 0, 12 ); - BitBufferWrite( bitstream, (partialFrame << 3) | 1, 4 ); // LSB = 1 means "frame not compressed" - if ( partialFrame ) - BitBufferWrite( bitstream, numSamples, 32 ); - - // just copy the input data to the output buffer - switch ( mBitDepth ) - { - case 16: - input16 = (int16_t *) inputBuffer; - for ( index = 0; index < (numSamples * stride); index += stride ) - BitBufferWrite( bitstream, input16[index], 16 ); - break; - case 20: - // convert 20-bit data to 32-bit for simplicity - copy20ToPredictor( (uint8_t *) inputBuffer, stride, mMixBufferU, numSamples ); - for ( index = 0; index < numSamples; index++ ) - BitBufferWrite( bitstream, mMixBufferU[index], 20 ); - break; - case 24: - // convert 24-bit data to 32-bit for simplicity - copy24ToPredictor( (uint8_t *) inputBuffer, stride, mMixBufferU, numSamples ); - for ( index = 0; index < numSamples; index++ ) - BitBufferWrite( bitstream, mMixBufferU[index], 24 ); - break; - case 32: - input32 = (int32_t *) inputBuffer; - for ( index = 0; index < (numSamples * stride); index += stride ) - BitBufferWrite( bitstream, input32[index], 32 ); - break; - } -#if VERBOSE_DEBUG - DebugMsg( "escape!: %lu vs %lu", minBits, (numSamples * mBitDepth) ); -#endif - } - -Exit: - return status; -} - -#if PRAGMA_MARK -#pragma mark - -#endif - -/* - Encode() - - encode the next block of samples -*/ -int32_t ALACEncoder::Encode(AudioFormatDescription theInputFormat, AudioFormatDescription theOutputFormat, - unsigned char * theReadBuffer, unsigned char * theWriteBuffer, int32_t * ioNumBytes) -{ - uint32_t numFrames; - uint32_t outputSize; - BitBuffer bitstream; - int32_t status; - - numFrames = *ioNumBytes/theInputFormat.mBytesPerPacket; - - // create a bit buffer structure pointing to our output buffer - BitBufferInit( &bitstream, theWriteBuffer, mMaxOutputBytes ); - - if ( theInputFormat.mChannelsPerFrame == 2 ) - { - // add 3-bit frame start tag ID_CPE = channel pair & 4-bit element instance tag = 0 - BitBufferWrite( &bitstream, ID_CPE, 3 ); - BitBufferWrite( &bitstream, 0, 4 ); - - // encode stereo input buffer - if ( mFastMode == false ) - status = this->EncodeStereo( &bitstream, theReadBuffer, 2, 0, numFrames ); - else - status = this->EncodeStereoFast( &bitstream, theReadBuffer, 2, 0, numFrames ); - RequireNoErr( status, goto Exit; ); - } - else if ( theInputFormat.mChannelsPerFrame == 1 ) - { - // add 3-bit frame start tag ID_SCE = mono channel & 4-bit element instance tag = 0 - BitBufferWrite( &bitstream, ID_SCE, 3 ); - BitBufferWrite( &bitstream, 0, 4 ); - - // encode mono input buffer - status = this->EncodeMono( &bitstream, theReadBuffer, 1, 0, numFrames ); - RequireNoErr( status, goto Exit; ); - } - else - { - char * inputBuffer; - uint32_t tag; - uint32_t channelIndex; - uint32_t inputIncrement; - uint8_t stereoElementTag; - uint8_t monoElementTag; - uint8_t lfeElementTag; - - inputBuffer = (char *) theReadBuffer; - inputIncrement = ((mBitDepth + 7) / 8); - - stereoElementTag = 0; - monoElementTag = 0; - lfeElementTag = 0; - - for ( channelIndex = 0; channelIndex < theInputFormat.mChannelsPerFrame; ) - { - tag = (sChannelMaps[theInputFormat.mChannelsPerFrame - 1] & (0x7ul << (channelIndex * 3))) >> (channelIndex * 3); - - BitBufferWrite( &bitstream, tag, 3 ); - switch ( tag ) - { - case ID_SCE: - // mono - BitBufferWrite( &bitstream, monoElementTag, 4 ); - - status = this->EncodeMono( &bitstream, inputBuffer, theInputFormat.mChannelsPerFrame, channelIndex, numFrames ); - - inputBuffer += inputIncrement; - channelIndex++; - monoElementTag++; - break; - - case ID_CPE: - // stereo - BitBufferWrite( &bitstream, stereoElementTag, 4 ); - - status = this->EncodeStereo( &bitstream, inputBuffer, theInputFormat.mChannelsPerFrame, channelIndex, numFrames ); - - inputBuffer += (inputIncrement * 2); - channelIndex += 2; - stereoElementTag++; - break; - - case ID_LFE: - // LFE channel (subwoofer) - BitBufferWrite( &bitstream, lfeElementTag, 4 ); - - status = this->EncodeMono( &bitstream, inputBuffer, theInputFormat.mChannelsPerFrame, channelIndex, numFrames ); - - inputBuffer += inputIncrement; - channelIndex++; - lfeElementTag++; - break; - - default: - status = kALAC_ParamError; - goto Exit; - } - - RequireNoErr( status, goto Exit; ); - } - } - -#if VERBOSE_DEBUG -{ - // if there is room left in the output buffer, add some random fill data to test decoder - int32_t bitsLeft; - int32_t bytesLeft; - - bitsLeft = BitBufferGetPosition( &bitstream ) - 3; // - 3 for ID_END tag - bytesLeft = bitstream.byteSize - ((bitsLeft + 7) / 8); - - if ( (bytesLeft > 20) && ((bytesLeft & 0x4u) != 0) ) - AddFiller( &bitstream, bytesLeft ); -} -#endif - - // add 3-bit frame end tag: ID_END - BitBufferWrite( &bitstream, ID_END, 3 ); - - // byte-align the output data - BitBufferByteAlign( &bitstream, true ); - - outputSize = BitBufferGetPosition( &bitstream ) / 8; - //Assert( outputSize <= mMaxOutputBytes ); - - - // all good, let iTunes know what happened and remember the total number of input sample frames - *ioNumBytes = outputSize; - //mEncodedFrames += encodeMsg->numInputSamples; - - // gather encoding stats - mTotalBytesGenerated += outputSize; - mMaxFrameBytes = MAX( mMaxFrameBytes, outputSize ); - - status = ALAC_noErr; - -Exit: - return status; -} - -/* - Finish() - - drain out any leftover samples -*/ - -int32_t ALACEncoder::Finish() -{ -/* // finalize bit rate statistics - if ( mSampleSize.numEntries != 0 ) - mAvgBitRate = (uint32_t)( (((float)mTotalBytesGenerated * 8.0f) / (float)mSampleSize.numEntries) * ((float)mSampleRate / (float)mFrameSize) ); - else - mAvgBitRate = 0; -*/ - return ALAC_noErr; -} - -#if PRAGMA_MARK -#pragma mark - -#endif - -/* - GetConfig() -*/ -void ALACEncoder::GetConfig( ALACSpecificConfig & config ) -{ - config.frameLength = Swap32NtoB(mFrameSize); - config.compatibleVersion = (uint8_t) kALACCompatibleVersion; - config.bitDepth = (uint8_t) mBitDepth; - config.pb = (uint8_t) PB0; - config.kb = (uint8_t) KB0; - config.mb = (uint8_t) MB0; - config.numChannels = (uint8_t) mNumChannels; - config.maxRun = Swap16NtoB((uint16_t) MAX_RUN_DEFAULT); - config.maxFrameBytes = Swap32NtoB(mMaxFrameBytes); - config.avgBitRate = Swap32NtoB(mAvgBitRate); - config.sampleRate = Swap32NtoB(mOutputSampleRate); -} - -uint32_t ALACEncoder::GetMagicCookieSize(uint32_t inNumChannels) -{ - if (inNumChannels > 2) - { - return sizeof(ALACSpecificConfig) + kChannelAtomSize + sizeof(ALACAudioChannelLayout); - } - else - { - return sizeof(ALACSpecificConfig); - } -} - -void ALACEncoder::GetMagicCookie(void * outCookie, uint32_t * ioSize) -{ - ALACSpecificConfig theConfig = {0}; - ALACAudioChannelLayout theChannelLayout = {0}; - uint8_t theChannelAtom[kChannelAtomSize] = {0, 0, 0, 0, 'c', 'h', 'a', 'n', 0, 0, 0, 0}; - uint32_t theCookieSize = sizeof(ALACSpecificConfig); - uint8_t * theCookiePointer = (uint8_t *)outCookie; - - GetConfig(theConfig); - if (theConfig.numChannels > 2) - { - theChannelLayout.mChannelLayoutTag = Swap32NtoB(ALACChannelLayoutTags[theConfig.numChannels - 1]); - theCookieSize += (sizeof(ALACAudioChannelLayout) + kChannelAtomSize); - } - if (*ioSize >= theCookieSize) - { - memcpy(theCookiePointer, &theConfig, sizeof(ALACSpecificConfig)); - theChannelAtom[3] = (sizeof(ALACAudioChannelLayout) + kChannelAtomSize); - if (theConfig.numChannels > 2) - { - theCookiePointer += sizeof(ALACSpecificConfig); - memcpy(theCookiePointer, theChannelAtom, kChannelAtomSize); - theCookiePointer += kChannelAtomSize; - memcpy(theCookiePointer, &theChannelLayout, sizeof(ALACAudioChannelLayout)); - } - *ioSize = theCookieSize; - } - else - { - *ioSize = 0; // no incomplete cookies - } -} - -/* - InitializeEncoder() - - initialize the encoder component with the current config -*/ -int32_t ALACEncoder::InitializeEncoder(AudioFormatDescription theOutputFormat) -{ - int32_t status; - - mOutputSampleRate = theOutputFormat.mSampleRate; - mNumChannels = theOutputFormat.mChannelsPerFrame; - switch(theOutputFormat.mFormatFlags) - { - case 1: - mBitDepth = 16; - break; - case 2: - mBitDepth = 20; - break; - case 3: - mBitDepth = 24; - break; - case 4: - mBitDepth = 32; - break; - default: - break; - } - - // set up default encoding parameters and state - // - note: mFrameSize is set in the constructor or via SetFrameSize() which must be called before this routine - for ( uint32_t index = 0; index < kALACMaxChannels; index++ ) - mLastMixRes[index] = kDefaultMixRes; - - // the maximum output frame size can be no bigger than (samplesPerBlock * numChannels * ((10 + sampleSize)/8) + 1) - // but note that this can be bigger than the input size! - // - since we don't yet know what our input format will be, use our max allowed sample size in the calculation - mMaxOutputBytes = mFrameSize * mNumChannels * ((10 + kMaxSampleSize) / 8) + 1; - - // allocate mix buffers - mMixBufferU = (int32_t *) calloc( mFrameSize * sizeof(int32_t), 1 ); - mMixBufferV = (int32_t *) calloc( mFrameSize * sizeof(int32_t), 1 ); - - // allocate dynamic predictor buffers - mPredictorU = (int32_t *) calloc( mFrameSize * sizeof(int32_t), 1 ); - mPredictorV = (int32_t *) calloc( mFrameSize * sizeof(int32_t), 1 ); - - // allocate combined shift buffer - mShiftBufferUV = (uint16_t *) calloc( mFrameSize * 2 * sizeof(uint16_t),1 ); - - // allocate work buffer for search loop - mWorkBuffer = (uint8_t *) calloc( mMaxOutputBytes, 1 ); - - RequireAction( (mMixBufferU != nil) && (mMixBufferV != nil) && - (mPredictorU != nil) && (mPredictorV != nil) && - (mShiftBufferUV != nil) && (mWorkBuffer != nil ), - status = kALAC_MemFullError; goto Exit; ); - - status = ALAC_noErr; - - - // initialize coefs arrays once b/c retaining state across blocks actually improves the encode ratio - for ( int32_t channel = 0; channel < (int32_t)mNumChannels; channel++ ) - { - for ( int32_t search = 0; search < kALACMaxSearches; search++ ) - { - init_coefs( mCoefsU[channel][search], DENSHIFT_DEFAULT, kALACMaxCoefs ); - init_coefs( mCoefsV[channel][search], DENSHIFT_DEFAULT, kALACMaxCoefs ); - } - } - -Exit: - return status; -} - -/* - GetSourceFormat() - - given the input format, return one of our supported formats -*/ -void ALACEncoder::GetSourceFormat( const AudioFormatDescription * source, AudioFormatDescription * output ) -{ - // default is 16-bit native endian - // - note: for float input we assume that's coming from one of our decoders (mp3, aac) so it only makes sense - // to encode to 16-bit since the source was lossy in the first place - // - note: if not a supported bit depth, find the closest supported bit depth to the input one - if ( (source->mFormatID != kALACFormatLinearPCM) || ((source->mFormatFlags & kALACFormatFlagIsFloat) != 0) || - ( source->mBitsPerChannel <= 16 ) ) - mBitDepth = 16; - else if ( source->mBitsPerChannel <= 20 ) - mBitDepth = 20; - else if ( source->mBitsPerChannel <= 24 ) - mBitDepth = 24; - else - mBitDepth = 32; - - // we support 16/20/24/32-bit integer data at any sample rate and our target number of channels - // and sample rate were specified when we were configured - /* - MakeUncompressedAudioFormat( mNumChannels, (float) mOutputSampleRate, mBitDepth, kAudioFormatFlagsNativeIntegerPacked, output ); - */ -} - - - -#if VERBOSE_DEBUG - -#if PRAGMA_MARK -#pragma mark - -#endif - -/* - AddFiller() - - add fill and data stream elements to the bitstream to test the decoder -*/ -static void AddFiller( BitBuffer * bits, int32_t numBytes ) -{ - uint8_t tag; - uint32_t index; - - // out of lameness, subtract 6 bytes to deal with header + alignment as required for fill/data elements - numBytes -= 6; - if ( numBytes <= 0 ) - return; - - // randomly pick Fill or Data Stream Element based on numBytes requested - tag = (numBytes & 0x8) ? ID_FIL : ID_DSE; - - BitBufferWrite( bits, tag, 3 ); - if ( tag == ID_FIL ) - { - // can't write more than 269 bytes in a fill element - numBytes = (numBytes > 269) ? 269 : numBytes; - - // fill element = 4-bit size unless >= 15 then 4-bit size + 8-bit extension size - if ( numBytes >= 15 ) - { - uint16_t extensionSize; - - BitBufferWrite( bits, 15, 4 ); - - // 8-bit extension count field is "extra + 1" which is weird but I didn't define the syntax - // - otherwise, there's no way to represent 15 - // - for example, to really mean 15 bytes you must encode extensionSize = 1 - // - why it's not like data stream elements I have no idea - extensionSize = (numBytes - 15) + 1; - Assert( extensionSize <= 255 ); - BitBufferWrite( bits, extensionSize, 8 ); - } - else - BitBufferWrite( bits, numBytes, 4 ); - - BitBufferWrite( bits, 0x10, 8 ); // extension_type = FILL_DATA = b0001 or'ed with fill_nibble = b0000 - for ( index = 0; index < (numBytes - 1); index++ ) - BitBufferWrite( bits, 0xa5, 8 ); // fill_byte = b10100101 = 0xa5 - } - else - { - // can't write more than 510 bytes in a data stream element - numBytes = (numBytes > 510) ? 510 : numBytes; - - BitBufferWrite( bits, 0, 4 ); // element instance tag - BitBufferWrite( bits, 1, 1 ); // byte-align flag = true - - // data stream element = 8-bit size unless >= 255 then 8-bit size + 8-bit size - if ( numBytes >= 255 ) - { - BitBufferWrite( bits, 255, 8 ); - BitBufferWrite( bits, numBytes - 255, 8 ); - } - else - BitBufferWrite( bits, numBytes, 8 ); - - BitBufferByteAlign( bits, true ); // byte-align with zeros - - for ( index = 0; index < numBytes; index++ ) - BitBufferWrite( bits, 0x5a, 8 ); - } -} - -#endif /* VERBOSE_DEBUG */ diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ALACEncoder.h b/tools/audiofile-0.3.6/libaudiofile/alac/ALACEncoder.h deleted file mode 100644 index 0e6c6890..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ALACEncoder.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: ALACEncoder.h -*/ - -#pragma once - -#include - -#include "ALACAudioTypes.h" - - -struct BitBuffer; - -class ALACEncoder -{ - public: - ALACEncoder(); - virtual ~ALACEncoder(); - - virtual int32_t Encode(AudioFormatDescription theInputFormat, AudioFormatDescription theOutputFormat, - unsigned char * theReadBuffer, unsigned char * theWriteBuffer, int32_t * ioNumBytes); - virtual int32_t Finish( ); - - void SetFastMode( bool fast ) { mFastMode = fast; }; - - // this must be called *before* InitializeEncoder() - void SetFrameSize( uint32_t frameSize ) { mFrameSize = frameSize; }; - - void GetConfig( ALACSpecificConfig & config ); - uint32_t GetMagicCookieSize(uint32_t inNumChannels); - void GetMagicCookie( void * config, uint32_t * ioSize ); - - virtual int32_t InitializeEncoder(AudioFormatDescription theOutputFormat); - - protected: - virtual void GetSourceFormat( const AudioFormatDescription * source, AudioFormatDescription * output ); - - int32_t EncodeStereo( struct BitBuffer * bitstream, void * input, uint32_t stride, uint32_t channelIndex, uint32_t numSamples ); - int32_t EncodeStereoFast( struct BitBuffer * bitstream, void * input, uint32_t stride, uint32_t channelIndex, uint32_t numSamples ); - int32_t EncodeStereoEscape( struct BitBuffer * bitstream, void * input, uint32_t stride, uint32_t numSamples ); - int32_t EncodeMono( struct BitBuffer * bitstream, void * input, uint32_t stride, uint32_t channelIndex, uint32_t numSamples ); - - - // ALAC encoder parameters - int16_t mBitDepth; - bool mFastMode; - - // encoding state - int16_t mLastMixRes[kALACMaxChannels]; - - // encoding buffers - int32_t * mMixBufferU; - int32_t * mMixBufferV; - int32_t * mPredictorU; - int32_t * mPredictorV; - uint16_t * mShiftBufferUV; - - uint8_t * mWorkBuffer; - - // per-channel coefficients buffers - int16_t mCoefsU[kALACMaxChannels][kALACMaxSearches][kALACMaxCoefs]; - int16_t mCoefsV[kALACMaxChannels][kALACMaxSearches][kALACMaxCoefs]; - - // encoding statistics - uint32_t mTotalBytesGenerated; - uint32_t mAvgBitRate; - uint32_t mMaxFrameBytes; - uint32_t mFrameSize; - uint32_t mMaxOutputBytes; - uint32_t mNumChannels; - uint32_t mOutputSampleRate; -}; diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/EndianPortable.c b/tools/audiofile-0.3.6/libaudiofile/alac/EndianPortable.c deleted file mode 100644 index 261a87d4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/EndianPortable.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -// -// EndianPortable.c -// -// Copyright 2011 Apple Inc. All rights reserved. -// - -#include "config.h" -#include "EndianPortable.h" - -#define BSWAP16(x) (((x << 8) | ((x >> 8) & 0x00ff))) -#define BSWAP32(x) (((x << 24) | ((x << 8) & 0x00ff0000) | ((x >> 8) & 0x0000ff00) | ((x >> 24) & 0x000000ff))) -#define BSWAP64(x) ((((int64_t)x << 56) | (((int64_t)x << 40) & 0x00ff000000000000LL) | \ - (((int64_t)x << 24) & 0x0000ff0000000000LL) | (((int64_t)x << 8) & 0x000000ff00000000LL) | \ - (((int64_t)x >> 8) & 0x00000000ff000000LL) | (((int64_t)x >> 24) & 0x0000000000ff0000LL) | \ - (((int64_t)x >> 40) & 0x000000000000ff00LL) | (((int64_t)x >> 56) & 0x00000000000000ffLL))) - -#ifndef WORDS_BIGENDIAN -#define TARGET_RT_LITTLE_ENDIAN 1 -#endif - -uint16_t Swap16NtoB(uint16_t inUInt16) -{ -#if TARGET_RT_LITTLE_ENDIAN - return BSWAP16(inUInt16); -#else - return inUInt16; -#endif -} - -uint16_t Swap16BtoN(uint16_t inUInt16) -{ -#if TARGET_RT_LITTLE_ENDIAN - return BSWAP16(inUInt16); -#else - return inUInt16; -#endif -} - -uint32_t Swap32NtoB(uint32_t inUInt32) -{ -#if TARGET_RT_LITTLE_ENDIAN - return BSWAP32(inUInt32); -#else - return inUInt32; -#endif -} - -uint32_t Swap32BtoN(uint32_t inUInt32) -{ -#if TARGET_RT_LITTLE_ENDIAN - return BSWAP32(inUInt32); -#else - return inUInt32; -#endif -} - -uint64_t Swap64BtoN(uint64_t inUInt64) -{ -#if TARGET_RT_LITTLE_ENDIAN - return BSWAP64(inUInt64); -#else - return inUInt64; -#endif -} - -uint64_t Swap64NtoB(uint64_t inUInt64) -{ -#if TARGET_RT_LITTLE_ENDIAN - return BSWAP64(inUInt64); -#else - return inUInt64; -#endif -} - -float SwapFloat32BtoN(float in) -{ -#if TARGET_RT_LITTLE_ENDIAN - union { - float f; - int32_t i; - } x; - x.f = in; - x.i = BSWAP32(x.i); - return x.f; -#else - return in; -#endif -} - -float SwapFloat32NtoB(float in) -{ -#if TARGET_RT_LITTLE_ENDIAN - union { - float f; - int32_t i; - } x; - x.f = in; - x.i = BSWAP32(x.i); - return x.f; -#else - return in; -#endif -} - -double SwapFloat64BtoN(double in) -{ -#if TARGET_RT_LITTLE_ENDIAN - union { - double f; - int64_t i; - } x; - x.f = in; - x.i = BSWAP64(x.i); - return x.f; -#else - return in; -#endif -} - -double SwapFloat64NtoB(double in) -{ -#if TARGET_RT_LITTLE_ENDIAN - union { - double f; - int64_t i; - } x; - x.f = in; - x.i = BSWAP64(x.i); - return x.f; -#else - return in; -#endif -} - -void Swap16(uint16_t * inUInt16) -{ - *inUInt16 = BSWAP16(*inUInt16); -} - -void Swap24(uint8_t * inUInt24) -{ - uint8_t tempVal = inUInt24[0]; - inUInt24[0] = inUInt24[2]; - inUInt24[2] = tempVal; -} - -void Swap32(uint32_t * inUInt32) -{ - *inUInt32 = BSWAP32(*inUInt32); -} - diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/EndianPortable.h b/tools/audiofile-0.3.6/libaudiofile/alac/EndianPortable.h deleted file mode 100644 index f7f50a79..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/EndianPortable.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -// -// EndianPortable.h -// -// Copyright 2011 Apple Inc. All rights reserved. -// - -#ifndef _EndianPortable_h -#define _EndianPortable_h - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -uint16_t Swap16NtoB(uint16_t inUInt16); -uint16_t Swap16BtoN(uint16_t inUInt16); - -uint32_t Swap32NtoB(uint32_t inUInt32); -uint32_t Swap32BtoN(uint32_t inUInt32); - -uint64_t Swap64BtoN(uint64_t inUInt64); -uint64_t Swap64NtoB(uint64_t inUInt64); - -float SwapFloat32BtoN(float in); -float SwapFloat32NtoB(float in); - -double SwapFloat64BtoN(double in); -double SwapFloat64NtoB(double in); - -void Swap16(uint16_t * inUInt16); -void Swap24(uint8_t * inUInt24); -void Swap32(uint32_t * inUInt32); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/Makefile b/tools/audiofile-0.3.6/libaudiofile/alac/Makefile deleted file mode 100644 index 6fd4ac37..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/Makefile +++ /dev/null @@ -1,584 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# libaudiofile/alac/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -subdir = libaudiofile/alac -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libalac_la_LIBADD = -am_libalac_la_OBJECTS = ag_dec.lo ag_enc.lo ALACBitUtilities.lo \ - ALACDecoder.lo ALACEncoder.lo dp_dec.lo dp_enc.lo \ - EndianPortable.lo matrix_dec.lo matrix_enc.lo -libalac_la_OBJECTS = $(am_libalac_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libalac_la_SOURCES) -DIST_SOURCES = $(libalac_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/alac -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/alac -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../../ -top_builddir = ../.. -top_srcdir = ../.. -noinst_LTLIBRARIES = libalac.la -libalac_la_SOURCES = \ - ag_dec.c \ - ag_enc.c \ - aglib.h \ - ALACAudioTypes.h \ - ALACBitUtilities.c \ - ALACBitUtilities.h \ - ALACDecoder.cpp \ - ALACDecoder.h \ - ALACEncoder.cpp \ - ALACEncoder.h \ - dp_dec.c \ - dp_enc.c \ - dplib.h \ - EndianPortable.c \ - EndianPortable.h \ - matrix_dec.c \ - matrix_enc.c \ - matrixlib.h - -AM_CFLAGS = \ - -DNDEBUG \ - -Wall \ - -Wno-multichar \ - $(COVERAGE_CFLAGS) \ - -fvisibility=hidden - -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -CLEANFILES = *.gcda *.gcno -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libaudiofile/alac/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libaudiofile/alac/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libalac.la: $(libalac_la_OBJECTS) $(libalac_la_DEPENDENCIES) $(EXTRA_libalac_la_DEPENDENCIES) - $(CXXLINK) $(libalac_la_OBJECTS) $(libalac_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/ALACBitUtilities.Plo -include ./$(DEPDIR)/ALACDecoder.Plo -include ./$(DEPDIR)/ALACEncoder.Plo -include ./$(DEPDIR)/EndianPortable.Plo -include ./$(DEPDIR)/ag_dec.Plo -include ./$(DEPDIR)/ag_enc.Plo -include ./$(DEPDIR)/dp_dec.Plo -include ./$(DEPDIR)/dp_enc.Plo -include ./$(DEPDIR)/matrix_dec.Plo -include ./$(DEPDIR)/matrix_enc.Plo - -.c.o: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: - $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LTCOMPILE) -c -o $@ $< - -.cpp.o: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: - $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/Makefile.am b/tools/audiofile-0.3.6/libaudiofile/alac/Makefile.am deleted file mode 100644 index 08f2a746..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -noinst_LTLIBRARIES = libalac.la - -libalac_la_SOURCES = \ - ag_dec.c \ - ag_enc.c \ - aglib.h \ - ALACAudioTypes.h \ - ALACBitUtilities.c \ - ALACBitUtilities.h \ - ALACDecoder.cpp \ - ALACDecoder.h \ - ALACEncoder.cpp \ - ALACEncoder.h \ - dp_dec.c \ - dp_enc.c \ - dplib.h \ - EndianPortable.c \ - EndianPortable.h \ - matrix_dec.c \ - matrix_enc.c \ - matrixlib.h - -AM_CFLAGS = \ - -DNDEBUG \ - -Wall \ - -Wno-multichar \ - $(COVERAGE_CFLAGS) \ - -fvisibility=hidden -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden - -CLEANFILES = *.gcda *.gcno diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/Makefile.in b/tools/audiofile-0.3.6/libaudiofile/alac/Makefile.in deleted file mode 100644 index e587e50f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/Makefile.in +++ /dev/null @@ -1,584 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = libaudiofile/alac -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libalac_la_LIBADD = -am_libalac_la_OBJECTS = ag_dec.lo ag_enc.lo ALACBitUtilities.lo \ - ALACDecoder.lo ALACEncoder.lo dp_dec.lo dp_enc.lo \ - EndianPortable.lo matrix_dec.lo matrix_enc.lo -libalac_la_OBJECTS = $(am_libalac_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libalac_la_SOURCES) -DIST_SOURCES = $(libalac_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libalac.la -libalac_la_SOURCES = \ - ag_dec.c \ - ag_enc.c \ - aglib.h \ - ALACAudioTypes.h \ - ALACBitUtilities.c \ - ALACBitUtilities.h \ - ALACDecoder.cpp \ - ALACDecoder.h \ - ALACEncoder.cpp \ - ALACEncoder.h \ - dp_dec.c \ - dp_enc.c \ - dplib.h \ - EndianPortable.c \ - EndianPortable.h \ - matrix_dec.c \ - matrix_enc.c \ - matrixlib.h - -AM_CFLAGS = \ - -DNDEBUG \ - -Wall \ - -Wno-multichar \ - $(COVERAGE_CFLAGS) \ - -fvisibility=hidden - -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -CLEANFILES = *.gcda *.gcno -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libaudiofile/alac/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libaudiofile/alac/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libalac.la: $(libalac_la_OBJECTS) $(libalac_la_DEPENDENCIES) $(EXTRA_libalac_la_DEPENDENCIES) - $(CXXLINK) $(libalac_la_OBJECTS) $(libalac_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ALACBitUtilities.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ALACDecoder.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ALACEncoder.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EndianPortable.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ag_dec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ag_enc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dp_dec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dp_enc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrix_dec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrix_enc.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ag_dec.c b/tools/audiofile-0.3.6/libaudiofile/alac/ag_dec.c deleted file mode 100644 index df44ff20..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ag_dec.c +++ /dev/null @@ -1,354 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: ag_dec.c - - Contains: Adaptive Golomb decode routines. - - Copyright: (c) 2001-2011 Apple, Inc. -*/ - -#include "aglib.h" -#include "ALACBitUtilities.h" -#include "ALACAudioTypes.h" - -#include -#include -#include - -#define CODE_TO_LONG_MAXBITS 32 -#define N_MAX_MEAN_CLAMP 0xffff -#define N_MEAN_CLAMP_VAL 0xffff -#define REPORT_VAL 40 - -#if __GNUC__ -#define ALWAYS_INLINE __attribute__((always_inline)) -#else -#define ALWAYS_INLINE -#endif - -/* And on the subject of the CodeWarrior x86 compiler and inlining, I reworked a lot of this - to help the compiler out. In many cases this required manual inlining or a macro. Sorry - if it is ugly but the performance gains are well worth it. - - WSK 5/19/04 -*/ - -void set_standard_ag_params(AGParamRecPtr params, uint32_t fullwidth, uint32_t sectorwidth) -{ - /* Use - fullwidth = sectorwidth = numOfSamples, for analog 1-dimensional type-short data, - but use - fullwidth = full image width, sectorwidth = sector (patch) width - for such as image (2-dim.) data. - */ - set_ag_params( params, MB0, PB0, KB0, fullwidth, sectorwidth, MAX_RUN_DEFAULT ); -} - -void set_ag_params(AGParamRecPtr params, uint32_t m, uint32_t p, uint32_t k, uint32_t f, uint32_t s, uint32_t maxrun) -{ - params->mb = params->mb0 = m; - params->pb = p; - params->kb = k; - params->wb = (1u<kb)-1; - params->qb = QB-params->pb; - params->fw = f; - params->sw = s; - params->maxrun = maxrun; -} - -#if PRAGMA_MARK -#pragma mark - -#endif - - -// note: implementing this with some kind of "count leading zeros" assembly is a big performance win -static inline int32_t lead( int32_t m ) -{ - long j; - unsigned long c = (1ul << 31); - - for(j=0; j < 32; j++) - { - if((c & m) != 0) - break; - c >>= 1; - } - return (j); -} - -#define arithmin(a, b) ((a) < (b) ? (a) : (b)) - -static inline int32_t ALWAYS_INLINE lg3a( int32_t x) -{ - int32_t result; - - x += 3; - result = lead(x); - - return 31 - result; -} - -static inline uint32_t ALWAYS_INLINE read32bit( uint8_t * buffer ) -{ - // embedded CPUs typically can't read unaligned 32-bit words so just read the bytes - uint32_t value; - - value = ((uint32_t)buffer[0] << 24) | ((uint32_t)buffer[1] << 16) | - ((uint32_t)buffer[2] << 8) | (uint32_t)buffer[3]; - return value; - -} - -#if PRAGMA_MARK -#pragma mark - -#endif - -#define get_next_fromlong(inlong, suff) ((inlong) >> (32 - (suff))) - - -static inline uint32_t ALWAYS_INLINE -getstreambits( uint8_t *in, int32_t bitoffset, int32_t numbits ) -{ - uint32_t load1, load2; - uint32_t byteoffset = bitoffset / 8; - uint32_t result; - - //Assert( numbits <= 32 ); - - load1 = read32bit( in + byteoffset ); - - if ( (numbits + (bitoffset & 0x7)) > 32) - { - int32_t load2shift; - - result = load1 << (bitoffset & 0x7); - load2 = (uint32_t) in[byteoffset+4]; - load2shift = (8-(numbits + (bitoffset & 0x7)-32)); - load2 >>= load2shift; - result >>= (32-numbits); - result |= load2; - } - else - { - result = load1 >> (32-numbits-(bitoffset & 7)); - } - - // a shift of >= "the number of bits in the type of the value being shifted" results in undefined - // behavior so don't try to shift by 32 - if ( numbits != (sizeof(result) * 8) ) - result &= ~(0xfffffffful << numbits); - - return result; -} - - -static inline int32_t dyn_get(unsigned char *in, uint32_t *bitPos, uint32_t m, uint32_t k) -{ - uint32_t tempbits = *bitPos; - uint32_t result; - uint32_t pre = 0, v; - uint32_t streamlong; - - streamlong = read32bit( in + (tempbits >> 3) ); - streamlong <<= (tempbits & 7); - - /* find the number of bits in the prefix */ - { - uint32_t notI = ~streamlong; - pre = lead( notI); - } - - if(pre >= MAX_PREFIX_16) - { - pre = MAX_PREFIX_16; - tempbits += pre; - streamlong <<= pre; - result = get_next_fromlong(streamlong,MAX_DATATYPE_BITS_16); - tempbits += MAX_DATATYPE_BITS_16; - - } - else - { - // all of the bits must fit within the long we have loaded - //Assert(pre+1+k <= 32); - - tempbits += pre; - tempbits += 1; - streamlong <<= pre+1; - v = get_next_fromlong(streamlong, k); - tempbits += k; - - result = pre*m + v-1; - - if(v<2) { - result -= (v-1); - tempbits -= 1; - } - } - - *bitPos = tempbits; - return result; -} - - -static inline int32_t dyn_get_32bit( uint8_t * in, uint32_t * bitPos, int32_t m, int32_t k, int32_t maxbits ) -{ - uint32_t tempbits = *bitPos; - uint32_t v; - uint32_t streamlong; - uint32_t result; - - streamlong = read32bit( in + (tempbits >> 3) ); - streamlong <<= (tempbits & 7); - - /* find the number of bits in the prefix */ - { - uint32_t notI = ~streamlong; - result = lead( notI); - } - - if(result >= MAX_PREFIX_32) - { - result = getstreambits(in, tempbits+MAX_PREFIX_32, maxbits); - tempbits += MAX_PREFIX_32 + maxbits; - } - else - { - /* all of the bits must fit within the long we have loaded*/ - //Assert(k<=14); - //Assert(result=2) - { - result += (v-1); - tempbits += 1; - } - } - } - - *bitPos = tempbits; - - return result; -} - -int32_t dyn_decomp( AGParamRecPtr params, BitBuffer * bitstream, int32_t * pc, int32_t numSamples, int32_t maxSize, uint32_t * outNumBits ) -{ - uint8_t *in; - int32_t *outPtr = pc; - uint32_t bitPos, startPos, maxPos; - uint32_t j, m, k, n, c, mz; - int32_t del, zmode; - uint32_t mb; - uint32_t pb_local = params->pb; - uint32_t kb_local = params->kb; - uint32_t wb_local = params->wb; - int32_t status; - - RequireAction( (bitstream != nil) && (pc != nil) && (outNumBits != nil), return kALAC_ParamError; ); - *outNumBits = 0; - - in = bitstream->cur; - startPos = bitstream->bitIndex; - maxPos = bitstream->byteSize * 8; - bitPos = startPos; - - mb = params->mb0; - zmode = 0; - - c = 0; - status = ALAC_noErr; - - while (c < numSamples) - { - // bail if we've run off the end of the buffer - RequireAction( bitPos < maxPos, status = kALAC_ParamError; goto Exit; ); - - m = (mb)>>QBSHIFT; - k = lg3a(m); - - k = arithmin(k, kb_local); - m = (1<> 1) * (multiplier); - } - - *outPtr++ = del; - - c++; - - mb = pb_local*(n+zmode) + mb - ((pb_local*mb)>>QBSHIFT); - - // update mean tracking - if (n > N_MAX_MEAN_CLAMP) - mb = N_MEAN_CLAMP_VAL; - - zmode = 0; - - if (((mb << MMULSHIFT) < QB) && (c < numSamples)) - { - zmode = 1; - k = lead(mb) - BITOFF+((mb+MOFF)>>MDENSHIFT); - mz = ((1<= 65535) - zmode = 0; - - mb = 0; - } - } - -Exit: - *outNumBits = (bitPos - startPos); - BitBufferAdvance( bitstream, *outNumBits ); - RequireAction( bitstream->cur <= bitstream->end, status = kALAC_ParamError; ); - - return status; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/ag_enc.c b/tools/audiofile-0.3.6/libaudiofile/alac/ag_enc.c deleted file mode 100644 index 79a58705..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/ag_enc.c +++ /dev/null @@ -1,368 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: ag_enc.c - - Contains: Adaptive Golomb encode routines. - - Copyright: (c) 2001-2011 Apple, Inc. -*/ - -#include "aglib.h" -#include "ALACBitUtilities.h" -#include "EndianPortable.h" -#include "ALACAudioTypes.h" - -#include -#include -#include - -#define CODE_TO_LONG_MAXBITS 32 -#define N_MAX_MEAN_CLAMP 0xffff -#define N_MEAN_CLAMP_VAL 0xffff -#define REPORT_VAL 40 - -#if __GNUC__ -#define ALWAYS_INLINE __attribute__((always_inline)) -#else -#define ALWAYS_INLINE -#endif - - -/* And on the subject of the CodeWarrior x86 compiler and inlining, I reworked a lot of this - to help the compiler out. In many cases this required manual inlining or a macro. Sorry - if it is ugly but the performance gains are well worth it. - - WSK 5/19/04 -*/ - -// note: implementing this with some kind of "count leading zeros" assembly is a big performance win -static inline int32_t lead( int32_t m ) -{ - long j; - unsigned long c = (1ul << 31); - - for(j=0; j < 32; j++) - { - if((c & m) != 0) - break; - c >>= 1; - } - return (j); -} - -#define arithmin(a, b) ((a) < (b) ? (a) : (b)) - -static inline int32_t ALWAYS_INLINE lg3a( int32_t x) -{ - int32_t result; - - x += 3; - result = lead(x); - - return 31 - result; -} - -static inline int32_t ALWAYS_INLINE abs_func( int32_t a ) -{ - // note: the CW PPC intrinsic __abs() turns into these instructions so no need to try and use it - int32_t isneg = a >> 31; - int32_t xorval = a ^ isneg; - int32_t result = xorval-isneg; - - return result; -} - -static inline uint32_t ALWAYS_INLINE unaligned_read32_be(const uint8_t *buffer) -{ - // embedded CPUs typically can't read unaligned 32-bit words so just read the bytes - uint32_t value; - - value = ((uint32_t)buffer[0] << 24) | ((uint32_t)buffer[1] << 16) | - ((uint32_t)buffer[2] << 8) | (uint32_t)buffer[3]; - return value; -} - -static inline void ALWAYS_INLINE unaligned_write32_be(uint8_t *buffer, uint32_t value) -{ - buffer[0] = value >> 24; - buffer[1] = (value >> 16) & 0xff; - buffer[2] = (value >> 8) & 0xff; - buffer[3] = value & 0xff; -} - -#if PRAGMA_MARK -#pragma mark - -#endif - -static inline int32_t dyn_code(int32_t m, int32_t k, int32_t n, uint32_t *outNumBits) -{ - uint32_t div, mod, de; - uint32_t numBits; - uint32_t value; - - //Assert( n >= 0 ); - - div = n/m; - - if(div >= MAX_PREFIX_16) - { - numBits = MAX_PREFIX_16 + MAX_DATATYPE_BITS_16; - value = (((1< MAX_PREFIX_16 + MAX_DATATYPE_BITS_16) - { - numBits = MAX_PREFIX_16 + MAX_DATATYPE_BITS_16; - value = (((1< 25) - goto codeasescape; - } - else - { -codeasescape: - numBits = MAX_PREFIX_32; - value = (((1<> 3); - uint32_t mask; - uint32_t curr; - uint32_t shift; - - //Assert( numBits <= 32 ); - - curr = unaligned_read32_be(i); - - shift = 32 - (bitPos & 7) - numBits; - - mask = ~0u >> (32 - numBits); // mask must be created in two steps to avoid compiler sequencing ambiguity - mask <<= shift; - - value = (value << shift) & mask; - value |= curr & ~mask; - - unaligned_write32_be(i, value); -} - - -static inline void ALWAYS_INLINE dyn_jam_noDeref_large(unsigned char *out, uint32_t bitPos, uint32_t numBits, uint32_t value) -{ - uint8_t *i = out + (bitPos>>3); - uint32_t w; - uint32_t curr; - uint32_t mask; - int32_t shiftvalue = (32 - (bitPos&7) - numBits); - - //Assert(numBits <= 32); - - curr = unaligned_read32_be(i); - - if (shiftvalue < 0) - { - uint8_t tailbyte; - uint8_t *tailptr; - - w = value >> -shiftvalue; - mask = ~0u >> -shiftvalue; - w |= (curr & ~mask); - - tailptr = i + 4; - tailbyte = (value << ((8+shiftvalue))) & 0xff; - *tailptr = (uint8_t)tailbyte; - } - else - { - mask = ~0u >> (32 - numBits); - mask <<= shiftvalue; // mask must be created in two steps to avoid compiler sequencing ambiguity - - w = (value << shiftvalue) & mask; - w |= curr & ~mask; - } - - unaligned_write32_be(i, w); -} - - -int32_t dyn_comp( AGParamRecPtr params, int32_t * pc, BitBuffer * bitstream, int32_t numSamples, int32_t bitSize, uint32_t * outNumBits ) -{ - unsigned char * out; - uint32_t bitPos, startPos; - uint32_t m, k, n, c, mz, nz; - uint32_t numBits; - uint32_t value; - int32_t del, zmode; - uint32_t overflow, overflowbits; - int32_t status; - - // shadow the variables in params so there's not the dereferencing overhead - uint32_t mb, pb, kb, wb; - int32_t rowPos = 0; - int32_t rowSize = params->sw; - int32_t rowJump = (params->fw) - rowSize; - int32_t * inPtr = pc; - - *outNumBits = 0; - RequireAction( (bitSize >= 1) && (bitSize <= 32), return kALAC_ParamError; ); - - out = bitstream->cur; - startPos = bitstream->bitIndex; - bitPos = startPos; - - mb = params->mb = params->mb0; - pb = params->pb; - kb = params->kb; - wb = params->wb; - zmode = 0; - - c=0; - status = ALAC_noErr; - - while (c < numSamples) - { - m = mb >> QBSHIFT; - k = lg3a(m); - if ( k > kb) - { - k = kb; - } - m = (1<> 31) & 1) - zmode; - //Assert( 32-lead(n) <= bitSize ); - - if ( dyn_code_32bit(bitSize, m, k, n, &numBits, &value, &overflow, &overflowbits) ) - { - dyn_jam_noDeref(out, bitPos, numBits, value); - bitPos += numBits; - dyn_jam_noDeref_large(out, bitPos, overflowbits, overflow); - bitPos += overflowbits; - } - else - { - dyn_jam_noDeref(out, bitPos, numBits, value); - bitPos += numBits; - } - - c++; - if ( rowPos >= rowSize) - { - rowPos = 0; - inPtr += rowJump; - } - - mb = pb * (n + zmode) + mb - ((pb *mb)>>QBSHIFT); - - // update mean tracking if it's overflowed - if (n > N_MAX_MEAN_CLAMP) - mb = N_MEAN_CLAMP_VAL; - - zmode = 0; - - RequireAction(c <= numSamples, status = kALAC_ParamError; goto Exit; ); - - if (((mb << MMULSHIFT) < QB) && (c < numSamples)) - { - zmode = 1; - nz = 0; - - while(c= rowSize) - { - rowPos = 0; - inPtr += rowJump; - } - - if(nz >= 65535) - { - zmode = 0; - break; - } - } - - k = lead(mb) - BITOFF+((mb+MOFF)>>MDENSHIFT); - mz = ((1< - -#ifdef __cplusplus -extern "C" { -#endif - -#define QBSHIFT 9 -#define QB (1< - -#if __GNUC__ -#define ALWAYS_INLINE __attribute__((always_inline)) -#else -#define ALWAYS_INLINE -#endif - -#if TARGET_CPU_PPC && (__MWERKS__ >= 0x3200) -// align loops to a 16 byte boundary to make the G5 happy -#pragma function_align 16 -#define LOOP_ALIGN asm { align 16 } -#else -#define LOOP_ALIGN -#endif - -static inline int32_t ALWAYS_INLINE sign_of_int( int32_t i ) -{ - int32_t negishift; - - negishift = ((uint32_t)-i) >> 31; - return negishift | (i >> 31); -} - -void unpc_block( int32_t * pc1, int32_t * out, int32_t num, int16_t * coefs, int32_t numactive, uint32_t chanbits, uint32_t denshift ) -{ - register int16_t a0, a1, a2, a3; - register int32_t b0, b1, b2, b3; - int32_t j, k, lim; - int32_t sum1, sg, sgn, top, dd; - int32_t * pout; - int32_t del, del0; - uint32_t chanshift = 32 - chanbits; - int32_t denhalf = 1<<(denshift-1); - - out[0] = pc1[0]; - if ( numactive == 0 ) - { - // just copy if numactive == 0 (but don't bother if in/out pointers the same) - if ( (num > 1) && (pc1 != out) ) - memcpy( &out[1], &pc1[1], (num - 1) * sizeof(int32_t) ); - return; - } - if ( numactive == 31 ) - { - // short-circuit if numactive == 31 - int32_t prev; - - /* this code is written such that the in/out buffers can be the same - to conserve buffer space on embedded devices like the iPod - - (original code) - for ( j = 1; j < num; j++ ) - del = pc1[j] + out[j-1]; - out[j] = (del << chanshift) >> chanshift; - */ - prev = out[0]; - for ( j = 1; j < num; j++ ) - { - del = pc1[j] + prev; - prev = (del << chanshift) >> chanshift; - out[j] = prev; - } - return; - } - - for ( j = 1; j <= numactive; j++ ) - { - del = pc1[j] + out[j-1]; - out[j] = (del << chanshift) >> chanshift; - } - - lim = numactive + 1; - - if ( numactive == 4 ) - { - // optimization for numactive == 4 - register int16_t a0, a1, a2, a3; - register int32_t b0, b1, b2, b3; - - a0 = coefs[0]; - a1 = coefs[1]; - a2 = coefs[2]; - a3 = coefs[3]; - - for ( j = lim; j < num; j++ ) - { - LOOP_ALIGN - - top = out[j - lim]; - pout = out + j - 1; - - b0 = top - pout[0]; - b1 = top - pout[-1]; - b2 = top - pout[-2]; - b3 = top - pout[-3]; - - sum1 = (denhalf - a0 * b0 - a1 * b1 - a2 * b2 - a3 * b3) >> denshift; - - del = pc1[j]; - del0 = del; - sg = sign_of_int(del); - del += top + sum1; - - out[j] = (del << chanshift) >> chanshift; - - if ( sg > 0 ) - { - sgn = sign_of_int( b3 ); - a3 -= sgn; - del0 -= (4 - 3) * ((sgn * b3) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b2 ); - a2 -= sgn; - del0 -= (4 - 2) * ((sgn * b2) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b1 ); - a1 -= sgn; - del0 -= (4 - 1) * ((sgn * b1) >> denshift); - if ( del0 <= 0 ) - continue; - - a0 -= sign_of_int( b0 ); - } - else if ( sg < 0 ) - { - // note: to avoid unnecessary negations, we flip the value of "sgn" - sgn = -sign_of_int( b3 ); - a3 -= sgn; - del0 -= (4 - 3) * ((sgn * b3) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b2 ); - a2 -= sgn; - del0 -= (4 - 2) * ((sgn * b2) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b1 ); - a1 -= sgn; - del0 -= (4 - 1) * ((sgn * b1) >> denshift); - if ( del0 >= 0 ) - continue; - - a0 += sign_of_int( b0 ); - } - } - - coefs[0] = a0; - coefs[1] = a1; - coefs[2] = a2; - coefs[3] = a3; - } - else if ( numactive == 8 ) - { - register int16_t a4, a5, a6, a7; - register int32_t b4, b5, b6, b7; - - // optimization for numactive == 8 - a0 = coefs[0]; - a1 = coefs[1]; - a2 = coefs[2]; - a3 = coefs[3]; - a4 = coefs[4]; - a5 = coefs[5]; - a6 = coefs[6]; - a7 = coefs[7]; - - for ( j = lim; j < num; j++ ) - { - LOOP_ALIGN - - top = out[j - lim]; - pout = out + j - 1; - - b0 = top - (*pout--); - b1 = top - (*pout--); - b2 = top - (*pout--); - b3 = top - (*pout--); - b4 = top - (*pout--); - b5 = top - (*pout--); - b6 = top - (*pout--); - b7 = top - (*pout); - pout += 8; - - sum1 = (denhalf - a0 * b0 - a1 * b1 - a2 * b2 - a3 * b3 - - a4 * b4 - a5 * b5 - a6 * b6 - a7 * b7) >> denshift; - - del = pc1[j]; - del0 = del; - sg = sign_of_int(del); - del += top + sum1; - - out[j] = (del << chanshift) >> chanshift; - - if ( sg > 0 ) - { - sgn = sign_of_int( b7 ); - a7 -= sgn; - del0 -= 1 * ((sgn * b7) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b6 ); - a6 -= sgn; - del0 -= 2 * ((sgn * b6) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b5 ); - a5 -= sgn; - del0 -= 3 * ((sgn * b5) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b4 ); - a4 -= sgn; - del0 -= 4 * ((sgn * b4) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b3 ); - a3 -= sgn; - del0 -= 5 * ((sgn * b3) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b2 ); - a2 -= sgn; - del0 -= 6 * ((sgn * b2) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b1 ); - a1 -= sgn; - del0 -= 7 * ((sgn * b1) >> denshift); - if ( del0 <= 0 ) - continue; - - a0 -= sign_of_int( b0 ); - } - else if ( sg < 0 ) - { - // note: to avoid unnecessary negations, we flip the value of "sgn" - sgn = -sign_of_int( b7 ); - a7 -= sgn; - del0 -= 1 * ((sgn * b7) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b6 ); - a6 -= sgn; - del0 -= 2 * ((sgn * b6) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b5 ); - a5 -= sgn; - del0 -= 3 * ((sgn * b5) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b4 ); - a4 -= sgn; - del0 -= 4 * ((sgn * b4) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b3 ); - a3 -= sgn; - del0 -= 5 * ((sgn * b3) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b2 ); - a2 -= sgn; - del0 -= 6 * ((sgn * b2) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b1 ); - a1 -= sgn; - del0 -= 7 * ((sgn * b1) >> denshift); - if ( del0 >= 0 ) - continue; - - a0 += sign_of_int( b0 ); - } - } - - coefs[0] = a0; - coefs[1] = a1; - coefs[2] = a2; - coefs[3] = a3; - coefs[4] = a4; - coefs[5] = a5; - coefs[6] = a6; - coefs[7] = a7; - } - else - { - // general case - for ( j = lim; j < num; j++ ) - { - LOOP_ALIGN - - sum1 = 0; - pout = out + j - 1; - top = out[j-lim]; - - for ( k = 0; k < numactive; k++ ) - sum1 += coefs[k] * (pout[-k] - top); - - del = pc1[j]; - del0 = del; - sg = sign_of_int( del ); - del += top + ((sum1 + denhalf) >> denshift); - out[j] = (del << chanshift) >> chanshift; - - if ( sg > 0 ) - { - for ( k = (numactive - 1); k >= 0; k-- ) - { - dd = top - pout[-k]; - sgn = sign_of_int( dd ); - coefs[k] -= sgn; - del0 -= (numactive - k) * ((sgn * dd) >> denshift); - if ( del0 <= 0 ) - break; - } - } - else if ( sg < 0 ) - { - for ( k = (numactive - 1); k >= 0; k-- ) - { - dd = top - pout[-k]; - sgn = sign_of_int( dd ); - coefs[k] += sgn; - del0 -= (numactive - k) * ((-sgn * dd) >> denshift); - if ( del0 >= 0 ) - break; - } - } - } - } -} diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/dp_enc.c b/tools/audiofile-0.3.6/libaudiofile/alac/dp_enc.c deleted file mode 100644 index 869104c7..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/dp_enc.c +++ /dev/null @@ -1,386 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: dp_enc.c - - Contains: Dynamic Predictor encode routines - - Copyright: (c) 2001-2011 Apple, Inc. -*/ - -#include "dplib.h" -#include - -#if __GNUC__ -#define ALWAYS_INLINE __attribute__((always_inline)) -#else -#define ALWAYS_INLINE -#endif - -#if TARGET_CPU_PPC && (__MWERKS__ >= 0x3200) -// align loops to a 16 byte boundary to make the G5 happy -#pragma function_align 16 -#define LOOP_ALIGN asm { align 16 } -#else -#define LOOP_ALIGN -#endif - -void init_coefs( int16_t * coefs, uint32_t denshift, int32_t numPairs ) -{ - int32_t k; - int32_t den = 1 << denshift; - - coefs[0] = (AINIT * den) >> 4; - coefs[1] = (BINIT * den) >> 4; - coefs[2] = (CINIT * den) >> 4; - for ( k = 3; k < numPairs; k++ ) - coefs[k] = 0; -} - -void copy_coefs( int16_t * srcCoefs, int16_t * dstCoefs, int32_t numPairs ) -{ - int32_t k; - - for ( k = 0; k < numPairs; k++ ) - dstCoefs[k] = srcCoefs[k]; -} - -static inline int32_t ALWAYS_INLINE sign_of_int( int32_t i ) -{ - int32_t negishift; - - negishift = ((uint32_t)-i) >> 31; - return negishift | (i >> 31); -} - -void pc_block( int32_t * in, int32_t * pc1, int32_t num, int16_t * coefs, int32_t numactive, uint32_t chanbits, uint32_t denshift ) -{ - register int16_t a0, a1, a2, a3; - register int32_t b0, b1, b2, b3; - int32_t j, k, lim; - int32_t * pin; - int32_t sum1, dd; - int32_t sg, sgn; - int32_t top; - int32_t del, del0; - uint32_t chanshift = 32 - chanbits; - int32_t denhalf = 1 << (denshift - 1); - - pc1[0] = in[0]; - if ( numactive == 0 ) - { - // just copy if numactive == 0 (but don't bother if in/out pointers the same) - if ( (num > 1) && (in != pc1) ) - memcpy( &pc1[1], &in[1], (num - 1) * sizeof(int32_t) ); - return; - } - if ( numactive == 31 ) - { - // short-circuit if numactive == 31 - for( j = 1; j < num; j++ ) - { - del = in[j] - in[j-1]; - pc1[j] = (del << chanshift) >> chanshift; - } - return; - } - - for ( j = 1; j <= numactive; j++ ) - { - del = in[j] - in[j-1]; - pc1[j] = (del << chanshift) >> chanshift; - } - - lim = numactive + 1; - - if ( numactive == 4 ) - { - // optimization for numactive == 4 - a0 = coefs[0]; - a1 = coefs[1]; - a2 = coefs[2]; - a3 = coefs[3]; - - for ( j = lim; j < num; j++ ) - { - LOOP_ALIGN - - top = in[j - lim]; - pin = in + j - 1; - - b0 = top - pin[0]; - b1 = top - pin[-1]; - b2 = top - pin[-2]; - b3 = top - pin[-3]; - - sum1 = (denhalf - a0 * b0 - a1 * b1 - a2 * b2 - a3 * b3) >> denshift; - - del = in[j] - top - sum1; - del = (del << chanshift) >> chanshift; - pc1[j] = del; - del0 = del; - - sg = sign_of_int(del); - if ( sg > 0 ) - { - sgn = sign_of_int( b3 ); - a3 -= sgn; - del0 -= (4 - 3) * ((sgn * b3) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b2 ); - a2 -= sgn; - del0 -= (4 - 2) * ((sgn * b2) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b1 ); - a1 -= sgn; - del0 -= (4 - 1) * ((sgn * b1) >> denshift); - if ( del0 <= 0 ) - continue; - - a0 -= sign_of_int( b0 ); - } - else if ( sg < 0 ) - { - // note: to avoid unnecessary negations, we flip the value of "sgn" - sgn = -sign_of_int( b3 ); - a3 -= sgn; - del0 -= (4 - 3) * ((sgn * b3) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b2 ); - a2 -= sgn; - del0 -= (4 - 2) * ((sgn * b2) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b1 ); - a1 -= sgn; - del0 -= (4 - 1) * ((sgn * b1) >> denshift); - if ( del0 >= 0 ) - continue; - - a0 += sign_of_int( b0 ); - } - } - - coefs[0] = a0; - coefs[1] = a1; - coefs[2] = a2; - coefs[3] = a3; - } - else if ( numactive == 8 ) - { - // optimization for numactive == 8 - register int16_t a4, a5, a6, a7; - register int32_t b4, b5, b6, b7; - - a0 = coefs[0]; - a1 = coefs[1]; - a2 = coefs[2]; - a3 = coefs[3]; - a4 = coefs[4]; - a5 = coefs[5]; - a6 = coefs[6]; - a7 = coefs[7]; - - for ( j = lim; j < num; j++ ) - { - LOOP_ALIGN - - top = in[j - lim]; - pin = in + j - 1; - - b0 = top - (*pin--); - b1 = top - (*pin--); - b2 = top - (*pin--); - b3 = top - (*pin--); - b4 = top - (*pin--); - b5 = top - (*pin--); - b6 = top - (*pin--); - b7 = top - (*pin); - pin += 8; - - sum1 = (denhalf - a0 * b0 - a1 * b1 - a2 * b2 - a3 * b3 - - a4 * b4 - a5 * b5 - a6 * b6 - a7 * b7) >> denshift; - - del = in[j] - top - sum1; - del = (del << chanshift) >> chanshift; - pc1[j] = del; - del0 = del; - - sg = sign_of_int(del); - if ( sg > 0 ) - { - sgn = sign_of_int( b7 ); - a7 -= sgn; - del0 -= 1 * ((sgn * b7) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b6 ); - a6 -= sgn; - del0 -= 2 * ((sgn * b6) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b5 ); - a5 -= sgn; - del0 -= 3 * ((sgn * b5) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b4 ); - a4 -= sgn; - del0 -= 4 * ((sgn * b4) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b3 ); - a3 -= sgn; - del0 -= 5 * ((sgn * b3) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b2 ); - a2 -= sgn; - del0 -= 6 * ((sgn * b2) >> denshift); - if ( del0 <= 0 ) - continue; - - sgn = sign_of_int( b1 ); - a1 -= sgn; - del0 -= 7 * ((sgn * b1) >> denshift); - if ( del0 <= 0 ) - continue; - - a0 -= sign_of_int( b0 ); - } - else if ( sg < 0 ) - { - // note: to avoid unnecessary negations, we flip the value of "sgn" - sgn = -sign_of_int( b7 ); - a7 -= sgn; - del0 -= 1 * ((sgn * b7) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b6 ); - a6 -= sgn; - del0 -= 2 * ((sgn * b6) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b5 ); - a5 -= sgn; - del0 -= 3 * ((sgn * b5) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b4 ); - a4 -= sgn; - del0 -= 4 * ((sgn * b4) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b3 ); - a3 -= sgn; - del0 -= 5 * ((sgn * b3) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b2 ); - a2 -= sgn; - del0 -= 6 * ((sgn * b2) >> denshift); - if ( del0 >= 0 ) - continue; - - sgn = -sign_of_int( b1 ); - a1 -= sgn; - del0 -= 7 * ((sgn * b1) >> denshift); - if ( del0 >= 0 ) - continue; - - a0 += sign_of_int( b0 ); - } - } - - coefs[0] = a0; - coefs[1] = a1; - coefs[2] = a2; - coefs[3] = a3; - coefs[4] = a4; - coefs[5] = a5; - coefs[6] = a6; - coefs[7] = a7; - } - else - { -//pc_block_general: - // general case - for ( j = lim; j < num; j++ ) - { - LOOP_ALIGN - - top = in[j - lim]; - pin = in + j - 1; - - sum1 = 0; - for ( k = 0; k < numactive; k++ ) - sum1 -= coefs[k] * (top - pin[-k]); - - del = in[j] - top - ((sum1 + denhalf) >> denshift); - del = (del << chanshift) >> chanshift; - pc1[j] = del; - del0 = del; - - sg = sign_of_int( del ); - if ( sg > 0 ) - { - for ( k = (numactive - 1); k >= 0; k-- ) - { - dd = top - pin[-k]; - sgn = sign_of_int( dd ); - coefs[k] -= sgn; - del0 -= (numactive - k) * ((sgn * dd) >> denshift); - if ( del0 <= 0 ) - break; - } - } - else if ( sg < 0 ) - { - for ( k = (numactive - 1); k >= 0; k-- ) - { - dd = top - pin[-k]; - sgn = sign_of_int( dd ); - coefs[k] += sgn; - del0 -= (numactive - k) * ((-sgn * dd) >> denshift); - if ( del0 >= 0 ) - break; - } - } - } - } -} diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/dplib.h b/tools/audiofile-0.3.6/libaudiofile/alac/dplib.h deleted file mode 100644 index 9a1ea5b2..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/dplib.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: dplib.h - - Contains: Dynamic Predictor routines - - Copyright: Copyright (C) 2001-2011 Apple, Inc. -*/ - -#ifndef __DPLIB_H__ -#define __DPLIB_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -// defines - -#define DENSHIFT_MAX 15 -#define DENSHIFT_DEFAULT 9 -#define AINIT 38 -#define BINIT (-29) -#define CINIT (-2) -#define NUMCOEPAIRS 16 - -// prototypes - -void init_coefs( int16_t * coefs, uint32_t denshift, int32_t numPairs ); -void copy_coefs( int16_t * srcCoefs, int16_t * dstCoefs, int32_t numPairs ); - -// NOTE: these routines read at least "numactive" samples so the i/o buffers must be at least that big - -void pc_block( int32_t * in, int32_t * pc, int32_t num, int16_t * coefs, int32_t numactive, uint32_t chanbits, uint32_t denshift ); -void unpc_block( int32_t * pc, int32_t * out, int32_t num, int16_t * coefs, int32_t numactive, uint32_t chanbits, uint32_t denshift ); - -#ifdef __cplusplus -} -#endif - -#endif /* __DPLIB_H__ */ diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/matrix_dec.c b/tools/audiofile-0.3.6/libaudiofile/alac/matrix_dec.c deleted file mode 100644 index b1889b92..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/matrix_dec.c +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: matrix_dec.c - - Contains: ALAC mixing/matrixing decode routines. - - Copyright: (c) 2004-2011 Apple, Inc. -*/ - -#include "matrixlib.h" -#include "ALACAudioTypes.h" - -// up to 24-bit "offset" macros for the individual bytes of a 20/24-bit word -#if TARGET_RT_BIG_ENDIAN - #define LBYTE 2 - #define MBYTE 1 - #define HBYTE 0 -#else - #define LBYTE 0 - #define MBYTE 1 - #define HBYTE 2 -#endif - -/* - There is no plain middle-side option; instead there are various mixing - modes including middle-side, each lossless, as embodied in the mix() - and unmix() functions. These functions exploit a generalized middle-side - transformation: - - u := [(rL + (m-r)R)/m]; - v := L - R; - - where [ ] denotes integer floor. The (lossless) inverse is - - L = u + v - [rV/m]; - R = L - v; -*/ - -// 16-bit routines - -void unmix16( int32_t * u, int32_t * v, int16_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres ) -{ - int16_t * op = out; - int32_t j; - - if ( mixres != 0 ) - { - /* matrixed stereo */ - for ( j = 0; j < numSamples; j++ ) - { - int32_t l, r; - - l = u[j] + v[j] - ((mixres * v[j]) >> mixbits); - r = l - v[j]; - - op[0] = (int16_t) l; - op[1] = (int16_t) r; - op += stride; - } - } - else - { - /* Conventional separated stereo. */ - for ( j = 0; j < numSamples; j++ ) - { - op[0] = (int16_t) u[j]; - op[1] = (int16_t) v[j]; - op += stride; - } - } -} - -// 20-bit routines -// - the 20 bits of data are left-justified in 3 bytes of storage but right-aligned for input/output predictor buffers - -void unmix20( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres ) -{ - uint8_t * op = out; - int32_t j; - - if ( mixres != 0 ) - { - /* matrixed stereo */ - for ( j = 0; j < numSamples; j++ ) - { - int32_t l, r; - - l = u[j] + v[j] - ((mixres * v[j]) >> mixbits); - r = l - v[j]; - - l <<= 4; - r <<= 4; - - op[HBYTE] = (uint8_t)((l >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((l >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((l >> 0) & 0xffu); - op += 3; - - op[HBYTE] = (uint8_t)((r >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((r >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((r >> 0) & 0xffu); - - op += (stride - 1) * 3; - } - } - else - { - /* Conventional separated stereo. */ - for ( j = 0; j < numSamples; j++ ) - { - int32_t val; - - val = u[j] << 4; - op[HBYTE] = (uint8_t)((val >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((val >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((val >> 0) & 0xffu); - op += 3; - - val = v[j] << 4; - op[HBYTE] = (uint8_t)((val >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((val >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((val >> 0) & 0xffu); - - op += (stride - 1) * 3; - } - } -} - -// 24-bit routines -// - the 24 bits of data are right-justified in the input/output predictor buffers - -void unmix24( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, - int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ) -{ - uint8_t * op = out; - int32_t shift = bytesShifted * 8; - int32_t l, r; - int32_t j, k; - - if ( mixres != 0 ) - { - /* matrixed stereo */ - if ( bytesShifted != 0 ) - { - for ( j = 0, k = 0; j < numSamples; j++, k += 2 ) - { - l = u[j] + v[j] - ((mixres * v[j]) >> mixbits); - r = l - v[j]; - - l = (l << shift) | (uint32_t) shiftUV[k + 0]; - r = (r << shift) | (uint32_t) shiftUV[k + 1]; - - op[HBYTE] = (uint8_t)((l >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((l >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((l >> 0) & 0xffu); - op += 3; - - op[HBYTE] = (uint8_t)((r >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((r >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((r >> 0) & 0xffu); - - op += (stride - 1) * 3; - } - } - else - { - for ( j = 0; j < numSamples; j++ ) - { - l = u[j] + v[j] - ((mixres * v[j]) >> mixbits); - r = l - v[j]; - - op[HBYTE] = (uint8_t)((l >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((l >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((l >> 0) & 0xffu); - op += 3; - - op[HBYTE] = (uint8_t)((r >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((r >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((r >> 0) & 0xffu); - - op += (stride - 1) * 3; - } - } - } - else - { - /* Conventional separated stereo. */ - if ( bytesShifted != 0 ) - { - for ( j = 0, k = 0; j < numSamples; j++, k += 2 ) - { - l = u[j]; - r = v[j]; - - l = (l << shift) | (uint32_t) shiftUV[k + 0]; - r = (r << shift) | (uint32_t) shiftUV[k + 1]; - - op[HBYTE] = (uint8_t)((l >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((l >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((l >> 0) & 0xffu); - op += 3; - - op[HBYTE] = (uint8_t)((r >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((r >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((r >> 0) & 0xffu); - - op += (stride - 1) * 3; - } - } - else - { - for ( j = 0; j < numSamples; j++ ) - { - int32_t val; - - val = u[j]; - op[HBYTE] = (uint8_t)((val >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((val >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((val >> 0) & 0xffu); - op += 3; - - val = v[j]; - op[HBYTE] = (uint8_t)((val >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((val >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((val >> 0) & 0xffu); - - op += (stride - 1) * 3; - } - } - } -} - -// 32-bit routines -// - note that these really expect the internal data width to be < 32 but the arrays are 32-bit -// - otherwise, the calculations might overflow into the 33rd bit and be lost -// - therefore, these routines deal with the specified "unused lower" bytes in the "shift" buffers - -void unmix32( int32_t * u, int32_t * v, int32_t * out, uint32_t stride, int32_t numSamples, - int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ) -{ - int32_t * op = out; - int32_t shift = bytesShifted * 8; - int32_t l, r; - int32_t j, k; - - if ( mixres != 0 ) - { - //Assert( bytesShifted != 0 ); - - /* matrixed stereo with shift */ - for ( j = 0, k = 0; j < numSamples; j++, k += 2 ) - { - int32_t lt, rt; - - lt = u[j]; - rt = v[j]; - - l = lt + rt - ((mixres * rt) >> mixbits); - r = l - rt; - - op[0] = (l << shift) | (uint32_t) shiftUV[k + 0]; - op[1] = (r << shift) | (uint32_t) shiftUV[k + 1]; - op += stride; - } - } - else - { - if ( bytesShifted == 0 ) - { - /* interleaving w/o shift */ - for ( j = 0; j < numSamples; j++ ) - { - op[0] = u[j]; - op[1] = v[j]; - op += stride; - } - } - else - { - /* interleaving with shift */ - for ( j = 0, k = 0; j < numSamples; j++, k += 2 ) - { - op[0] = (u[j] << shift) | (uint32_t) shiftUV[k + 0]; - op[1] = (v[j] << shift) | (uint32_t) shiftUV[k + 1]; - op += stride; - } - } - } -} - -// 20/24-bit <-> 32-bit helper routines (not really matrixing but convenient to put here) - -void copyPredictorTo24( int32_t * in, uint8_t * out, uint32_t stride, int32_t numSamples ) -{ - uint8_t * op = out; - int32_t j; - - for ( j = 0; j < numSamples; j++ ) - { - int32_t val = in[j]; - - op[HBYTE] = (uint8_t)((val >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((val >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((val >> 0) & 0xffu); - op += (stride * 3); - } -} - -void copyPredictorTo24Shift( int32_t * in, uint16_t * shift, uint8_t * out, uint32_t stride, int32_t numSamples, int32_t bytesShifted ) -{ - uint8_t * op = out; - int32_t shiftVal = bytesShifted * 8; - int32_t j; - - //Assert( bytesShifted != 0 ); - - for ( j = 0; j < numSamples; j++ ) - { - int32_t val = in[j]; - - val = (val << shiftVal) | (uint32_t) shift[j]; - - op[HBYTE] = (uint8_t)((val >> 16) & 0xffu); - op[MBYTE] = (uint8_t)((val >> 8) & 0xffu); - op[LBYTE] = (uint8_t)((val >> 0) & 0xffu); - op += (stride * 3); - } -} - -void copyPredictorTo20( int32_t * in, uint8_t * out, uint32_t stride, int32_t numSamples ) -{ - uint8_t * op = out; - int32_t j; - - // 32-bit predictor values are right-aligned but 20-bit output values should be left-aligned - // in the 24-bit output buffer - for ( j = 0; j < numSamples; j++ ) - { - int32_t val = in[j]; - - op[HBYTE] = (uint8_t)((val >> 12) & 0xffu); - op[MBYTE] = (uint8_t)((val >> 4) & 0xffu); - op[LBYTE] = (uint8_t)((val << 4) & 0xffu); - op += (stride * 3); - } -} - -void copyPredictorTo32( int32_t * in, int32_t * out, uint32_t stride, int32_t numSamples ) -{ - int32_t i, j; - - // this is only a subroutine to abstract the "iPod can only output 16-bit data" problem - for ( i = 0, j = 0; i < numSamples; i++, j += stride ) - out[j] = in[i]; -} - -void copyPredictorTo32Shift( int32_t * in, uint16_t * shift, int32_t * out, uint32_t stride, int32_t numSamples, int32_t bytesShifted ) -{ - int32_t * op = out; - uint32_t shiftVal = bytesShifted * 8; - int32_t j; - - //Assert( bytesShifted != 0 ); - - // this is only a subroutine to abstract the "iPod can only output 16-bit data" problem - for ( j = 0; j < numSamples; j++ ) - { - op[0] = (in[j] << shiftVal) | (uint32_t) shift[j]; - op += stride; - } -} diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/matrix_enc.c b/tools/audiofile-0.3.6/libaudiofile/alac/matrix_enc.c deleted file mode 100644 index e1943305..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/matrix_enc.c +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: matrix_enc.c - - Contains: ALAC mixing/matrixing encode routines. - - Copyright: (c) 2004-2011 Apple, Inc. -*/ - -#include "matrixlib.h" -#include "ALACAudioTypes.h" - -// up to 24-bit "offset" macros for the individual bytes of a 20/24-bit word -#if TARGET_RT_BIG_ENDIAN - #define LBYTE 2 - #define MBYTE 1 - #define HBYTE 0 -#else - #define LBYTE 0 - #define MBYTE 1 - #define HBYTE 2 -#endif - -/* - There is no plain middle-side option; instead there are various mixing - modes including middle-side, each lossless, as embodied in the mix() - and unmix() functions. These functions exploit a generalized middle-side - transformation: - - u := [(rL + (m-r)R)/m]; - v := L - R; - - where [ ] denotes integer floor. The (lossless) inverse is - - L = u + v - [rV/m]; - R = L - v; -*/ - -// 16-bit routines - -void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) -{ - int16_t * ip = in; - int32_t j; - - if ( mixres != 0 ) - { - int32_t mod = 1 << mixbits; - int32_t m2; - - /* matrixed stereo */ - m2 = mod - mixres; - for ( j = 0; j < numSamples; j++ ) - { - int32_t l, r; - - l = (int32_t) ip[0]; - r = (int32_t) ip[1]; - ip += stride; - u[j] = (mixres * l + m2 * r) >> mixbits; - v[j] = l - r; - } - } - else - { - /* Conventional separated stereo. */ - for ( j = 0; j < numSamples; j++ ) - { - u[j] = (int32_t) ip[0]; - v[j] = (int32_t) ip[1]; - ip += stride; - } - } -} - -// 20-bit routines -// - the 20 bits of data are left-justified in 3 bytes of storage but right-aligned for input/output predictor buffers - -void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) -{ - int32_t l, r; - uint8_t * ip = in; - int32_t j; - - if ( mixres != 0 ) - { - /* matrixed stereo */ - int32_t mod = 1 << mixbits; - int32_t m2 = mod - mixres; - - for ( j = 0; j < numSamples; j++ ) - { - l = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - l = (l << 8) >> 12; - ip += 3; - - r = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - r = (r << 8) >> 12; - ip += (stride - 1) * 3; - - u[j] = (mixres * l + m2 * r) >> mixbits; - v[j] = l - r; - } - } - else - { - /* Conventional separated stereo. */ - for ( j = 0; j < numSamples; j++ ) - { - l = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - u[j] = (l << 8) >> 12; - ip += 3; - - r = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - v[j] = (r << 8) >> 12; - ip += (stride - 1) * 3; - } - } -} - -// 24-bit routines -// - the 24 bits of data are right-justified in the input/output predictor buffers - -void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, - int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ) -{ - int32_t l, r; - uint8_t * ip = in; - int32_t shift = bytesShifted * 8; - uint32_t mask = (1ul << shift) - 1; - int32_t j, k; - - if ( mixres != 0 ) - { - /* matrixed stereo */ - int32_t mod = 1 << mixbits; - int32_t m2 = mod - mixres; - - if ( bytesShifted != 0 ) - { - for ( j = 0, k = 0; j < numSamples; j++, k += 2 ) - { - l = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - l = (l << 8) >> 8; - ip += 3; - - r = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - r = (r << 8) >> 8; - ip += (stride - 1) * 3; - - shiftUV[k + 0] = (uint16_t)(l & mask); - shiftUV[k + 1] = (uint16_t)(r & mask); - - l >>= shift; - r >>= shift; - - u[j] = (mixres * l + m2 * r) >> mixbits; - v[j] = l - r; - } - } - else - { - for ( j = 0; j < numSamples; j++ ) - { - l = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - l = (l << 8) >> 8; - ip += 3; - - r = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - r = (r << 8) >> 8; - ip += (stride - 1) * 3; - - u[j] = (mixres * l + m2 * r) >> mixbits; - v[j] = l - r; - } - } - } - else - { - /* Conventional separated stereo. */ - if ( bytesShifted != 0 ) - { - for ( j = 0, k = 0; j < numSamples; j++, k += 2 ) - { - l = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - l = (l << 8) >> 8; - ip += 3; - - r = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - r = (r << 8) >> 8; - ip += (stride - 1) * 3; - - shiftUV[k + 0] = (uint16_t)(l & mask); - shiftUV[k + 1] = (uint16_t)(r & mask); - - l >>= shift; - r >>= shift; - - u[j] = l; - v[j] = r; - } - } - else - { - for ( j = 0; j < numSamples; j++ ) - { - l = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - u[j] = (l << 8) >> 8; - ip += 3; - - r = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - v[j] = (r << 8) >> 8; - ip += (stride - 1) * 3; - } - } - } -} - -// 32-bit routines -// - note that these really expect the internal data width to be < 32 but the arrays are 32-bit -// - otherwise, the calculations might overflow into the 33rd bit and be lost -// - therefore, these routines deal with the specified "unused lower" bytes in the "shift" buffers - -void mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, - int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ) -{ - int32_t * ip = in; - int32_t shift = bytesShifted * 8; - uint32_t mask = (1ul << shift) - 1; - int32_t l, r; - int32_t j, k; - - if ( mixres != 0 ) - { - int32_t mod = 1 << mixbits; - int32_t m2; - - //Assert( bytesShifted != 0 ); - - /* matrixed stereo with shift */ - m2 = mod - mixres; - for ( j = 0, k = 0; j < numSamples; j++, k += 2 ) - { - l = ip[0]; - r = ip[1]; - ip += stride; - - shiftUV[k + 0] = (uint16_t)(l & mask); - shiftUV[k + 1] = (uint16_t)(r & mask); - - l >>= shift; - r >>= shift; - - u[j] = (mixres * l + m2 * r) >> mixbits; - v[j] = l - r; - } - } - else - { - if ( bytesShifted == 0 ) - { - /* de-interleaving w/o shift */ - for ( j = 0; j < numSamples; j++ ) - { - u[j] = ip[0]; - v[j] = ip[1]; - ip += stride; - } - } - else - { - /* de-interleaving with shift */ - for ( j = 0, k = 0; j < numSamples; j++, k += 2 ) - { - l = ip[0]; - r = ip[1]; - ip += stride; - - shiftUV[k + 0] = (uint16_t)(l & mask); - shiftUV[k + 1] = (uint16_t)(r & mask); - - l >>= shift; - r >>= shift; - - u[j] = l; - v[j] = r; - } - } - } -} - -// 20/24-bit <-> 32-bit helper routines (not really matrixing but convenient to put here) - -void copy20ToPredictor( uint8_t * in, uint32_t stride, int32_t * out, int32_t numSamples ) -{ - uint8_t * ip = in; - int32_t j; - - for ( j = 0; j < numSamples; j++ ) - { - int32_t val; - - // 20-bit values are left-aligned in the 24-bit input buffer but right-aligned in the 32-bit output buffer - val = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - out[j] = (val << 8) >> 12; - ip += stride * 3; - } -} - -void copy24ToPredictor( uint8_t * in, uint32_t stride, int32_t * out, int32_t numSamples ) -{ - uint8_t * ip = in; - int32_t j; - - for ( j = 0; j < numSamples; j++ ) - { - int32_t val; - - val = (int32_t)( ((uint32_t)ip[HBYTE] << 16) | ((uint32_t)ip[MBYTE] << 8) | (uint32_t)ip[LBYTE] ); - out[j] = (val << 8) >> 8; - ip += stride * 3; - } -} diff --git a/tools/audiofile-0.3.6/libaudiofile/alac/matrixlib.h b/tools/audiofile-0.3.6/libaudiofile/alac/matrixlib.h deleted file mode 100644 index 0a4f3718..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/alac/matrixlib.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2011 Apple Inc. All rights reserved. - * - * @APPLE_APACHE_LICENSE_HEADER_START@ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @APPLE_APACHE_LICENSE_HEADER_END@ - */ - -/* - File: matrixlib.h - - Contains: ALAC mixing/matrixing routines to/from 32-bit predictor buffers. - - Copyright: Copyright (C) 2004 to 2011 Apple, Inc. -*/ - -#ifndef __MATRIXLIB_H -#define __MATRIXLIB_H - -#pragma once - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -// 16-bit routines -void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); -void unmix16( int32_t * u, int32_t * v, int16_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres ); - -// 20-bit routines -void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); -void unmix20( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres ); - -// 24-bit routines -// - 24-bit data sometimes compresses better by shifting off the bottom byte so these routines deal with -// the specified "unused lower bytes" in the combined "shift" buffer -void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, - int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); -void unmix24( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, - int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); - -// 32-bit routines -// - note that these really expect the internal data width to be < 32-bit but the arrays are 32-bit -// - otherwise, the calculations might overflow into the 33rd bit and be lost -// - therefore, these routines deal with the specified "unused lower" bytes in the combined "shift" buffer -void mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, - int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); -void unmix32( int32_t * u, int32_t * v, int32_t * out, uint32_t stride, int32_t numSamples, - int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); - -// 20/24/32-bit <-> 32-bit helper routines (not really matrixing but convenient to put here) -void copy20ToPredictor( uint8_t * in, uint32_t stride, int32_t * out, int32_t numSamples ); -void copy24ToPredictor( uint8_t * in, uint32_t stride, int32_t * out, int32_t numSamples ); - -void copyPredictorTo24( int32_t * in, uint8_t * out, uint32_t stride, int32_t numSamples ); -void copyPredictorTo24Shift( int32_t * in, uint16_t * shift, uint8_t * out, uint32_t stride, int32_t numSamples, int32_t bytesShifted ); -void copyPredictorTo20( int32_t * in, uint8_t * out, uint32_t stride, int32_t numSamples ); - -void copyPredictorTo32( int32_t * in, int32_t * out, uint32_t stride, int32_t numSamples ); -void copyPredictorTo32Shift( int32_t * in, uint16_t * shift, int32_t * out, uint32_t stride, int32_t numSamples, int32_t bytesShifted ); - -#ifdef __cplusplus -} -#endif - -#endif /* __MATRIXLIB_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/audiofile.exports b/tools/audiofile-0.3.6/libaudiofile/audiofile.exports deleted file mode 100644 index f11d74a4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/audiofile.exports +++ /dev/null @@ -1,106 +0,0 @@ -AUpvfree -AUpvgetmaxitems -AUpvgetparam -AUpvgetval -AUpvgetvaltype -AUpvnew -AUpvsetparam -AUpvsetval -AUpvsetvaltype -afCloseFile -afFreeFileSetup -afGetAESChannelData -afGetByteOrder -afGetChannels -afGetCompression -afGetDataOffset -afGetFileFormat -afGetFrameCount -afGetFrameSize -afGetInstIDs -afGetInstParamLong -afGetInstParams -afGetLoopCount -afGetLoopEnd -afGetLoopEndFrame -afGetLoopIDs -afGetLoopMode -afGetLoopStart -afGetLoopStartFrame -afGetLoopTrack -afGetMarkComment -afGetMarkIDs -afGetMarkName -afGetMarkPosition -afGetMiscIDs -afGetMiscSize -afGetMiscType -afGetPCMMapping -afGetRate -afGetSampleFormat -afGetTrackBytes -afGetTrackIDs -afGetVirtualByteOrder -afGetVirtualChannels -afGetVirtualFrameSize -afGetVirtualPCMMapping -afGetVirtualSampleFormat -afIdentifyFD -afIdentifyNamedFD -afInitAESChannelData -afInitAESChannelDataTo -afInitByteOrder -afInitChannels -afInitCompression -afInitDataOffset -afInitFileFormat -afInitFrameCount -afInitInstIDs -afInitLoopIDs -afInitMarkComment -afInitMarkIDs -afInitMarkName -afInitMiscIDs -afInitMiscSize -afInitMiscType -afInitPCMMapping -afInitRate -afInitSampleFormat -afInitTrackIDs -afNewFileSetup -afOpenFD -afOpenFile -afOpenNamedFD -afOpenVirtualFile -afQuery -afQueryDouble -afQueryLong -afQueryPointer -afReadFrames -afReadMisc -afSeekFrame -afSeekMisc -afSetAESChannelData -afSetChannelMatrix -afSetErrorHandler -afSetInstParamLong -afSetInstParams -afSetLoopCount -afSetLoopEnd -afSetLoopEndFrame -afSetLoopMode -afSetLoopStart -afSetLoopStartFrame -afSetLoopTrack -afSetMarkPosition -afSetTrackPCMMapping -afSetVirtualByteOrder -afSetVirtualChannels -afSetVirtualPCMMapping -afSetVirtualSampleFormat -afSyncFile -afTellFrame -afWriteFrames -afWriteMisc -af_virtual_file_destroy -af_virtual_file_new diff --git a/tools/audiofile-0.3.6/libaudiofile/aupv.c b/tools/audiofile-0.3.6/libaudiofile/aupv.c deleted file mode 100644 index 64e798ba..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/aupv.c +++ /dev/null @@ -1,252 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - aupv.c - - This file contains an implementation of SGI's Audio Library parameter - value list functions. -*/ - -#include "config.h" - -#include -#include -#include - -#include "aupvinternal.h" -#include "aupvlist.h" - -AUpvlist AUpvnew (int maxitems) -{ - AUpvlist aupvlist; - int i; - - if (maxitems <= 0) - return AU_NULL_PVLIST; - - aupvlist = (AUpvlist) malloc(sizeof (struct _AUpvlist)); - assert(aupvlist); - if (aupvlist == NULL) - return AU_NULL_PVLIST; - - aupvlist->items = calloc(maxitems, sizeof (struct _AUpvitem)); - - assert(aupvlist->items); - if (aupvlist->items == NULL) - { - free(aupvlist); - return AU_NULL_PVLIST; - } - - /* Initialize the items in the list. */ - for (i=0; iitems[i].valid = _AU_VALID_PVITEM; - aupvlist->items[i].type = AU_PVTYPE_LONG; - aupvlist->items[i].parameter = 0; - memset(&aupvlist->items[i].value, 0, sizeof (aupvlist->items[i].value)); - } - - aupvlist->valid = _AU_VALID_PVLIST; - aupvlist->count = maxitems; - - return aupvlist; -} - -int AUpvgetmaxitems (AUpvlist list) -{ - assert(list); - - if (list == AU_NULL_PVLIST) - return AU_BAD_PVLIST; - if (list->valid != _AU_VALID_PVLIST) - return AU_BAD_PVLIST; - - return list->count; -} - -int AUpvfree (AUpvlist list) -{ - assert(list); - assert(list->items); - - if (list == AU_NULL_PVLIST) - return AU_BAD_PVLIST; - if (list->valid != _AU_VALID_PVLIST) - return AU_BAD_PVLIST; - - if ((list->items != _AU_NULL_PVITEM) && - (list->items[0].valid == _AU_VALID_PVITEM)) - { - free(list->items); - } - - free(list); - - return _AU_SUCCESS; -} - -int AUpvsetparam (AUpvlist list, int item, int param) -{ - assert(list); - assert(list->items); - assert(item >= 0); - assert(item < list->count); - - if (list == AU_NULL_PVLIST) - return AU_BAD_PVLIST; - if (list->valid != _AU_VALID_PVLIST) - return AU_BAD_PVLIST; - if ((item < 0) || (item > list->count - 1)) - return AU_BAD_PVITEM; - if (list->items[item].valid != _AU_VALID_PVITEM) - return AU_BAD_PVLIST; - - list->items[item].parameter = param; - return _AU_SUCCESS; -} - -int AUpvsetvaltype (AUpvlist list, int item, int type) -{ - assert(list); - assert(list->items); - assert(item >= 0); - assert(item < list->count); - - if (list == AU_NULL_PVLIST) - return AU_BAD_PVLIST; - if (list->valid != _AU_VALID_PVLIST) - return AU_BAD_PVLIST; - if ((item < 0) || (item > list->count - 1)) - return AU_BAD_PVITEM; - if (list->items[item].valid != _AU_VALID_PVITEM) - return AU_BAD_PVLIST; - - list->items[item].type = type; - return _AU_SUCCESS; -} - -int AUpvsetval (AUpvlist list, int item, void *val) -{ - assert(list); - assert(list->items); - assert(item >= 0); - assert(item < list->count); - - if (list == AU_NULL_PVLIST) - return AU_BAD_PVLIST; - if (list->valid != _AU_VALID_PVLIST) - return AU_BAD_PVLIST; - if ((item < 0) || (item > list->count - 1)) - return AU_BAD_PVITEM; - if (list->items[item].valid != _AU_VALID_PVITEM) - return AU_BAD_PVLIST; - - switch (list->items[item].type) - { - case AU_PVTYPE_LONG: - list->items[item].value.l = *((long *) val); - break; - case AU_PVTYPE_DOUBLE: - list->items[item].value.d = *((double *) val); - break; - case AU_PVTYPE_PTR: - list->items[item].value.v = *((void **) val); - break; - default: - assert(0); - return AU_BAD_PVLIST; - } - - return _AU_SUCCESS; -} - -int AUpvgetparam (AUpvlist list, int item, int *param) -{ - assert(list); - assert(list->items); - assert(item >= 0); - assert(item < list->count); - - if (list == AU_NULL_PVLIST) - return AU_BAD_PVLIST; - if (list->valid != _AU_VALID_PVLIST) - return AU_BAD_PVLIST; - if ((item < 0) || (item > list->count - 1)) - return AU_BAD_PVITEM; - if (list->items[item].valid != _AU_VALID_PVITEM) - return AU_BAD_PVLIST; - - *param = list->items[item].parameter; - return _AU_SUCCESS; -} - -int AUpvgetvaltype (AUpvlist list, int item, int *type) -{ - assert(list); - assert(list->items); - assert(item >= 0); - assert(item < list->count); - - if (list == AU_NULL_PVLIST) - return AU_BAD_PVLIST; - if (list->valid != _AU_VALID_PVLIST) - return AU_BAD_PVLIST; - if ((item < 0) || (item > list->count - 1)) - return AU_BAD_PVITEM; - if (list->items[item].valid != _AU_VALID_PVITEM) - return AU_BAD_PVLIST; - - *type = list->items[item].type; - return _AU_SUCCESS; -} - -int AUpvgetval (AUpvlist list, int item, void *val) -{ - assert(list); - assert(list->items); - assert(item >= 0); - assert(item < list->count); - - if (list == AU_NULL_PVLIST) - return AU_BAD_PVLIST; - if (list->valid != _AU_VALID_PVLIST) - return AU_BAD_PVLIST; - if ((item < 0) || (item > list->count - 1)) - return AU_BAD_PVITEM; - if (list->items[item].valid != _AU_VALID_PVITEM) - return AU_BAD_PVLIST; - - switch (list->items[item].type) - { - case AU_PVTYPE_LONG: - *((long *) val) = list->items[item].value.l; - break; - case AU_PVTYPE_DOUBLE: - *((double *) val) = list->items[item].value.d; - break; - case AU_PVTYPE_PTR: - *((void **) val) = list->items[item].value.v; - break; - } - - return _AU_SUCCESS; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/aupvinternal.h b/tools/audiofile-0.3.6/libaudiofile/aupvinternal.h deleted file mode 100644 index 44650557..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/aupvinternal.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - aupvinternal.h - - This file contains the private data structures for the parameter - value list data types. -*/ - -#ifndef AUPVINTERNAL_H -#define AUPVINTERNAL_H - -struct _AUpvitem -{ - int valid; - int type; - int parameter; - - union - { - long l; - double d; - void *v; - } - value; -}; - -struct _AUpvlist -{ - int valid; - size_t count; - struct _AUpvitem *items; -}; - -enum -{ - _AU_VALID_PVLIST = 30932, - _AU_VALID_PVITEM = 30933 -}; - -enum -{ - AU_BAD_PVLIST = -5, - AU_BAD_PVITEM = -6, - AU_BAD_PVTYPE = -7, - AU_BAD_ALLOC = -8 -}; - -enum -{ - _AU_FAIL = -1, - _AU_SUCCESS = 0 -}; - -#define _AU_NULL_PVITEM ((struct _AUpvitem *) NULL) - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/byteorder.h b/tools/audiofile-0.3.6/libaudiofile/byteorder.h deleted file mode 100644 index e8239ddb..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/byteorder.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-1999, 2010-2011, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef BYTEORDER_H -#define BYTEORDER_H - -#include "config.h" - -#include - -#if WORDS_BIGENDIAN - #define _AF_BYTEORDER_NATIVE (AF_BYTEORDER_BIGENDIAN) -#else - #define _AF_BYTEORDER_NATIVE (AF_BYTEORDER_LITTLEENDIAN) -#endif - -inline uint16_t _af_byteswap_int16 (uint16_t x) -{ - return (x >> 8) | (x << 8); -} - -inline uint32_t _af_byteswap_int32 (uint32_t x) -{ - return ((x & 0x000000ffU) << 24) | - ((x & 0x0000ff00U) << 8) | - ((x & 0x00ff0000U) >> 8) | - ((x & 0xff000000U) >> 24); -} - -inline uint64_t _af_byteswap_int64 (uint64_t x) -{ - return ((x & 0x00000000000000ffULL) << 56) | - ((x & 0x000000000000ff00ULL) << 40) | - ((x & 0x0000000000ff0000ULL) << 24) | - ((x & 0x00000000ff000000ULL) << 8) | - ((x & 0x000000ff00000000ULL) >> 8) | - ((x & 0x0000ff0000000000ULL) >> 24) | - ((x & 0x00ff000000000000ULL) >> 40) | - ((x & 0xff00000000000000ULL) >> 56); -} - -inline float _af_byteswap_float32 (float x) -{ - union - { - uint32_t i; - float f; - } u; - u.f = x; - u.i = _af_byteswap_int32(u.i); - return u.f; -} - -inline double _af_byteswap_float64 (double x) -{ - union - { - uint64_t i; - double f; - } u; - u.f = x; - u.i = _af_byteswap_int64(u.i); - return u.f; -} - -inline uint64_t byteswap(uint64_t value) { return _af_byteswap_int64(value); } -inline int64_t byteswap(int64_t value) { return _af_byteswap_int64(value); } -inline uint32_t byteswap(uint32_t value) { return _af_byteswap_int32(value); } -inline int32_t byteswap(int32_t value) { return _af_byteswap_int32(value); } -inline uint16_t byteswap(uint16_t value) { return _af_byteswap_int16(value); } -inline int16_t byteswap(int16_t value) { return _af_byteswap_int16(value); } - -inline double byteswap(double value) { return _af_byteswap_float64(value); } -inline float byteswap(float value) { return _af_byteswap_float32(value); } - -template -T bigToHost(T value) -{ - return _AF_BYTEORDER_NATIVE == AF_BYTEORDER_BIGENDIAN ? value : byteswap(value); -} - -template -T littleToHost(T value) -{ - return _AF_BYTEORDER_NATIVE == AF_BYTEORDER_LITTLEENDIAN ? value : byteswap(value); -} - -template -T hostToBig(T value) -{ - return _AF_BYTEORDER_NATIVE == AF_BYTEORDER_BIGENDIAN ? value : byteswap(value); -} - -template -T hostToLittle(T value) -{ - return _AF_BYTEORDER_NATIVE == AF_BYTEORDER_LITTLEENDIAN ? value : byteswap(value); -} - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/compression.cpp b/tools/audiofile-0.3.6/libaudiofile/compression.cpp deleted file mode 100644 index e9969236..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/compression.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - Audio File Library - Copyright (C) 1999-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - compression.cpp - - This file contains routines for configuring compressed audio. -*/ - -#include "config.h" - -#include - -#include "FileHandle.h" -#include "Setup.h" -#include "Track.h" -#include "audiofile.h" -#include "aupvlist.h" -#include "units.h" -#include "util.h" - -const CompressionUnit *_af_compression_unit_from_id (int compressionid) -{ - for (int i=0; i<_AF_NUM_COMPRESSION; i++) - if (_af_compression[i].compressionID == compressionid) - return &_af_compression[i]; - - _af_error(AF_BAD_COMPTYPE, "compression type %d not available", compressionid); - return NULL; -} - -int afGetCompression (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->f.compressionType; -} - -void afInitCompression (AFfilesetup setup, int trackid, int compression) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - if (!_af_compression_unit_from_id(compression)) - return; - - track->compressionSet = true; - track->f.compressionType = compression; -} - -#if 0 -int afGetCompressionParams (AFfilehandle file, int trackid, - int *compression, AUpvlist pvlist, int numitems) -{ - assert(file); - assert(trackid == AF_DEFAULT_TRACK); -} - -void afInitCompressionParams (AFfilesetup setup, int trackid, - int compression, AUpvlist pvlist, int numitems) -{ - assert(setup); - assert(trackid == AF_DEFAULT_TRACK); -} -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/compression.h b/tools/audiofile-0.3.6/libaudiofile/compression.h deleted file mode 100644 index d4b9792d..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/compression.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - Audio File Library - Copyright (C) 1999, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - compression.h -*/ - -#ifndef COMPRESSION_H -#define COMPRESSION_H - -struct CompressionUnit; - -const CompressionUnit *_af_compression_unit_from_id (int compressionid); - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/data.cpp b/tools/audiofile-0.3.6/libaudiofile/data.cpp deleted file mode 100644 index 21b16b1a..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/data.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - data.cpp -*/ - -#include "config.h" - -#include -#include -#include - -#include "File.h" -#include "FileHandle.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "modules/Module.h" -#include "modules/ModuleState.h" -#include "util.h" - -int afWriteFrames (AFfilehandle file, int trackid, const void *samples, - int nvframes2write) -{ - SharedPtr firstmod; - SharedPtr userc; - int bytes_per_vframe; - AFframecount vframe; - - if (!_af_filehandle_ok(file)) - return -1; - - if (!file->checkCanWrite()) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - if (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL) - return -1; - - if (!track->ms->fileModuleHandlesSeeking() && - file->m_seekok && - file->m_fh->seek(track->fpos_next_frame, File::SeekFromBeginning) != - track->fpos_next_frame) - { - _af_error(AF_BAD_LSEEK, "unable to position write pointer at next frame"); - return -1; - } - - bytes_per_vframe = _af_format_frame_size(&track->v, true); - - firstmod = track->ms->modules().front(); - userc = track->ms->chunks().front(); - - track->filemodhappy = true; - - vframe = 0; -#ifdef UNLIMITED_CHUNK_NVFRAMES - /* - OPTIMIZATION: see the comment at the very end of - arrangemodules() in modules.c for an explanation of this: - */ - if (!trk->ms->mustUseAtomicNVFrames()) - { - userc->buffer = (char *) samples; - userc->frameCount = nvframes2write; - - firstmod->runPush(); - - /* Count this chunk if there was no i/o error. */ - if (trk->filemodhappy) - vframe += userc->frameCount; - } - else -#else - /* Optimization must be off. */ - assert(track->ms->mustUseAtomicNVFrames()); -#endif - { - while (vframe < nvframes2write) - { - userc->buffer = (char *) samples + bytes_per_vframe * vframe; - if (vframe <= nvframes2write - _AF_ATOMIC_NVFRAMES) - userc->frameCount = _AF_ATOMIC_NVFRAMES; - else - userc->frameCount = nvframes2write - vframe; - - firstmod->runPush(); - - if (!track->filemodhappy) - break; - - vframe += userc->frameCount; - } - } - - track->nextvframe += vframe; - track->totalvframes += vframe; - - return vframe; -} - -int afReadFrames (AFfilehandle file, int trackid, void *samples, - int nvframeswanted) -{ - SharedPtr firstmod; - SharedPtr userc; - AFframecount nvframesleft, nvframes2read; - int bytes_per_vframe; - AFframecount vframe; - - if (!_af_filehandle_ok(file)) - return -1; - - if (!file->checkCanRead()) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - if (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL) - return -1; - - if (!track->ms->fileModuleHandlesSeeking() && - file->m_seekok && - file->m_fh->seek(track->fpos_next_frame, File::SeekFromBeginning) != - track->fpos_next_frame) - { - _af_error(AF_BAD_LSEEK, "unable to position read pointer at next frame"); - return -1; - } - - if (track->totalvframes == -1) - nvframes2read = nvframeswanted; - else - { - nvframesleft = track->totalvframes - track->nextvframe; - nvframes2read = (nvframeswanted > nvframesleft) ? - nvframesleft : nvframeswanted; - } - bytes_per_vframe = _af_format_frame_size(&track->v, true); - - firstmod = track->ms->modules().back(); - userc = track->ms->chunks().back(); - - track->filemodhappy = true; - - vframe = 0; - - if (!track->ms->mustUseAtomicNVFrames()) - { - assert(track->frames2ignore == 0); - userc->buffer = samples; - userc->frameCount = nvframes2read; - - firstmod->runPull(); - if (track->filemodhappy) - vframe += userc->frameCount; - } - else - { - bool eof = false; - - if (track->frames2ignore != 0) - { - userc->frameCount = track->frames2ignore; - userc->allocate(track->frames2ignore * bytes_per_vframe); - if (!userc->buffer) - return 0; - - firstmod->runPull(); - - /* Have we hit EOF? */ - if (static_cast(userc->frameCount) < track->frames2ignore) - eof = true; - - track->frames2ignore = 0; - - userc->deallocate(); - } - - /* - Now start reading useful frames, until EOF or - premature EOF. - */ - - while (track->filemodhappy && !eof && vframe < nvframes2read) - { - AFframecount nvframes2pull; - userc->buffer = (char *) samples + bytes_per_vframe * vframe; - - if (vframe <= nvframes2read - _AF_ATOMIC_NVFRAMES) - nvframes2pull = _AF_ATOMIC_NVFRAMES; - else - nvframes2pull = nvframes2read - vframe; - - userc->frameCount = nvframes2pull; - - firstmod->runPull(); - - if (track->filemodhappy) - { - vframe += userc->frameCount; - if (static_cast(userc->frameCount) < nvframes2pull) - eof = true; - } - } - } - - track->nextvframe += vframe; - - return vframe; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/debug.cpp b/tools/audiofile-0.3.6/libaudiofile/debug.cpp deleted file mode 100644 index 1bea40f3..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/debug.cpp +++ /dev/null @@ -1,272 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - debug.cpp - - This file contains debugging routines for the Audio File - Library. -*/ - -#include "config.h" - -#include -#include -#include -#include -#include - -#include "audiofile.h" -#include "aupvlist.h" - -#include "FileHandle.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "aupvinternal.h" -#include "byteorder.h" -#include "compression.h" -#include "debug.h" -#include "units.h" -#include "util.h" - -void _af_print_pvlist (AUpvlist list) -{ - assert(list); - - printf("list.valid: %d\n", list->valid); - printf("list.count: %zu\n", list->count); - - for (unsigned i=0; icount; i++) - { - printf("item %u valid %d, should be %d\n", - i, list->items[i].valid, _AU_VALID_PVITEM); - - switch (list->items[i].type) - { - case AU_PVTYPE_LONG: - printf("item #%u, parameter %d, long: %ld\n", - i, list->items[i].parameter, - list->items[i].value.l); - break; - case AU_PVTYPE_DOUBLE: - printf("item #%u, parameter %d, double: %f\n", - i, list->items[i].parameter, - list->items[i].value.d); - break; - case AU_PVTYPE_PTR: - printf("item #%u, parameter %d, pointer: %p\n", - i, list->items[i].parameter, - list->items[i].value.v); - break; - - default: - printf("item #%u, invalid type %d\n", i, - list->items[i].type); - assert(false); - break; - } - } -} - -void _af_print_audioformat (AudioFormat *fmt) -{ - /* sampleRate, channelCount */ - printf("{ %7.2f Hz %d ch ", fmt->sampleRate, fmt->channelCount); - - /* sampleFormat, sampleWidth */ - switch (fmt->sampleFormat) - { - case AF_SAMPFMT_TWOSCOMP: - printf("%db 2 ", fmt->sampleWidth); - break; - case AF_SAMPFMT_UNSIGNED: - printf("%db u ", fmt->sampleWidth); - break; - case AF_SAMPFMT_FLOAT: - printf("flt "); - break; - case AF_SAMPFMT_DOUBLE: - printf("dbl "); - break; - default: - printf("%dsampfmt? ", fmt->sampleFormat); - } - - /* pcm */ - printf("(%.30g+-%.30g [%.30g,%.30g]) ", - fmt->pcm.intercept, fmt->pcm.slope, - fmt->pcm.minClip, fmt->pcm.maxClip); - - /* byteOrder */ - switch (fmt->byteOrder) - { - case AF_BYTEORDER_BIGENDIAN: - printf("big "); - break; - case AF_BYTEORDER_LITTLEENDIAN: - printf("little "); - break; - default: - printf("%dbyteorder? ", fmt->byteOrder); - break; - } - - /* compression */ - { - const CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType); - if (!unit) - printf("%dcompression?", fmt->compressionType); - else if (fmt->compressionType == AF_COMPRESSION_NONE) - printf("pcm"); - else - printf("%s", unit->label); - } - - printf(" }"); -} - -void _af_print_tracks (AFfilehandle filehandle) -{ - for (int i=0; im_trackCount; i++) - { - Track *track = &filehandle->m_tracks[i]; - printf("track %d\n", i); - printf(" id %d\n", track->id); - printf(" sample format\n"); - _af_print_audioformat(&track->f); - printf(" virtual format\n"); - _af_print_audioformat(&track->v); - printf(" total file frames: %jd\n", - (intmax_t) track->totalfframes); - printf(" total virtual frames: %jd\n", - (intmax_t) track->totalvframes); - printf(" next file frame: %jd\n", - (intmax_t) track->nextfframe); - printf(" next virtual frame: %jd\n", - (intmax_t) track->nextvframe); - printf(" frames to ignore: %jd\n", - (intmax_t) track->frames2ignore); - - printf(" data_size: %jd\n", - (intmax_t) track->data_size); - printf(" fpos_first_frame: %jd\n", - (intmax_t) track->fpos_first_frame); - printf(" fpos_next_frame: %jd\n", - (intmax_t) track->fpos_next_frame); - printf(" fpos_after_data: %jd\n", - (intmax_t) track->fpos_after_data); - - printf(" channel matrix:"); - _af_print_channel_matrix(track->channelMatrix, - track->f.channelCount, track->v.channelCount); - printf("\n"); - - printf(" marker count: %d\n", track->markerCount); - } -} - -void _af_print_filehandle (AFfilehandle filehandle) -{ - printf("file handle: 0x%p\n", filehandle); - - if (filehandle->m_valid == _AF_VALID_FILEHANDLE) - printf("valid\n"); - else - printf("invalid!\n"); - - printf(" access: "); - if (filehandle->m_access == _AF_READ_ACCESS) - putchar('r'); - else - putchar('w'); - - printf(" fileFormat: %d\n", filehandle->m_fileFormat); - - printf(" instrument count: %d\n", filehandle->m_instrumentCount); - printf(" instruments: 0x%p\n", filehandle->m_instruments); - - printf(" miscellaneous count: %d\n", filehandle->m_miscellaneousCount); - printf(" miscellaneous: 0x%p\n", filehandle->m_miscellaneous); - - printf(" trackCount: %d\n", filehandle->m_trackCount); - printf(" tracks: 0x%p\n", filehandle->m_tracks); - _af_print_tracks(filehandle); -} - -void _af_print_channel_matrix (double *matrix, int fchans, int vchans) -{ - int v, f; - - if (!matrix) - { - printf("NULL"); - return; - } - - printf("{"); - for (v=0; v < vchans; v++) - { - if (v) printf(" "); - printf("{"); - for (f=0; f < fchans; f++) - { - if (f) printf(" "); - printf("%5.2f", *(matrix + v*fchans + f)); - } - printf("}"); - } - printf("}"); -} - -void _af_print_frame (AFframecount frameno, double *frame, int nchannels, - char *formatstring, int numberwidth, - double slope, double intercept, double minclip, double maxclip) -{ - char linebuf[81]; - int wavewidth = 78 - numberwidth*nchannels - 6; - int c; - - memset(linebuf, ' ', 80); - linebuf[0] = '|'; - linebuf[wavewidth-1] = '|'; - linebuf[wavewidth] = 0; - - printf("%05jd ", (intmax_t) frameno); - - for (c=0; c < nchannels; c++) - { - double pcm = frame[c]; - printf(formatstring, pcm); - } - for (c=0; c < nchannels; c++) - { - double pcm = frame[c], volts; - if (maxclip > minclip) - { - if (pcm < minclip) pcm = minclip; - if (pcm > maxclip) pcm = maxclip; - } - volts = (pcm - intercept) / slope; - linebuf[(int)((volts/2 + 0.5)*(wavewidth-3)) + 1] = '0' + c; - } - printf("%s\n", linebuf); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/debug.h b/tools/audiofile-0.3.6/libaudiofile/debug.h deleted file mode 100644 index abb878f8..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/debug.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - debug.h - - This header file declares debugging functions for the Audio - File Library. -*/ - -#ifndef DEBUG_H -#define DEBUG_H - -#include -#include "audiofile.h" -#include "afinternal.h" - -void _af_print_filehandle (AFfilehandle filehandle); -void _af_print_tracks (AFfilehandle filehandle); -void _af_print_channel_matrix (double *matrix, int fchans, int vchans); -void _af_print_pvlist (AUpvlist list); - -void _af_print_audioformat (AudioFormat *format); -void _af_print_frame (AFframecount frameno, double *frame, int nchannels, - char *formatstring, int numberwidth, - double slope, double intercept, double minclip, double maxclip); - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/error.c b/tools/audiofile-0.3.6/libaudiofile/error.c deleted file mode 100644 index da1e5437..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/error.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - error.c - - This file contains the routines used in the Audio File Library's - error handling. -*/ - -#include "config.h" - -#include -#include -#include -#include "audiofile.h" - -static void defaultErrorFunction (long error, const char *str); - -static AFerrfunc errorFunction = defaultErrorFunction; - -AFerrfunc afSetErrorHandler (AFerrfunc efunc) -{ - AFerrfunc old; - - old = errorFunction; - errorFunction = efunc; - - return old; -} - -static void defaultErrorFunction (long error, const char *str) -{ - fprintf(stderr, "Audio File Library: "); - fprintf(stderr, "%s", str); - fprintf(stderr, " [error %ld]\n", error); -} - -void _af_error (int errorCode, const char *fmt, ...) -{ - char buf[1024]; - va_list ap; - - va_start(ap, fmt); - - vsnprintf(buf, 1024, fmt, ap); - - va_end(ap); - - if (errorFunction != NULL) - errorFunction(errorCode, buf); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/error.h b/tools/audiofile-0.3.6/libaudiofile/error.h deleted file mode 100644 index 250dc95d..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/error.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef ERROR_H -#define ERROR_H - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(__GNUC__) && !defined(__clang__) && !defined(__attribute__) -#define __attribute__(x) -#endif - -void _af_error (int errorCode, const char *fmt, ...) - __attribute__((format(printf, 2, 3))); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/extended.c b/tools/audiofile-0.3.6/libaudiofile/extended.c deleted file mode 100644 index f1901cad..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/extended.c +++ /dev/null @@ -1,149 +0,0 @@ -/* Copyright (C) 1989-1991 Apple Computer, Inc. - * - * All rights reserved. - * - * Warranty Information - * Even though Apple has reviewed this software, Apple makes no warranty - * or representation, either express or implied, with respect to this - * software, its quality, accuracy, merchantability, or fitness for a - * particular purpose. As a result, this software is provided "as is," - * and you, its user, are assuming the entire risk as to its quality - * and accuracy. - * - * This code may be used and freely distributed as long as it includes - * this copyright notice and the above warranty information. - * - * Machine-independent I/O routines for IEEE floating-point numbers. - * - * NaN's and infinities are converted to HUGE_VAL or HUGE, which - * happens to be infinity on IEEE machines. Unfortunately, it is - * impossible to preserve NaN's in a machine-independent way. - * Infinities are, however, preserved on IEEE machines. - * - * These routines have been tested on the following machines: - * Apple Macintosh, MPW 3.1 C compiler - * Apple Macintosh, THINK C compiler - * Silicon Graphics IRIS, MIPS compiler - * Cray X/MP and Y/MP - * Digital Equipment VAX - * Sequent Balance (Multiprocesor 386) - * NeXT - * - * - * Implemented by Malcolm Slaney and Ken Turkowski. - * - * Malcolm Slaney contributions during 1988-1990 include big- and little- - * endian file I/O, conversion to and from Motorola's extended 80-bit - * floating-point format, and conversions to and from IEEE single- - * precision floating-point format. - * - * In 1991, Ken Turkowski implemented the conversions to and from - * IEEE double-precision format, added more precision to the extended - * conversions, and accommodated conversions involving +/- infinity, - * NaN's, and denormalized numbers. - */ - -/**************************************************************** - * Extended precision IEEE floating-point conversion routines. - * Extended is an 80-bit number as defined by Motorola, - * with a sign bit, 15 bits of exponent (offset 16383?), - * and a 64-bit mantissa, with no hidden bit. - ****************************************************************/ - -#include "extended.h" - -#include - -#ifndef HUGE_VAL -#define HUGE_VAL HUGE -#endif - -#define FloatToUnsigned(f) ((unsigned long) (((long) (f - 2147483648.0)) + 2147483647L) + 1) - -void _af_convert_to_ieee_extended (double num, unsigned char *bytes) -{ - int sign; - int expon; - double fMant, fsMant; - unsigned long hiMant, loMant; - - if (num < 0) { - sign = 0x8000; - num *= -1; - } else { - sign = 0; - } - - if (num == 0) { - expon = 0; hiMant = 0; loMant = 0; - } - else { - fMant = frexp(num, &expon); - if ((expon > 16384) || !(fMant < 1)) { /* Infinity or NaN */ - expon = sign|0x7FFF; hiMant = 0; loMant = 0; /* infinity */ - } - else { /* Finite */ - expon += 16382; - if (expon < 0) { /* denormalized */ - fMant = ldexp(fMant, expon); - expon = 0; - } - expon |= sign; - fMant = ldexp(fMant, 32); - fsMant = floor(fMant); - hiMant = FloatToUnsigned(fsMant); - fMant = ldexp(fMant - fsMant, 32); - fsMant = floor(fMant); - loMant = FloatToUnsigned(fsMant); - } - } - - bytes[0] = expon >> 8; - bytes[1] = expon; - bytes[2] = hiMant >> 24; - bytes[3] = hiMant >> 16; - bytes[4] = hiMant >> 8; - bytes[5] = hiMant; - bytes[6] = loMant >> 24; - bytes[7] = loMant >> 16; - bytes[8] = loMant >> 8; - bytes[9] = loMant; -} - -#define UnsignedToFloat(u) (((double) ((long) (u - 2147483647L - 1))) + 2147483648.0) - -double _af_convert_from_ieee_extended (const unsigned char *bytes) -{ - double f; - int expon; - unsigned long hiMant, loMant; - - expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF); - hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24) - | ((unsigned long) (bytes[3] & 0xFF) << 16) - | ((unsigned long) (bytes[4] & 0xFF) << 8) - | ((unsigned long) (bytes[5] & 0xFF)); - loMant = ((unsigned long) (bytes[6] & 0xFF) << 24) - | ((unsigned long) (bytes[7] & 0xFF) << 16) - | ((unsigned long) (bytes[8] & 0xFF) << 8) - | ((unsigned long) (bytes[9] & 0xFF)); - - if (expon == 0 && hiMant == 0 && loMant == 0) { - f = 0; - } - else { - if (expon == 0x7FFF) { /* Infinity or NaN */ - f = HUGE_VAL; - } - else { - expon -= 16383; - f = ldexp(UnsignedToFloat(hiMant), expon-=31); - f += ldexp(UnsignedToFloat(loMant), expon-=32); - } - } - - if (bytes[0] & 0x80) - return -f; - else - return f; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/extended.h b/tools/audiofile-0.3.6/libaudiofile/extended.h deleted file mode 100644 index e0647dd9..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/extended.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - extended.h - - This file defines interfaces to Apple's extended floating-point - conversion routines. -*/ - -#ifndef EXTENDED_H -#define EXTENDED_H - -#ifdef __cplusplus -extern "C" { -#endif - -void _af_convert_to_ieee_extended (double num, unsigned char *bytes); -double _af_convert_from_ieee_extended (const unsigned char *bytes); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/format.cpp b/tools/audiofile-0.3.6/libaudiofile/format.cpp deleted file mode 100644 index 01ba521c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/format.cpp +++ /dev/null @@ -1,385 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - audiofile.c - - This file implements many of the main interface routines of the - Audio File Library. -*/ - -#include "config.h" - -#include -#include -#include -#include - -#include "FileHandle.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "modules/Module.h" -#include "modules/ModuleState.h" -#include "units.h" -#include "util.h" - -AFfileoffset afGetDataOffset (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->fpos_first_frame; -} - -AFfileoffset afGetTrackBytes (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->data_size; -} - -/* - afGetFrameSize returns the size (in bytes) of a sample frame from - the specified track of an audio file. - - stretch3to4 == true: size which user sees - stretch3to4 == false: size used in file -*/ -float afGetFrameSize (AFfilehandle file, int trackid, int stretch3to4) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return _af_format_frame_size(&track->f, stretch3to4); -} - -float afGetVirtualFrameSize (AFfilehandle file, int trackid, int stretch3to4) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return _af_format_frame_size(&track->v, stretch3to4); -} - -AFframecount afSeekFrame (AFfilehandle file, int trackid, AFframecount frame) -{ - if (!_af_filehandle_ok(file)) - return -1; - - if (!file->checkCanRead()) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - if (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL) - return -1; - - if (frame < 0) - return track->nextvframe; - - /* Optimize the case of seeking to the current position. */ - if (frame == track->nextvframe) - return track->nextvframe; - - /* Limit request to the number of frames in the file. */ - if (track->totalvframes != -1) - if (frame > track->totalvframes) - frame = track->totalvframes - 1; - - /* - Now that the modules are not dirty and frame - represents a valid virtual frame, we call - _AFsetupmodules again after setting track->nextvframe. - - _AFsetupmodules will look at track->nextvframe and - compute track->nextfframe in clever and mysterious - ways. - */ - track->nextvframe = frame; - - if (track->ms->setup(file, track) == AF_FAIL) - return -1; - - return track->nextvframe; -} - -AFfileoffset afTellFrame (AFfilehandle file, int trackid) -{ - return afSeekFrame(file, trackid, -1); -} - -int afSetVirtualByteOrder (AFfilehandle file, int trackid, int byteorder) -{ - if (!_af_filehandle_ok(file)) - return AF_FAIL; - - Track *track = file->getTrack(trackid); - if (!track) - return AF_FAIL; - - if (byteorder != AF_BYTEORDER_BIGENDIAN && - byteorder != AF_BYTEORDER_LITTLEENDIAN) - { - _af_error(AF_BAD_BYTEORDER, "invalid byte order %d", byteorder); - return AF_FAIL; - } - - track->v.byteOrder = byteorder; - track->ms->setDirty(); - - return AF_SUCCEED; -} - -int afGetByteOrder (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->f.byteOrder; -} - -int afGetVirtualByteOrder (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->v.byteOrder; -} - -AFframecount afGetFrameCount (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - if (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL) - return -1; - - return track->totalvframes; -} - -double afGetRate (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->f.sampleRate; -} - -int afGetChannels (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->f.channelCount; -} - -void afGetSampleFormat (AFfilehandle file, int trackid, int *sampleFormat, int *sampleWidth) -{ - if (!_af_filehandle_ok(file)) - return; - - Track *track = file->getTrack(trackid); - if (!track) - return; - - if (sampleFormat) - *sampleFormat = track->f.sampleFormat; - - if (sampleWidth) - *sampleWidth = track->f.sampleWidth; -} - -void afGetVirtualSampleFormat (AFfilehandle file, int trackid, int *sampleFormat, int *sampleWidth) -{ - if (!_af_filehandle_ok(file)) - return; - - Track *track = file->getTrack(trackid); - if (!track) - return; - - if (sampleFormat) - *sampleFormat = track->v.sampleFormat; - - if (sampleWidth) - *sampleWidth = track->v.sampleWidth; -} - -int afSetVirtualSampleFormat (AFfilehandle file, int trackid, - int sampleFormat, int sampleWidth) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - if (_af_set_sample_format(&track->v, sampleFormat, sampleWidth) == AF_FAIL) - return -1; - - track->ms->setDirty(); - - return 0; -} - -/* XXXmpruett fix the version */ -int afGetFileFormat (AFfilehandle file, int *version) -{ - if (!_af_filehandle_ok(file)) - return -1; - - if (version != NULL) - *version = file->getVersion(); - - return file->m_fileFormat; -} - -int afSetVirtualChannels (AFfilehandle file, int trackid, int channelCount) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - track->v.channelCount = channelCount; - track->ms->setDirty(); - - if (track->channelMatrix) - free(track->channelMatrix); - track->channelMatrix = NULL; - - return 0; -} - -double afGetVirtualRate (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->v.sampleRate; -} - -int afSetVirtualRate (AFfilehandle file, int trackid, double rate) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - if (rate < 0) - { - _af_error(AF_BAD_RATE, "invalid sampling rate %.30g", rate); - return -1; - } - - track->v.sampleRate = rate; - track->ms->setDirty(); - - return 0; -} - -void afSetChannelMatrix (AFfilehandle file, int trackid, double* matrix) -{ - if (!_af_filehandle_ok(file)) - return; - - Track *track = file->getTrack(trackid); - if (!track) - return; - - if (track->channelMatrix != NULL) - free(track->channelMatrix); - track->channelMatrix = NULL; - - if (matrix != NULL) - { - int i, size; - - size = track->v.channelCount * track->f.channelCount; - - track->channelMatrix = (double *) malloc(size * sizeof (double)); - - for (i = 0; i < size; i++) - track->channelMatrix[i] = matrix[i]; - } -} - -int afGetVirtualChannels (AFfilehandle file, int trackid) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - return track->v.channelCount; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/g711.c b/tools/audiofile-0.3.6/libaudiofile/g711.c deleted file mode 100644 index f65e99bf..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/g711.c +++ /dev/null @@ -1,268 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -#define SUPERCEDED - -/* - * g711.c - * - * u-law, A-law and linear PCM conversions. - */ -#define SIGN_BIT (0x80) /* Sign bit for a A-law byte. */ -#define QUANT_MASK (0xf) /* Quantization field mask. */ -#define NSEGS (8) /* Number of A-law segments. */ -#define SEG_SHIFT (4) /* Left shift for segment number. */ -#define SEG_MASK (0x70) /* Segment field mask. */ - -/* copy from CCITT G.711 specifications */ -static const unsigned char _u2a[128] = { /* u- to A-law conversions */ - 1, 1, 2, 2, 3, 3, 4, 4, - 5, 5, 6, 6, 7, 7, 8, 8, - 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, - 25, 27, 29, 31, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, - 46, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, - 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, - 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128}; - -static const unsigned char _a2u[128] = { /* A- to u-law conversions */ - 1, 3, 5, 7, 9, 11, 13, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 32, 33, 33, 34, 34, 35, 35, - 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 48, 49, 49, - 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 64, - 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 79, - 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127}; - -/* see libst.h */ -#ifdef SUPERCEDED - -static const short seg_end[8] = {0xFF, 0x1FF, 0x3FF, 0x7FF, - 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF}; - -static int -search(val, table, size) - int val; - short *table; - int size; -{ - int i; - - for (i = 0; i < size; i++) { - if (val <= *table++) - return (i); - } - return (size); -} - -/* - * linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law - * - * linear2alaw() accepts an 16-bit integer and encodes it as A-law data. - * - * Linear Input Code Compressed Code - * ------------------------ --------------- - * 0000000wxyza 000wxyz - * 0000001wxyza 001wxyz - * 000001wxyzab 010wxyz - * 00001wxyzabc 011wxyz - * 0001wxyzabcd 100wxyz - * 001wxyzabcde 101wxyz - * 01wxyzabcdef 110wxyz - * 1wxyzabcdefg 111wxyz - * - * For further information see John C. Bellamy's Digital Telephony, 1982, - * John Wiley & Sons, pps 98-111 and 472-476. - */ -unsigned char -_af_linear2alaw(pcm_val) - int pcm_val; /* 2's complement (16-bit range) */ -{ - int mask; - int seg; - unsigned char aval; - - if (pcm_val >= 0) { - mask = 0xD5; /* sign (7th) bit = 1 */ - } else { - mask = 0x55; /* sign bit = 0 */ - pcm_val = -pcm_val - 8; - } - - /* Convert the scaled magnitude to segment number. */ - seg = search(pcm_val, seg_end, 8); - - /* Combine the sign, segment, and quantization bits. */ - - if (seg >= 8) /* out of range, return maximum value. */ - return (0x7F ^ mask); - else { - aval = seg << SEG_SHIFT; - if (seg < 2) - aval |= (pcm_val >> 4) & QUANT_MASK; - else - aval |= (pcm_val >> (seg + 3)) & QUANT_MASK; - return (aval ^ mask); - } -} - -/* - * alaw2linear() - Convert an A-law value to 16-bit linear PCM - * - */ -int -_af_alaw2linear(a_val) - unsigned char a_val; -{ - int t; - int seg; - - a_val ^= 0x55; - - t = (a_val & QUANT_MASK) << 4; - seg = ((unsigned)a_val & SEG_MASK) >> SEG_SHIFT; - switch (seg) { - case 0: - t += 8; - break; - case 1: - t += 0x108; - break; - default: - t += 0x108; - t <<= seg - 1; - } - return ((a_val & SIGN_BIT) ? t : -t); -} - -#define BIAS (0x84) /* Bias for linear code. */ - -/* - * linear2ulaw() - Convert a linear PCM value to u-law - * - * In order to simplify the encoding process, the original linear magnitude - * is biased by adding 33 which shifts the encoding range from (0 - 8158) to - * (33 - 8191). The result can be seen in the following encoding table: - * - * Biased Linear Input Code Compressed Code - * ------------------------ --------------- - * 00000001wxyza 000wxyz - * 0000001wxyzab 001wxyz - * 000001wxyzabc 010wxyz - * 00001wxyzabcd 011wxyz - * 0001wxyzabcde 100wxyz - * 001wxyzabcdef 101wxyz - * 01wxyzabcdefg 110wxyz - * 1wxyzabcdefgh 111wxyz - * - * Each biased linear code has a leading 1 which identifies the segment - * number. The value of the segment number is equal to 7 minus the number - * of leading 0's. The quantization interval is directly available as the - * four bits wxyz. * The trailing bits (a - h) are ignored. - * - * Ordinarily the complement of the resulting code word is used for - * transmission, and so the code word is complemented before it is returned. - * - * For further information see John C. Bellamy's Digital Telephony, 1982, - * John Wiley & Sons, pps 98-111 and 472-476. - */ - -/* 2's complement (16-bit range) */ -unsigned char _af_linear2ulaw (int pcm_val) -{ - int mask; - int seg; - unsigned char uval; - - /* Get the sign and the magnitude of the value. */ - if (pcm_val < 0) { - pcm_val = BIAS - pcm_val; - mask = 0x7F; - } else { - pcm_val += BIAS; - mask = 0xFF; - } - - /* Convert the scaled magnitude to segment number. */ - seg = search(pcm_val, seg_end, 8); - - /* - * Combine the sign, segment, quantization bits; - * and complement the code word. - */ - if (seg >= 8) /* out of range, return maximum value. */ - return (0x7F ^ mask); - else { - uval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0xF); - return (uval ^ mask); - } - -} - -/* - * ulaw2linear() - Convert a u-law value to 16-bit linear PCM - * - * First, a biased linear code is derived from the code word. An unbiased - * output can then be obtained by subtracting 33 from the biased code. - * - * Note that this function expects to be passed the complement of the - * original code word. This is in keeping with ISDN conventions. - */ -int _af_ulaw2linear (unsigned char u_val) -{ - int t; - - /* Complement to obtain normal u-law value. */ - u_val = ~u_val; - - /* - * Extract and bias the quantization bits. Then - * shift up by the segment number and subtract out the bias. - */ - t = ((u_val & QUANT_MASK) << 3) + BIAS; - t <<= ((unsigned)u_val & SEG_MASK) >> SEG_SHIFT; - - return ((u_val & SIGN_BIT) ? (BIAS - t) : (t - BIAS)); -} - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/g711.h b/tools/audiofile-0.3.6/libaudiofile/g711.h deleted file mode 100644 index 71fa23e0..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/g711.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g711.h - * - * u-law, A-law and linear PCM conversions. - */ - -#ifndef G711_H -#define G711_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law - * - * linear2alaw() accepts an 16-bit integer and encodes it as A-law data. - * - * Linear Input Code Compressed Code - * ------------------------ --------------- - * 0000000wxyza 000wxyz - * 0000001wxyza 001wxyz - * 000001wxyzab 010wxyz - * 00001wxyzabc 011wxyz - * 0001wxyzabcd 100wxyz - * 001wxyzabcde 101wxyz - * 01wxyzabcdef 110wxyz - * 1wxyzabcdefg 111wxyz - * - * For further information see John C. Bellamy's Digital Telephony, 1982, - * John Wiley & Sons, pps 98-111 and 472-476. - */ - -/* pcm_val is 2's complement (16-bit range) */ -unsigned char _af_linear2alaw (int pcm_val); - -/* - * alaw2linear() - Convert an A-law value to 16-bit linear PCM - * - */ - -int _af_alaw2linear (unsigned char a_val); - -/* - * linear2ulaw() - Convert a linear PCM value to u-law - * - * In order to simplify the encoding process, the original linear magnitude - * is biased by adding 33 which shifts the encoding range from (0 - 8158) to - * (33 - 8191). The result can be seen in the following encoding table: - * - * Biased Linear Input Code Compressed Code - * ------------------------ --------------- - * 00000001wxyza 000wxyz - * 0000001wxyzab 001wxyz - * 000001wxyzabc 010wxyz - * 00001wxyzabcd 011wxyz - * 0001wxyzabcde 100wxyz - * 001wxyzabcdef 101wxyz - * 01wxyzabcdefg 110wxyz - * 1wxyzabcdefgh 111wxyz - * - * Each biased linear code has a leading 1 which identifies the segment - * number. The value of the segment number is equal to 7 minus the number - * of leading 0's. The quantization interval is directly available as the - * four bits wxyz. * The trailing bits (a - h) are ignored. - * - * Ordinarily the complement of the resulting code word is used for - * transmission, and so the code word is complemented before it is returned. - * - * For further information see John C. Bellamy's Digital Telephony, 1982, - * John Wiley & Sons, pps 98-111 and 472-476. - */ - -/* pcm_val is 2's complement (16-bit range) */ -unsigned char _af_linear2ulaw (int pcm_val); - -/* - * ulaw2linear() - Convert a u-law value to 16-bit linear PCM - * - * First, a biased linear code is derived from the code word. An unbiased - * output can then be obtained by subtracting 33 from the biased code. - * - * Note that this function expects to be passed the complement of the - * original code word. This is in keeping with ISDN conventions. - */ - -int _af_ulaw2linear (unsigned char u_val); - -#ifdef __cplusplus -} -#endif - -#endif /* G711_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/ALAC.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/ALAC.Plo deleted file mode 100644 index 7db7ba7a..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/ALAC.Plo +++ /dev/null @@ -1,307 +0,0 @@ -ALAC.lo: ALAC.cpp ../../config.h ALAC.h Module.h ../AudioFormat.h \ - ../aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h ../afinternal.h ../audiofile.h ../aupvlist.h ../error.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../audiofile.h ../Buffer.h ../Shared.h ../Compiler.h ../File.h \ - FileModule.h ../PacketTable.h SimpleModule.h ../byteorder.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cassert \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/climits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/functional \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/tuple \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/array \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uses_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/invoke.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/refwrap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_function.h \ - ../Track.h ../AudioFormat.h ../afinternal.h ../compression.h ../units.h \ - ../util.h ../alac/ALACBitUtilities.h ../alac/ALACDecoder.h \ - ../alac/ALACAudioTypes.h ../alac/ALACEncoder.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -../../config.h: -ALAC.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -../afinternal.h: -../audiofile.h: -../aupvlist.h: -../error.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../audiofile.h: -../Buffer.h: -../Shared.h: -../Compiler.h: -../File.h: -FileModule.h: -../PacketTable.h: -SimpleModule.h: -../byteorder.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cassert: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/climits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/functional: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/tuple: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/array: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uses_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/invoke.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/refwrap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_function.h: -../Track.h: -../AudioFormat.h: -../afinternal.h: -../compression.h: -../units.h: -../util.h: -../alac/ALACBitUtilities.h: -../alac/ALACDecoder.h: -../alac/ALACAudioTypes.h: -../alac/ALACEncoder.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/BlockCodec.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/BlockCodec.Plo deleted file mode 100644 index 4ce6b29c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/BlockCodec.Plo +++ /dev/null @@ -1,250 +0,0 @@ -BlockCodec.lo: BlockCodec.cpp ../../config.h BlockCodec.h ../Compiler.h \ - FileModule.h Module.h ../AudioFormat.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h ../afinternal.h ../audiofile.h ../aupvlist.h ../error.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../Track.h ../AudioFormat.h ../Shared.h ../afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h -../../config.h: -BlockCodec.h: -../Compiler.h: -FileModule.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -../afinternal.h: -../audiofile.h: -../aupvlist.h: -../error.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../Track.h: -../AudioFormat.h: -../Shared.h: -../afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/FLAC.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/FLAC.Plo deleted file mode 100644 index a2e3a7b4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/FLAC.Plo +++ /dev/null @@ -1,253 +0,0 @@ -FLAC.lo: FLAC.cpp ../../config.h FLAC.h ../afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - ../audiofile.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ../error.h ../audiofile.h ../Compiler.h FileModule.h Module.h \ - ../AudioFormat.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../Features.h ../Track.h ../AudioFormat.h ../Shared.h ../afinternal.h \ - ../byteorder.h -../../config.h: -FLAC.h: -../afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -../audiofile.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -../error.h: -../audiofile.h: -../Compiler.h: -FileModule.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../Features.h: -../Track.h: -../AudioFormat.h: -../Shared.h: -../afinternal.h: -../byteorder.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/FileModule.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/FileModule.Plo deleted file mode 100644 index af58a687..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/FileModule.Plo +++ /dev/null @@ -1,251 +0,0 @@ -FileModule.lo: FileModule.cpp ../../config.h FileModule.h Module.h \ - ../AudioFormat.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h ../afinternal.h ../audiofile.h ../aupvlist.h ../error.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../File.h ../Shared.h ../Track.h ../AudioFormat.h ../afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -../../config.h: -FileModule.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -../afinternal.h: -../audiofile.h: -../aupvlist.h: -../error.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../File.h: -../Shared.h: -../Track.h: -../AudioFormat.h: -../afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/G711.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/G711.Plo deleted file mode 100644 index e939ce33..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/G711.Plo +++ /dev/null @@ -1,258 +0,0 @@ -G711.lo: G711.cpp ../../config.h G711.h ../afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - ../audiofile.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ../error.h ../audiofile.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - ../Compiler.h FileModule.h Module.h ../AudioFormat.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../Track.h ../AudioFormat.h ../Shared.h ../afinternal.h ../byteorder.h \ - ../compression.h ../units.h ../util.h ../g711.h -../../config.h: -G711.h: -../afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -../audiofile.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -../error.h: -../audiofile.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -../Compiler.h: -FileModule.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../Track.h: -../AudioFormat.h: -../Shared.h: -../afinternal.h: -../byteorder.h: -../compression.h: -../units.h: -../util.h: -../g711.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/IMA.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/IMA.Plo deleted file mode 100644 index 26595ffd..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/IMA.Plo +++ /dev/null @@ -1,258 +0,0 @@ -IMA.lo: IMA.cpp ../../config.h IMA.h ../afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - ../audiofile.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ../error.h ../audiofile.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - BlockCodec.h ../Compiler.h FileModule.h Module.h ../AudioFormat.h \ - ../aupvlist.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../File.h ../Shared.h ../Track.h ../AudioFormat.h ../afinternal.h \ - ../byteorder.h ../util.h ../pcm.h -../../config.h: -IMA.h: -../afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -../audiofile.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -../error.h: -../audiofile.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -BlockCodec.h: -../Compiler.h: -FileModule.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../File.h: -../Shared.h: -../Track.h: -../AudioFormat.h: -../afinternal.h: -../byteorder.h: -../util.h: -../pcm.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/MSADPCM.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/MSADPCM.Plo deleted file mode 100644 index 5e2584b1..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/MSADPCM.Plo +++ /dev/null @@ -1,264 +0,0 @@ -MSADPCM.lo: MSADPCM.cpp ../../config.h MSADPCM.h ../afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - ../audiofile.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ../error.h ../audiofile.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - BlockCodec.h ../Compiler.h FileModule.h Module.h ../AudioFormat.h \ - ../aupvlist.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../File.h ../Shared.h ../Track.h ../AudioFormat.h ../afinternal.h \ - ../byteorder.h ../util.h ../pcm.h -../../config.h: -MSADPCM.h: -../afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -../audiofile.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -../error.h: -../audiofile.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -BlockCodec.h: -../Compiler.h: -FileModule.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../File.h: -../Shared.h: -../Track.h: -../AudioFormat.h: -../afinternal.h: -../byteorder.h: -../util.h: -../pcm.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/Module.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/Module.Plo deleted file mode 100644 index 973e1445..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/Module.Plo +++ /dev/null @@ -1,289 +0,0 @@ -Module.lo: Module.cpp ../../config.h Module.h ../AudioFormat.h \ - ../aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h ../afinternal.h ../audiofile.h ../aupvlist.h ../error.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../File.h ../Shared.h SimpleModule.h ../Compiler.h ../byteorder.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cassert \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/climits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/functional \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/tuple \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/array \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uses_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/invoke.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/refwrap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_function.h \ - ../compression.h ../units.h ../afinternal.h ../pcm.h -../../config.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -../afinternal.h: -../audiofile.h: -../aupvlist.h: -../error.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../File.h: -../Shared.h: -SimpleModule.h: -../Compiler.h: -../byteorder.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cassert: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/climits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/functional: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/tuple: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/array: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uses_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/invoke.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/refwrap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_function.h: -../compression.h: -../units.h: -../afinternal.h: -../pcm.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/ModuleState.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/ModuleState.Plo deleted file mode 100644 index dabf6771..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/ModuleState.Plo +++ /dev/null @@ -1,301 +0,0 @@ -ModuleState.lo: ModuleState.cpp ../../config.h ModuleState.h Module.h \ - ../AudioFormat.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h ../afinternal.h ../audiofile.h ../aupvlist.h ../error.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../File.h ../Shared.h ../FileHandle.h ../afinternal.h FileModule.h \ - RebufferModule.h ../Compiler.h SimpleModule.h ../byteorder.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cassert \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/climits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/functional \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/tuple \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/array \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uses_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/invoke.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/refwrap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_function.h \ - ../Track.h ../AudioFormat.h ../compression.h ../units.h ../util.h \ - ../pcm.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/cmath \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h -../../config.h: -ModuleState.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -../afinternal.h: -../audiofile.h: -../aupvlist.h: -../error.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../File.h: -../Shared.h: -../FileHandle.h: -../afinternal.h: -FileModule.h: -RebufferModule.h: -../Compiler.h: -SimpleModule.h: -../byteorder.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cassert: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/climits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/functional: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/tuple: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/array: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uses_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/invoke.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/refwrap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_function.h: -../Track.h: -../AudioFormat.h: -../compression.h: -../units.h: -../util.h: -../pcm.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cmath: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/PCM.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/PCM.Plo deleted file mode 100644 index f4130e21..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/PCM.Plo +++ /dev/null @@ -1,261 +0,0 @@ -PCM.lo: PCM.cpp ../../config.h PCM.h ../afinternal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - ../audiofile.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - ../error.h ../audiofile.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/math.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cmath \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h \ - ../Compiler.h FileModule.h Module.h ../AudioFormat.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../Track.h ../AudioFormat.h ../Shared.h ../afinternal.h ../compression.h \ - ../util.h -../../config.h: -PCM.h: -../afinternal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -../audiofile.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -../error.h: -../audiofile.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/math.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cmath: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/math.h: -../Compiler.h: -FileModule.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../Track.h: -../AudioFormat.h: -../Shared.h: -../afinternal.h: -../compression.h: -../util.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/RebufferModule.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/RebufferModule.Plo deleted file mode 100644 index 60ffa53c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/RebufferModule.Plo +++ /dev/null @@ -1,266 +0,0 @@ -RebufferModule.lo: RebufferModule.cpp ../../config.h RebufferModule.h \ - ../Compiler.h Module.h ../AudioFormat.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h ../afinternal.h ../audiofile.h ../aupvlist.h ../error.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h -../../config.h: -RebufferModule.h: -../Compiler.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -../afinternal.h: -../audiofile.h: -../aupvlist.h: -../error.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/SimpleModule.Plo b/tools/audiofile-0.3.6/libaudiofile/modules/.deps/SimpleModule.Plo deleted file mode 100644 index 0ae55532..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/.deps/SimpleModule.Plo +++ /dev/null @@ -1,281 +0,0 @@ -SimpleModule.lo: SimpleModule.cpp ../../config.h SimpleModule.h \ - ../Compiler.h Module.h ../AudioFormat.h ../aupvlist.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/string \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/new \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc \ - ../Shared.h ../afinternal.h ../audiofile.h ../aupvlist.h ../error.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc \ - ../byteorder.h I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/cassert \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/climits \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/functional \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/tuple \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/array \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uses_allocator.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/invoke.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/refwrap.h \ - I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_function.h -../../config.h: -SimpleModule.h: -../Compiler.h: -Module.h: -../AudioFormat.h: -../aupvlist.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/string: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++config.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/os_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/cpu_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stringfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/memoryfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/char_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algobase.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functexcept.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_defines.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cpp_type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/type_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/numeric_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_pair.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/move.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/type_traits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_types.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator_base_funcs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/concept_check.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/assertions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_iterator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ptr_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/debug/debug.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/predefined_ops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/postypes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cwchar: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/wchar.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/wchar_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdint: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/new_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/new: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/exception: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/exception_ptr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_init_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/typeinfo: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/hash_bytes.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/nested_exception.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/localefwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/c++locale.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/clocale: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/locale.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/iosfwd: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cctype: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/ctype.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/ostream_insert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/cxxabi_forced.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_function.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/backward/binders.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_access.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/initializer_list: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/iterator_concepts.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/concepts: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/range_cmp.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/int_limits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/atomicity.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/gthr-default.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/errno.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_signal.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/timeb.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_compat.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/x86_64-w64-mingw32/bits/atomic_word.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/alloc_traits.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_construct.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/ext/string_conversions.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdlib: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_abs.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cstdio: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cerrno: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/charconv.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/functional_hash.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/basic_string.tcc: -../Shared.h: -../afinternal.h: -../audiofile.h: -../aupvlist.h: -../error.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/vector: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_uninitialized.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_vector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_bvector.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/vector.tcc: -../byteorder.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/algorithm: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/utility: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_relops.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_algo.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/algorithmfwd.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_heap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/stl_tempbuf.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uniform_int_dist.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/limits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/cassert: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/assert.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/climits: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/functional: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/tuple: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/array: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/uses_allocator.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/invoke.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/refwrap.h: -I:/Development/MSYS2/mingw64/include/c++/10.1.0/bits/std_function.h: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/ALAC.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/ALAC.cpp deleted file mode 100644 index 7593c110..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/ALAC.cpp +++ /dev/null @@ -1,383 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "ALAC.h" - -#include "Buffer.h" -#include "Compiler.h" -#include "File.h" -#include "FileModule.h" -#include "PacketTable.h" -#include "SimpleModule.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "byteorder.h" -#include "compression.h" -#include "units.h" -#include "util.h" - -#include "../alac/ALACBitUtilities.h" -#include "../alac/ALACDecoder.h" -#include "../alac/ALACEncoder.h" - -#include -#include - -enum -{ - kALACFormatFlag_16BitSourceData = 1, - kALACFormatFlag_20BitSourceData = 2, - kALACFormatFlag_24BitSourceData = 3, - kALACFormatFlag_32BitSourceData = 4 -}; - -class ALAC : public FileModule -{ -public: - static ALAC *createDecompress(Track *, File *, bool canSeek, - bool headerless, AFframecount *chunkFrames); - static ALAC *createCompress(Track *, File *, bool canSeek, - bool headerless, AFframecount *chunkFrames); - - virtual ~ALAC(); - - virtual const char *name() const OVERRIDE - { - return mode() == Compress ? "alac_compress" : "alac_decompress"; - } - virtual void describe() OVERRIDE; - virtual void runPull() OVERRIDE; - virtual void reset1() OVERRIDE; - virtual void reset2() OVERRIDE; - virtual void runPush() OVERRIDE; - virtual void sync1() OVERRIDE; - virtual void sync2() OVERRIDE; - virtual int bufferSize() const OVERRIDE; - -private: - AFframecount m_framesToIgnore; - AFfileoffset m_savedPositionNextFrame; - AFframecount m_savedNextFrame; - - SharedPtr m_codecData; - ALACDecoder *m_decoder; - ALACEncoder *m_encoder; - int m_currentPacket; - - ALAC(Mode mode, Track *track, File *fh, bool canSeek, Buffer *codecData); - void initDecoder(); - void initEncoder(); - - AudioFormatDescription outputFormat() const; -}; - -ALAC::ALAC(Mode mode, Track *track, File *fh, bool canSeek, Buffer *codecData) : - FileModule(mode, track, fh, canSeek), - m_savedPositionNextFrame(-1), - m_savedNextFrame(-1), - m_codecData(codecData), - m_decoder(NULL), - m_encoder(NULL), - m_currentPacket(0) -{ - if (mode == Decompress) - initDecoder(); - else - initEncoder(); -} - -ALAC::~ALAC() -{ - delete m_decoder; - delete m_encoder; -} - -void ALAC::initDecoder() -{ - m_decoder = new ALACDecoder(); - m_decoder->Init(m_codecData->data(), m_codecData->size()); -} - -void ALAC::initEncoder() -{ - m_encoder = new ALACEncoder(); - m_encoder->SetFrameSize(m_track->f.framesPerPacket); - m_encoder->InitializeEncoder(outputFormat()); - - uint32_t cookieSize = m_encoder->GetMagicCookieSize(m_track->f.channelCount); - assert(cookieSize == m_codecData->size()); - m_encoder->GetMagicCookie(m_codecData->data(), &cookieSize); - - void *v = NULL; - _af_pv_getptr(m_track->f.compressionParams, _AF_CODEC_DATA, &v); - ::memcpy(v, m_codecData->data(), cookieSize); -} - -AudioFormatDescription ALAC::outputFormat() const -{ - AudioFormatDescription outputFormat; - outputFormat.mSampleRate = m_track->f.sampleRate; - outputFormat.mFormatID = kALACFormatAppleLossless; - switch (m_track->f.sampleWidth) - { - case 16: - outputFormat.mFormatFlags = kALACFormatFlag_16BitSourceData; break; - case 20: - outputFormat.mFormatFlags = kALACFormatFlag_20BitSourceData; break; - case 24: - outputFormat.mFormatFlags = kALACFormatFlag_24BitSourceData; break; - case 32: - outputFormat.mFormatFlags = kALACFormatFlag_32BitSourceData; break; - default: - outputFormat.mFormatFlags = 0; break; - } - outputFormat.mFramesPerPacket = m_track->f.framesPerPacket; - outputFormat.mChannelsPerFrame = m_track->f.channelCount; - outputFormat.mBytesPerPacket = 0; - outputFormat.mBytesPerFrame = 0; - outputFormat.mBitsPerChannel = 0; - outputFormat.mReserved = 0; - return outputFormat; -} - -void ALAC::describe() -{ - m_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE; - m_outChunk->f.compressionType = AF_COMPRESSION_NONE; - m_outChunk->f.compressionParams = AU_NULL_PVLIST; -} - -ALAC *ALAC::createDecompress(Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - assert(fh->tell() == track->fpos_first_frame); - - AUpvlist pv = (AUpvlist) track->f.compressionParams; - long codecDataSize; - if (!_af_pv_getlong(pv, _AF_CODEC_DATA_SIZE, &codecDataSize)) - { - _af_error(AF_BAD_CODEC_CONFIG, "codec data size not set"); - return NULL; - } - - SharedPtr codecData = new Buffer(codecDataSize); - - void *data; - if (!_af_pv_getptr(pv, _AF_CODEC_DATA, &data)) - { - _af_error(AF_BAD_CODEC_CONFIG, "codec data not set"); - return NULL; - } - - memcpy(codecData->data(), data, codecDataSize); - - *chunkFrames = track->f.framesPerPacket; - - return new ALAC(Decompress, track, fh, canSeek, codecData.get()); -} - -ALAC *ALAC::createCompress(Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - assert(fh->tell() == track->fpos_first_frame); - - AUpvlist pv = (AUpvlist) track->f.compressionParams; - long codecDataSize; - if (!_af_pv_getlong(pv, _AF_CODEC_DATA_SIZE, &codecDataSize)) - { - _af_error(AF_BAD_CODEC_CONFIG, "codec data size not set"); - return NULL; - } - - SharedPtr codecData = new Buffer(codecDataSize); - - void *data; - if (!_af_pv_getptr(pv, _AF_CODEC_DATA, &data)) - { - _af_error(AF_BAD_CODEC_CONFIG, "codec data not set"); - return NULL; - } - - memcpy(codecData->data(), data, codecDataSize); - - *chunkFrames = track->f.framesPerPacket; - - return new ALAC(Compress, track, fh, canSeek, codecData.get()); -} - -void ALAC::runPull() -{ - SharedPtr packetTable = m_track->m_packetTable; - if (m_currentPacket >= static_cast(packetTable->numPackets())) - { - m_outChunk->frameCount = 0; - return; - } - assert(m_currentPacket < static_cast(packetTable->numPackets())); - - ssize_t bytesPerPacket = packetTable->bytesPerPacket(m_currentPacket); - assert(bytesPerPacket <= bufferSize()); - - if (read(m_inChunk->buffer, bytesPerPacket) < bytesPerPacket) - { - reportReadError(0, m_track->f.framesPerPacket); - return; - } - - BitBuffer bitBuffer; - BitBufferInit(&bitBuffer, static_cast(m_inChunk->buffer), - bytesPerPacket); - - uint32_t numFrames; - m_decoder->Decode(&bitBuffer, static_cast(m_outChunk->buffer), - m_track->f.framesPerPacket, m_track->f.channelCount, &numFrames); - m_outChunk->frameCount = numFrames; - - m_currentPacket++; -} - -void ALAC::reset1() -{ - AFframecount nextFrame = m_track->nextfframe; - m_currentPacket = nextFrame / m_track->f.framesPerPacket; - m_track->nextfframe = m_currentPacket * m_track->f.framesPerPacket; - m_framesToIgnore = nextFrame - m_track->nextfframe; -} - -void ALAC::reset2() -{ - m_track->fpos_next_frame = m_track->fpos_first_frame + - m_track->m_packetTable->startOfPacket(m_currentPacket); - m_track->frames2ignore += m_framesToIgnore; -} - -int ALAC::bufferSize() const -{ - return m_track->f.framesPerPacket * m_track->f.channelCount * - ((10 + m_track->f.sampleWidth) / 8) + 1; -} - -void ALAC::runPush() -{ - AudioFormatDescription inputFormat; - inputFormat.mSampleRate = m_track->f.sampleRate; - inputFormat.mFormatID = kALACFormatLinearPCM; - inputFormat.mFormatFlags = kALACFormatFlagsNativeEndian; - inputFormat.mBytesPerPacket = _af_format_frame_size_uncompressed(&m_track->f, false); - inputFormat.mFramesPerPacket = 1; - inputFormat.mBytesPerFrame = _af_format_frame_size_uncompressed(&m_track->f, false); - inputFormat.mChannelsPerFrame = m_track->f.channelCount; - inputFormat.mBitsPerChannel = m_track->f.sampleWidth; - inputFormat.mReserved = 0; - - int32_t numBytes = m_inChunk->frameCount * inputFormat.mBytesPerFrame; - int32_t result = m_encoder->Encode(inputFormat, outputFormat(), - static_cast(m_inChunk->buffer), - static_cast(m_outChunk->buffer), - &numBytes); - if (result) - { - _af_error(AF_BAD_CODEC_STATE, "error encoding ALAC audio data"); - m_track->filemodhappy = false; - return; - } - - assert(numBytes <= bufferSize()); - - ssize_t bytesWritten = write(m_outChunk->buffer, numBytes); - if (bytesWritten != numBytes) - { - reportWriteError(0, m_track->f.framesPerPacket); - return; - } - - PacketTable *packetTable = m_track->m_packetTable.get(); - - packetTable->append(numBytes); - - packetTable->setNumValidFrames(packetTable->numValidFrames() + - m_inChunk->frameCount); -} - -void ALAC::sync1() -{ - m_savedPositionNextFrame = m_track->fpos_next_frame; - m_savedNextFrame = m_track->nextfframe; -} - -void ALAC::sync2() -{ - assert(!canSeek() || (tell() == m_track->fpos_next_frame)); - - m_track->fpos_after_data = tell(); - - m_track->fpos_next_frame = m_savedPositionNextFrame; - m_track->nextfframe = m_savedNextFrame; -} - -bool _af_alac_format_ok (AudioFormat *f) -{ - if (f->channelCount > kALACMaxChannels) - { - _af_error(AF_BAD_CHANNELS, - "ALAC compression supports a maximum of 8 channels"); - return false; - } - - if (f->sampleFormat != AF_SAMPFMT_TWOSCOMP) - { - _af_error(AF_BAD_COMPRESSION, - "ALAC compression requires signed integer audio data"); - return false; - } - - if (f->sampleWidth != 16 && - f->sampleWidth != 20 && - f->sampleWidth != 24 && - f->sampleWidth != 32) - { - _af_error(AF_BAD_WIDTH, - "ALAC compression requires 16, 20, 24, or 32 bits per sample"); - return false; - } - - if (f->byteOrder != _AF_BYTEORDER_NATIVE) - { - _af_error(AF_BAD_COMPRESSION, - "ALAC compression requires native-endian format"); - f->byteOrder = _AF_BYTEORDER_NATIVE; - } - - return true; -} - -FileModule *_af_alac_init_decompress (Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - return ALAC::createDecompress(track, fh, canSeek, headerless, chunkFrames); -} - -FileModule *_af_alac_init_compress (Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - return ALAC::createCompress(track, fh, canSeek, headerless, chunkFrames); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/ALAC.h b/tools/audiofile-0.3.6/libaudiofile/modules/ALAC.h deleted file mode 100644 index 8d5882ab..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/ALAC.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef ALAC_h -#define ALAC_h - -#include "Module.h" -#include "afinternal.h" -#include "audiofile.h" - -class File; -class FileModule; -struct AudioFormat; -struct Track; - -bool _af_alac_format_ok (AudioFormat *f); - -FileModule *_af_alac_init_decompress (Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkframes); - -FileModule *_af_alac_init_compress (Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkframes); - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/BlockCodec.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/BlockCodec.cpp deleted file mode 100644 index 45925e8b..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/BlockCodec.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "BlockCodec.h" - -#include "Track.h" - -#include - -BlockCodec::BlockCodec(Mode mode, Track *track, File *fh, bool canSeek) : - FileModule(mode, track, fh, canSeek), - m_bytesPerPacket(-1), - m_framesPerPacket(-1), - m_framesToIgnore(-1), - m_savedPositionNextFrame(-1), - m_savedNextFrame(-1) -{ - m_framesPerPacket = track->f.framesPerPacket; - m_bytesPerPacket = track->f.bytesPerPacket; -} - -void BlockCodec::runPull() -{ - AFframecount framesToRead = m_outChunk->frameCount; - AFframecount framesRead = 0; - - assert(framesToRead % m_framesPerPacket == 0); - int blockCount = framesToRead / m_framesPerPacket; - - // Read the compressed data. - ssize_t bytesRead = read(m_inChunk->buffer, m_bytesPerPacket * blockCount); - int blocksRead = bytesRead >= 0 ? bytesRead / m_bytesPerPacket : 0; - - // Decompress into m_outChunk. - for (int i=0; i(m_inChunk->buffer) + i * m_bytesPerPacket, - static_cast(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount); - - framesRead += m_framesPerPacket; - } - - m_track->nextfframe += framesRead; - - assert(tell() == m_track->fpos_next_frame); - - if (framesRead < framesToRead) - reportReadError(framesRead, framesToRead); - - m_outChunk->frameCount = framesRead; -} - -void BlockCodec::reset1() -{ - AFframecount nextTrackFrame = m_track->nextfframe; - m_track->nextfframe = (nextTrackFrame / m_framesPerPacket) * - m_framesPerPacket; - - m_framesToIgnore = nextTrackFrame - m_track->nextfframe; -} - -void BlockCodec::reset2() -{ - m_track->fpos_next_frame = m_track->fpos_first_frame + - m_bytesPerPacket * (m_track->nextfframe / m_framesPerPacket); - m_track->frames2ignore += m_framesToIgnore; - - assert(m_track->nextfframe % m_framesPerPacket == 0); -} - -void BlockCodec::runPush() -{ - AFframecount framesToWrite = m_inChunk->frameCount; - int channelCount = m_inChunk->f.channelCount; - - int blockCount = (framesToWrite + m_framesPerPacket - 1) / m_framesPerPacket; - for (int i=0; i(m_inChunk->buffer) + i * m_framesPerPacket * channelCount, - static_cast(m_outChunk->buffer) + i * m_bytesPerPacket); - } - - ssize_t bytesWritten = write(m_outChunk->buffer, m_bytesPerPacket * blockCount); - ssize_t blocksWritten = bytesWritten >= 0 ? bytesWritten / m_bytesPerPacket : 0; - AFframecount framesWritten = std::min((AFframecount) blocksWritten * m_framesPerPacket, framesToWrite); - - m_track->nextfframe += framesWritten; - m_track->totalfframes = m_track->nextfframe; - - assert(tell() == m_track->fpos_next_frame); - - if (framesWritten < framesToWrite) - reportWriteError(framesWritten, framesToWrite); -} - -void BlockCodec::sync1() -{ - m_savedPositionNextFrame = m_track->fpos_next_frame; - m_savedNextFrame = m_track->nextfframe; -} - -void BlockCodec::sync2() -{ - assert(tell() == m_track->fpos_next_frame); - m_track->fpos_after_data = tell(); - m_track->fpos_next_frame = m_savedPositionNextFrame; - m_track->nextfframe = m_savedNextFrame; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/BlockCodec.h b/tools/audiofile-0.3.6/libaudiofile/modules/BlockCodec.h deleted file mode 100644 index eb839d70..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/BlockCodec.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -// BlockCodec is a base class for codecs with fixed-size packets. - -#ifndef BlockCodec_h -#define BlockCodec_h - -#include "Compiler.h" -#include "FileModule.h" - -class BlockCodec : public FileModule -{ -public: - virtual void runPull() OVERRIDE; - virtual void reset1() OVERRIDE; - virtual void reset2() OVERRIDE; - virtual void runPush() OVERRIDE; - virtual void sync1() OVERRIDE; - virtual void sync2() OVERRIDE; - -protected: - int m_bytesPerPacket, m_framesPerPacket; - AFframecount m_framesToIgnore; - AFfileoffset m_savedPositionNextFrame; - AFframecount m_savedNextFrame; - - BlockCodec(Mode, Track *, File *, bool canSeek); - - virtual int decodeBlock(const uint8_t *encoded, int16_t *decoded) = 0; - virtual int encodeBlock(const int16_t *decoded, uint8_t *encoded) = 0; -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/FLAC.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/FLAC.cpp deleted file mode 100644 index 0960caf5..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/FLAC.cpp +++ /dev/null @@ -1,510 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "FLAC.h" - -#include "Compiler.h" -#include "FileModule.h" -#include "Features.h" -#include "Track.h" -#include "byteorder.h" - -#if ENABLE(FLAC) - -#include -#include -#include -#include -#include - -class FLACDecoder : public FileModule -{ -public: - static FLACDecoder *create(Track *track, File *file, bool canSeek, - bool headerless, AFframecount *chunkFrames); - - virtual ~FLACDecoder(); - - virtual const char *name() const OVERRIDE { return "flac_decompress"; } - - virtual void describe() OVERRIDE; - virtual void runPull() OVERRIDE; - virtual void reset1() OVERRIDE; - virtual void reset2() OVERRIDE; - - virtual bool handlesSeeking() const OVERRIDE { return true; } - -private: - FLACDecoder(Track *track, File *file, bool canSeek); - - FLAC__StreamDecoder *m_decoder; - std::vector m_buffer; - int m_bufferedFrames, m_bufferedOffset; - - void convertAndInterleave(int offset, int frameCount); - - static FLAC__StreamDecoderReadStatus readCallback(const FLAC__StreamDecoder *, FLAC__byte buffer[], size_t *bytes, void *clientData) - { - FLACDecoder *flac = static_cast(clientData); - ssize_t result = flac->read(buffer, *bytes); - if (result > 0) - { - *bytes = result; - return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; - } - - *bytes = 0; - return FLAC__STREAM_DECODER_READ_STATUS_ABORT; - } - - static FLAC__StreamDecoderSeekStatus seekCallback(const FLAC__StreamDecoder *, FLAC__uint64 absoluteByteOffset, void *clientData) - { - FLACDecoder *flac = static_cast(clientData); - if (flac->seek(absoluteByteOffset) < 0) - return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; - return FLAC__STREAM_DECODER_SEEK_STATUS_OK; - } - - static FLAC__StreamDecoderTellStatus tellCallback(const FLAC__StreamDecoder *, FLAC__uint64 *absoluteByteOffset, void *clientData) - { - FLACDecoder *flac = static_cast(clientData); - off_t result = flac->tell(); - if (result < 0) - return FLAC__STREAM_DECODER_TELL_STATUS_ERROR; - *absoluteByteOffset = static_cast(result); - return FLAC__STREAM_DECODER_TELL_STATUS_OK; - } - - static FLAC__StreamDecoderLengthStatus lengthCallback(const FLAC__StreamDecoder *, FLAC__uint64 *length, void *clientData) - { - FLACDecoder *flac = static_cast(clientData); - off_t result = flac->length(); - if (result < 0) - return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR; - *length = result; - return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; - } - - static FLAC__bool eofCallback(const FLAC__StreamDecoder *, void *clientData) - { - FLACDecoder *flac = static_cast(clientData); - return flac->tell() == flac->length(); - } - - static FLAC__StreamDecoderWriteStatus writeCallback(const FLAC__StreamDecoder *, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *clientData) - { - FLACDecoder *flac = static_cast(clientData); - flac->didDecodeFrame(frame, buffer); - return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; - } - - static void metadataCallback(const FLAC__StreamDecoder *, const FLAC__StreamMetadata *metadata, void *clientData) - { - } - - static void errorCallback(const FLAC__StreamDecoder *, FLAC__StreamDecoderErrorStatus status, void *clientData) - { - _af_error(AF_BAD_CODEC_CONFIG, "FLAC decoding error %d", status); - } - - void didDecodeFrame(const FLAC__Frame *frame, const FLAC__int32 * const buffer[]) - { - m_bufferedFrames = frame->header.blocksize; - m_bufferedOffset = 0; - for (unsigned c=0; cheader.channels; c++) - memcpy(m_buffer[c], buffer[c], frame->header.blocksize * sizeof (int32_t)); - - m_track->nextfframe += frame->header.blocksize; - } -}; - -FLACDecoder *FLACDecoder::create(Track *track, File *file, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ - return new FLACDecoder(track, file, canSeek); -} - -FLACDecoder::FLACDecoder(Track *track, File *file, bool canSeek) : - FileModule(Decompress, track, file, canSeek), - m_decoder(NULL), - m_bufferedFrames(0), - m_bufferedOffset(0) -{ - m_decoder = FLAC__stream_decoder_new(); - - if (FLAC__stream_decoder_init_stream(m_decoder, - readCallback, - seekCallback, - tellCallback, - lengthCallback, - eofCallback, - writeCallback, - metadataCallback, - errorCallback, - this) != FLAC__STREAM_DECODER_INIT_STATUS_OK) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not initialize FLAC decoder"); - return; - } - - m_buffer.resize(m_track->f.channelCount); - for (int c=0; cf.channelCount; c++) - m_buffer[c] = new int32_t[FLAC__MAX_BLOCK_SIZE]; -} - -FLACDecoder::~FLACDecoder() -{ - if (m_decoder) - { - FLAC__stream_decoder_delete(m_decoder); - m_decoder = NULL; - } - - for (size_t i=0; if.byteOrder = _AF_BYTEORDER_NATIVE; - m_outChunk->f.compressionType = AF_COMPRESSION_NONE; - m_outChunk->f.compressionParams = AU_NULL_PVLIST; -} - -void FLACDecoder::convertAndInterleave(int offset, int frameCount) -{ - int channelCount = m_outChunk->f.channelCount; - - if (m_track->f.sampleWidth == 16) - { - int16_t *out = static_cast(m_outChunk->buffer); - for (int i=0; if.sampleWidth == 24) - { - uint8_t *out = static_cast(m_outChunk->buffer); - for (int i=0; i> 16) & 0xff; - c1 = (in >> 8) & 0xff; - c2 = in & 0xff; -#else - c2 = (in >> 16) & 0xff; - c1 = (in >> 8) & 0xff; - c0 = in & 0xff; -#endif - - int outIndex = (offset+i) * channelCount + c; - out[3*outIndex] = c0; - out[3*outIndex+1] = c1; - out[3*outIndex+2] = c2; - } - } - } - - m_bufferedOffset += frameCount; -} - -void FLACDecoder::runPull() -{ - int framesToRead = m_outChunk->frameCount; - int offset = 0; - while (framesToRead > 0) - { - int bufferedFramesToRead = std::min(framesToRead, - m_bufferedFrames - m_bufferedOffset); - convertAndInterleave(offset, bufferedFramesToRead); - offset += bufferedFramesToRead; - framesToRead -= bufferedFramesToRead; - - if (framesToRead > 0) - { - if (!FLAC__stream_decoder_process_single(m_decoder)) - break; - if (FLAC__stream_decoder_get_state(m_decoder) >= FLAC__STREAM_DECODER_END_OF_STREAM) - break; - } - } -} - -void FLACDecoder::reset1() -{ -} - -void FLACDecoder::reset2() -{ - if (!FLAC__stream_decoder_seek_absolute(m_decoder, m_track->nextfframe)) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not seek to frame %jd", - static_cast(m_track->nextfframe)); - } -} - -class FLACEncoder : public FileModule -{ -public: - static FLACEncoder *create(Track *track, File *file, bool canSeek, - bool headerless, AFframecount *chunkFrames); - - virtual ~FLACEncoder(); - - virtual const char *name() const OVERRIDE { return "flac_compress"; } - - virtual void describe() OVERRIDE; - virtual void runPush() OVERRIDE; - virtual void sync1() OVERRIDE; - virtual void sync2() OVERRIDE; - - virtual bool handlesSeeking() const OVERRIDE { return true; } - -private: - FLAC__StreamEncoder *m_encoder; - FLAC__int32 *m_buffer; - - FLACEncoder(Track *track, File *file, bool canSeek); - - void convert16To32(); - void convert24To32(); - - static FLAC__StreamEncoderSeekStatus seekCallback(const FLAC__StreamEncoder *, FLAC__uint64 absoluteByteOffset, void *clientData) - { - FLACEncoder *flac = static_cast(clientData); - off_t result = flac->seek(absoluteByteOffset); - if (result < 0) - return FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR; - return FLAC__STREAM_ENCODER_SEEK_STATUS_OK; - } - - static FLAC__StreamEncoderTellStatus tellCallback(const FLAC__StreamEncoder *, FLAC__uint64 *absoluteByteOffset, void *clientData) - { - FLACEncoder *flac = static_cast(clientData); - off_t offset = flac->tell(); - if (offset < 0) - return FLAC__STREAM_ENCODER_TELL_STATUS_ERROR; - *absoluteByteOffset = static_cast(offset); - return FLAC__STREAM_ENCODER_TELL_STATUS_OK; - } - - static FLAC__StreamEncoderWriteStatus writeCallback(const FLAC__StreamEncoder *, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned currentFrame, void *clientData) - { - FLACEncoder *flac = static_cast(clientData); - ssize_t result = flac->write(buffer, bytes); - if (result == static_cast(bytes)) - return FLAC__STREAM_ENCODER_WRITE_STATUS_OK; - return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR; - } -}; - -FLACEncoder::FLACEncoder(Track *track, File *file, bool canSeek) : - FileModule(Compress, track, file, canSeek), - m_encoder(NULL), - m_buffer(NULL) -{ - m_encoder = FLAC__stream_encoder_new(); - if (!m_encoder) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not create encoder"); - return; - } - - if (!FLAC__stream_encoder_set_channels(m_encoder, m_track->f.channelCount)) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not set channel count"); - return; - } - - if (!FLAC__stream_encoder_set_sample_rate(m_encoder, m_track->f.sampleRate)) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not set sample rate"); - return; - } - - if (!FLAC__stream_encoder_set_bits_per_sample(m_encoder, m_track->f.sampleWidth)) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not set sample width"); - return; - } - - if (FLAC__stream_encoder_init_stream(m_encoder, - writeCallback, - seekCallback, - tellCallback, - NULL, - this) != FLAC__STREAM_ENCODER_INIT_STATUS_OK) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not initialize FLAC encoder"); - return; - } - - m_buffer = new int32_t[FLAC__MAX_BLOCK_SIZE * m_track->f.channelCount]; -} - -FLACEncoder::~FLACEncoder() -{ - if (m_encoder) - { - FLAC__stream_encoder_delete(m_encoder); - m_encoder = NULL; - } - - delete [] m_buffer; -} - -FLACEncoder *FLACEncoder::create(Track *track, File *file, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ - return new FLACEncoder(track, file, canSeek); -} - -void FLACEncoder::describe() -{ - m_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE; - m_outChunk->f.compressionType = AF_COMPRESSION_FLAC; -} - -void FLACEncoder::runPush() -{ - if (m_track->f.sampleWidth == 16) - convert16To32(); - else if (m_track->f.sampleWidth == 24) - convert24To32(); - - if (!FLAC__stream_encoder_process_interleaved(m_encoder, m_buffer, - m_inChunk->frameCount)) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not encode data into FLAC stream"); - } - - m_track->nextfframe += m_inChunk->frameCount; - m_track->totalfframes = m_track->nextfframe; -} - -void FLACEncoder::sync1() -{ -} - -void FLACEncoder::sync2() -{ - if (!FLAC__stream_encoder_finish(m_encoder)) - { - _af_error(AF_BAD_CODEC_CONFIG, "could not finish encoding"); - } -} - -void FLACEncoder::convert16To32() -{ - int channelCount = m_track->f.channelCount; - const int16_t *src = static_cast(m_inChunk->buffer); - for (unsigned i=0; iframeCount; i++) - for (int c=0; cf.channelCount; - const uint8_t *src = static_cast(m_inChunk->buffer); - for (unsigned i=0; iframeCount; i++) - for (int c=0; c> 8; - } -} - -bool _af_flac_format_ok(AudioFormat *f) -{ - if (f->channelCount > static_cast(FLAC__MAX_CHANNELS)) - { - _af_error(AF_BAD_COMPRESSION, - "FLAC compression supports a maximum of 8 channels"); - return false; - } - - if (f->sampleFormat != AF_SAMPFMT_TWOSCOMP || - (f->sampleWidth != 16 && f->sampleWidth != 24)) - { - _af_error(AF_BAD_COMPRESSION, - "FLAC compression requires 16- or 24-bit signed integer format"); - return false; - } - - if (f->byteOrder != _AF_BYTEORDER_NATIVE) - { - _af_error(AF_BAD_COMPRESSION, - "FLAC compression requires native byte order"); - return false; - } - - return true; -} - -#else - -bool _af_flac_format_ok(AudioFormat *) -{ - return false; -} - -#endif - -FileModule *_af_flac_init_compress(Track *track, File *file, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ -#if ENABLE(FLAC) - return FLACEncoder::create(track, file, canSeek, headerless, chunkFrames); -#else - return NULL; -#endif -} - -FileModule *_af_flac_init_decompress(Track *track, File *file, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ -#if ENABLE(FLAC) - return FLACDecoder::create(track, file, canSeek, headerless, chunkFrames); -#else - return NULL; -#endif -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/FLAC.h b/tools/audiofile-0.3.6/libaudiofile/modules/FLAC.h deleted file mode 100644 index 0da9d03f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/FLAC.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef FLAC_h -#define FLAC_h - -#include "afinternal.h" -#include "audiofile.h" - -class FileModule; -class File; -struct AudioFormat; -struct Track; - -bool _af_flac_format_ok (AudioFormat *f); - -FileModule *_af_flac_init_decompress(Track *, File *, - bool canSeek, bool headerless, AFframecount *chunkframes); - -FileModule *_af_flac_init_compress(Track *, File *, - bool canSeek, bool headerless, AFframecount *chunkframes); - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/FileModule.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/FileModule.cpp deleted file mode 100644 index 239e4d25..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/FileModule.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010-2012, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "FileModule.h" - -#include "File.h" -#include "Track.h" - -#include -#include - -FileModule::FileModule(Mode mode, Track *track, File *fh, bool canSeek) : - m_mode(mode), - m_track(track), - m_fh(fh), - m_canSeek(canSeek) -{ - track->fpos_next_frame = track->fpos_first_frame; - track->frames2ignore = 0; -} - -ssize_t FileModule::read(void *data, size_t nbytes) -{ - ssize_t bytesRead = m_fh->read(data, nbytes); - if (bytesRead > 0) - { - m_track->fpos_next_frame += bytesRead; - } - return bytesRead; -} - -ssize_t FileModule::write(const void *data, size_t nbytes) -{ - ssize_t bytesWritten = m_fh->write(data, nbytes); - if (bytesWritten > 0) - { - m_track->fpos_next_frame += bytesWritten; - m_track->data_size += bytesWritten; - } - return bytesWritten; -} - -off_t FileModule::seek(off_t offset) -{ - return m_fh->seek(offset, File::SeekFromBeginning); -} - -off_t FileModule::tell() -{ - return m_fh->tell(); -} - -off_t FileModule::length() -{ - return m_fh->length(); -} - -void FileModule::reportReadError(AFframecount framesRead, - AFframecount framesToRead) -{ - // Report error if we haven't already. - if (!m_track->filemodhappy) - return; - - _af_error(AF_BAD_READ, - "file missing data -- read %jd frames, should be %jd", - static_cast(m_track->nextfframe), - static_cast(m_track->totalfframes)); - m_track->filemodhappy = false; -} - -void FileModule::reportWriteError(AFframecount framesWritten, - AFframecount framesToWrite) -{ - // Report error if we haven't already. - if (!m_track->filemodhappy) - return; - - if (framesWritten < 0) - { - // Signal I/O error. - _af_error(AF_BAD_WRITE, - "unable to write data (%s) -- wrote %jd out of %jd frames", - strerror(errno), - static_cast(m_track->nextfframe), - static_cast(m_track->nextfframe + framesToWrite)); - } - else - { - // Signal disk full error. - _af_error(AF_BAD_WRITE, - "unable to write data (disk full) -- " - "wrote %jd out of %jd frames", - static_cast(m_track->nextfframe + framesWritten), - static_cast(m_track->nextfframe + framesToWrite)); - } - - m_track->filemodhappy = false; -} - -int FileModule::bufferSize() const -{ - if (mode() == Compress) - return outChunk()->frameCount * inChunk()->f.bytesPerFrame(true); - else - return inChunk()->frameCount * outChunk()->f.bytesPerFrame(true); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/FileModule.h b/tools/audiofile-0.3.6/libaudiofile/modules/FileModule.h deleted file mode 100644 index 0b61cf3b..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/FileModule.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010-2012, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef FILE_MODULE_H -#define FILE_MODULE_H - -#include "Module.h" - -class FileModule : public Module -{ -public: - virtual bool handlesSeeking() const { return false; } - - virtual int bufferSize() const; - -protected: - enum Mode { Compress, Decompress }; - FileModule(Mode, Track *, File *fh, bool canSeek); - - Mode mode() const { return m_mode; } - bool canSeek() const { return m_canSeek; } - - ssize_t read(void *data, size_t nbytes); - ssize_t write(const void *data, size_t nbytes); - off_t seek(off_t offset); - off_t tell(); - off_t length(); - -private: - Mode m_mode; - -protected: - Track *m_track; - - void reportReadError(AFframecount framesRead, AFframecount framesRequested); - void reportWriteError(AFframecount framesWritten, AFframecount framesRequested); - -private: - File *m_fh; - bool m_canSeek; -}; - -#endif // FILE_MODULE_H diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/G711.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/G711.cpp deleted file mode 100644 index cb93af98..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/G711.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000-2001, Silicon Graphics, Inc. - Copyright (C) 2010-2013, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "G711.h" - -#include - -#include "Compiler.h" -#include "FileModule.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "byteorder.h" -#include "compression.h" -#include "units.h" -#include "util.h" - -#include "../g711.h" - -static void ulaw2linear_buf (const uint8_t *ulaw, int16_t *linear, int nsamples) -{ - for (int i=0; i < nsamples; i++) - linear[i] = _af_ulaw2linear(ulaw[i]); -} - -static void linear2ulaw_buf (const int16_t *linear, uint8_t *ulaw, int nsamples) -{ - for (int i=0; i < nsamples; i++) - ulaw[i] = _af_linear2ulaw(linear[i]); -} - -static void alaw2linear_buf (const uint8_t *alaw, int16_t *linear, int nsamples) -{ - for (int i=0; i < nsamples; i++) - linear[i] = _af_alaw2linear(alaw[i]); -} - -static void linear2alaw_buf (const int16_t *linear, uint8_t *alaw, int nsamples) -{ - for (int i=0; i < nsamples; i++) - alaw[i] = _af_linear2alaw(linear[i]); -} - -bool _af_g711_format_ok (AudioFormat *f) -{ - if (f->sampleFormat != AF_SAMPFMT_TWOSCOMP || f->sampleWidth != 16) - { - _af_error(AF_BAD_COMPRESSION, - "G.711 compression requires 16-bit signed integer format"); - return false; - } - - if (f->byteOrder != _AF_BYTEORDER_NATIVE) - { - _af_error(AF_BAD_COMPRESSION, - "G.711 compression requires native byte order"); - return false; - } - - return true; -} - -class G711 : public FileModule -{ -public: - static G711 *createCompress(Track *trk, File *fh, bool canSeek, - bool headerless, AFframecount *chunkframes); - static G711 *createDecompress(Track *trk, File *fh, bool canSeek, - bool headerless, AFframecount *chunkframes); - - virtual const char *name() const OVERRIDE - { - return mode() == Compress ? "g711compress" : "g711decompress"; - } - virtual void describe() OVERRIDE; - virtual void runPull() OVERRIDE; - virtual void reset2() OVERRIDE; - virtual void runPush() OVERRIDE; - virtual void sync1() OVERRIDE; - virtual void sync2() OVERRIDE; - -private: - G711(Mode mode, Track *track, File *fh, bool canSeek); - - AFfileoffset m_savedPositionNextFrame; - AFframecount m_savedNextFrame; -}; - -G711::G711(Mode mode, Track *track, File *fh, bool canSeek) : - FileModule(mode, track, fh, canSeek), - m_savedPositionNextFrame(-1), - m_savedNextFrame(-1) -{ - if (mode == Decompress) - track->f.compressionParams = AU_NULL_PVLIST; -} - -G711 *G711::createCompress(Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkframes) -{ - return new G711(Compress, track, fh, canSeek); -} - -void G711::runPush() -{ - AFframecount framesToWrite = m_inChunk->frameCount; - AFframecount samplesToWrite = m_inChunk->frameCount * m_inChunk->f.channelCount; - int framesize = m_inChunk->f.channelCount; - - assert(m_track->f.compressionType == AF_COMPRESSION_G711_ULAW || - m_track->f.compressionType == AF_COMPRESSION_G711_ALAW); - - /* Compress frames into i->outc. */ - - if (m_track->f.compressionType == AF_COMPRESSION_G711_ULAW) - linear2ulaw_buf(static_cast(m_inChunk->buffer), - static_cast(m_outChunk->buffer), samplesToWrite); - else - linear2alaw_buf(static_cast(m_inChunk->buffer), - static_cast(m_outChunk->buffer), samplesToWrite); - - /* Write the compressed data. */ - - ssize_t bytesWritten = write(m_outChunk->buffer, framesize * framesToWrite); - AFframecount framesWritten = bytesWritten >= 0 ? bytesWritten / framesize : 0; - - if (framesWritten != framesToWrite) - reportWriteError(framesWritten, framesToWrite); - - m_track->nextfframe += framesWritten; - m_track->totalfframes = m_track->nextfframe; - - assert(!canSeek() || (tell() == m_track->fpos_next_frame)); -} - -void G711::sync1() -{ - m_savedPositionNextFrame = m_track->fpos_next_frame; - m_savedNextFrame = m_track->nextfframe; -} - -void G711::sync2() -{ - /* sanity check. */ - assert(!canSeek() || (tell() == m_track->fpos_next_frame)); - - /* We can afford to do an lseek just in case because sync2 is rare. */ - m_track->fpos_after_data = tell(); - - m_track->fpos_next_frame = m_savedPositionNextFrame; - m_track->nextfframe = m_savedNextFrame; -} - -void G711::describe() -{ - if (mode() == Compress) - { - m_outChunk->f.compressionType = m_track->f.compressionType; - } - else - { - m_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE; - m_outChunk->f.compressionType = AF_COMPRESSION_NONE; - } -} - -G711 *G711::createDecompress(Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkframes) -{ - return new G711(Decompress, track, fh, canSeek); -} - -void G711::runPull() -{ - AFframecount framesToRead = m_outChunk->frameCount; - AFframecount samplesToRead = m_outChunk->frameCount * m_outChunk->f.channelCount; - int framesize = m_outChunk->f.channelCount; - - /* Read the compressed frames. */ - - ssize_t bytesRead = read(m_inChunk->buffer, framesize * framesToRead); - AFframecount framesRead = bytesRead >= 0 ? bytesRead / framesize : 0; - - /* Decompress into i->outc. */ - - if (m_track->f.compressionType == AF_COMPRESSION_G711_ULAW) - ulaw2linear_buf(static_cast(m_inChunk->buffer), - static_cast(m_outChunk->buffer), samplesToRead); - else - alaw2linear_buf(static_cast(m_inChunk->buffer), - static_cast(m_outChunk->buffer), samplesToRead); - - m_track->nextfframe += framesRead; - assert(!canSeek() || (tell() == m_track->fpos_next_frame)); - - /* - If we got EOF from read, then we return the actual amount read. - - Complain only if there should have been more frames in the file. - */ - - if (m_track->totalfframes != -1 && framesRead != framesToRead) - reportReadError(framesRead, framesToRead); - - m_outChunk->frameCount = framesRead; -} - -void G711::reset2() -{ - int framesize = m_inChunk->f.channelCount; - - m_track->fpos_next_frame = m_track->fpos_first_frame + - framesize * m_track->nextfframe; - - m_track->frames2ignore = 0; -} - -FileModule *_AFg711initcompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ - return G711::createCompress(track, fh, canSeek, headerless, chunkFrames); -} - -FileModule *_AFg711initdecompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ - return G711::createDecompress(track, fh, canSeek, headerless, chunkFrames); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/G711.h b/tools/audiofile-0.3.6/libaudiofile/modules/G711.h deleted file mode 100644 index e1ba3d5c..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/G711.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - g711.h -*/ - -#ifndef MODULES_G711_H -#define MODULES_G711_H - -#include "afinternal.h" -#include "audiofile.h" - -class File; -class FileModule; -struct AudioFormat; -struct Track; - -bool _af_g711_format_ok (AudioFormat *f); - -FileModule *_AFg711initcompress (Track *, File *, bool canSeek, - bool headerless, AFframecount *chunkframes); - -FileModule *_AFg711initdecompress (Track *, File *, bool canSeek, - bool headerless, AFframecount *chunkframes); - -#endif /* MODULES_G711_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/IMA.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/IMA.cpp deleted file mode 100644 index 7476d445..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/IMA.cpp +++ /dev/null @@ -1,418 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010-2013, Michael Pruett - Copyright (C) 2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - This module implements IMA ADPCM compression. -*/ - -#include "config.h" -#include "IMA.h" - -#include - -#include - -#include "BlockCodec.h" -#include "Compiler.h" -#include "File.h" -#include "Track.h" -#include "afinternal.h" -#include "byteorder.h" -#include "util.h" -#include "../pcm.h" - -struct adpcmState -{ - int previousValue; // previous output value - int index; // index into step table - - adpcmState() - { - previousValue = 0; - index = 0; - } -}; - -class IMA : public BlockCodec -{ -public: - static IMA *createDecompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames); - static IMA *createCompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames); - - virtual ~IMA(); - - virtual const char *name() const OVERRIDE - { - return mode() == Compress ? - "ima_adpcm_compress" : "ima_adpcm_decompress"; - } - virtual void describe() OVERRIDE; - -private: - int m_imaType; - adpcmState *m_adpcmState; - - IMA(Mode, Track *, File *fh, bool canSeek); - - int decodeBlock(const uint8_t *encoded, int16_t *decoded) OVERRIDE; - int decodeBlockWAVE(const uint8_t *encoded, int16_t *decoded); - int decodeBlockQT(const uint8_t *encoded, int16_t *decoded); - - int encodeBlock(const int16_t *input, uint8_t *output) OVERRIDE; - int encodeBlockWAVE(const int16_t *input, uint8_t *output); - int encodeBlockQT(const int16_t *input, uint8_t *output); -}; - -IMA::IMA(Mode mode, Track *track, File *fh, bool canSeek) : - BlockCodec(mode, track, fh, canSeek), - m_imaType(0) -{ - AUpvlist pv = (AUpvlist) track->f.compressionParams; - - m_framesPerPacket = track->f.framesPerPacket; - m_bytesPerPacket = track->f.bytesPerPacket; - - long l; - if (_af_pv_getlong(pv, _AF_IMA_ADPCM_TYPE, &l)) - m_imaType = l; - - m_adpcmState = new adpcmState[track->f.channelCount]; -} - -IMA::~IMA() -{ - delete [] m_adpcmState; -} - -int IMA::decodeBlock(const uint8_t *encoded, int16_t *decoded) -{ - if (m_imaType == _AF_IMA_ADPCM_TYPE_WAVE) - return decodeBlockWAVE(encoded, decoded); - else if (m_imaType == _AF_IMA_ADPCM_TYPE_QT) - return decodeBlockQT(encoded, decoded); - return 0; -} - -static const int8_t indexTable[16] = -{ - -1, -1, -1, -1, 2, 4, 6, 8, - -1, -1, -1, -1, 2, 4, 6, 8, -}; - -static const int16_t stepTable[89] = -{ - 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, - 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, - 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, - 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, - 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, - 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, - 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, - 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, - 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 -}; - -static inline int clamp(int x, int low, int high) -{ - if (x < low) return low; - if (x > high) return high; - return x; -} - -static inline int16_t decodeSample(adpcmState &state, uint8_t code) -{ - int step = stepTable[state.index]; - - int diff = step >> 3; - if (code & 4) diff += step; - if (code & 2) diff += step>>1; - if (code & 1) diff += step>>2; - - int predictor = state.previousValue; - if (code & 8) - predictor -= diff; - else - predictor += diff; - - state.previousValue = clamp(predictor, MIN_INT16, MAX_INT16); - state.index = clamp(state.index + indexTable[code], 0, 88); - return state.previousValue; -} - -int IMA::decodeBlockWAVE(const uint8_t *encoded, int16_t *decoded) -{ - int channelCount = m_track->f.channelCount; - - for (int c=0; c> 4); - output += channelCount; - encoded++; - } - } - - decoded += channelCount * 8; - } - - return m_framesPerPacket * channelCount * sizeof (int16_t); -} - - -int IMA::decodeBlockQT(const uint8_t *encoded, int16_t *decoded) -{ - int channelCount = m_track->f.channelCount; - - for (int c=0; c> 4); - encoded++; - } - } - - return m_framesPerPacket * channelCount * sizeof (int16_t); -} - -int IMA::encodeBlock(const int16_t *input, uint8_t *output) -{ - if (m_imaType == _AF_IMA_ADPCM_TYPE_WAVE) - return encodeBlockWAVE(input, output); - else if (m_imaType == _AF_IMA_ADPCM_TYPE_QT) - return encodeBlockQT(input, output); - return 0; -} - -static inline uint8_t encodeSample(adpcmState &state, int16_t sample) -{ - int step = stepTable[state.index]; - int diff = sample - state.previousValue; - int vpdiff = step >> 3; - uint8_t code = 0; - if (diff < 0) - { - code = 8; - diff = -diff; - } - if (diff >= step) - { - code |= 4; - diff -= step; - vpdiff += step; - } - step >>= 1; - if (diff >= step) - { - code |= 2; - diff -= step; - vpdiff += step; - } - step >>= 1; - if (diff >= step) - { - code |= 1; - vpdiff += step; - } - - if (code & 8) - vpdiff = -vpdiff; - state.previousValue = clamp(state.previousValue + vpdiff, - MIN_INT16, MAX_INT16); - - state.index = clamp(state.index + indexTable[code], 0, 88); - return code & 0xf; -} - -int IMA::encodeBlockWAVE(const int16_t *input, uint8_t *output) -{ - int channelCount = m_track->f.channelCount; - - for (int c=0; c> 8; - output[2] = m_adpcmState[c].index; - output[3] = 0; - - output += 4; - } - - for (int n=0; nf.channelCount; - - for (int c=0; c> 8) & 0xff; - output[1] = (state.previousValue & 0x80) | (state.index & 0x7f); - output += 2; - - for (int n=0; nchannelCount != 1 && f->channelCount != 2) - { - _af_error(AF_BAD_COMPRESSION, - "IMA ADPCM compression requires 1 or 2 channels"); - return false; - } - - if (f->sampleFormat != AF_SAMPFMT_TWOSCOMP || f->sampleWidth != 16) - { - _af_error(AF_BAD_COMPRESSION, - "IMA ADPCM compression requires 16-bit signed integer format"); - return false; - } - - if (f->byteOrder != _AF_BYTEORDER_NATIVE) - { - _af_error(AF_BAD_COMPRESSION, - "IMA ADPCM compression requires native byte order"); - return false; - } - - return true; -} - -void IMA::describe() -{ - m_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE; - m_outChunk->f.compressionType = AF_COMPRESSION_NONE; - m_outChunk->f.compressionParams = AU_NULL_PVLIST; -} - -IMA *IMA::createDecompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ - assert(fh->tell() == track->fpos_first_frame); - - IMA *ima = new IMA(Decompress, track, fh, canSeek); - - if (!ima->m_imaType) - { - _af_error(AF_BAD_CODEC_CONFIG, "IMA type not set"); - delete ima; - return NULL; - } - - *chunkFrames = ima->m_framesPerPacket; - return ima; -} - -IMA *IMA::createCompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ - assert(fh->tell() == track->fpos_first_frame); - - IMA *ima = new IMA(Compress, track, fh, canSeek); - - if (!ima->m_imaType) - { - _af_error(AF_BAD_CODEC_CONFIG, "IMA type not set"); - delete ima; - return NULL; - } - - *chunkFrames = ima->m_framesPerPacket; - return ima; -} - -FileModule *_af_ima_adpcm_init_decompress(Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - return IMA::createDecompress(track, fh, canSeek, headerless, chunkFrames); -} - -FileModule *_af_ima_adpcm_init_compress(Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - return IMA::createCompress(track, fh, canSeek, headerless, chunkFrames); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/IMA.h b/tools/audiofile-0.3.6/libaudiofile/modules/IMA.h deleted file mode 100644 index e14467be..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/IMA.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010-2012, Michael Pruett - Copyright (C) 2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - IMA.h - - This module declares the interface for the IMA ADPCM - compression module. -*/ - -#ifndef IMA_H -#define IMA_H - -#include "afinternal.h" -#include "audiofile.h" - -class File; -class FileModule; -struct AudioFormat; -struct Track; - -bool _af_ima_adpcm_format_ok(AudioFormat *); - -FileModule *_af_ima_adpcm_init_compress(Track *, File *, - bool canSeek, bool headerless, AFframecount *chunkframes); -FileModule *_af_ima_adpcm_init_decompress(Track *, File *, - bool canSeek, bool headerless, AFframecount *chunkframes); - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/MSADPCM.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/MSADPCM.cpp deleted file mode 100644 index 8ea3c851..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/MSADPCM.cpp +++ /dev/null @@ -1,452 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010-2013, Michael Pruett - Copyright (C) 2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - This module implements Microsoft ADPCM compression. -*/ - -#include "config.h" -#include "MSADPCM.h" - -#include -#include -#include -#include - -#include "BlockCodec.h" -#include "Compiler.h" -#include "File.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "byteorder.h" -#include "util.h" -#include "../pcm.h" - -struct ms_adpcm_state -{ - uint8_t predictorIndex; - int delta; - int16_t sample1, sample2; - - ms_adpcm_state() - { - predictorIndex = 0; - delta = 16; - sample1 = 0; - sample2 = 0; - } -}; - -class MSADPCM : public BlockCodec -{ -public: - static MSADPCM *createDecompress(Track *, File *, bool canSeek, - bool headerless, AFframecount *chunkFrames); - static MSADPCM *createCompress(Track *, File *, bool canSeek, - bool headerless, AFframecount *chunkFrames); - - virtual ~MSADPCM(); - - bool initializeCoefficients(); - - virtual const char *name() const OVERRIDE - { - return mode() == Compress ? "ms_adpcm_compress" : "ms_adpcm_decompress"; - } - virtual void describe() OVERRIDE; - -private: - // m_coefficients is an array of m_numCoefficients ADPCM coefficient pairs. - int m_numCoefficients; - int16_t m_coefficients[256][2]; - - ms_adpcm_state *m_state; - - MSADPCM(Mode mode, Track *track, File *fh, bool canSeek); - - int decodeBlock(const uint8_t *encoded, int16_t *decoded) OVERRIDE; - int encodeBlock(const int16_t *decoded, uint8_t *encoded) OVERRIDE; - void choosePredictorForBlock(const int16_t *decoded); -}; - -static inline int clamp(int x, int low, int high) -{ - if (x < low) return low; - if (x > high) return high; - return x; -} - -static const int16_t adaptationTable[] = -{ - 230, 230, 230, 230, 307, 409, 512, 614, - 768, 614, 512, 409, 307, 230, 230, 230 -}; - -// Compute a linear PCM value from the given differential coded value. -static int16_t decodeSample(ms_adpcm_state &state, - uint8_t code, const int16_t *coefficient) -{ - int linearSample = (state.sample1 * coefficient[0] + - state.sample2 * coefficient[1]) >> 8; - - linearSample += ((code & 0x08) ? (code - 0x10) : code) * state.delta; - - linearSample = clamp(linearSample, MIN_INT16, MAX_INT16); - - int delta = (state.delta * adaptationTable[code]) >> 8; - if (delta < 16) - delta = 16; - - state.delta = delta; - state.sample2 = state.sample1; - state.sample1 = linearSample; - - return static_cast(linearSample); -} - -// Compute a differential coded value from the given linear PCM sample. -static uint8_t encodeSample(ms_adpcm_state &state, int16_t sample, - const int16_t *coefficient) -{ - int predictor = (state.sample1 * coefficient[0] + - state.sample2 * coefficient[1]) >> 8; - int code = sample - predictor; - int bias = state.delta / 2; - if (code < 0) - bias = -bias; - code = (code + bias) / state.delta; - code = clamp(code, -8, 7) & 0xf; - - predictor += ((code & 0x8) ? (code - 0x10) : code) * state.delta; - - state.sample2 = state.sample1; - state.sample1 = clamp(predictor, MIN_INT16, MAX_INT16); - state.delta = (adaptationTable[code] * state.delta) >> 8; - if (state.delta < 16) - state.delta = 16; - return code; -} - -// Decode one block of MS ADPCM data. -int MSADPCM::decodeBlock(const uint8_t *encoded, int16_t *decoded) -{ - ms_adpcm_state decoderState[2]; - ms_adpcm_state *state[2]; - - int channelCount = m_track->f.channelCount; - - // Calculate the number of bytes needed for decoded data. - int outputLength = m_framesPerPacket * sizeof (int16_t) * channelCount; - - state[0] = &decoderState[0]; - if (channelCount == 2) - state[1] = &decoderState[1]; - else - state[1] = &decoderState[0]; - - // Initialize block predictor. - for (int i=0; ipredictorIndex = *encoded++; - assert(state[i]->predictorIndex < m_numCoefficients); - } - - // Initialize delta. - for (int i=0; idelta = (encoded[1]<<8) | encoded[0]; - encoded += sizeof (uint16_t); - } - - // Initialize first two samples. - for (int i=0; isample1 = (encoded[1]<<8) | encoded[0]; - encoded += sizeof (uint16_t); - } - - for (int i=0; isample2 = (encoded[1]<<8) | encoded[0]; - encoded += sizeof (uint16_t); - } - - const int16_t *coefficient[2] = - { - m_coefficients[state[0]->predictorIndex], - m_coefficients[state[1]->predictorIndex] - }; - - for (int i=0; isample2; - - for (int i=0; isample1; - - /* - The first two samples have already been 'decoded' in - the block header. - */ - int samplesRemaining = (m_framesPerPacket - 2) * m_track->f.channelCount; - - while (samplesRemaining > 0) - { - uint8_t code; - int16_t newSample; - - code = *encoded >> 4; - newSample = decodeSample(*state[0], code, coefficient[0]); - *decoded++ = newSample; - - code = *encoded & 0x0f; - newSample = decodeSample(*state[1], code, coefficient[1]); - *decoded++ = newSample; - - encoded++; - samplesRemaining -= 2; - } - - return outputLength; -} - -int MSADPCM::encodeBlock(const int16_t *decoded, uint8_t *encoded) -{ - choosePredictorForBlock(decoded); - - int channelCount = m_track->f.channelCount; - - // Encode predictor. - for (int c=0; c> 8; - } - - // Enccode first two samples. - for (int c=0; c> 8; - } - - for (int c=0; c> 8; - } - - ms_adpcm_state *state[2] = { &m_state[0], &m_state[channelCount - 1] }; - const int16_t *coefficient[2] = - { - m_coefficients[state[0]->predictorIndex], - m_coefficients[state[1]->predictorIndex] - }; - - int samplesRemaining = (m_framesPerPacket - 2) * m_track->f.channelCount; - while (samplesRemaining > 0) - { - uint8_t code1 = encodeSample(*state[0], *decoded++, coefficient[0]); - uint8_t code2 = encodeSample(*state[1], *decoded++, coefficient[1]); - - *encoded++ = (code1 << 4) | code2; - samplesRemaining -= 2; - } - - return m_bytesPerPacket; -} - -void MSADPCM::choosePredictorForBlock(const int16_t *decoded) -{ - const int kPredictorSampleLength = 3; - - int channelCount = m_track->f.channelCount; - - for (int c=0; c::max(); - for (int k=0; k> 8)); - currentPredictorError += error; - } - - currentPredictorError /= 4 * kPredictorSampleLength; - - if (currentPredictorError < bestPredictorError) - { - bestPredictorError = currentPredictorError; - bestPredictorIndex = k; - } - - if (!currentPredictorError) - break; - } - - if (bestPredictorError < 16) - bestPredictorError = 16; - - m_state[c].predictorIndex = bestPredictorIndex; - m_state[c].delta = bestPredictorError; - } -} - -void MSADPCM::describe() -{ - m_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE; - m_outChunk->f.compressionType = AF_COMPRESSION_NONE; - m_outChunk->f.compressionParams = AU_NULL_PVLIST; -} - -MSADPCM::MSADPCM(Mode mode, Track *track, File *fh, bool canSeek) : - BlockCodec(mode, track, fh, canSeek), - m_numCoefficients(0), - m_state(NULL) -{ - m_state = new ms_adpcm_state[m_track->f.channelCount]; -} - -MSADPCM::~MSADPCM() -{ - delete [] m_state; -} - -bool MSADPCM::initializeCoefficients() -{ - AUpvlist pv = m_track->f.compressionParams; - - long l; - if (_af_pv_getlong(pv, _AF_MS_ADPCM_NUM_COEFFICIENTS, &l)) - { - m_numCoefficients = l; - } - else - { - _af_error(AF_BAD_CODEC_CONFIG, "number of coefficients not set"); - return false; - } - - void *v; - if (_af_pv_getptr(pv, _AF_MS_ADPCM_COEFFICIENTS, &v)) - { - memcpy(m_coefficients, v, m_numCoefficients * 2 * sizeof (int16_t)); - } - else - { - _af_error(AF_BAD_CODEC_CONFIG, "coefficient array not set"); - return false; - } - - return true; -} - -MSADPCM *MSADPCM::createDecompress(Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - assert(fh->tell() == track->fpos_first_frame); - - MSADPCM *msadpcm = new MSADPCM(Decompress, track, fh, canSeek); - - if (!msadpcm->initializeCoefficients()) - { - delete msadpcm; - return NULL; - } - - *chunkFrames = msadpcm->m_framesPerPacket; - - return msadpcm; -} - -MSADPCM *MSADPCM::createCompress(Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - assert(fh->tell() == track->fpos_first_frame); - - MSADPCM *msadpcm = new MSADPCM(Compress, track, fh, canSeek); - - if (!msadpcm->initializeCoefficients()) - { - delete msadpcm; - return NULL; - } - - *chunkFrames = msadpcm->m_framesPerPacket; - - return msadpcm; -} - -bool _af_ms_adpcm_format_ok (AudioFormat *f) -{ - if (f->channelCount != 1 && f->channelCount != 2) - { - _af_error(AF_BAD_COMPRESSION, - "MS ADPCM compression requires 1 or 2 channels"); - return false; - } - - if (f->sampleFormat != AF_SAMPFMT_TWOSCOMP || f->sampleWidth != 16) - { - _af_error(AF_BAD_COMPRESSION, - "MS ADPCM compression requires 16-bit signed integer format"); - return false; - } - - if (f->byteOrder != _AF_BYTEORDER_NATIVE) - { - _af_error(AF_BAD_COMPRESSION, - "MS ADPCM compression requires native byte order"); - return false; - } - - return true; -} - -FileModule *_af_ms_adpcm_init_decompress (Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - return MSADPCM::createDecompress(track, fh, canSeek, headerless, chunkFrames); -} - -FileModule *_af_ms_adpcm_init_compress (Track *track, File *fh, - bool canSeek, bool headerless, AFframecount *chunkFrames) -{ - return MSADPCM::createCompress(track, fh, canSeek, headerless, chunkFrames); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/MSADPCM.h b/tools/audiofile-0.3.6/libaudiofile/modules/MSADPCM.h deleted file mode 100644 index e23bb717..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/MSADPCM.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - Audio File Library - Copyright (C) 2001, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - msadpcm.h - - This module declares the interface for the Microsoft ADPCM - compression module. -*/ - -#ifndef MSADPCM_H -#define MSADPCM_H - -#include "afinternal.h" -#include "audiofile.h" - -class File; -class FileModule; -struct AudioFormat; -struct Track; - -bool _af_ms_adpcm_format_ok (AudioFormat *f); - -FileModule *_af_ms_adpcm_init_decompress(Track *, File *, - bool canSeek, bool headerless, AFframecount *chunkframes); - -FileModule *_af_ms_adpcm_init_compress(Track *, File *, - bool canSeek, bool headerless, AFframecount *chunkframes); - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/Makefile b/tools/audiofile-0.3.6/libaudiofile/modules/Makefile deleted file mode 100644 index 49621d37..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/Makefile +++ /dev/null @@ -1,580 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# libaudiofile/modules/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -subdir = libaudiofile/modules -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libmodules_la_LIBADD = -am_libmodules_la_OBJECTS = ALAC.lo BlockCodec.lo FLAC.lo FileModule.lo \ - G711.lo IMA.lo Module.lo ModuleState.lo MSADPCM.lo PCM.lo \ - RebufferModule.lo SimpleModule.lo -libmodules_la_OBJECTS = $(am_libmodules_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libmodules_la_SOURCES) -DIST_SOURCES = $(libmodules_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/modules -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/modules -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../../ -top_builddir = ../.. -top_srcdir = ../.. -noinst_LTLIBRARIES = libmodules.la -INCLUDES = -I$(srcdir)/.. -libmodules_la_SOURCES = \ - ALAC.cpp \ - ALAC.h \ - BlockCodec.cpp \ - BlockCodec.h \ - FLAC.cpp \ - FLAC.h \ - FileModule.cpp \ - FileModule.h \ - G711.cpp \ - G711.h \ - IMA.cpp \ - IMA.h \ - Module.cpp \ - Module.h \ - ModuleState.cpp \ - ModuleState.h \ - MSADPCM.cpp \ - MSADPCM.h \ - PCM.cpp \ - PCM.h \ - RebufferModule.cpp \ - RebufferModule.h \ - SimpleModule.cpp \ - SimpleModule.h - - -# GNU gcc -# AM_CFLAGS = -Wall -g -# SGI MIPSpro cc -# AM_CFLAGS = -fullwarn -g -# No debugging. -AM_CFLAGS = \ - -DNDEBUG \ - -Wall \ - -Wno-multichar \ - $(WERROR_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(FLAC_CFLAGS) \ - -fvisibility=hidden - -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -CLEANFILES = *.gcda *.gcno -all: all-am - -.SUFFIXES: -.SUFFIXES: .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libaudiofile/modules/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libaudiofile/modules/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libmodules.la: $(libmodules_la_OBJECTS) $(libmodules_la_DEPENDENCIES) $(EXTRA_libmodules_la_DEPENDENCIES) - $(CXXLINK) $(libmodules_la_OBJECTS) $(libmodules_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/ALAC.Plo -include ./$(DEPDIR)/BlockCodec.Plo -include ./$(DEPDIR)/FLAC.Plo -include ./$(DEPDIR)/FileModule.Plo -include ./$(DEPDIR)/G711.Plo -include ./$(DEPDIR)/IMA.Plo -include ./$(DEPDIR)/MSADPCM.Plo -include ./$(DEPDIR)/Module.Plo -include ./$(DEPDIR)/ModuleState.Plo -include ./$(DEPDIR)/PCM.Plo -include ./$(DEPDIR)/RebufferModule.Plo -include ./$(DEPDIR)/SimpleModule.Plo - -.cpp.o: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: - $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/Makefile.am b/tools/audiofile-0.3.6/libaudiofile/modules/Makefile.am deleted file mode 100644 index aba323e4..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/Makefile.am +++ /dev/null @@ -1,46 +0,0 @@ -noinst_LTLIBRARIES = libmodules.la - -INCLUDES = -I$(srcdir)/.. - -libmodules_la_SOURCES = \ - ALAC.cpp \ - ALAC.h \ - BlockCodec.cpp \ - BlockCodec.h \ - FLAC.cpp \ - FLAC.h \ - FileModule.cpp \ - FileModule.h \ - G711.cpp \ - G711.h \ - IMA.cpp \ - IMA.h \ - Module.cpp \ - Module.h \ - ModuleState.cpp \ - ModuleState.h \ - MSADPCM.cpp \ - MSADPCM.h \ - PCM.cpp \ - PCM.h \ - RebufferModule.cpp \ - RebufferModule.h \ - SimpleModule.cpp \ - SimpleModule.h - -# GNU gcc -# AM_CFLAGS = -Wall -g -# SGI MIPSpro cc -# AM_CFLAGS = -fullwarn -g -# No debugging. -AM_CFLAGS = \ - -DNDEBUG \ - -Wall \ - -Wno-multichar \ - $(WERROR_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(FLAC_CFLAGS) \ - -fvisibility=hidden -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden - -CLEANFILES = *.gcda *.gcno diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/Makefile.in b/tools/audiofile-0.3.6/libaudiofile/modules/Makefile.in deleted file mode 100644 index c6cccedc..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/Makefile.in +++ /dev/null @@ -1,580 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = libaudiofile/modules -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libmodules_la_LIBADD = -am_libmodules_la_OBJECTS = ALAC.lo BlockCodec.lo FLAC.lo FileModule.lo \ - G711.lo IMA.lo Module.lo ModuleState.lo MSADPCM.lo PCM.lo \ - RebufferModule.lo SimpleModule.lo -libmodules_la_OBJECTS = $(am_libmodules_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libmodules_la_SOURCES) -DIST_SOURCES = $(libmodules_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libmodules.la -INCLUDES = -I$(srcdir)/.. -libmodules_la_SOURCES = \ - ALAC.cpp \ - ALAC.h \ - BlockCodec.cpp \ - BlockCodec.h \ - FLAC.cpp \ - FLAC.h \ - FileModule.cpp \ - FileModule.h \ - G711.cpp \ - G711.h \ - IMA.cpp \ - IMA.h \ - Module.cpp \ - Module.h \ - ModuleState.cpp \ - ModuleState.h \ - MSADPCM.cpp \ - MSADPCM.h \ - PCM.cpp \ - PCM.h \ - RebufferModule.cpp \ - RebufferModule.h \ - SimpleModule.cpp \ - SimpleModule.h - - -# GNU gcc -# AM_CFLAGS = -Wall -g -# SGI MIPSpro cc -# AM_CFLAGS = -fullwarn -g -# No debugging. -AM_CFLAGS = \ - -DNDEBUG \ - -Wall \ - -Wno-multichar \ - $(WERROR_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(FLAC_CFLAGS) \ - -fvisibility=hidden - -AM_CXXFLAGS = $(AM_CFLAGS) -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -CLEANFILES = *.gcda *.gcno -all: all-am - -.SUFFIXES: -.SUFFIXES: .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libaudiofile/modules/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libaudiofile/modules/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libmodules.la: $(libmodules_la_OBJECTS) $(libmodules_la_DEPENDENCIES) $(EXTRA_libmodules_la_DEPENDENCIES) - $(CXXLINK) $(libmodules_la_OBJECTS) $(libmodules_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ALAC.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BlockCodec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FLAC.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileModule.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/G711.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IMA.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MSADPCM.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Module.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModuleState.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PCM.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RebufferModule.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleModule.Plo@am__quote@ - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/Module.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/Module.cpp deleted file mode 100644 index 165f0931..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/Module.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "Module.h" - -#include "File.h" -#include "SimpleModule.h" -#include "byteorder.h" -#include "compression.h" -#include "units.h" -#include "../pcm.h" - -Module::Module() : - m_sink(NULL) -{ -} - -Module::~Module() -{ -} - -void Module::setSink(Module *module) { m_sink = module; } -void Module::setSource(Module *module) { m_source = module; } - -const char *Module::name() const { return ""; } - -void Module::describe() -{ -} - -void Module::maxPull() -{ - m_inChunk->frameCount = m_outChunk->frameCount; -} - -void Module::maxPush() -{ - m_outChunk->frameCount = m_inChunk->frameCount; -} - -void Module::runPull() -{ -} - -void Module::runPush() -{ -} - -void Module::pull(size_t frames) -{ - m_inChunk->frameCount = frames; - m_source->runPull(); -} - -void Module::push(size_t frames) -{ - m_outChunk->frameCount = frames; - m_sink->runPush(); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/Module.h b/tools/audiofile-0.3.6/libaudiofile/modules/Module.h deleted file mode 100644 index c906fc5b..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/Module.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef MODULE_H -#define MODULE_H - -#include "AudioFormat.h" -#include "Shared.h" -#include "afinternal.h" - -#include - -enum FormatCode -{ - kUndefined = -1, - kInt8, - kInt16, - kInt24, - kInt32, - kFloat, - kDouble, -}; - -class Chunk : public Shared -{ -public: - void *buffer; - size_t frameCount; - AudioFormat f; - bool ownsMemory; - - Chunk() : buffer(NULL), frameCount(0), ownsMemory(false) { } - ~Chunk() - { - deallocate(); - } - void allocate(size_t capacity) - { - deallocate(); - ownsMemory = true; - buffer = ::operator new(capacity); - } - void deallocate() - { - if (ownsMemory) - ::operator delete(buffer); - ownsMemory = false; - buffer = NULL; - } -}; - -class Module : public Shared -{ -public: - Module(); - virtual ~Module(); - - void setSink(Module *); - void setSource(Module *); - Chunk *inChunk() const { return m_inChunk.get(); } - void setInChunk(Chunk *chunk) { m_inChunk = chunk; } - Chunk *outChunk() const { return m_outChunk.get(); } - void setOutChunk(Chunk *chunk) { m_outChunk = chunk; } - - virtual const char *name() const; - /* - Set format of m_outChunk based on how this module transforms m_inChunk. - */ - virtual void describe(); - /* - Set frame count of m_inChunk to the maximum number of frames needed to - produce frame count of m_outChunk. - */ - virtual void maxPull(); - /* - Set frame count of m_outChunk to the maximum number of frames needed to - produce frame count of m_inChunk. - */ - virtual void maxPush(); - virtual void runPull(); - virtual void reset1() { } - virtual void reset2() { } - virtual void runPush(); - virtual void sync1() { } - virtual void sync2() { } - -protected: - SharedPtr m_inChunk, m_outChunk; - union - { - Module *m_sink; - Module *m_source; - }; - - void pull(size_t frames); - void push(size_t frames); -}; - -/* - _AF_ATOMIC_NVFRAMES is NOT the maximum number of frames a module - can be requested to produce. - - This IS the maximum number of virtual (user) frames that will - be produced or processed per run of the modules. - - Modules can be requested more frames than this because of rate - conversion and rebuffering. -*/ - -#define _AF_ATOMIC_NVFRAMES 1024 - -#endif // MODULE_H diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/ModuleState.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/ModuleState.cpp deleted file mode 100644 index f76c4956..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/ModuleState.cpp +++ /dev/null @@ -1,504 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010-2013, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "ModuleState.h" - -#include "File.h" -#include "FileHandle.h" -#include "FileModule.h" -#include "RebufferModule.h" -#include "SimpleModule.h" -#include "Track.h" -#include "byteorder.h" -#include "compression.h" -#include "units.h" -#include "util.h" -#include "../pcm.h" - -#include -#include -#include -#include -#include - -ModuleState::ModuleState() : - m_isDirty(true) -{ -} - -ModuleState::~ModuleState() -{ -} - -status ModuleState::initFileModule(AFfilehandle file, Track *track) -{ - const CompressionUnit *unit = _af_compression_unit_from_id(track->f.compressionType); - if (!unit) - return AF_FAIL; - - // Validate compression format and parameters. - if (!unit->fmtok(&track->f)) - return AF_FAIL; - - if (file->m_seekok && - file->m_fh->seek(track->fpos_first_frame, File::SeekFromBeginning) != - track->fpos_first_frame) - { - _af_error(AF_BAD_LSEEK, "unable to position file handle at beginning of sound data"); - return AF_FAIL; - } - - AFframecount chunkFrames; - if (file->m_access == _AF_READ_ACCESS) - m_fileModule = unit->initdecompress(track, file->m_fh, file->m_seekok, - file->m_fileFormat == AF_FILE_RAWDATA, &chunkFrames); - else - m_fileModule = unit->initcompress(track, file->m_fh, file->m_seekok, - file->m_fileFormat == AF_FILE_RAWDATA, &chunkFrames); - - if (unit->needsRebuffer) - { - assert(unit->nativeSampleFormat == AF_SAMPFMT_TWOSCOMP); - - RebufferModule::Direction direction = - file->m_access == _AF_WRITE_ACCESS ? - RebufferModule::VariableToFixed : RebufferModule::FixedToVariable; - - m_fileRebufferModule = new RebufferModule(direction, - track->f.bytesPerFrame(false), chunkFrames, - unit->multiple_of); - } - - track->filemodhappy = true; - - return AF_SUCCEED; -} - -status ModuleState::init(AFfilehandle file, Track *track) -{ - if (initFileModule(file, track) == AF_FAIL) - return AF_FAIL; - - return AF_SUCCEED; -} - -bool ModuleState::fileModuleHandlesSeeking() const -{ - return m_fileModule->handlesSeeking(); -} - -status ModuleState::setup(AFfilehandle file, Track *track) -{ - AFframecount fframepos = llrint(track->nextvframe * track->f.sampleRate / track->v.sampleRate); - bool isReading = file->m_access == _AF_READ_ACCESS; - - if (!track->v.isUncompressed()) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, - "library does not support compression in virtual format yet"); - return AF_FAIL; - } - - if (arrange(file, track) == AF_FAIL) - return AF_FAIL; - - track->filemodhappy = true; - int maxbufsize = 0; - if (isReading) - { - m_chunks.back()->frameCount = _AF_ATOMIC_NVFRAMES; - for (int i=m_modules.size() - 1; i >= 0; i--) - { - SharedPtr inChunk = m_chunks[i]; - SharedPtr outChunk = m_chunks[i+1]; - int bufsize = outChunk->frameCount * outChunk->f.bytesPerFrame(true); - if (bufsize > maxbufsize) - maxbufsize = bufsize; - if (i != 0) - m_modules[i]->setSource(m_modules[i-1].get()); - m_modules[i]->maxPull(); - } - - if (!track->filemodhappy) - return AF_FAIL; - int bufsize = m_fileModule->bufferSize(); - if (bufsize > maxbufsize) - maxbufsize = bufsize; - } - else - { - m_chunks.front()->frameCount = _AF_ATOMIC_NVFRAMES; - for (size_t i=0; i inChunk = m_chunks[i]; - SharedPtr outChunk = m_chunks[i+1]; - int bufsize = inChunk->frameCount * inChunk->f.bytesPerFrame(true); - if (bufsize > maxbufsize) - maxbufsize = bufsize; - if (i != m_modules.size() - 1) - m_modules[i]->setSink(m_modules[i+1].get()); - m_modules[i]->maxPush(); - } - - if (!track->filemodhappy) - return AF_FAIL; - - int bufsize = m_fileModule->bufferSize(); - if (bufsize > maxbufsize) - maxbufsize = bufsize; - } - - for (size_t i=0; iallocate(maxbufsize); - } - - if (isReading) - { - if (track->totalfframes == -1) - track->totalvframes = -1; - else - track->totalvframes = llrint(track->totalfframes * - (track->v.sampleRate / track->f.sampleRate)); - - track->nextfframe = fframepos; - track->nextvframe = llrint(fframepos * track->v.sampleRate / track->f.sampleRate); - - m_isDirty = false; - - if (reset(file, track) == AF_FAIL) - return AF_FAIL; - } - else - { - track->nextvframe = track->totalvframes = - (AFframecount) (fframepos * track->v.sampleRate / track->f.sampleRate); - m_isDirty = false; - } - - return AF_SUCCEED; -} - -const std::vector > &ModuleState::modules() const -{ - return m_modules; -} - -const std::vector > &ModuleState::chunks() const -{ - return m_chunks; -} - -status ModuleState::reset(AFfilehandle file, Track *track) -{ - track->filemodhappy = true; - for (std::vector >::reverse_iterator i=m_modules.rbegin(); - i != m_modules.rend(); ++i) - (*i)->reset1(); - track->frames2ignore = 0; - if (!track->filemodhappy) - return AF_FAIL; - for (std::vector >::iterator i=m_modules.begin(); - i != m_modules.end(); ++i) - (*i)->reset2(); - if (!track->filemodhappy) - return AF_FAIL; - return AF_SUCCEED; -} - -status ModuleState::sync(AFfilehandle file, Track *track) -{ - track->filemodhappy = true; - for (std::vector >::reverse_iterator i=m_modules.rbegin(); - i != m_modules.rend(); ++i) - (*i)->sync1(); - if (!track->filemodhappy) - return AF_FAIL; - for (std::vector >::iterator i=m_modules.begin(); - i != m_modules.end(); ++i) - (*i)->sync2(); - return AF_SUCCEED; -} - -static const PCMInfo * const intmappings[6] = -{ - &_af_default_signed_integer_pcm_mappings[1], - &_af_default_signed_integer_pcm_mappings[2], - &_af_default_signed_integer_pcm_mappings[3], - &_af_default_signed_integer_pcm_mappings[4], - NULL, - NULL -}; - -static FormatCode getFormatCode(const AudioFormat &format) -{ - if (format.sampleFormat == AF_SAMPFMT_FLOAT) - return kFloat; - if (format.sampleFormat == AF_SAMPFMT_DOUBLE) - return kDouble; - if (format.isInteger()) - { - switch (format.bytesPerSample(false)) - { - case 1: return kInt8; - case 2: return kInt16; - case 3: return kInt24; - case 4: return kInt32; - } - } - - /* NOTREACHED */ - assert(false); - return kUndefined; -} - -static bool isInteger(FormatCode code) { return code >= kInt8 && code <= kInt32; } -static bool isFloat(FormatCode code) { return code >= kFloat && code <= kDouble; } - -static bool isTrivialIntMapping(const AudioFormat &format, FormatCode code) -{ - return intmappings[code] != NULL && - format.pcm.slope == intmappings[code]->slope && - format.pcm.intercept == intmappings[code]->intercept; -} - -static bool isTrivialIntClip(const AudioFormat &format, FormatCode code) -{ - return intmappings[code] != NULL && - format.pcm.minClip == intmappings[code]->minClip && - format.pcm.maxClip == intmappings[code]->maxClip; -} - -status ModuleState::arrange(AFfilehandle file, Track *track) -{ - bool isReading = file->m_access == _AF_READ_ACCESS; - AudioFormat in, out; - if (isReading) - { - in = track->f; - out = track->v; - } - else - { - in = track->v; - out = track->f; - } - - FormatCode infc = getFormatCode(in); - FormatCode outfc = getFormatCode(out); - if (infc == kUndefined || outfc == kUndefined) - return AF_FAIL; - - m_chunks.clear(); - m_chunks.push_back(new Chunk()); - m_chunks.back()->f = in; - - m_modules.clear(); - - if (isReading) - { - addModule(m_fileModule.get()); - addModule(m_fileRebufferModule.get()); - } - - // Convert to native byte order. - if (in.byteOrder != _AF_BYTEORDER_NATIVE) - { - size_t bytesPerSample = in.bytesPerSample(!isReading); - if (bytesPerSample > 1 && in.compressionType == AF_COMPRESSION_NONE) - addModule(new SwapModule()); - else - in.byteOrder = _AF_BYTEORDER_NATIVE; - } - - // Handle 24-bit integer input format. - if (in.isInteger() && in.bytesPerSample(false) == 3) - { - if (isReading || in.compressionType != AF_COMPRESSION_NONE) - addModule(new Expand3To4Module(in.isSigned())); - } - - // Make data signed. - if (in.isUnsigned()) - addModule(new ConvertSign(infc, false)); - - in.pcm = m_chunks.back()->f.pcm; - - // Reverse the unsigned shift for output. - if (out.isUnsigned()) - { - const double shift = intmappings[outfc]->minClip; - out.pcm.intercept += shift; - out.pcm.minClip += shift; - out.pcm.maxClip += shift; - } - - // Clip input samples if necessary. - if (in.pcm.minClip < in.pcm.maxClip && !isTrivialIntClip(in, infc)) - addModule(new Clip(infc, in.pcm)); - - bool alreadyClippedOutput = false; - bool alreadyTransformedOutput = false; - // Perform range transformation if input and output PCM mappings differ. - bool transforming = (in.pcm.slope != out.pcm.slope || - in.pcm.intercept != out.pcm.intercept) && - !(isTrivialIntMapping(in, infc) && - isTrivialIntMapping(out, outfc)); - - // Range transformation requires input to be floating-point. - if (isInteger(infc) && transforming) - { - if (infc == kInt32 || outfc == kDouble || outfc == kInt32) - { - addConvertIntToFloat(infc, kDouble); - infc = kDouble; - } - else - { - addConvertIntToFloat(infc, kFloat); - infc = kFloat; - } - } - - if (transforming && infc == kDouble && isFloat(outfc)) - addModule(new Transform(infc, in.pcm, out.pcm)); - - // Add format conversion if needed. - if (isInteger(infc) && isInteger(outfc)) - addConvertIntToInt(infc, outfc); - else if (isInteger(infc) && isFloat(outfc)) - addConvertIntToFloat(infc, outfc); - else if (isFloat(infc) && isInteger(outfc)) - { - addConvertFloatToInt(infc, outfc, in.pcm, out.pcm); - alreadyClippedOutput = true; - alreadyTransformedOutput = true; - } - else if (isFloat(infc) && isFloat(outfc)) - addConvertFloatToFloat(infc, outfc); - - if (transforming && !alreadyTransformedOutput && infc != kDouble) - addModule(new Transform(outfc, in.pcm, out.pcm)); - - if (in.channelCount != out.channelCount) - addModule(new ApplyChannelMatrix(infc, isReading, - in.channelCount, out.channelCount, - in.pcm.minClip, in.pcm.maxClip, - track->channelMatrix)); - - // Perform clipping if necessary. - if (!alreadyClippedOutput) - { - if (out.pcm.minClip < out.pcm.maxClip && !isTrivialIntClip(out, outfc)) - addModule(new Clip(outfc, out.pcm)); - } - - // Make data unsigned if necessary. - if (out.isUnsigned()) - addModule(new ConvertSign(outfc, true)); - - // Handle 24-bit integer output format. - if (out.isInteger() && out.bytesPerSample(false) == 3) - { - if (!isReading || out.compressionType != AF_COMPRESSION_NONE) - addModule(new Compress4To3Module(out.isSigned())); - } - - if (out.byteOrder != _AF_BYTEORDER_NATIVE) - { - size_t bytesPerSample = out.bytesPerSample(isReading); - if (bytesPerSample > 1 && out.compressionType == AF_COMPRESSION_NONE) - addModule(new SwapModule()); - else - out.byteOrder = _AF_BYTEORDER_NATIVE; - } - - if (!isReading) - { - addModule(m_fileRebufferModule.get()); - addModule(m_fileModule.get()); - } - - return AF_SUCCEED; -} - -void ModuleState::addModule(Module *module) -{ - if (!module) - return; - - m_modules.push_back(module); - module->setInChunk(m_chunks.back().get()); - Chunk *chunk = new Chunk(); - chunk->f = m_chunks.back()->f; - m_chunks.push_back(chunk); - module->setOutChunk(chunk); - module->describe(); -} - -void ModuleState::addConvertIntToInt(FormatCode input, FormatCode output) -{ - if (input == output) - return; - - assert(isInteger(input)); - assert(isInteger(output)); - addModule(new ConvertInt(input, output)); -} - -void ModuleState::addConvertIntToFloat(FormatCode input, FormatCode output) -{ - addModule(new ConvertIntToFloat(input, output)); -} - -void ModuleState::addConvertFloatToInt(FormatCode input, FormatCode output, - const PCMInfo &inputMapping, const PCMInfo &outputMapping) -{ - addModule(new ConvertFloatToIntClip(input, output, inputMapping, outputMapping)); -} - -void ModuleState::addConvertFloatToFloat(FormatCode input, FormatCode output) -{ - if (input == output) - return; - - assert((input == kFloat && output == kDouble) || - (input == kDouble && output == kFloat)); - addModule(new ConvertFloat(input, output)); -} - -void ModuleState::print() -{ - fprintf(stderr, "modules:\n"); - for (size_t i=0; iname(), m_modules[i].get(), - m_modules[i]->inChunk(), - m_modules[i]->outChunk()); - fprintf(stderr, "chunks:\n"); - for (size_t i=0; if.description().c_str()); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/ModuleState.h b/tools/audiofile-0.3.6/libaudiofile/modules/ModuleState.h deleted file mode 100644 index c7912d0b..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/ModuleState.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef MODULESTATE_H -#define MODULESTATE_H - -#include "Module.h" -#include "Shared.h" -#include "afinternal.h" -#include - -class FileModule; -class Module; - -class ModuleState : public Shared -{ -public: - ModuleState(); - virtual ~ModuleState(); - - bool isDirty() const { return m_isDirty; } - void setDirty() { m_isDirty = true; } - status init(AFfilehandle file, Track *track); - status setup(AFfilehandle file, Track *track); - status reset(AFfilehandle file, Track *track); - status sync(AFfilehandle file, Track *track); - - int numModules() const { return m_modules.size(); } - const std::vector > &modules() const; - const std::vector > &chunks() const; - - bool mustUseAtomicNVFrames() const { return true; } - - void print(); - - bool fileModuleHandlesSeeking() const; - -private: - std::vector > m_modules; - std::vector > m_chunks; - bool m_isDirty; - - SharedPtr m_fileModule; - SharedPtr m_fileRebufferModule; - - status initFileModule(AFfilehandle file, Track *track); - - status arrange(AFfilehandle file, Track *track); - - void addModule(Module *module); - - void addConvertIntToInt(FormatCode input, FormatCode output); - void addConvertIntToFloat(FormatCode input, FormatCode output); - void addConvertFloatToInt(FormatCode input, FormatCode output, - const PCMInfo &inputMapping, const PCMInfo &outputMapping); - void addConvertFloatToFloat(FormatCode input, FormatCode output); -}; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/PCM.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/PCM.cpp deleted file mode 100644 index ad4557a0..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/PCM.cpp +++ /dev/null @@ -1,202 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - PCM.cpp - read and file write module for uncompressed data -*/ - -#include "config.h" -#include "PCM.h" - -#include -#include - -#include "Compiler.h" -#include "FileModule.h" -#include "Track.h" -#include "afinternal.h" -#include "audiofile.h" -#include "compression.h" -#include "util.h" - -bool _af_pcm_format_ok (AudioFormat *f) -{ - assert(!isnan(f->pcm.slope)); - assert(!isnan(f->pcm.intercept)); - assert(!isnan(f->pcm.minClip)); - assert(!isnan(f->pcm.maxClip)); - - return true; -} - -class PCM : public FileModule -{ -public: - static PCM *createCompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames); - static PCM *createDecompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames); - - virtual const char *name() const OVERRIDE { return "pcm"; } - virtual void runPull() OVERRIDE; - virtual void reset2() OVERRIDE; - virtual void runPush() OVERRIDE; - virtual void sync1() OVERRIDE; - virtual void sync2() OVERRIDE; - -private: - int m_bytesPerFrame; - - /* saved_fpos_next_frame and saved_nextfframe apply only to writing. */ - int m_saved_fpos_next_frame; - int m_saved_nextfframe; - - PCM(Mode, Track *, File *, bool canSeek); -}; - -PCM::PCM(Mode mode, Track *track, File *fh, bool canSeek) : - FileModule(mode, track, fh, canSeek), - m_bytesPerFrame(track->f.bytesPerFrame(false)), - m_saved_fpos_next_frame(-1), - m_saved_nextfframe(-1) -{ - if (mode == Decompress) - track->f.compressionParams = AU_NULL_PVLIST; -} - -PCM *PCM::createCompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkframes) -{ - return new PCM(Compress, track, fh, canSeek); -} - -void PCM::runPush() -{ - AFframecount frames2write = m_inChunk->frameCount; - AFframecount n; - - /* - WARNING: due to the optimization explained at the end - of arrangemodules(), the pcm file module cannot depend - on the presence of the intermediate working buffer - which _AFsetupmodules usually allocates for file - modules in their input or output chunk (for reading or - writing, respectively). - - Fortunately, the pcm module has no need for such a buffer. - */ - - ssize_t bytesWritten = write(m_inChunk->buffer, m_bytesPerFrame * frames2write); - n = bytesWritten >= 0 ? bytesWritten / m_bytesPerFrame : 0; - - if (n != frames2write) - reportWriteError(n, frames2write); - - m_track->nextfframe += n; - m_track->totalfframes = m_track->nextfframe; - assert(!canSeek() || (tell() == m_track->fpos_next_frame)); -} - -void PCM::sync1() -{ - m_saved_fpos_next_frame = m_track->fpos_next_frame; - m_saved_nextfframe = m_track->nextfframe; -} - -void PCM::sync2() -{ - assert(!canSeek() || (tell() == m_track->fpos_next_frame)); - - /* We can afford to seek because sync2 is rare. */ - m_track->fpos_after_data = tell(); - - m_track->fpos_next_frame = m_saved_fpos_next_frame; - m_track->nextfframe = m_saved_nextfframe; -} - -PCM *PCM::createDecompress(Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkframes) -{ - return new PCM(Decompress, track, fh, canSeek); -} - -void PCM::runPull() -{ - AFframecount framesToRead = m_outChunk->frameCount; - - /* - WARNING: Due to the optimization explained at the end of - arrangemodules(), the pcm file module cannot depend on - the presence of the intermediate working buffer which - _AFsetupmodules usually allocates for file modules in - their input or output chunk (for reading or writing, - respectively). - - Fortunately, the pcm module has no need for such a buffer. - */ - - /* - Limit the number of frames to be read to the number of - frames left in the track. - */ - if (m_track->totalfframes != -1 && - m_track->nextfframe + framesToRead > m_track->totalfframes) - { - framesToRead = m_track->totalfframes - m_track->nextfframe; - } - - ssize_t bytesRead = read(m_outChunk->buffer, m_bytesPerFrame * framesToRead); - AFframecount framesRead = bytesRead >= 0 ? bytesRead / m_bytesPerFrame : 0; - - m_track->nextfframe += framesRead; - assert(!canSeek() || (tell() == m_track->fpos_next_frame)); - - /* - If we got EOF from read, then we return the actual amount read. - - Complain only if there should have been more frames in the file. - */ - - if (framesRead != framesToRead && m_track->totalfframes != -1) - reportReadError(framesRead, framesToRead); - - m_outChunk->frameCount = framesRead; -} - -void PCM::reset2() -{ - m_track->fpos_next_frame = m_track->fpos_first_frame + - m_bytesPerFrame * m_track->nextfframe; - - m_track->frames2ignore = 0; -} - -FileModule *_AFpcminitcompress (Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ - return PCM::createCompress(track, fh, canSeek, headerless, chunkFrames); -} - -FileModule *_AFpcminitdecompress (Track *track, File *fh, bool canSeek, - bool headerless, AFframecount *chunkFrames) -{ - return PCM::createDecompress(track, fh, canSeek, headerless, chunkFrames); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/PCM.h b/tools/audiofile-0.3.6/libaudiofile/modules/PCM.h deleted file mode 100644 index f576873a..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/PCM.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - PCM.h -*/ - -#ifndef MODULES_PCM_H -#define MODULES_PCM_H - -#include "afinternal.h" -#include "audiofile.h" - -class File; -class FileModule; -struct AudioFormat; -struct Track; - -bool _af_pcm_format_ok (AudioFormat *f); - -FileModule *_AFpcminitcompress(Track *, File *, bool seekok, - bool headerless, AFframecount *chunkframes); - -FileModule *_AFpcminitdecompress(Track *, File *, bool seekok, - bool headerless, AFframecount *chunkframes); - -#endif /* MODULES_PCM_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/RebufferModule.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/RebufferModule.cpp deleted file mode 100644 index 5fe10d7f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/RebufferModule.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "RebufferModule.h" - -#include -#include -#include - -RebufferModule::RebufferModule(Direction direction, int bytesPerFrame, - int numFrames, bool multipleOf) : - m_direction(direction), - m_bytesPerFrame(bytesPerFrame), - m_numFrames(numFrames), - m_multipleOf(multipleOf), - m_eof(false), - m_sentShortChunk(false), - m_buffer(NULL), - m_offset(-1), - m_savedBuffer(NULL), - m_savedOffset(-1) -{ - if (m_direction == FixedToVariable) - initFixedToVariable(); - else - initVariableToFixed(); -} - -RebufferModule::~RebufferModule() -{ - delete [] m_buffer; - delete [] m_savedBuffer; -} - -void RebufferModule::initFixedToVariable() -{ - m_offset = m_numFrames; - m_buffer = new char[m_numFrames * m_bytesPerFrame]; -} - -void RebufferModule::initVariableToFixed() -{ - m_offset = 0; - m_buffer = new char[m_numFrames * m_bytesPerFrame]; - m_savedBuffer = new char[m_numFrames * m_bytesPerFrame]; -} - -void RebufferModule::maxPull() -{ - assert(m_direction == FixedToVariable); - if (m_multipleOf) - m_inChunk->frameCount = m_outChunk->frameCount + m_numFrames; - else - m_inChunk->frameCount = m_numFrames; -} - -void RebufferModule::maxPush() -{ - assert(m_direction == VariableToFixed); - if (m_multipleOf) - m_outChunk->frameCount = m_inChunk->frameCount + m_numFrames; - else - m_outChunk->frameCount = m_numFrames; -} - -void RebufferModule::runPull() -{ - int framesToPull = m_outChunk->frameCount; - const char *inBuffer = static_cast(m_inChunk->buffer); - char *outBuffer = static_cast(m_outChunk->buffer); - - assert(m_offset > 0 && m_offset <= m_numFrames); - - /* - A module should not pull more frames from its input - after receiving a short chunk. - */ - assert(!m_sentShortChunk); - - if (m_offset < m_numFrames) - { - int buffered = m_numFrames - m_offset; - int n = std::min(framesToPull, buffered); - memcpy(outBuffer, m_buffer + m_offset * m_bytesPerFrame, - n * m_bytesPerFrame); - outBuffer += buffered * m_bytesPerFrame; - framesToPull -= buffered; - m_offset += n; - } - - // Try to pull more frames from the source. - while (!m_eof && framesToPull > 0) - { - int framesRequested; - if (m_multipleOf) - // Round framesToPull up to nearest multiple of m_numFrames. - framesRequested = ((framesToPull - 1) / m_numFrames + 1) * m_numFrames; - else - framesRequested = m_numFrames; - - assert(framesRequested > 0); - - pull(framesRequested); - - int framesReceived = m_inChunk->frameCount; - - if (framesReceived != framesRequested) - m_eof = true; - - memcpy(outBuffer, inBuffer, - std::min(framesToPull, framesReceived) * m_bytesPerFrame); - - outBuffer += framesReceived * m_bytesPerFrame; - framesToPull -= framesReceived; - - if (m_multipleOf) - assert(m_eof || framesToPull <= 0); - - if (framesToPull < 0) - { - assert(m_offset == m_numFrames); - - m_offset = m_numFrames + framesToPull; - - assert(m_offset > 0 && m_offset <= m_numFrames); - - memcpy(m_buffer + m_offset * m_bytesPerFrame, - inBuffer + (framesReceived + framesToPull) * m_bytesPerFrame, - (m_numFrames - m_offset) * m_bytesPerFrame); - } - else - { - assert(m_offset == m_numFrames); - } - } - - if (m_eof && framesToPull > 0) - { - // Output short chunk. - m_outChunk->frameCount -= framesToPull; - m_sentShortChunk = true; - assert(m_offset == m_numFrames); - } - else - { - assert(framesToPull <= 0); - assert(m_offset == m_numFrames + framesToPull); - } - assert(m_offset > 0 && m_offset <= m_numFrames); -} - -void RebufferModule::reset1() -{ - m_offset = m_numFrames; - m_eof = false; - m_sentShortChunk = false; - assert(m_offset > 0 && m_offset <= m_numFrames); -} - -void RebufferModule::reset2() -{ - assert(m_offset > 0 && m_offset <= m_numFrames); -} - -void RebufferModule::runPush() -{ - int framesToPush = m_inChunk->frameCount; - const char *inBuffer = static_cast(m_inChunk->buffer); - char *outBuffer = static_cast(m_outChunk->buffer); - - assert(m_offset >= 0 && m_offset < m_numFrames); - - // Check that we will be able to push even one block. - if (m_offset + framesToPush >= m_numFrames) - { - if (m_offset > 0) - memcpy(m_outChunk->buffer, m_buffer, m_offset * m_bytesPerFrame); - - if (m_multipleOf) - { - // Round down to nearest multiple of m_numFrames. - int n = ((m_offset + framesToPush) / m_numFrames) * m_numFrames; - - assert(n > m_offset); - memcpy(outBuffer + m_offset * m_bytesPerFrame, - inBuffer, - (n - m_offset) * m_bytesPerFrame); - - push(n); - - inBuffer += (n - m_offset) * m_bytesPerFrame; - framesToPush -= n - m_offset; - assert(framesToPush >= 0); - m_offset = 0; - } - else - { - while (m_offset + framesToPush >= m_numFrames) - { - int n = m_numFrames - m_offset; - memcpy(outBuffer + m_offset * m_bytesPerFrame, - inBuffer, - n * m_bytesPerFrame); - - push(m_numFrames); - - inBuffer += n * m_bytesPerFrame; - framesToPush -= n; - assert(framesToPush >= 0); - m_offset = 0; - } - } - - assert(m_offset == 0); - } - - assert(m_offset + framesToPush < m_numFrames); - - // Save remaining samples in buffer. - if (framesToPush > 0) - { - memcpy(m_buffer + m_offset * m_bytesPerFrame, - inBuffer, - framesToPush * m_bytesPerFrame); - m_offset += framesToPush; - } - - assert(m_offset >= 0 && m_offset < m_numFrames); -} - -void RebufferModule::sync1() -{ - assert(m_offset >= 0 && m_offset < m_numFrames); - - // Save all the frames and the offset so we can restore our state later. - memcpy(m_savedBuffer, m_buffer, m_numFrames * m_bytesPerFrame); - m_savedOffset = m_offset; -} - -void RebufferModule::sync2() -{ - assert(m_offset >= 0 && m_offset < m_numFrames); - - memcpy(m_outChunk->buffer, m_buffer, m_offset * m_bytesPerFrame); - - push(m_offset); - - memcpy(m_buffer, m_savedBuffer, m_numFrames * m_bytesPerFrame); - m_offset = m_savedOffset; - - assert(m_offset >= 0 && m_offset < m_numFrames); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/RebufferModule.h b/tools/audiofile-0.3.6/libaudiofile/modules/RebufferModule.h deleted file mode 100644 index f0f263d3..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/RebufferModule.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef REBUFFER_MODULE_H -#define REBUFFER_MODULE_H - -#include "Compiler.h" -#include "Module.h" - -class RebufferModule : public Module -{ -public: - enum Direction - { - FixedToVariable, - VariableToFixed - }; - - RebufferModule(Direction, int bytesPerFrame, int numFrames, bool multipleOf); - virtual ~RebufferModule(); - - virtual const char *name() const OVERRIDE { return "rebuffer"; } - - virtual void maxPull() OVERRIDE; - virtual void maxPush() OVERRIDE; - - virtual void runPull() OVERRIDE; - virtual void reset1() OVERRIDE; - virtual void reset2() OVERRIDE; - virtual void runPush() OVERRIDE; - virtual void sync1() OVERRIDE; - virtual void sync2() OVERRIDE; - -private: - Direction m_direction; - int m_bytesPerFrame; - int m_numFrames; - bool m_multipleOf; // buffer to multiple of m_numFrames - bool m_eof; // end of input stream reached - bool m_sentShortChunk; // end of input stream indicated - char *m_buffer; - int m_offset; - char *m_savedBuffer; - int m_savedOffset; - - void initFixedToVariable(); - void initVariableToFixed(); -}; - -#endif // REBUFFER_MODULE_H diff --git a/tools/audiofile-0.3.6/libaudiofile/modules/SimpleModule.cpp b/tools/audiofile-0.3.6/libaudiofile/modules/SimpleModule.cpp deleted file mode 100644 index 2bae1eb3..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/modules/SimpleModule.cpp +++ /dev/null @@ -1,174 +0,0 @@ -/* - Audio File Library - Copyright (C) 2010, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" -#include "SimpleModule.h" - -#include - -void SimpleModule::runPull() -{ - pull(m_outChunk->frameCount); - run(*m_inChunk, *m_outChunk); -} - -void SimpleModule::runPush() -{ - m_outChunk->frameCount = m_inChunk->frameCount; - run(*m_inChunk, *m_outChunk); - push(m_outChunk->frameCount); -} - -ApplyChannelMatrix::ApplyChannelMatrix(FormatCode format, bool isReading, - int inChannels, int outChannels, - double minClip, double maxClip, const double *matrix) : - m_format(format), - m_inChannels(inChannels), - m_outChannels(outChannels), - m_minClip(minClip), - m_maxClip(maxClip), - m_matrix(NULL) -{ - m_matrix = new double[m_inChannels * m_outChannels]; - if (matrix) - { - if (isReading) - { - // Copy channel matrix for reading. - std::copy(matrix, matrix + m_inChannels * m_outChannels, m_matrix); - } - else - { - // Transpose channel matrix for writing. - for (int i=0; i < inChannels; i++) - for (int j=0; j < outChannels; j++) - m_matrix[j*inChannels + i] = matrix[i*outChannels + j]; - } - } - else - { - initDefaultMatrix(); - } -} - -ApplyChannelMatrix::~ApplyChannelMatrix() -{ - delete [] m_matrix; -} - -const char *ApplyChannelMatrix::name() const { return "channelMatrix"; } - -void ApplyChannelMatrix::describe() -{ - m_outChunk->f.channelCount = m_outChannels; - m_outChunk->f.pcm.minClip = m_minClip; - m_outChunk->f.pcm.maxClip = m_maxClip; -} - -void ApplyChannelMatrix::run(Chunk &inChunk, Chunk &outChunk) -{ - switch (m_format) - { - case kInt8: - run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); - break; - case kInt16: - run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); - break; - case kInt24: - case kInt32: - run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); - break; - case kFloat: - run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); - break; - case kDouble: - run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); - break; - default: - assert(false); - } -} - -template -void ApplyChannelMatrix::run(const void *inputData, void *outputData, int frameCount) -{ - const T *input = reinterpret_cast(inputData); - T *output = reinterpret_cast(outputData); - for (int frame=0; frame - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef SIMPLE_MODULE_H -#define SIMPLE_MODULE_H - -#include "config.h" - -#include "Compiler.h" -#include "Module.h" -#include "byteorder.h" - -#include -#include -#include -#include - -class SimpleModule : public Module -{ -public: - virtual void runPull() OVERRIDE; - virtual void runPush() OVERRIDE; - virtual void run(Chunk &inChunk, Chunk &outChunk) = 0; -}; - -struct SwapModule : public SimpleModule -{ -public: - virtual const char *name() const OVERRIDE { return "swap"; } - virtual void describe() OVERRIDE - { - m_outChunk->f.byteOrder = m_inChunk->f.byteOrder == AF_BYTEORDER_BIGENDIAN ? - AF_BYTEORDER_LITTLEENDIAN : AF_BYTEORDER_BIGENDIAN; - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - switch (m_inChunk->f.bytesPerSample(false)) - { - case 2: - run<2, int16_t>(inChunk, outChunk); break; - case 3: - run<3, char>(inChunk, outChunk); break; - case 4: - run<4, int32_t>(inChunk, outChunk); break; - case 8: - run<8, int64_t>(inChunk, outChunk); break; - default: - assert(false); break; - } - } - -private: - template - void run(Chunk &inChunk, Chunk &outChunk) - { - int sampleCount = inChunk.f.channelCount * inChunk.frameCount; - runSwap(reinterpret_cast(inChunk.buffer), - reinterpret_cast(outChunk.buffer), - sampleCount); - } - template - void runSwap(const T *input, T *output, int sampleCount) - { - for (int i=0; i -inline void SwapModule::runSwap<3, char>(const char *input, char *output, int count) -{ - for (int i=0; i -void transform(const void *srcData, void *dstData, size_t count) -{ - typedef typename UnaryFunction::argument_type InputType; - typedef typename UnaryFunction::result_type OutputType; - const InputType *src = reinterpret_cast(srcData); - OutputType *dst = reinterpret_cast(dstData); - std::transform(src, src + count, dst, UnaryFunction()); -} - -template -struct IntTypes; - -template <> -struct IntTypes { typedef int8_t SignedType; typedef uint8_t UnsignedType; }; -template <> -struct IntTypes { typedef int16_t SignedType; typedef uint16_t UnsignedType; }; -template <> -struct IntTypes { typedef int32_t SignedType; typedef uint32_t UnsignedType; }; -template <> -struct IntTypes { typedef int32_t SignedType; typedef uint32_t UnsignedType; }; - -template -struct signConverter -{ - typedef typename IntTypes::SignedType SignedType; - typedef typename IntTypes::UnsignedType UnsignedType; - - static const int kScaleBits = (Format + 1) * CHAR_BIT - 1; - static const int kMinSignedValue = 0-(1U< - { - UnsignedType operator()(SignedType x) { return x - kMinSignedValue; } - }; - - struct unsignedToSigned : public std::unary_function - { - SignedType operator()(UnsignedType x) { return x + kMinSignedValue; } - }; -}; - -class ConvertSign : public SimpleModule -{ -public: - ConvertSign(FormatCode format, bool fromSigned) : - m_format(format), - m_fromSigned(fromSigned) - { - } - virtual const char *name() const OVERRIDE { return "sign"; } - virtual void describe() OVERRIDE - { - const int scaleBits = m_inChunk->f.bytesPerSample(false) * CHAR_BIT; - m_outChunk->f.sampleFormat = - m_fromSigned ? AF_SAMPFMT_UNSIGNED : AF_SAMPFMT_TWOSCOMP; - double shift = -(1 << (scaleBits - 1)); - if (m_fromSigned) - shift = -shift; - m_outChunk->f.pcm.intercept += shift; - m_outChunk->f.pcm.minClip += shift; - m_outChunk->f.pcm.maxClip += shift; - } - virtual void run(Chunk &input, Chunk &output) OVERRIDE - { - size_t count = input.frameCount * m_inChunk->f.channelCount; - if (m_fromSigned) - convertSignedToUnsigned(input.buffer, output.buffer, count); - else - convertUnsignedToSigned(input.buffer, output.buffer, count); - } - -private: - FormatCode m_format; - bool m_fromSigned; - - template - static void convertSignedToUnsigned(const void *src, void *dst, size_t count) - { - transform::signedToUnsigned>(src, dst, count); - } - void convertSignedToUnsigned(const void *src, void *dst, size_t count) - { - switch (m_format) - { - case kInt8: - convertSignedToUnsigned(src, dst, count); - break; - case kInt16: - convertSignedToUnsigned(src, dst, count); - break; - case kInt24: - convertSignedToUnsigned(src, dst, count); - break; - case kInt32: - convertSignedToUnsigned(src, dst, count); - break; - default: - assert(false); - } - } - - template - static void convertUnsignedToSigned(const void *src, void *dst, size_t count) - { - transform::unsignedToSigned>(src, dst, count); - } - void convertUnsignedToSigned(const void *src, void *dst, size_t count) - { - switch (m_format) - { - case kInt8: - convertUnsignedToSigned(src, dst, count); - break; - case kInt16: - convertUnsignedToSigned(src, dst, count); - break; - case kInt24: - convertUnsignedToSigned(src, dst, count); - break; - case kInt32: - convertUnsignedToSigned(src, dst, count); - break; - default: - assert(false); - } - } -}; - -struct Expand3To4Module : public SimpleModule -{ -public: - Expand3To4Module(bool isSigned) : m_isSigned(isSigned) - { - } - virtual const char *name() const OVERRIDE { return "expand3to4"; } - virtual void describe() OVERRIDE - { - m_outChunk->f.packed = false; - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - int count = inChunk.f.channelCount * inChunk.frameCount; - if (m_isSigned) - run(reinterpret_cast(inChunk.buffer), - reinterpret_cast(outChunk.buffer), - count); - else - run(reinterpret_cast(inChunk.buffer), - reinterpret_cast(outChunk.buffer), - count); - } - -private: - bool m_isSigned; - - template - void run(const uint8_t *input, T *output, int sampleCount) - { - for (int i=0; i> 8; - } - } -}; - -struct Compress4To3Module : public SimpleModule -{ -public: - Compress4To3Module(bool isSigned) : m_isSigned(isSigned) - { - } - virtual const char *name() const OVERRIDE { return "compress4to3"; } - virtual void describe() OVERRIDE - { - m_outChunk->f.packed = true; - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - int count = inChunk.f.channelCount * inChunk.frameCount; - if (m_isSigned) - run(inChunk.buffer, outChunk.buffer, count); - else - run(inChunk.buffer, outChunk.buffer, count); - } - -private: - bool m_isSigned; - - template - void run(const void *input, void *output, int count) - { - const T *in = reinterpret_cast(input); - uint8_t *out = reinterpret_cast(output); - for (int i=0; i - void extract3(T in, uint8_t &c0, uint8_t &c1, uint8_t &c2) - { -#ifdef WORDS_BIGENDIAN - c0 = (in >> 16) & 0xff; - c1 = (in >> 8) & 0xff; - c2 = in & 0xff; -#else - c2 = (in >> 16) & 0xff; - c1 = (in >> 8) & 0xff; - c0 = in & 0xff; -#endif - } -}; - -template -struct intToFloat : public std::unary_function -{ - Result operator()(Arg x) const { return x; } -}; - -struct ConvertIntToFloat : public SimpleModule -{ - ConvertIntToFloat(FormatCode inFormat, FormatCode outFormat) : - m_inFormat(inFormat), m_outFormat(outFormat) - { - } - virtual const char *name() const OVERRIDE { return "intToFloat"; } - virtual void describe() OVERRIDE - { - m_outChunk->f.sampleFormat = m_outFormat == kDouble ? - AF_SAMPFMT_DOUBLE : AF_SAMPFMT_FLOAT; - m_outChunk->f.sampleWidth = m_outFormat == kDouble ? 64 : 32; - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - const void *src = inChunk.buffer; - void *dst = outChunk.buffer; - int count = inChunk.frameCount * inChunk.f.channelCount; - if (m_outFormat == kFloat) - { - switch (m_inFormat) - { - case kInt8: - run(src, dst, count); break; - case kInt16: - run(src, dst, count); break; - case kInt24: - case kInt32: - run(src, dst, count); break; - default: - assert(false); - } - } - else if (m_outFormat == kDouble) - { - switch (m_inFormat) - { - case kInt8: - run(src, dst, count); break; - case kInt16: - run(src, dst, count); break; - case kInt24: - case kInt32: - run(src, dst, count); break; - default: - assert(false); - } - } - } - -private: - FormatCode m_inFormat, m_outFormat; - - template - static void run(const void *src, void *dst, int count) - { - transform >(src, dst, count); - } -}; - -template -struct lshift : public std::unary_function -{ - Result operator()(const Arg &x) const { return x << shift; } -}; - -template -struct rshift : public std::unary_function -{ - Result operator()(const Arg &x) const { return x >> shift; } -}; - -struct ConvertInt : public SimpleModule -{ - ConvertInt(FormatCode inFormat, FormatCode outFormat) : - m_inFormat(inFormat), - m_outFormat(outFormat) - { - assert(isInteger(m_inFormat)); - assert(isInteger(m_outFormat)); - } - virtual const char *name() const OVERRIDE { return "convertInt"; } - virtual void describe() OVERRIDE - { - getDefaultPCMMapping(m_outChunk->f.sampleWidth, - m_outChunk->f.pcm.slope, - m_outChunk->f.pcm.intercept, - m_outChunk->f.pcm.minClip, - m_outChunk->f.pcm.maxClip); - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - const void *src = inChunk.buffer; - void *dst = outChunk.buffer; - size_t count = inChunk.frameCount * inChunk.f.channelCount; - -#define MASK(N, M) (((N)<<3) | (M)) -#define HANDLE(N, M) \ - case MASK(N, M): convertInt(src, dst, count); break; - switch (MASK(m_inFormat, m_outFormat)) - { - HANDLE(kInt8, kInt16) - HANDLE(kInt8, kInt24) - HANDLE(kInt8, kInt32) - HANDLE(kInt16, kInt8) - HANDLE(kInt16, kInt24) - HANDLE(kInt16, kInt32) - HANDLE(kInt24, kInt8) - HANDLE(kInt24, kInt16) - HANDLE(kInt24, kInt32) - HANDLE(kInt32, kInt8) - HANDLE(kInt32, kInt16) - HANDLE(kInt32, kInt24) - } -#undef MASK -#undef HANDLE - } - -private: - FormatCode m_inFormat, m_outFormat; - - void getDefaultPCMMapping(int &bits, double &slope, double &intercept, - double &minClip, double &maxClip) - { - bits = (m_outFormat + 1) * CHAR_BIT; - slope = (1LL << (bits - 1)); - intercept = 0; - minClip = -(1 << (bits - 1)); - maxClip = (1LL << (bits - 1)) - 1; - } - - static bool isInteger(FormatCode code) - { - return code >= kInt8 && code <= kInt32; - } - - template Output)> - struct shift; - - template - struct shift : - public rshift::SignedType, - typename IntTypes::SignedType, - (Input - Output) * CHAR_BIT> - { - }; - - template - struct shift : - public lshift::SignedType, - typename IntTypes::SignedType, - (Output - Input) * CHAR_BIT> - { - }; - - template - static void convertInt(const void *src, void *dst, int count) - { - transform >(src, dst, count); - } -}; - -template -struct floatToFloat : public std::unary_function -{ - Result operator()(Arg x) const { return x; } -}; - -struct ConvertFloat : public SimpleModule -{ - ConvertFloat(FormatCode inFormat, FormatCode outFormat) : - m_inFormat(inFormat), m_outFormat(outFormat) - { - assert((m_inFormat == kFloat && m_outFormat == kDouble) || - (m_inFormat == kDouble && m_outFormat == kFloat)); - } - virtual const char *name() const OVERRIDE { return "convertFloat"; } - virtual void describe() OVERRIDE - { - switch (m_outFormat) - { - case kFloat: - m_outChunk->f.sampleFormat = AF_SAMPFMT_FLOAT; - m_outChunk->f.sampleWidth = 32; - break; - case kDouble: - m_outChunk->f.sampleFormat = AF_SAMPFMT_DOUBLE; - m_outChunk->f.sampleWidth = 64; - break; - default: - assert(false); - } - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - const void *src = inChunk.buffer; - void *dst = outChunk.buffer; - size_t count = inChunk.frameCount * inChunk.f.channelCount; - - switch (m_outFormat) - { - case kFloat: - transform >(src, dst, count); - break; - case kDouble: - transform >(src, dst, count); - break; - default: - assert(false); - } - } - -private: - FormatCode m_inFormat, m_outFormat; -}; - -struct Clip : public SimpleModule -{ - Clip(FormatCode format, const PCMInfo &outputMapping) : - m_format(format), - m_outputMapping(outputMapping) - { - } - virtual const char *name() const OVERRIDE { return "clip"; } - virtual void describe() OVERRIDE - { - m_outChunk->f.pcm = m_outputMapping; - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - const void *src = inChunk.buffer; - void *dst = outChunk.buffer; - int count = inChunk.frameCount * inChunk.f.channelCount; - - switch (m_format) - { - case kInt8: - run(src, dst, count); break; - case kInt16: - run(src, dst, count); break; - case kInt24: - case kInt32: - run(src, dst, count); break; - case kFloat: - run(src, dst, count); break; - case kDouble: - run(src, dst, count); break; - default: - assert(false); - } - } - -private: - FormatCode m_format; - PCMInfo m_outputMapping; - - template - void run(const void *srcData, void *dstData, int count) - { - const T minValue = m_outputMapping.minClip; - const T maxValue = m_outputMapping.maxClip; - - const T *src = reinterpret_cast(srcData); - T *dst = reinterpret_cast(dstData); - - for (int i=0; if.sampleFormat = AF_SAMPFMT_TWOSCOMP; - m_outChunk->f.sampleWidth = (m_outputFormat + 1) * CHAR_BIT; - m_outChunk->f.pcm = m_outputMapping; - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - const void *src = inChunk.buffer; - void *dst = outChunk.buffer; - int count = inChunk.frameCount * inChunk.f.channelCount; - - if (m_inputFormat == kFloat) - { - switch (m_outputFormat) - { - case kInt8: - run(src, dst, count); break; - case kInt16: - run(src, dst, count); break; - case kInt24: - case kInt32: - run(src, dst, count); break; - default: - assert(false); - } - } - else if (m_inputFormat == kDouble) - { - switch (m_outputFormat) - { - case kInt8: - run(src, dst, count); break; - case kInt16: - run(src, dst, count); break; - case kInt24: - case kInt32: - run(src, dst, count); break; - default: - assert(false); - } - } - } - -private: - FormatCode m_inputFormat, m_outputFormat; - PCMInfo m_inputMapping, m_outputMapping; - - template - void run(const void *srcData, void *dstData, int count) - { - const Input *src = reinterpret_cast(srcData); - Output *dst = reinterpret_cast(dstData); - - double m = m_outputMapping.slope / m_inputMapping.slope; - double b = m_outputMapping.intercept - m * m_inputMapping.intercept; - double minValue = m_outputMapping.minClip; - double maxValue = m_outputMapping.maxClip; - - for (int i=0; i(t); - } - } -}; - -struct ApplyChannelMatrix : public SimpleModule -{ -public: - ApplyChannelMatrix(FormatCode format, bool isReading, - int inChannels, int outChannels, - double minClip, double maxClip, const double *matrix); - virtual ~ApplyChannelMatrix(); - virtual const char *name() const OVERRIDE; - virtual void describe() OVERRIDE; - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE; - -private: - FormatCode m_format; - int m_inChannels, m_outChannels; - double m_minClip, m_maxClip; - double *m_matrix; - - void initDefaultMatrix(); - template - void run(const void *input, void *output, int frameCount); -}; - -struct Transform : public SimpleModule -{ -public: - Transform(FormatCode format, - const PCMInfo &inputMapping, - const PCMInfo &outputMapping) : - m_format(format), - m_inputMapping(inputMapping), - m_outputMapping(outputMapping) - { - assert(m_format == kFloat || m_format == kDouble); - } - virtual const char *name() const OVERRIDE { return "transform"; } - virtual void describe() OVERRIDE - { - m_outChunk->f.pcm = m_outputMapping; - } - virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE - { - int count = inChunk.frameCount * inChunk.f.channelCount; - if (m_format == kFloat) - run(inChunk.buffer, outChunk.buffer, count); - else if (m_format == kDouble) - run(inChunk.buffer, outChunk.buffer, count); - else - assert(false); - } - -private: - FormatCode m_format; - PCMInfo m_inputMapping, m_outputMapping; - - template - void run(const void *srcData, void *dstData, int count) - { - const T *src = reinterpret_cast(srcData); - T *dst = reinterpret_cast(dstData); - - double m = m_outputMapping.slope / m_inputMapping.slope; - double b = m_outputMapping.intercept - m * m_inputMapping.intercept; - - for (int i=0; i - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" - -#include -#include -#include -#include -#include -#include - -#include "byteorder.h" -#include "RebufferModule.h" - -static void setChunkData(Chunk &chunk, int frameOffset) -{ - int16_t *data = static_cast(chunk.buffer); - int channels = chunk.f.channelCount; - for (unsigned i=0; i(chunk.buffer); - int channels = chunk.f.channelCount; - for (unsigned i=0; i < chunk.frameCount; i++) - for (int c=0; c < channels; c++) - EXPECT_EQ(data[i * channels + c], - int(frameOffset + i) * channels + c); -} - -class TestSourceModule : public Module -{ -public: - TestSourceModule() : - m_startFrame(0), - m_frameCount(0), - m_expectedRequestLength(0) - { - } - unsigned startFrame() const { return m_startFrame; } - void setStartFrame(unsigned startFrame) { m_startFrame = startFrame; } - unsigned frameCount() const { return m_frameCount; } - void setFrameCount(unsigned frameCount) { m_frameCount = frameCount; } - unsigned expectedRequestLength() const { return m_expectedRequestLength; } - void setExpectedRequestLength(unsigned expectedRequestLength) - { - m_expectedRequestLength = expectedRequestLength; - } - - void runPull() - { - EXPECT_EQ(m_outChunk->frameCount, m_expectedRequestLength); - unsigned frameCount = std::min(m_outChunk->frameCount, m_frameCount); - m_outChunk->frameCount = frameCount; - setChunkData(*m_outChunk, m_startFrame); - m_startFrame += frameCount; - m_frameCount -= frameCount; - } - -private: - unsigned m_startFrame; - unsigned m_frameCount; - unsigned m_expectedRequestLength; -}; - -class TestSinkModule : public Module -{ -public: - TestSinkModule() : - m_startFrame(0), - m_expectedRequestLength(0) - { - } - unsigned startFrame() const { return m_startFrame; } - void setStartFrame(unsigned startFrame) { m_startFrame = startFrame; } - unsigned expectedRequestLength() const { return m_expectedRequestLength; } - void setExpectedRequestLength(unsigned expectedRequestLength) - { - m_expectedRequestLength = expectedRequestLength; - } - void runPush() - { - EXPECT_EQ(m_inChunk->frameCount, m_expectedRequestLength); - validateChunkData(*m_inChunk, m_startFrame); - m_startFrame += m_inChunk->frameCount; - } - -private: - unsigned m_startFrame; - unsigned m_expectedRequestLength; -}; - -static AudioFormat createAudioFormat(int channels) -{ - AudioFormat f = - { - 44100, - AF_SAMPFMT_TWOSCOMP, - 16, - _AF_BYTEORDER_NATIVE, - { 0, 0, 0, 0 }, - channels, - AF_COMPRESSION_NONE, - NULL, - false - }; - - return f; -} - -static void testFixedToVariable(bool multiple) -{ - const int channels = 2; - AudioFormat f = createAudioFormat(channels); - - SharedPtr rebuffer = - new RebufferModule(RebufferModule::FixedToVariable, f.bytesPerFrame(), - 10, multiple); - - SharedPtr source = new TestSourceModule(); - rebuffer->setSource(source.get()); - - SharedPtr fixedChunk(new Chunk()); - SharedPtr variableChunk(new Chunk()); - - const int maxFrameCount = 50; - fixedChunk->f = f; - fixedChunk->allocate(maxFrameCount * f.bytesPerFrame()); - - variableChunk->f = f; - variableChunk->allocate(maxFrameCount * f.bytesPerFrame()); - - rebuffer->setInChunk(fixedChunk.get()); - rebuffer->setOutChunk(variableChunk.get()); - - source->setOutChunk(fixedChunk.get()); - - // Initialize source to contain 100 frames. - source->setFrameCount(100); - - // Request 22 frames from rebuffer module. - variableChunk->frameCount = 22; - source->setExpectedRequestLength(multiple ? 30 : 10); - rebuffer->runPull(); - // Check that 30 frames have been pulled from source module. - EXPECT_EQ(30u, source->startFrame()); - // Check that rebuffer module has fulfilled request of 22 frames. - EXPECT_EQ(22u, variableChunk->frameCount); - // Validate output data. - validateChunkData(*variableChunk, 0); - - // Request 30 frames from rebuffer module. - variableChunk->frameCount = 30; - source->setExpectedRequestLength(multiple ? 30 : 10); - rebuffer->runPull(); - // Check that 60 frames have been pulled from source module. - EXPECT_EQ(60u, source->startFrame()); - // Check that rebuffer module has fulfilled request of 28 frames. - EXPECT_EQ(30u, variableChunk->frameCount); - // Validate output data. - validateChunkData(*variableChunk, 22); - - // Request 50 frames from rebuffer module. - variableChunk->frameCount = 50; - source->setExpectedRequestLength(multiple ? 50 : 10); - rebuffer->runPull(); - // Check that 100 frames have been pulled from source module. - EXPECT_EQ(100u, source->startFrame()); - // Check that rebuffer module has filled 48 of 50 frames requested. - EXPECT_EQ(48u, variableChunk->frameCount); - // Validate output data. - validateChunkData(*variableChunk, 52); -} - -TEST(RebufferModule, FixedToVariable) -{ - testFixedToVariable(false); -} - -TEST(RebufferModule, FixedToVariable_Multiple) -{ - testFixedToVariable(true); -} - -/* - Make a request to the rebuffer module which is large enough - to pull the final short chunk from the test source but which - doesn't consume all the frames of that chunk. - - Verify that a subsequent request to the rebuffer module correctly - produces the remaining frames of that chunk. -*/ -static void testBufferingAfterShortChunk(bool multiple) -{ - const int channels = 2; - AudioFormat f = createAudioFormat(channels); - - SharedPtr rebuffer = - new RebufferModule(RebufferModule::FixedToVariable, f.bytesPerFrame(), - 10, multiple); - - SharedPtr source = new TestSourceModule(); - rebuffer->setSource(source.get()); - - SharedPtr fixedChunk(new Chunk()); - SharedPtr variableChunk(new Chunk()); - - const int maxFrameCount = 30; - fixedChunk->f = f; - fixedChunk->allocate(maxFrameCount * f.bytesPerFrame()); - - variableChunk->f = f; - variableChunk->allocate(maxFrameCount * f.bytesPerFrame()); - - rebuffer->setInChunk(fixedChunk.get()); - rebuffer->setOutChunk(variableChunk.get()); - - source->setOutChunk(fixedChunk.get()); - - // Initialize source to contain 23 frames. - source->setFrameCount(23); - - // Request 21 frames from rebuffer module. - variableChunk->frameCount = 21; - source->setExpectedRequestLength(multiple ? 30 : 10); - rebuffer->runPull(); - // Check that all 23 frames have been pulled from source module. - EXPECT_EQ(23u, source->startFrame()); - // Check that rebuffer module has fulfilled request of 21 frames. - EXPECT_EQ(21u, variableChunk->frameCount); - // Validate output data. - validateChunkData(*variableChunk, 0); - - // Request 5 frames from rebuffer module. - variableChunk->frameCount = 5; - source->setExpectedRequestLength(-1); - rebuffer->runPull(); - // Check that rebuffer module has delivered remaining 2 frames. - EXPECT_EQ(2u, variableChunk->frameCount); - // Validate output data. - validateChunkData(*variableChunk, 21); -} - -TEST(RebufferModule, FixedToVariable_BufferingAfterShortChunk) -{ - testBufferingAfterShortChunk(false); -} - -TEST(RebufferModule, FixedToVariable_BufferingAfterShortChunk_Multiple) -{ - testBufferingAfterShortChunk(true); -} - -static void testVariableToFixed(bool multiple) -{ - const int channels = 2; - AudioFormat f = createAudioFormat(channels); - - SharedPtr rebuffer = - new RebufferModule(RebufferModule::VariableToFixed, f.bytesPerFrame(), - 10, multiple); - SharedPtr sink = new TestSinkModule(); - rebuffer->setSink(sink.get()); - - SharedPtr variableChunk(new Chunk()); - SharedPtr fixedChunk(new Chunk()); - - const int maxFrameCount = 40; - variableChunk->f = f; - variableChunk->allocate(maxFrameCount * f.bytesPerFrame()); - - fixedChunk->f = f; - fixedChunk->allocate(maxFrameCount * f.bytesPerFrame()); - - rebuffer->setInChunk(variableChunk.get()); - rebuffer->setOutChunk(fixedChunk.get()); - - sink->setInChunk(fixedChunk.get()); - - // Push 23 frames to the rebuffer module. - variableChunk->frameCount = 23; - setChunkData(*variableChunk, 0); - sink->setExpectedRequestLength(multiple ? 20 : 10); - rebuffer->runPush(); - // Check that 20 frames have been pushed to the sink module. - EXPECT_EQ(sink->startFrame(), 20u); - // Check that the last push contained 20 (multiple) or 10 (single) frames. - EXPECT_EQ(fixedChunk->frameCount, multiple ? 20u : 10u); - - // Push another 37 frames to the rebuffer module. - variableChunk->frameCount = 37; - setChunkData(*variableChunk, 23); - sink->setExpectedRequestLength(multiple ? 40 : 10); - rebuffer->runPush(); - // Check that 60 frames have been pushed to the sink module. - EXPECT_EQ(sink->startFrame(), 60u); - // Check that the last push contained 40 (multiple) or 10 (single) frames. - EXPECT_EQ(fixedChunk->frameCount, multiple ? 40u : 10u); -} - -TEST(RebufferModule, VariableToFixed) -{ - testVariableToFixed(false); -} - -TEST(RebufferModule, VariableToFixed_Multiple) -{ - testVariableToFixed(true); -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/libaudiofile/openclose.cpp b/tools/audiofile-0.3.6/libaudiofile/openclose.cpp deleted file mode 100644 index eef7b684..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/openclose.cpp +++ /dev/null @@ -1,462 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000-2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "config.h" - -#include -#include -#include - -#ifdef HAVE_UNISTD_H -#include -#endif - -#include - -#include "File.h" -#include "FileHandle.h" -#include "Instrument.h" -#include "Marker.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "modules/Module.h" -#include "modules/ModuleState.h" -#include "units.h" -#include "util.h" - -static status _afOpenFile (int access, File *f, const char *filename, - AFfilehandle *file, AFfilesetup filesetup); - -int _af_identify (File *f, int *implemented) -{ - if (!f->canSeek()) - { - _af_error(AF_BAD_LSEEK, "Cannot seek in file"); - return AF_FILE_UNKNOWN; - } - - AFfileoffset curpos = f->tell(); - - for (int i=0; i<_AF_NUM_UNITS; i++) - { - if (_af_units[i].recognize && - _af_units[i].recognize(f)) - { - if (implemented != NULL) - *implemented = _af_units[i].implemented; - f->seek(curpos, File::SeekFromBeginning); - return _af_units[i].fileFormat; - } - } - - f->seek(curpos, File::SeekFromBeginning); - - if (implemented != NULL) - *implemented = false; - - return AF_FILE_UNKNOWN; -} - -int afIdentifyFD (int fd) -{ - /* - Duplicate the file descriptor since otherwise the - original file descriptor would get closed when we close - the virtual file below. - */ - fd = dup(fd); - File *f = File::create(fd, File::ReadAccess); - - int result = _af_identify(f, NULL); - - delete f; - - return result; -} - -int afIdentifyNamedFD (int fd, const char *filename, int *implemented) -{ - /* - Duplicate the file descriptor since otherwise the - original file descriptor would get closed when we close - the virtual file below. - */ - fd = dup(fd); - - File *f = File::create(fd, File::ReadAccess); - if (!f) - { - _af_error(AF_BAD_OPEN, "could not open file '%s'", filename); - return AF_FILE_UNKNOWN; - } - - int result = _af_identify(f, implemented); - - delete f; - - return result; -} - -AFfilehandle afOpenFD (int fd, const char *mode, AFfilesetup setup) -{ - if (!mode) - { - _af_error(AF_BAD_ACCMODE, "null access mode"); - return AF_NULL_FILEHANDLE; - } - - int access; - if (mode[0] == 'r') - { - access = _AF_READ_ACCESS; - } - else if (mode[0] == 'w') - { - access = _AF_WRITE_ACCESS; - } - else - { - _af_error(AF_BAD_ACCMODE, "unrecognized access mode '%s'", mode); - return AF_NULL_FILEHANDLE; - } - - File *f = File::create(fd, access == _AF_READ_ACCESS ? - File::ReadAccess : File::WriteAccess); - - AFfilehandle filehandle = NULL; - if (_afOpenFile(access, f, NULL, &filehandle, setup) != AF_SUCCEED) - { - delete f; - } - - return filehandle; -} - -AFfilehandle afOpenNamedFD (int fd, const char *mode, AFfilesetup setup, - const char *filename) -{ - if (!mode) - { - _af_error(AF_BAD_ACCMODE, "null access mode"); - return AF_NULL_FILEHANDLE; - } - - int access; - if (mode[0] == 'r') - access = _AF_READ_ACCESS; - else if (mode[0] == 'w') - access = _AF_WRITE_ACCESS; - else - { - _af_error(AF_BAD_ACCMODE, "unrecognized access mode '%s'", mode); - return AF_NULL_FILEHANDLE; - } - - File *f = File::create(fd, access == _AF_READ_ACCESS ? - File::ReadAccess : File::WriteAccess); - - AFfilehandle filehandle; - if (_afOpenFile(access, f, filename, &filehandle, setup) != AF_SUCCEED) - { - delete f; - } - - return filehandle; -} - -AFfilehandle afOpenFile (const char *filename, const char *mode, AFfilesetup setup) -{ - if (!mode) - { - _af_error(AF_BAD_ACCMODE, "null access mode"); - return AF_NULL_FILEHANDLE; - } - - int access; - if (mode[0] == 'r') - { - access = _AF_READ_ACCESS; - } - else if (mode[0] == 'w') - { - access = _AF_WRITE_ACCESS; - } - else - { - _af_error(AF_BAD_ACCMODE, "unrecognized access mode '%s'", mode); - return AF_NULL_FILEHANDLE; - } - - File *f = File::open(filename, - access == _AF_READ_ACCESS ? File::ReadAccess : File::WriteAccess); - if (!f) - { - _af_error(AF_BAD_OPEN, "could not open file '%s'", filename); - return AF_NULL_FILEHANDLE; - } - - AFfilehandle filehandle; - if (_afOpenFile(access, f, filename, &filehandle, setup) != AF_SUCCEED) - { - delete f; - } - - return filehandle; -} - -AFfilehandle afOpenVirtualFile (AFvirtualfile *vf, const char *mode, - AFfilesetup setup) -{ - if (!vf) - { - _af_error(AF_BAD_OPEN, "null virtual file"); - return AF_NULL_FILEHANDLE; - } - - if (!mode) - { - _af_error(AF_BAD_ACCMODE, "null access mode"); - return AF_NULL_FILEHANDLE; - } - - int access; - if (mode[0] == 'r') - { - access = _AF_READ_ACCESS; - } - else if (mode[0] == 'w') - { - access = _AF_WRITE_ACCESS; - } - else - { - _af_error(AF_BAD_ACCMODE, "unrecognized access mode '%s'", mode); - return AF_NULL_FILEHANDLE; - } - - File *f = File::create(vf, - access == _AF_READ_ACCESS ? File::ReadAccess : File::WriteAccess); - if (!f) - { - _af_error(AF_BAD_OPEN, "could not open virtual file"); - return AF_NULL_FILEHANDLE; - } - - AFfilehandle filehandle; - if (_afOpenFile(access, f, NULL, &filehandle, setup) != AF_SUCCEED) - { - delete f; - } - - return filehandle; -} - -static status _afOpenFile (int access, File *f, const char *filename, - AFfilehandle *file, AFfilesetup filesetup) -{ - int fileFormat = AF_FILE_UNKNOWN; - int implemented = true; - - int userSampleFormat = 0; - double userSampleRate = 0.0; - PCMInfo userPCM = {0}; - bool userFormatSet = false; - - AFfilehandle filehandle = AF_NULL_FILEHANDLE; - AFfilesetup completesetup = AF_NULL_FILESETUP; - - *file = AF_NULL_FILEHANDLE; - - if (access == _AF_WRITE_ACCESS || filesetup != AF_NULL_FILESETUP) - { - if (!_af_filesetup_ok(filesetup)) - return AF_FAIL; - - fileFormat = filesetup->fileFormat; - if (access == _AF_READ_ACCESS && fileFormat != AF_FILE_RAWDATA) - { - _af_error(AF_BAD_FILESETUP, - "warning: opening file for read access: " - "ignoring file setup with non-raw file format"); - filesetup = AF_NULL_FILESETUP; - fileFormat = _af_identify(f, &implemented); - } - } - else if (filesetup == AF_NULL_FILESETUP) - fileFormat = _af_identify(f, &implemented); - - if (fileFormat == AF_FILE_UNKNOWN) - { - if (filename != NULL) - _af_error(AF_BAD_NOT_IMPLEMENTED, - "'%s': unrecognized audio file format", - filename); - else - _af_error(AF_BAD_NOT_IMPLEMENTED, - "unrecognized audio file format"); - return AF_FAIL; - } - - const char *formatName = _af_units[fileFormat].name; - - if (!implemented) - { - _af_error(AF_BAD_NOT_IMPLEMENTED, - "%s format not currently supported", formatName); - } - - completesetup = NULL; - if (filesetup != AF_NULL_FILESETUP) - { - userSampleFormat = filesetup->tracks[0].f.sampleFormat; - userPCM = filesetup->tracks[0].f.pcm; - userSampleRate = filesetup->tracks[0].f.sampleRate; - userFormatSet = true; - if ((completesetup = _af_units[fileFormat].completesetup(filesetup)) == NULL) - return AF_FAIL; - } - - filehandle = _AFfilehandle::create(fileFormat); - if (!filehandle) - { - if (completesetup) - afFreeFileSetup(completesetup); - return AF_FAIL; - } - - filehandle->m_fh = f; - filehandle->m_access = access; - filehandle->m_seekok = f->canSeek(); - if (filename != NULL) - filehandle->m_fileName = strdup(filename); - else - filehandle->m_fileName = NULL; - filehandle->m_fileFormat = fileFormat; - - status result = access == _AF_READ_ACCESS ? - filehandle->readInit(completesetup) : - filehandle->writeInit(completesetup); - - if (result != AF_SUCCEED) - { - delete filehandle; - filehandle = AF_NULL_FILEHANDLE; - if (completesetup) - afFreeFileSetup(completesetup); - return AF_FAIL; - } - - if (completesetup) - afFreeFileSetup(completesetup); - - /* - Initialize virtual format. - */ - for (int t=0; tm_trackCount; t++) - { - Track *track = &filehandle->m_tracks[t]; - - track->v = track->f; - - if (userFormatSet) - { - track->v.sampleFormat = userSampleFormat; - track->v.pcm = userPCM; - track->v.sampleRate = userSampleRate; - } - - track->v.compressionType = AF_COMPRESSION_NONE; - track->v.compressionParams = NULL; - -#if WORDS_BIGENDIAN - track->v.byteOrder = AF_BYTEORDER_BIGENDIAN; -#else - track->v.byteOrder = AF_BYTEORDER_LITTLEENDIAN; -#endif - - track->ms = new ModuleState(); - if (track->ms->init(filehandle, track) == AF_FAIL) - { - delete filehandle; - return AF_FAIL; - } - } - - *file = filehandle; - - return AF_SUCCEED; -} - -int afSyncFile (AFfilehandle handle) -{ - if (!_af_filehandle_ok(handle)) - return -1; - - if (handle->m_access == _AF_WRITE_ACCESS) - { - /* Finish writes on all tracks. */ - for (int trackno = 0; trackno < handle->m_trackCount; trackno++) - { - Track *track = &handle->m_tracks[trackno]; - - if (track->ms->isDirty() && track->ms->setup(handle, track) == AF_FAIL) - return -1; - - if (track->ms->sync(handle, track) != AF_SUCCEED) - return -1; - } - - /* Update file headers. */ - if (handle->update() != AF_SUCCEED) - return AF_FAIL; - } - else if (handle->m_access == _AF_READ_ACCESS) - { - /* Do nothing. */ - } - else - { - _af_error(AF_BAD_ACCMODE, "unrecognized access mode %d", - handle->m_access); - return AF_FAIL; - } - - return AF_SUCCEED; -} - -int afCloseFile (AFfilehandle file) -{ - int err; - - if (!_af_filehandle_ok(file)) - return -1; - - afSyncFile(file); - - err = file->m_fh->close(); - if (err < 0) - _af_error(AF_BAD_CLOSE, "close returned %d", err); - - delete file->m_fh; - delete file; - - return 0; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/pcm.cpp b/tools/audiofile-0.3.6/libaudiofile/pcm.cpp deleted file mode 100644 index ddca196f..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/pcm.cpp +++ /dev/null @@ -1,172 +0,0 @@ -/* - Audio File Library - Copyright (C) 1999-2000, Michael Pruett - Copyright (C) 2000-2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - pcm.cpp - - This file declares default PCM mappings and defines routines - for accessing and modifying PCM mappings in a track. -*/ - -#include "config.h" - -#include "FileHandle.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "modules/Module.h" -#include "modules/ModuleState.h" -#include "pcm.h" -#include "util.h" - -extern const PCMInfo _af_default_signed_integer_pcm_mappings[] = -{ - {0, 0, 0, 0}, - {SLOPE_INT8, 0, MIN_INT8, MAX_INT8}, - {SLOPE_INT16, 0, MIN_INT16, MAX_INT16}, - {SLOPE_INT24, 0, MIN_INT24, MAX_INT24}, - {SLOPE_INT32, 0, MIN_INT32, MAX_INT32} -}; - -extern const PCMInfo _af_default_unsigned_integer_pcm_mappings[] = -{ - {0, 0, 0, 0}, - {SLOPE_INT8, INTERCEPT_U_INT8, 0, MAX_U_INT8}, - {SLOPE_INT16, INTERCEPT_U_INT16, 0, MAX_U_INT16}, - {SLOPE_INT24, INTERCEPT_U_INT24, 0, MAX_U_INT24}, - {SLOPE_INT32, INTERCEPT_U_INT32, 0, MAX_U_INT32} -}; - -extern const PCMInfo _af_default_float_pcm_mapping = -{1, 0, 0, 0}; - -extern const PCMInfo _af_default_double_pcm_mapping = -{1, 0, 0, 0}; - -/* - Initialize the PCM mapping for a given track. -*/ -void afInitPCMMapping (AFfilesetup setup, int trackid, - double slope, double intercept, double minClip, double maxClip) -{ - if (!_af_filesetup_ok(setup)) - return; - - TrackSetup *track = setup->getTrack(trackid); - if (!track) - return; - - track->f.pcm.slope = slope; - track->f.pcm.intercept = intercept; - track->f.pcm.minClip = minClip; - track->f.pcm.maxClip = maxClip; -} - -int afSetVirtualPCMMapping (AFfilehandle file, int trackid, - double slope, double intercept, double minClip, double maxClip) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - track->v.pcm.slope = slope; - track->v.pcm.intercept = intercept; - track->v.pcm.minClip = minClip; - track->v.pcm.maxClip = maxClip; - - track->ms->setDirty(); - - return 0; -} - -int afSetTrackPCMMapping (AFfilehandle file, int trackid, - double slope, double intercept, double minClip, double maxClip) -{ - if (!_af_filehandle_ok(file)) - return -1; - - Track *track = file->getTrack(trackid); - if (!track) - return -1; - - /* - NOTE: this is highly unusual: we don't ordinarily - change track.f after the file is opened. - - PCM mapping is the exception because this information - is not encoded in sound files' headers using today's - formats, so the user will probably want to set this - information on a regular basis. The defaults may or - may not be what the user wants. - */ - - track->f.pcm.slope = slope; - track->f.pcm.intercept = intercept; - track->f.pcm.minClip = minClip; - track->f.pcm.maxClip = maxClip; - - track->ms->setDirty(); - - return 0; -} - -void afGetPCMMapping (AFfilehandle file, int trackid, - double *slope, double *intercept, double *minClip, double *maxClip) -{ - if (!_af_filehandle_ok(file)) - return; - - Track *track = file->getTrack(trackid); - if (!track) - return; - - if (slope) - *slope = track->f.pcm.slope; - if (intercept) - *intercept = track->f.pcm.intercept; - if (minClip) - *minClip = track->f.pcm.minClip; - if (maxClip) - *maxClip = track->f.pcm.maxClip; -} - -void afGetVirtualPCMMapping (AFfilehandle file, int trackid, - double *slope, double *intercept, double *minClip, double *maxClip) -{ - if (!_af_filehandle_ok(file)) - return; - - Track *track = file->getTrack(trackid); - if (!track) - return; - - if (slope) - *slope = track->v.pcm.slope; - if (intercept) - *intercept = track->v.pcm.intercept; - if (minClip) - *minClip = track->v.pcm.minClip; - if (maxClip) - *maxClip = track->v.pcm.maxClip; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/pcm.h b/tools/audiofile-0.3.6/libaudiofile/pcm.h deleted file mode 100644 index 83c96409..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/pcm.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - pcm.h - - This file defines various constants for PCM mapping. -*/ - -#ifndef PCM_H -#define PCM_H - -/* - SLOPE_INTN = 2^(N-1) -*/ -#define SLOPE_INT8 (128.0) -#define SLOPE_INT16 (32768.0) -#define SLOPE_INT24 (8388608.0) -#define SLOPE_INT32 (2147483648.0) - -/* - INTERCEPT_U_INTN = 2^(N-1) -*/ -#define INTERCEPT_U_INT8 (128.0) -#define INTERCEPT_U_INT16 (32768.0) -#define INTERCEPT_U_INT24 (8388608.0) -#define INTERCEPT_U_INT32 (2147483648.0) - -/* - MIN_INTN = -(2^(N-1)) -*/ -#define MIN_INT8 (-128.0) -#define MIN_INT16 (-32768.0) -#define MIN_INT24 (-8388608.0) -#define MIN_INT32 (-2147483648.0) - -/* - MAX_INTN = 2^(N-1) - 1 -*/ -#define MAX_INT8 127.0 -#define MAX_INT16 32767.0 -#define MAX_INT24 8388607.0 -#define MAX_INT32 2147483647.0 - -/* - MAX_U_INTN = 2^N - 1 -*/ -#define MAX_U_INT8 255.0 -#define MAX_U_INT16 65535.0 -#define MAX_U_INT24 16777215.0 -#define MAX_U_INT32 4294967295.0 - -extern const PCMInfo _af_default_signed_integer_pcm_mappings[]; -extern const PCMInfo _af_default_unsigned_integer_pcm_mappings[]; -extern const PCMInfo _af_default_float_pcm_mapping; -extern const PCMInfo _af_default_double_pcm_mapping; - -#endif diff --git a/tools/audiofile-0.3.6/libaudiofile/query.cpp b/tools/audiofile-0.3.6/libaudiofile/query.cpp deleted file mode 100644 index 5d693864..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/query.cpp +++ /dev/null @@ -1,482 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - query.cpp - - This file contains the implementation of the Audio File Library's - query mechanism. Querying through the afQuery calls can allow the - programmer to determine the capabilities and characteristics of - the Audio File Library implementation and its supported formats. -*/ - -#include "config.h" - -#include -#include - -#include "audiofile.h" -#include "afinternal.h" -#include "aupvlist.h" -#include "error.h" -#include "util.h" -#include "units.h" -#include "compression.h" -#include "Instrument.h" - -AUpvlist _afQueryFileFormat (int arg1, int arg2, int arg3, int arg4); -AUpvlist _afQueryInstrument (int arg1, int arg2, int arg3, int arg4); -AUpvlist _afQueryInstrumentParameter (int arg1, int arg2, int arg3, int arg4); -AUpvlist _afQueryLoop (int arg1, int arg2, int arg3, int arg4); -AUpvlist _afQueryMarker (int arg1, int arg2, int arg3, int arg4); -AUpvlist _afQueryMiscellaneous (int arg1, int arg2, int arg3, int arg4); -AUpvlist _afQueryCompression (int arg1, int arg2, int arg3, int arg4); -AUpvlist _afQueryCompressionParameter (int arg1, int arg2, int arg3, int arg4); - -AUpvlist afQuery (int querytype, int arg1, int arg2, int arg3, int arg4) -{ - switch (querytype) - { - case AF_QUERYTYPE_INST: - return _afQueryInstrument(arg1, arg2, arg3, arg4); - case AF_QUERYTYPE_INSTPARAM: - return _afQueryInstrumentParameter(arg1, arg2, arg3, arg4); - case AF_QUERYTYPE_LOOP: - return _afQueryLoop(arg1, arg2, arg3, arg4); - case AF_QUERYTYPE_FILEFMT: - return _afQueryFileFormat(arg1, arg2, arg3, arg4); - case AF_QUERYTYPE_COMPRESSION: - return _afQueryCompression(arg1, arg2, arg3, arg4); - case AF_QUERYTYPE_COMPRESSIONPARAM: - /* FIXME: This selector is not implemented. */ - return AU_NULL_PVLIST; - case AF_QUERYTYPE_MISC: - /* FIXME: This selector is not implemented. */ - return AU_NULL_PVLIST; - case AF_QUERYTYPE_MARK: - return _afQueryMarker(arg1, arg2, arg3, arg4); - } - - _af_error(AF_BAD_QUERYTYPE, "bad query type"); - return AU_NULL_PVLIST; -} - -/* ARGSUSED3 */ -AUpvlist _afQueryFileFormat (int arg1, int arg2, int arg3, int arg4) -{ - switch (arg1) - { - /* The following select only on arg1. */ - case AF_QUERY_ID_COUNT: - { - int count = 0, idx; - for (idx = 0; idx < _AF_NUM_UNITS; idx++) - if (_af_units[idx].implemented) - count++; - return _af_pv_long(count); - } - /* NOTREACHED */ - break; - - case AF_QUERY_IDS: - { - int count = 0, idx; - int *buffer; - - buffer = (int *) _af_calloc(_AF_NUM_UNITS, sizeof (int)); - if (buffer == NULL) - return AU_NULL_PVLIST; - - for (idx = 0; idx < _AF_NUM_UNITS; idx++) - if (_af_units[idx].implemented) - buffer[count++] = idx; - - if (count == 0) - { - free(buffer); - return AU_NULL_PVLIST; - } - - return _af_pv_pointer(buffer); - } - /* NOTREACHED */ - break; - - /* The following select on arg2. */ - case AF_QUERY_LABEL: - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - return _af_pv_pointer(const_cast(_af_units[arg2].label)); - - case AF_QUERY_NAME: - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - return _af_pv_pointer(const_cast(_af_units[arg2].name)); - - case AF_QUERY_DESC: - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - return _af_pv_pointer(const_cast(_af_units[arg2].description)); - - case AF_QUERY_IMPLEMENTED: - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return _af_pv_long(0); - return _af_pv_long(_af_units[arg2].implemented); - - /* The following select on arg3. */ - case AF_QUERY_SAMPLE_FORMATS: - if (arg3 < 0 || arg3 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - switch (arg2) - { - case AF_QUERY_DEFAULT: - return _af_pv_long(_af_units[arg3].defaultSampleFormat); - default: - break; - } - /* NOTREACHED */ - break; - - case AF_QUERY_SAMPLE_SIZES: - if (arg3 < 0 || arg3 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - - switch (arg2) - { - case AF_QUERY_DEFAULT: - return _af_pv_long(_af_units[arg3].defaultSampleWidth); - default: - break; - } - /* NOTREACHED */ - break; - - case AF_QUERY_COMPRESSION_TYPES: - { - int idx, count; - int *buffer; - - if (arg3 < 0 || arg3 >= _AF_NUM_UNITS) - { - _af_error(AF_BAD_QUERY, - "unrecognized file format %d", arg3); - return AU_NULL_PVLIST; - } - - switch (arg2) - { - case AF_QUERY_VALUE_COUNT: - count = _af_units[arg3].compressionTypeCount; - return _af_pv_long(count); - - case AF_QUERY_VALUES: - count = _af_units[arg3].compressionTypeCount; - if (count == 0) - return AU_NULL_PVLIST; - - buffer = (int *) _af_calloc(count, sizeof (int)); - if (buffer == NULL) - return AU_NULL_PVLIST; - - for (idx = 0; idx < count; idx++) - { - buffer[idx] = _af_units[arg3].compressionTypes[idx]; - } - - return _af_pv_pointer(buffer); - } - } - break; - } - - _af_error(AF_BAD_QUERY, "bad query selector"); - return AU_NULL_PVLIST; -} - -long afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4) -{ - AUpvlist list; - int type; - long value; - - list = afQuery(querytype, arg1, arg2, arg3, arg4); - if (list == AU_NULL_PVLIST) - return -1; - AUpvgetvaltype(list, 0, &type); - if (type != AU_PVTYPE_LONG) - return -1; - AUpvgetval(list, 0, &value); - AUpvfree(list); - return value; -} - -double afQueryDouble (int querytype, int arg1, int arg2, int arg3, int arg4) -{ - AUpvlist list; - int type; - double value; - - list = afQuery(querytype, arg1, arg2, arg3, arg4); - if (list == AU_NULL_PVLIST) - return -1; - AUpvgetvaltype(list, 0, &type); - if (type != AU_PVTYPE_DOUBLE) - return -1; - AUpvgetval(list, 0, &value); - AUpvfree(list); - return value; -} - -void *afQueryPointer (int querytype, int arg1, int arg2, int arg3, int arg4) -{ - AUpvlist list; - int type; - void *value; - - list = afQuery(querytype, arg1, arg2, arg3, arg4); - if (list == AU_NULL_PVLIST) - return NULL; - AUpvgetvaltype(list, 0, &type); - if (type != AU_PVTYPE_PTR) - return NULL; - AUpvgetval(list, 0, &value); - AUpvfree(list); - return value; -} - -/* ARGSUSED3 */ -AUpvlist _afQueryInstrumentParameter (int arg1, int arg2, int arg3, int arg4) -{ - switch (arg1) - { - /* For the following query types, arg2 is the file format. */ - case AF_QUERY_SUPPORTED: - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - return _af_pv_long(_af_units[arg2].instrumentParameterCount != 0); - - case AF_QUERY_ID_COUNT: - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - return _af_pv_long(_af_units[arg2].instrumentParameterCount); - - case AF_QUERY_IDS: - { - int count; - int *buffer; - - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - count = _af_units[arg2].instrumentParameterCount; - if (count == 0) - return AU_NULL_PVLIST; - buffer = (int *) _af_calloc(count, sizeof (int)); - if (buffer == NULL) - return AU_NULL_PVLIST; - for (int i=0; i= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - - idx = _af_instparam_index_from_id(arg2, arg3); - if (idx<0) - return AU_NULL_PVLIST; - return _af_pv_long(_af_units[arg2].instrumentParameters[idx].type); - } - - case AF_QUERY_NAME: - { - int idx; - - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - idx = _af_instparam_index_from_id(arg2, arg3); - if (idx < 0) - return AU_NULL_PVLIST; - return _af_pv_pointer(const_cast(_af_units[arg2].instrumentParameters[idx].name)); - } - - case AF_QUERY_DEFAULT: - { - int idx; - - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - idx = _af_instparam_index_from_id(arg2, arg3); - if (idx >= 0) - { - AUpvlist ret = AUpvnew(1); - AUpvsetparam(ret, 0, _af_units[arg2].instrumentParameters[idx].id); - AUpvsetvaltype(ret, 0, _af_units[arg2].instrumentParameters[idx].type); - AUpvsetval(ret, 0, const_cast(&_af_units[arg2].instrumentParameters[idx].defaultValue)); - return ret; - } - return AU_NULL_PVLIST; - } - } - - _af_error(AF_BAD_QUERY, "bad query selector"); - return AU_NULL_PVLIST; -} - -/* ARGSUSED2 */ -AUpvlist _afQueryLoop (int arg1, int arg2, int arg3, int arg4) -{ - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - - switch (arg1) - { - case AF_QUERY_SUPPORTED: - return _af_pv_long(_af_units[arg2].loopPerInstrumentCount != 0); - case AF_QUERY_MAX_NUMBER: - return _af_pv_long(_af_units[arg2].loopPerInstrumentCount); - } - - _af_error(AF_BAD_QUERY, "bad query selector"); - return AU_NULL_PVLIST; -} - -/* ARGSUSED2 */ -AUpvlist _afQueryInstrument (int arg1, int arg2, int arg3, int arg4) -{ - switch (arg1) - { - case AF_QUERY_SUPPORTED: - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - return _af_pv_long(_af_units[arg2].instrumentCount != 0); - - case AF_QUERY_MAX_NUMBER: - if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) - return AU_NULL_PVLIST; - return _af_pv_long(_af_units[arg2].instrumentCount); - } - - _af_error(AF_BAD_QUERY, "bad query selector"); - return AU_NULL_PVLIST; -} - -/* ARGSUSED0 */ -AUpvlist _afQueryMiscellaneous (int arg1, int arg2, int arg3, int arg4) -{ - _af_error(AF_BAD_NOT_IMPLEMENTED, "not implemented yet"); - return AU_NULL_PVLIST; -} - -/* ARGSUSED2 */ -AUpvlist _afQueryMarker (int arg1, int arg2, int arg3, int arg4) -{ - switch (arg1) - { - case AF_QUERY_SUPPORTED: - return _af_pv_long(_af_units[arg2].markerCount != 0); - case AF_QUERY_MAX_NUMBER: - return _af_pv_long(_af_units[arg2].markerCount); - } - - _af_error(AF_BAD_QUERY, "bad query selector"); - return AU_NULL_PVLIST; -} - -/* ARGSUSED0 */ -AUpvlist _afQueryCompression (int arg1, int arg2, int arg3, int arg4) -{ - const CompressionUnit *unit = NULL; - - switch (arg1) - { - case AF_QUERY_ID_COUNT: - { - int count = 0; - for (int i = 0; i < _AF_NUM_COMPRESSION; i++) - if (_af_compression[i].implemented) - count++; - return _af_pv_long(count); - } - - case AF_QUERY_IDS: - { - int *buf = (int *) _af_calloc(_AF_NUM_COMPRESSION, sizeof (int)); - if (!buf) - return AU_NULL_PVLIST; - - int count = 0; - for (int i = 0; i < _AF_NUM_COMPRESSION; i++) - { - if (_af_compression[i].implemented) - buf[count++] = _af_compression[i].compressionID; - } - return _af_pv_pointer(buf); - } - - case AF_QUERY_IMPLEMENTED: - unit = _af_compression_unit_from_id(arg2); - if (!unit) - return _af_pv_long(0); - return _af_pv_long(unit->implemented); - - case AF_QUERY_NATIVE_SAMPFMT: - unit = _af_compression_unit_from_id(arg2); - if (!unit) - return AU_NULL_PVLIST; - return _af_pv_long(unit->nativeSampleFormat); - - case AF_QUERY_NATIVE_SAMPWIDTH: - unit = _af_compression_unit_from_id(arg2); - if (!unit) - return AU_NULL_PVLIST; - return _af_pv_long(unit->nativeSampleWidth); - - case AF_QUERY_LABEL: - unit = _af_compression_unit_from_id(arg2); - if (!unit) - return AU_NULL_PVLIST; - return _af_pv_pointer(const_cast(unit->label)); - - case AF_QUERY_NAME: - unit = _af_compression_unit_from_id(arg2); - if (!unit) - return AU_NULL_PVLIST; - return _af_pv_pointer(const_cast(unit->shortname)); - - case AF_QUERY_DESC: - unit = _af_compression_unit_from_id(arg2); - if (!unit) - return AU_NULL_PVLIST; - return _af_pv_pointer(const_cast(unit->name)); - } - - _af_error(AF_BAD_QUERY, "unrecognized query selector %d\n", arg1); - return AU_NULL_PVLIST; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/units.cpp b/tools/audiofile-0.3.6/libaudiofile/units.cpp deleted file mode 100644 index ffd0a63d..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/units.cpp +++ /dev/null @@ -1,368 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000-2001, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - units.cpp - - This file contains the file format units. -*/ - -#include "config.h" - -#include "Features.h" -#include "audiofile.h" -#include "afinternal.h" -#include "units.h" - -#include "AIFF.h" -#include "AVR.h" -#include "CAF.h" -#include "FLACFile.h" -#include "IFF.h" -#include "IRCAM.h" -#include "NeXT.h" -#include "NIST.h" -#include "Raw.h" -#include "SampleVision.h" -#include "VOC.h" -#include "WAVE.h" - -#include "compression.h" - -#include "modules/ALAC.h" -#include "modules/FLAC.h" -#include "modules/G711.h" -#include "modules/IMA.h" -#include "modules/MSADPCM.h" -#include "modules/PCM.h" - -const Unit _af_units[_AF_NUM_UNITS] = -{ - { - AF_FILE_RAWDATA, - "Raw Data", "Raw Sound Data", "raw", - true, - &RawFile::completeSetup, - &RawFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - _AF_RAW_NUM_COMPTYPES, - _af_raw_compression_types, - 0, /* maximum marker count */ - 0, /* maximum instrument count */ - 0, /* maxium number of loops per instrument */ - 0, NULL, - }, - { - AF_FILE_AIFFC, - "AIFF-C", "AIFF-C File Format", "aifc", - true, - AIFFFile::completeSetup, - AIFFFile::recognizeAIFFC, - AF_SAMPFMT_TWOSCOMP, 16, - _AF_AIFFC_NUM_COMPTYPES, - _af_aiffc_compression_types, - 65535, /* maximum marker count */ - 1, /* maximum instrument count */ - 2, /* maximum number of loops per instrument */ - _AF_AIFF_NUM_INSTPARAMS, - _af_aiff_inst_params - }, - { - AF_FILE_AIFF, - "AIFF", "Audio Interchange File Format", "aiff", - true, - AIFFFile::completeSetup, - AIFFFile::recognizeAIFF, - AF_SAMPFMT_TWOSCOMP, 16, - 0, /* supported compression types */ - NULL, - 65535, /* maximum marker count */ - 1, /* maximum instrument count */ - 2, /* maximum number of loops per instrument */ - _AF_AIFF_NUM_INSTPARAMS, - _af_aiff_inst_params - }, - { - AF_FILE_NEXTSND, - "NeXT .snd/Sun .au", "NeXT .snd/Sun .au Format", "next", - true, - NeXTFile::completeSetup, - NeXTFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - _AF_NEXT_NUM_COMPTYPES, - _af_next_compression_types, - 0, /* maximum marker count */ - 0, /* maximum instrument count */ - 0, /* maximum number of loops per instrument */ - 0, NULL - }, - { - AF_FILE_WAVE, - "MS RIFF WAVE", "Microsoft RIFF WAVE Format", "wave", - true, - WAVEFile::completeSetup, - WAVEFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - _AF_WAVE_NUM_COMPTYPES, - _af_wave_compression_types, - AF_NUM_UNLIMITED, /* maximum marker count */ - 1, /* maximum instrument count */ - AF_NUM_UNLIMITED, /* maximum number of loops per instrument */ - _AF_WAVE_NUM_INSTPARAMS, - _af_wave_inst_params - }, - { - AF_FILE_IRCAM, - "BICSF", "Berkeley/IRCAM/CARL Sound Format", "bicsf", - true, - IRCAMFile::completeSetup, - IRCAMFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - _AF_IRCAM_NUM_COMPTYPES, - _af_ircam_compression_types, - 0, // maximum marker count - 0, // maximum instrument count - 0, // maximum number of loops per instrument - 0, // number of instrument parameters - NULL // instrument parameters - }, - { - AF_FILE_MPEG1BITSTREAM, - "MPEG", "MPEG Audio Bitstream", "mpeg", - false - }, - { - AF_FILE_SOUNDDESIGNER1, - "Sound Designer 1", "Sound Designer 1 File Format", "sd1", - false - }, - { - AF_FILE_SOUNDDESIGNER2, - "Sound Designer 2", "Sound Designer 2 File Format", "sd2", - false - }, - { - AF_FILE_AVR, - "AVR", "Audio Visual Research File Format", "avr", - true, - AVRFile::completeSetup, - AVRFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - 0, /* number of compression types */ - NULL, /* compression types */ - 0, /* maximum marker count */ - 0, /* maximum instrument count */ - 0, /* maximum number of loops per instrument */ - 0, /* number of instrument parameters */ - }, - { - AF_FILE_IFF_8SVX, - "IFF/8SVX", "Amiga IFF/8SVX Sound File Format", "iff", - true, - IFFFile::completeSetup, - IFFFile::recognize, - AF_SAMPFMT_TWOSCOMP, 8, - 0, /* number of compression types */ - NULL, /* compression types */ - 0, /* maximum marker count */ - 0, /* maximum instrument count */ - 0, /* maximum number of loops per instrument */ - 0, /* number of instrument parameters */ - }, - { - AF_FILE_SAMPLEVISION, - "Sample Vision", "Sample Vision File Format", "smp", - true, - SampleVisionFile::completeSetup, - SampleVisionFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - 0, // number of compression types - NULL, // compression types - 0, // maximum marker count - 0, // maximum instrument count - 0, // maximum number of loops per instrument - 0, // number of instrument parameters - NULL // instrument parameters - }, - { - AF_FILE_VOC, - "VOC", "Creative Voice File Format", "voc", - true, - VOCFile::completeSetup, - VOCFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - _AF_VOC_NUM_COMPTYPES, - _af_voc_compression_types, - 0, // maximum marker count - 0, // maximum instrument count - 0, // maximum number of loops per instrument - 0, // number of instrument parameters - NULL // instrument parameters - }, - { - AF_FILE_NIST_SPHERE, - "NIST SPHERE", "NIST SPHERE File Format", "nist", - true, - NISTFile::completeSetup, - NISTFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - 0, /* number of compression types */ - NULL, /* compression types */ - 0, /* maximum marker count */ - 0, /* maximum instrument count */ - 0, /* maximum number of loops per instrument */ - 0, /* number of instrument parameters */ - NULL /* instrument parameters */ - }, - { - AF_FILE_SOUNDFONT2, - "SoundFont 2", "SoundFont 2 File Format", "sf2", - false - }, - { - AF_FILE_CAF, - "CAF", "Core Audio Format", "caf", - true, - CAFFile::completeSetup, - CAFFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - _AF_CAF_NUM_COMPTYPES, - _af_caf_compression_types, - 0, // maximum marker count - 0, // maximum instrument count - 0, // maximum number of loops per instrument - 0, // number of instrument parameters - NULL // instrument parameters - }, - { - AF_FILE_FLAC, - "FLAC", "Free Lossless Audio Codec", "flac", - true, - FLACFile::completeSetup, - FLACFile::recognize, - AF_SAMPFMT_TWOSCOMP, 16, - _AF_FLAC_NUM_COMPTYPES, - _af_flac_compression_types, - 0, // maximum marker count - 0, // maximum instrument count - 0, // maximum number of loops per instrument - 0, // number of instrument parameters - NULL // instrument parameters - } -}; - -const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] = -{ - { - AF_COMPRESSION_NONE, - true, - "none", /* label */ - "none", /* short name */ - "not compressed", - 1.0, - AF_SAMPFMT_TWOSCOMP, 16, - false, /* needsRebuffer */ - false, /* multiple_of */ - _af_pcm_format_ok, - _AFpcminitcompress, _AFpcminitdecompress - }, - { - AF_COMPRESSION_G711_ULAW, - true, - "ulaw", /* label */ - "CCITT G.711 u-law", /* shortname */ - "CCITT G.711 u-law", - 2.0, - AF_SAMPFMT_TWOSCOMP, 16, - false, /* needsRebuffer */ - false, /* multiple_of */ - _af_g711_format_ok, - _AFg711initcompress, _AFg711initdecompress - }, - { - AF_COMPRESSION_G711_ALAW, - true, - "alaw", /* label */ - "CCITT G.711 A-law", /* short name */ - "CCITT G.711 A-law", - 2.0, - AF_SAMPFMT_TWOSCOMP, 16, - false, /* needsRebuffer */ - false, /* multiple_of */ - _af_g711_format_ok, - _AFg711initcompress, _AFg711initdecompress - }, - { - AF_COMPRESSION_IMA, - true, - "ima4", /* label */ - "IMA ADPCM", /* short name */ - "IMA DVI ADPCM", - 4.0, - AF_SAMPFMT_TWOSCOMP, 16, - true, /* needsRebuffer */ - false, /* multiple_of */ - _af_ima_adpcm_format_ok, - _af_ima_adpcm_init_compress, _af_ima_adpcm_init_decompress - }, - { - AF_COMPRESSION_MS_ADPCM, - true, - "msadpcm", /* label */ - "MS ADPCM", /* short name */ - "Microsoft ADPCM", - 4.0, - AF_SAMPFMT_TWOSCOMP, 16, - true, /* needsRebuffer */ - false, /* multiple_of */ - _af_ms_adpcm_format_ok, - _af_ms_adpcm_init_compress, _af_ms_adpcm_init_decompress - }, - { - AF_COMPRESSION_FLAC, -#if ENABLE(FLAC) - true, -#else - false, -#endif - "flac", // label - "FLAC", // short name - "Free Lossless Audio Codec", - 1.0, - AF_SAMPFMT_TWOSCOMP, 16, - false, // needsRebuffer - false, // multiple_of - _af_flac_format_ok, - _af_flac_init_compress, _af_flac_init_decompress - }, - { - AF_COMPRESSION_ALAC, - true, - "alac", // label - "ALAC", // short name - "Apple Lossless Audio Codec", - 1.0, - AF_SAMPFMT_TWOSCOMP, 16, - true, // needsRebuffer - false, // multiple_of - _af_alac_format_ok, - _af_alac_init_compress, _af_alac_init_decompress - } -}; diff --git a/tools/audiofile-0.3.6/libaudiofile/units.h b/tools/audiofile-0.3.6/libaudiofile/units.h deleted file mode 100644 index fe179baa..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/units.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - Audio File Library - Copyright (C) 2000, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - units.h - - This file defines the internal Unit and CompressionUnit - structures for the Audio File Library. -*/ - -#ifndef UNIT_H -#define UNIT_H - -#include "audiofile.h" -#include "afinternal.h" - -struct AudioFormat; -class FileModule; - -struct Unit -{ - int fileFormat; /* AF_FILEFMT_... */ - const char *name; /* a 2-3 word name of the file format */ - const char *description; /* a more descriptive name for the format */ - const char *label; /* a 4-character label for the format */ - bool implemented; /* if implemented */ - - AFfilesetup (*completesetup) (AFfilesetup setup); - bool (*recognize) (File *fh); - - int defaultSampleFormat; - int defaultSampleWidth; - - int compressionTypeCount; - const int *compressionTypes; - - int markerCount; - - int instrumentCount; - int loopPerInstrumentCount; - - int instrumentParameterCount; - const InstParamInfo *instrumentParameters; -}; - -struct CompressionUnit -{ - int compressionID; /* AF_COMPRESSION_... */ - bool implemented; - const char *label; /* 4-character (approximately) label */ - const char *shortname; /* short name in English */ - const char *name; /* long name in English */ - double squishFactor; /* compression ratio */ - int nativeSampleFormat; /* AF_SAMPFMT_... */ - int nativeSampleWidth; /* sample width in bits */ - bool needsRebuffer; /* if there are chunk boundary requirements */ - bool multiple_of; /* can accept any multiple of chunksize */ - bool (*fmtok) (AudioFormat *format); - - FileModule *(*initcompress) (Track *track, File *fh, - bool seekok, bool headerless, AFframecount *chunkframes); - FileModule *(*initdecompress) (Track *track, File *fh, - bool seekok, bool headerless, AFframecount *chunkframes); -}; - -#define _AF_NUM_UNITS 17 -#define _AF_NUM_COMPRESSION 7 - -extern const Unit _af_units[_AF_NUM_UNITS]; -extern const CompressionUnit _af_compression[_AF_NUM_COMPRESSION]; - -#endif /* UNIT_H */ diff --git a/tools/audiofile-0.3.6/libaudiofile/util.cpp b/tools/audiofile-0.3.6/libaudiofile/util.cpp deleted file mode 100644 index 71dbf7c0..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/util.cpp +++ /dev/null @@ -1,384 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - Copyright (C) 2000, Silicon Graphics, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - util.c - - This file contains general utility routines for the Audio File - Library. -*/ - -#include "config.h" - -#include -#include -#include -#include - -#include "audiofile.h" -#include "aupvlist.h" - -#include "AudioFormat.h" -#include "File.h" -#include "FileHandle.h" -#include "Setup.h" -#include "Track.h" -#include "afinternal.h" -#include "aupvinternal.h" -#include "byteorder.h" -#include "compression.h" -#include "pcm.h" -#include "units.h" -#include "util.h" - -/* - _af_filesetup_ok and _af_filehandle_ok are sanity check routines - which are called at the beginning of every external subroutine. -*/ -bool _af_filesetup_ok (AFfilesetup setup) -{ - if (setup == AF_NULL_FILESETUP) - { - _af_error(AF_BAD_FILESETUP, "null file setup"); - return false; - } - if (setup->valid != _AF_VALID_FILESETUP) - { - _af_error(AF_BAD_FILESETUP, "invalid file setup"); - return false; - } - return true; -} - -bool _af_filehandle_ok (AFfilehandle file) -{ - if (file == AF_NULL_FILEHANDLE) - { - _af_error(AF_BAD_FILEHANDLE, "null file handle"); - return false; - } - if (file->m_valid != _AF_VALID_FILEHANDLE) - { - _af_error(AF_BAD_FILEHANDLE, "invalid file handle"); - return false; - } - return true; -} - -void *_af_malloc (size_t size) -{ - void *p; - - if (size <= 0) - { - _af_error(AF_BAD_MALLOC, "bad memory allocation size request %zd", size); - return NULL; - } - - p = malloc(size); - -#ifdef AF_DEBUG - if (p) - memset(p, 0xff, size); -#endif - - if (p == NULL) - { - _af_error(AF_BAD_MALLOC, "allocation of %zd bytes failed", size); - return NULL; - } - - return p; -} - -char *_af_strdup (const char *s) -{ - char *p = (char *) malloc(strlen(s) + 1); - - if (p) - strcpy(p, s); - - return p; -} - -void *_af_realloc (void *p, size_t size) -{ - if (size <= 0) - { - _af_error(AF_BAD_MALLOC, "bad memory allocation size request %zd", size); - return NULL; - } - - p = realloc(p, size); - - if (p == NULL) - { - _af_error(AF_BAD_MALLOC, "allocation of %zd bytes failed", size); - return NULL; - } - - return p; -} - -void *_af_calloc (size_t nmemb, size_t size) -{ - void *p; - - if (nmemb <= 0 || size <= 0) - { - _af_error(AF_BAD_MALLOC, "bad memory allocation size request " - "%zd elements of %zd bytes each", nmemb, size); - return NULL; - } - - p = calloc(nmemb, size); - - if (p == NULL) - { - _af_error(AF_BAD_MALLOC, "allocation of %zd bytes failed", - nmemb*size); - return NULL; - } - - return p; -} - -AUpvlist _af_pv_long (long val) -{ - AUpvlist ret = AUpvnew(1); - AUpvsetparam(ret, 0, 0); - AUpvsetvaltype(ret, 0, AU_PVTYPE_LONG); - AUpvsetval(ret, 0, &val); - return ret; -} - -AUpvlist _af_pv_double (double val) -{ - AUpvlist ret = AUpvnew(1); - AUpvsetparam(ret, 0, 0); - AUpvsetvaltype(ret, 0, AU_PVTYPE_DOUBLE); - AUpvsetval(ret, 0, &val); - return ret; -} - -AUpvlist _af_pv_pointer (void *val) -{ - AUpvlist ret = AUpvnew(1); - AUpvsetparam(ret, 0, 0); - AUpvsetvaltype(ret, 0, AU_PVTYPE_PTR); - AUpvsetval(ret, 0, &val); - return ret; -} - -bool _af_pv_getlong (AUpvlist pvlist, int param, long *l) -{ - for (int i=0; isampleFormat) - { - case AF_SAMPFMT_FLOAT: - size = sizeof (float); - break; - case AF_SAMPFMT_DOUBLE: - size = sizeof (double); - break; - default: - size = (int) (format->sampleWidth + 7) / 8; - if (format->compressionType == AF_COMPRESSION_NONE && - size == 3 && stretch3to4) - size = 4; - break; - } - - return size; -} - -float _af_format_sample_size (const AudioFormat *fmt, bool stretch3to4) -{ - const CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType); - float squishFactor = unit->squishFactor; - - return _af_format_sample_size_uncompressed(fmt, stretch3to4) / - squishFactor; -} - -int _af_format_frame_size_uncompressed (const AudioFormat *fmt, bool stretch3to4) -{ - return _af_format_sample_size_uncompressed(fmt, stretch3to4) * - fmt->channelCount; -} - -float _af_format_frame_size (const AudioFormat *fmt, bool stretch3to4) -{ - const CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType); - float squishFactor = unit->squishFactor; - - return _af_format_frame_size_uncompressed(fmt, stretch3to4) / - squishFactor; -} - -/* - Set the sampleFormat and sampleWidth fields in f, and set the - PCM info to the appropriate default values for the given sample - format and sample width. -*/ -status _af_set_sample_format (AudioFormat *f, int sampleFormat, int sampleWidth) -{ - switch (sampleFormat) - { - case AF_SAMPFMT_UNSIGNED: - case AF_SAMPFMT_TWOSCOMP: - if (sampleWidth < 1 || sampleWidth > 32) - { - _af_error(AF_BAD_SAMPFMT, - "illegal sample width %d for integer data", - sampleWidth); - return AF_FAIL; - } - else - { - int bytes; - - f->sampleFormat = sampleFormat; - f->sampleWidth = sampleWidth; - - bytes = _af_format_sample_size_uncompressed(f, false); - - if (sampleFormat == AF_SAMPFMT_TWOSCOMP) - f->pcm = _af_default_signed_integer_pcm_mappings[bytes]; - else - f->pcm = _af_default_unsigned_integer_pcm_mappings[bytes]; - } - break; - - case AF_SAMPFMT_FLOAT: - f->sampleFormat = sampleFormat; - f->sampleWidth = 32; - f->pcm = _af_default_float_pcm_mapping; - break; - case AF_SAMPFMT_DOUBLE: - f->sampleFormat = sampleFormat; - f->sampleWidth = 64; /*for convenience */ - f->pcm = _af_default_double_pcm_mapping; - break; - default: - _af_error(AF_BAD_SAMPFMT, "unknown sample format %d", - sampleFormat); - return AF_FAIL; - } - - return AF_SUCCEED; -} - -/* - Verify the uniqueness of the nids ids given. - - idname is the name of what the ids identify, as in "loop" - iderr is an error as in AF_BAD_LOOPID -*/ -bool _af_unique_ids (const int *ids, int nids, const char *idname, int iderr) -{ - for (int i = 0; i < nids; i++) - { - for (int j = 0; j < i; j++) - { - if (ids[i] == ids[j]) - { - _af_error(iderr, "nonunique %s id %d", idname, ids[i]); - return false; - } - } - } - - return true; -} diff --git a/tools/audiofile-0.3.6/libaudiofile/util.h b/tools/audiofile-0.3.6/libaudiofile/util.h deleted file mode 100644 index 7a570a73..00000000 --- a/tools/audiofile-0.3.6/libaudiofile/util.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - Audio File Library - Copyright (C) 1998-2000, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -/* - util.h - - This file contains some general utility functions for the Audio - File Library. -*/ - -#ifndef UTIL_H -#define UTIL_H - -#include -#include - -#include "audiofile.h" -#include "afinternal.h" - -struct AudioFormat; - -bool _af_filesetup_ok (AFfilesetup setup); -bool _af_filehandle_ok (AFfilehandle file); - -void *_af_malloc (size_t size); -void *_af_realloc (void *ptr, size_t size); -void *_af_calloc (size_t nmemb, size_t size); -char *_af_strdup (const char *s); - -AUpvlist _af_pv_long (long val); -AUpvlist _af_pv_double (double val); -AUpvlist _af_pv_pointer (void *val); - -bool _af_pv_getlong (AUpvlist pvlist, int param, long *l); -bool _af_pv_getdouble (AUpvlist pvlist, int param, double *d); -bool _af_pv_getptr (AUpvlist pvlist, int param, void **v); - -bool _af_unique_ids (const int *ids, int nids, const char *idname, int iderr); - -float _af_format_frame_size (const AudioFormat *format, bool stretch3to4); -int _af_format_frame_size_uncompressed (const AudioFormat *format, bool stretch3to4); -float _af_format_sample_size (const AudioFormat *format, bool stretch3to4); -int _af_format_sample_size_uncompressed (const AudioFormat *format, bool stretch3to4); - -status _af_set_sample_format (AudioFormat *f, int sampleFormat, int sampleWidth); - -#endif diff --git a/tools/audiofile-0.3.6/libtool b/tools/audiofile-0.3.6/libtool deleted file mode 100644 index 6015231a..00000000 --- a/tools/audiofile-0.3.6/libtool +++ /dev/null @@ -1,11888 +0,0 @@ -#! /bin/sh -# Generated automatically by config.status (audiofile) 0.3.6 -# Libtool was configured on host Ryzen: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='CXX ' - -# Configured defaults for sys_lib_dlsearch_path munging. -: ${LT_SYS_LIBRARY_PATH=""} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=2.4.6 -macro_revision=2.4.6 - -# Whether or not to build shared libraries. -build_libtool_libs=yes - -# Whether or not to build static libraries. -build_old_libs=yes - -# What type of objects to build. -pic_mode=default - -# Whether or not to optimize for fast installation. -fast_install=needless - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec= - -# Shell to use when invoking shell scripts. -SHELL="/bin/sh" - -# An echo program that protects backslashes. -ECHO="printf %s\\n" - -# The PATH separator for the build system. -PATH_SEPARATOR=":" - -# The host system. -host_alias= -host=x86_64-w64-mingw32 -host_os=mingw32 - -# The build system. -build_alias=x86_64-w64-mingw32 -build=x86_64-w64-mingw32 -build_os=mingw32 - -# A sed program that does not truncate output. -SED="/usr/bin/sed" - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP="/usr/bin/grep" - -# An ERE matcher. -EGREP="/usr/bin/grep -E" - -# A literal string matcher. -FGREP="/usr/bin/grep -F" - -# A BSD- or MS-compatible name lister. -NM="/mingw64/bin/nm -B" - -# Whether we need soft or hard links. -LN_S="cp -pR" - -# What is the maximum length of a command? -max_cmd_len=8192 - -# Object file suffix (normally "o"). -objext=o - -# Executable file suffix (normally ""). -exeext= - -# whether the shell understands "unset". -lt_unset=unset - -# turn spaces into newlines. -SP2NL="tr \\040 \\012" - -# turn newlines into spaces. -NL2SP="tr \\015\\012 \\040\\040" - -# convert $build file names to $host format. -to_host_file_cmd=func_convert_file_msys_to_w32 - -# convert $build files to toolchain format. -to_tool_file_cmd=func_convert_file_msys_to_w32 - -# An object symbol dumper. -OBJDUMP="objdump" - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method="file_magic ^x86 archive import|^x86 DLL" - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd="func_win32_libid" - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob="" - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob="yes" - -# DLL creation program. -DLLTOOL="dlltool" - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd="func_cygming_dll_for_implib" - -# The archiver. -AR="ar" - -# Flags to create an archive. -AR_FLAGS="cru" - -# How to feed a file listing to the archiver. -archiver_list_spec="@" - -# A symbol stripping program. -STRIP="strip" - -# Commands used to install an old-style archive. -RANLIB="ranlib" -old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" -old_postuninstall_cmds="" - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=no - -# A C compiler. -LTCC="gcc" - -# LTCC compiler flags. -LTCFLAGS="-g -O2" - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\\{0,1\\}\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'" - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import="" - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p'" - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(lib.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"lib\\1\", (void *) \\&\\1},/p'" - -# The name lister interface. -nm_interface="BSD nm" - -# Specify filename containing input files for $NM. -nm_file_list_spec="@" - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot= - -# Command to truncate a binary pipe. -lt_truncate_bin="/usr/bin/dd bs=4096 count=1" - -# The name of the directory that contains temporary libtool files. -objdir=.libs - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=file - -# Must we lock files when doing compilation? -need_locks="no" - -# Manifest tool. -MANIFEST_TOOL=":" - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL="" - -# Tool to change global to local symbols on Mac OS X. -NMEDIT="" - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO="" - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL="" - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64="" - -# Old archive suffix (normally "a"). -libext=a - -# Shared library suffix (normally ".so"). -shrext_cmds=".dll" - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds="" - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink="PATH PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" - -# Do we need the "lib" prefix for modules? -need_lib_prefix=no - -# Do we need a version for libraries? -need_version=no - -# Library versioning type. -version_type=windows - -# Shared library runtime path variable. -runpath_var=LD_RUN_PATH - -# Shared library path variable. -shlibpath_var=PATH - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=yes - -# Format of library name prefix. -libname_spec="lib\$name" - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec="\$libname.dll.a" - -# The coded name of the library, if different from the real name. -soname_spec="\$libname\`echo \$release | \$SED -e s/[.]/-/g\`\$versuffix\$shared_ext" - -# Permission mode override for installation of shared libraries. -install_override_mode="" - -# Command to use after installation of a shared archive. -postinstall_cmds="base_file=\\\`basename \\\$file\\\`~ - dlpath=\\\`\$SHELL 2>&1 -c '. \$dir/'\\\$base_file'i; echo \\\$dlname'\\\`~ - dldir=\$destdir/\\\`dirname \\\$dlpath\\\`~ - test -d \\\$dldir || mkdir -p \\\$dldir~ - \$install_prog \$dir/\$dlname \\\$dldir/\$dlname~ - chmod a+x \\\$dldir/\$dlname~ - if test -n '\$stripme' && test -n '\$striplib'; then - eval '\$striplib \\\$dldir/\$dlname' || exit \\\$?; - fi" - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds="dldll=\\\`\$SHELL 2>&1 -c '. \$file; echo \\\$dlname'\\\`~ - dlpath=\$dir/\\\$dldll~ - \$RM \\\$dlpath" - -# Commands used to finish a libtool library installation in a directory. -finish_cmds="" - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval="" - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=no - -# Compile-time system search path for libraries. -sys_lib_search_path_spec="I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0 I:/Development/MSYS2/mingw64/lib/gcc I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/lib I:/Development/MSYS2/mingw64/lib " - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec="/lib /usr/lib" - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path="" - -# Whether dlopen is supported. -dlopen_support=unknown - -# Whether dlopen of programs is supported. -dlopen_self=unknown - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=unknown - -# Commands to strip libraries. -old_striplib="strip --strip-debug" -striplib="strip --strip-unneeded" - - -# The linker used to build libraries. -LD="I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe" - -# How to create reloadable object files. -reload_flag=" -r" -reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" - -# Commands used to build an old-style archive. -old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" - -# A language specific compiler. -CC="gcc" - -# Is the compiler the GNU compiler? -with_gcc=yes - -# Compiler flag to turn off builtin functions. -no_builtin_flag=" -fno-builtin" - -# Additional compiler flags for building library objects. -pic_flag=" -DDLL_EXPORT -DPIC" - -# How to pass a linker flag through the compiler. -wl="-Wl," - -# Compiler flag to prevent dynamic linking. -link_static_flag="-static" - -# Does compiler simultaneously support -c and -o options? -compiler_c_o="yes" - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=yes - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=yes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="\$wl--export-all-symbols" - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive" - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object="no" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="" - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds="" - -# Commands used to build a shared archive. -archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags -o \$output_objdir/\$soname \$wl--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib" -archive_expsym_cmds="if test DEF = \\\"\\\`\$SED -n -e 's/^[ ]*//' -e '/^\\\\(;.*\\\\)*\$/d' -e 's/^\\\\(EXPORTS\\\\|LIBRARY\\\\)\\\\([ ].*\\\\)*\$/DEF/p' -e q \$export_symbols\\\`\\\" ; then - cp \$export_symbols \$output_objdir/\$soname.def; - else - echo EXPORTS > \$output_objdir/\$soname.def; - cat \$export_symbols >> \$output_objdir/\$soname.def; - fi~ - \$CC -shared \$output_objdir/\$soname.def \$libobjs \$deplibs \$compiler_flags -o \$output_objdir/\$soname \$wl--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib" - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds="" -module_expsym_cmds="" - -# Whether we are building with GNU ld or not. -with_gnu_ld="yes" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="unsupported" - -# Flag that enforces no undefined symbols. -no_undefined_flag="" - -# Flag to hardcode $libdir into a binary during linking. -# This must work even if $libdir does not exist -hardcode_libdir_flag_spec="-L\$libdir" - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator="" - -# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=no - -# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting $shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=no - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=no - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=unsupported - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=no - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=no - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=unknown - -# Set to "yes" if exported symbols are required. -always_export_symbols=no - -# The commands to list exported symbols. -export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED -e '/^[BCDGRS][ ]/s/.*[ ]\\\\([^ ]*\\\\)/\\\\1 DATA/;s/^.*[ ]__nm__\\\\([^ ]*\\\\)[ ][^ ]*/\\\\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //' | sort | uniq > \$export_symbols" - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms="[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname" - -# Symbols that must always be exported. -include_expsyms="" - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds="" - -# Commands necessary for finishing linking programs. -postlink_cmds="" - -# Specify filename containing input files. -file_list_spec="@" - -# How to hardcode a shared library path into an executable. -hardcode_action=immediate - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs="" - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects="" -postdep_objects="" -predeps="" -postdeps="" - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path="" - -# ### END LIBTOOL CONFIG - - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -#! /bin/sh -## DO NOT EDIT - This file generated from ./build-aux/ltmain.in -## by inline-source v2014-01-03.01 - -# libtool (GNU libtool) 2.4.6 -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.6 -package_revision=2.4.6 - - -## ------ ## -## Usage. ## -## ------ ## - -# Run './libtool --help' for help with using this script from the -# command line. - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# After configure completes, it has a better idea of some of the -# shell tools we need than the defaults used by the functions shared -# with bootstrap, so set those here where they can still be over- -# ridden by the user, but otherwise take precedence. - -: ${AUTOCONF="autoconf"} -: ${AUTOMAKE="automake"} - - -## -------------------------- ## -## Source external libraries. ## -## -------------------------- ## - -# Much of our low-level functionality needs to be sourced from external -# libraries, which are installed to $pkgauxdir. - -# Set a version string for this script. -scriptversion=2015-01-20.17; # UTC - -# General shell script boiler plate, and helper functions. -# Written by Gary V. Vaughan, 2004 - -# Copyright (C) 2004-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# Evaluate this file near the top of your script to gain access to -# the functions and variables defined here: -# -# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh -# -# If you need to override any of the default environment variable -# settings, do that before evaluating this file. - - -## -------------------- ## -## Shell normalisation. ## -## -------------------- ## - -# Some shells need a little help to be as Bourne compatible as possible. -# Before doing anything else, make sure all that help has been provided! - -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac -fi - -# NLS nuisances: We save the old values in case they are required later. -_G_user_locale= -_G_safe_locale= -for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test set = \"\${$_G_var+set}\"; then - save_$_G_var=\$$_G_var - $_G_var=C - export $_G_var - _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" - _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" - fi" -done - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Make sure IFS has a sensible default -sp=' ' -nl=' -' -IFS="$sp $nl" - -# There are apparently some retarded systems that use ';' as a PATH separator! -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - - -## ------------------------- ## -## Locate command utilities. ## -## ------------------------- ## - - -# func_executable_p FILE -# ---------------------- -# Check that FILE is an executable regular file. -func_executable_p () -{ - test -f "$1" && test -x "$1" -} - - -# func_path_progs PROGS_LIST CHECK_FUNC [PATH] -# -------------------------------------------- -# Search for either a program that responds to --version with output -# containing "GNU", or else returned by CHECK_FUNC otherwise, by -# trying all the directories in PATH with each of the elements of -# PROGS_LIST. -# -# CHECK_FUNC should accept the path to a candidate program, and -# set $func_check_prog_result if it truncates its output less than -# $_G_path_prog_max characters. -func_path_progs () -{ - _G_progs_list=$1 - _G_check_func=$2 - _G_PATH=${3-"$PATH"} - - _G_path_prog_max=0 - _G_path_prog_found=false - _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} - for _G_dir in $_G_PATH; do - IFS=$_G_save_IFS - test -z "$_G_dir" && _G_dir=. - for _G_prog_name in $_G_progs_list; do - for _exeext in '' .EXE; do - _G_path_prog=$_G_dir/$_G_prog_name$_exeext - func_executable_p "$_G_path_prog" || continue - case `"$_G_path_prog" --version 2>&1` in - *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; - *) $_G_check_func $_G_path_prog - func_path_progs_result=$func_check_prog_result - ;; - esac - $_G_path_prog_found && break 3 - done - done - done - IFS=$_G_save_IFS - test -z "$func_path_progs_result" && { - echo "no acceptable sed could be found in \$PATH" >&2 - exit 1 - } -} - - -# We want to be able to use the functions in this file before configure -# has figured out where the best binaries are kept, which means we have -# to search for them ourselves - except when the results are already set -# where we skip the searches. - -# Unless the user overrides by setting SED, search the path for either GNU -# sed, or the sed that truncates its output the least. -test -z "$SED" && { - _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for _G_i in 1 2 3 4 5 6 7; do - _G_sed_script=$_G_sed_script$nl$_G_sed_script - done - echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed - _G_sed_script= - - func_check_prog_sed () - { - _G_path_prog=$1 - - _G_count=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo '' >> conftest.nl - "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin - rm -f conftest.sed - SED=$func_path_progs_result -} - - -# Unless the user overrides by setting GREP, search the path for either GNU -# grep, or the grep that truncates its output the least. -test -z "$GREP" && { - func_check_prog_grep () - { - _G_path_prog=$1 - - _G_count=0 - _G_path_prog_max=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo 'GREP' >> conftest.nl - "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin - GREP=$func_path_progs_result -} - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# All uppercase variable names are used for environment variables. These -# variables can be overridden by the user before calling a script that -# uses them if a suitable command of that name is not already available -# in the command search PATH. - -: ${CP="cp -f"} -: ${ECHO="printf %s\n"} -: ${EGREP="$GREP -E"} -: ${FGREP="$GREP -F"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} - - -## -------------------- ## -## Useful sed snippets. ## -## -------------------- ## - -sed_dirname='s|/[^/]*$||' -sed_basename='s|^.*/||' - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Same as above, but do not quote variable references. -sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' - -# Sed substitution that converts a w32 file name or path -# that contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-'\' parameter expansions in output of sed_double_quote_subst that -# were '\'-ed in input to the same. If an odd number of '\' preceded a -# '$' in input to sed_double_quote_subst, that '$' was protected from -# expansion. Since each input '\' is now two '\'s, look for any number -# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. -_G_bs='\\' -_G_bs2='\\\\' -_G_bs4='\\\\\\\\' -_G_dollar='\$' -sed_double_backslash="\ - s/$_G_bs4/&\\ -/g - s/^$_G_bs2$_G_dollar/$_G_bs&/ - s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g - s/\n//g" - - -## ----------------- ## -## Global variables. ## -## ----------------- ## - -# Except for the global variables explicitly listed below, the following -# functions in the '^func_' namespace, and the '^require_' namespace -# variables initialised in the 'Resource management' section, sourcing -# this file will not pollute your global namespace with anything -# else. There's no portable way to scope variables in Bourne shell -# though, so actually running these functions will sometimes place -# results into a variable named after the function, and often use -# temporary variables in the '^_G_' namespace. If you are careful to -# avoid using those namespaces casually in your sourcing script, things -# should continue to work as you expect. And, of course, you can freely -# overwrite any of the functions or variables defined here before -# calling anything to customize them. - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -# Allow overriding, eg assuming that you follow the convention of -# putting '$debug_cmd' at the start of all your functions, you can get -# bash to show function call trace with: -# -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name -debug_cmd=${debug_cmd-":"} -exit_cmd=: - -# By convention, finish your script with: -# -# exit $exit_status -# -# so that you can set exit_status to non-zero if you want to indicate -# something went wrong during execution without actually bailing out at -# the point of failure. -exit_status=$EXIT_SUCCESS - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath=$0 - -# The name of this program. -progname=`$ECHO "$progpath" |$SED "$sed_basename"` - -# Make sure we have an absolute progpath for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` - progdir=`cd "$progdir" && pwd` - progpath=$progdir/$progname - ;; - *) - _G_IFS=$IFS - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS=$_G_IFS - test -x "$progdir/$progname" && break - done - IFS=$_G_IFS - test -n "$progdir" || progdir=`pwd` - progpath=$progdir/$progname - ;; -esac - - -## ----------------- ## -## Standard options. ## -## ----------------- ## - -# The following options affect the operation of the functions defined -# below, and should be set appropriately depending on run-time para- -# meters passed on the command line. - -opt_dry_run=false -opt_quiet=false -opt_verbose=false - -# Categories 'all' and 'none' are always available. Append any others -# you will pass as the first argument to func_warning from your own -# code. -warning_categories= - -# By default, display warnings according to 'opt_warning_types'. Set -# 'warning_func' to ':' to elide all warnings, or func_fatal_error to -# treat the next displayed warning as a fatal error. -warning_func=func_warn_and_continue - -# Set to 'all' to display all warnings, 'none' to suppress all -# warnings, or a space delimited list of some subset of -# 'warning_categories' to display only the listed warnings. -opt_warning_types=all - - -## -------------------- ## -## Resource management. ## -## -------------------- ## - -# This section contains definitions for functions that each ensure a -# particular resource (a file, or a non-empty configuration variable for -# example) is available, and if appropriate to extract default values -# from pertinent package files. Call them using their associated -# 'require_*' variable to ensure that they are executed, at most, once. -# -# It's entirely deliberate that calling these functions can set -# variables that don't obey the namespace limitations obeyed by the rest -# of this file, in order that that they be as useful as possible to -# callers. - - -# require_term_colors -# ------------------- -# Allow display of bold text on terminals that support it. -require_term_colors=func_require_term_colors -func_require_term_colors () -{ - $debug_cmd - - test -t 1 && { - # COLORTERM and USE_ANSI_COLORS environment variables take - # precedence, because most terminfo databases neglect to describe - # whether color sequences are supported. - test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} - - if test 1 = "$USE_ANSI_COLORS"; then - # Standard ANSI escape sequences - tc_reset='' - tc_bold=''; tc_standout='' - tc_red=''; tc_green='' - tc_blue=''; tc_cyan='' - else - # Otherwise trust the terminfo database after all. - test -n "`tput sgr0 2>/dev/null`" && { - tc_reset=`tput sgr0` - test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` - tc_standout=$tc_bold - test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` - test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` - test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` - test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` - test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` - } - fi - } - - require_term_colors=: -} - - -## ----------------- ## -## Function library. ## -## ----------------- ## - -# This section contains a variety of useful functions to call in your -# scripts. Take note of the portable wrappers for features provided by -# some modern shells, which will fall back to slower equivalents on -# less featureful shells. - - -# func_append VAR VALUE -# --------------------- -# Append VALUE onto the existing contents of VAR. - - # We should try to minimise forks, especially on Windows where they are - # unreasonably slow, so skip the feature probes when bash or zsh are - # being used: - if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then - : ${_G_HAVE_ARITH_OP="yes"} - : ${_G_HAVE_XSI_OPS="yes"} - # The += operator was introduced in bash 3.1 - case $BASH_VERSION in - [12].* | 3.0 | 3.0*) ;; - *) - : ${_G_HAVE_PLUSEQ_OP="yes"} - ;; - esac - fi - - # _G_HAVE_PLUSEQ_OP - # Can be empty, in which case the shell is probed, "yes" if += is - # useable or anything else if it does not work. - test -z "$_G_HAVE_PLUSEQ_OP" \ - && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ - && _G_HAVE_PLUSEQ_OP=yes - -if test yes = "$_G_HAVE_PLUSEQ_OP" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_append () - { - $debug_cmd - - eval "$1+=\$2" - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_append () - { - $debug_cmd - - eval "$1=\$$1\$2" - } -fi - - -# func_append_quoted VAR VALUE -# ---------------------------- -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -if test yes = "$_G_HAVE_PLUSEQ_OP"; then - eval 'func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1+=\\ \$func_quote_for_eval_result" - }' -else - func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1=\$$1\\ \$func_quote_for_eval_result" - } -fi - - -# func_append_uniq VAR VALUE -# -------------------------- -# Append unique VALUE onto the existing contents of VAR, assuming -# entries are delimited by the first character of VALUE. For example: -# -# func_append_uniq options " --another-option option-argument" -# -# will only append to $options if " --another-option option-argument " -# is not already present somewhere in $options already (note spaces at -# each end implied by leading space in second argument). -func_append_uniq () -{ - $debug_cmd - - eval _G_current_value='`$ECHO $'$1'`' - _G_delim=`expr "$2" : '\(.\)'` - - case $_G_delim$_G_current_value$_G_delim in - *"$2$_G_delim"*) ;; - *) func_append "$@" ;; - esac -} - - -# func_arith TERM... -# ------------------ -# Set func_arith_result to the result of evaluating TERMs. - test -z "$_G_HAVE_ARITH_OP" \ - && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ - && _G_HAVE_ARITH_OP=yes - -if test yes = "$_G_HAVE_ARITH_OP"; then - eval 'func_arith () - { - $debug_cmd - - func_arith_result=$(( $* )) - }' -else - func_arith () - { - $debug_cmd - - func_arith_result=`expr "$@"` - } -fi - - -# func_basename FILE -# ------------------ -# Set func_basename_result to FILE with everything up to and including -# the last / stripped. -if test yes = "$_G_HAVE_XSI_OPS"; then - # If this shell supports suffix pattern removal, then use it to avoid - # forking. Hide the definitions single quotes in case the shell chokes - # on unsupported syntax... - _b='func_basename_result=${1##*/}' - _d='case $1 in - */*) func_dirname_result=${1%/*}$2 ;; - * ) func_dirname_result=$3 ;; - esac' - -else - # ...otherwise fall back to using sed. - _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' - _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` - if test "X$func_dirname_result" = "X$1"; then - func_dirname_result=$3 - else - func_append func_dirname_result "$2" - fi' -fi - -eval 'func_basename () -{ - $debug_cmd - - '"$_b"' -}' - - -# func_dirname FILE APPEND NONDIR_REPLACEMENT -# ------------------------------------------- -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -eval 'func_dirname () -{ - $debug_cmd - - '"$_d"' -}' - - -# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT -# -------------------------------------------------------- -# Perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# For efficiency, we do not delegate to the functions above but instead -# duplicate the functionality here. -eval 'func_dirname_and_basename () -{ - $debug_cmd - - '"$_b"' - '"$_d"' -}' - - -# func_echo ARG... -# ---------------- -# Echo program name prefixed message. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_echo_all ARG... -# -------------------- -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - - -# func_echo_infix_1 INFIX ARG... -# ------------------------------ -# Echo program name, followed by INFIX on the first line, with any -# additional lines not showing INFIX. -func_echo_infix_1 () -{ - $debug_cmd - - $require_term_colors - - _G_infix=$1; shift - _G_indent=$_G_infix - _G_prefix="$progname: $_G_infix: " - _G_message=$* - - # Strip color escape sequences before counting printable length - for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" - do - test -n "$_G_tc" && { - _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` - _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` - } - done - _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes - - func_echo_infix_1_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_infix_1_IFS - $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 - _G_prefix=$_G_indent - done - IFS=$func_echo_infix_1_IFS -} - - -# func_error ARG... -# ----------------- -# Echo program name prefixed message to standard error. -func_error () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 -} - - -# func_fatal_error ARG... -# ----------------------- -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - $debug_cmd - - func_error "$*" - exit $EXIT_FAILURE -} - - -# func_grep EXPRESSION FILENAME -# ----------------------------- -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $debug_cmd - - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_len STRING -# --------------- -# Set func_len_result to the length of STRING. STRING may not -# start with a hyphen. - test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_len () - { - $debug_cmd - - func_len_result=${#1} - }' -else - func_len () - { - $debug_cmd - - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` - } -fi - - -# func_mkdir_p DIRECTORY-PATH -# --------------------------- -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - $debug_cmd - - _G_directory_path=$1 - _G_dir_list= - - if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then - - # Protect directory names starting with '-' - case $_G_directory_path in - -*) _G_directory_path=./$_G_directory_path ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$_G_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - _G_dir_list=$_G_directory_path:$_G_dir_list - - # If the last portion added has no slash in it, the list is done - case $_G_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` - done - _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - - func_mkdir_p_IFS=$IFS; IFS=: - for _G_dir in $_G_dir_list; do - IFS=$func_mkdir_p_IFS - # mkdir can fail with a 'File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$_G_dir" 2>/dev/null || : - done - IFS=$func_mkdir_p_IFS - - # Bail out if we (or some other process) failed to create a directory. - test -d "$_G_directory_path" || \ - func_fatal_error "Failed to create '$1'" - fi -} - - -# func_mktempdir [BASENAME] -# ------------------------- -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, BASENAME is the basename for that directory. -func_mktempdir () -{ - $debug_cmd - - _G_template=${TMPDIR-/tmp}/${1-$progname} - - if test : = "$opt_dry_run"; then - # Return a directory name, but don't create it in dry-run mode - _G_tmpdir=$_G_template-$$ - else - - # If mktemp works, use that first and foremost - _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - - if test ! -d "$_G_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - _G_tmpdir=$_G_template-${RANDOM-0}$$ - - func_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$_G_tmpdir" - umask $func_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$_G_tmpdir" || \ - func_fatal_error "cannot create temporary directory '$_G_tmpdir'" - fi - - $ECHO "$_G_tmpdir" -} - - -# func_normal_abspath PATH -# ------------------------ -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -func_normal_abspath () -{ - $debug_cmd - - # These SED scripts presuppose an absolute path with a trailing slash. - _G_pathcar='s|^/\([^/]*\).*$|\1|' - _G_pathcdr='s|^/[^/]*||' - _G_removedotparts=':dotsl - s|/\./|/|g - t dotsl - s|/\.$|/|' - _G_collapseslashes='s|/\{1,\}|/|g' - _G_finalslash='s|/*$|/|' - - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` - while :; do - # Processed it all yet? - if test / = "$func_normal_abspath_tpath"; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result"; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - - -# func_notquiet ARG... -# -------------------- -# Echo program name prefixed message only when not in quiet mode. -func_notquiet () -{ - $debug_cmd - - $opt_quiet || func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - - -# func_relative_path SRCDIR DSTDIR -# -------------------------------- -# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. -func_relative_path () -{ - $debug_cmd - - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=$func_dirname_result - if test -z "$func_relative_path_tlibdir"; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test -n "$func_stripname_result"; then - func_append func_relative_path_result "/$func_stripname_result" - fi - - # Normalisation. If bindir is libdir, return '.' else relative path. - if test -n "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - fi - - test -n "$func_relative_path_result" || func_relative_path_result=. - - : -} - - -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: -# i) func_quote_for_eval_result -# double-quoted, suitable for a subsequent eval -# ii) func_quote_for_eval_unquoted_result -# has all characters that are still active within double -# quotes backslashified. -func_quote_for_eval () -{ - $debug_cmd - - func_quote_for_eval_unquoted_result= - func_quote_for_eval_result= - while test 0 -lt $#; do - case $1 in - *[\\\`\"\$]*) - _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; - *) - _G_unquoted_arg=$1 ;; - esac - if test -n "$func_quote_for_eval_unquoted_result"; then - func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" - else - func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" - fi - - case $_G_unquoted_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_quoted_arg=\"$_G_unquoted_arg\" - ;; - *) - _G_quoted_arg=$_G_unquoted_arg - ;; - esac - - if test -n "$func_quote_for_eval_result"; then - func_append func_quote_for_eval_result " $_G_quoted_arg" - else - func_append func_quote_for_eval_result "$_G_quoted_arg" - fi - shift - done -} - - -# func_quote_for_expand ARG -# ------------------------- -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - $debug_cmd - - case $1 in - *[\\\`\"]*) - _G_arg=`$ECHO "$1" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; - *) - _G_arg=$1 ;; - esac - - case $_G_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_arg=\"$_G_arg\" - ;; - esac - - func_quote_for_expand_result=$_G_arg -} - - -# func_stripname PREFIX SUFFIX NAME -# --------------------------------- -# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_stripname () - { - $debug_cmd - - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary variable first. - func_stripname_result=$3 - func_stripname_result=${func_stripname_result#"$1"} - func_stripname_result=${func_stripname_result%"$2"} - }' -else - func_stripname () - { - $debug_cmd - - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; - esac - } -fi - - -# func_show_eval CMD [FAIL_EXP] -# ----------------------------- -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - func_quote_for_expand "$_G_cmd" - eval "func_notquiet $func_quote_for_expand_result" - - $opt_dry_run || { - eval "$_G_cmd" - _G_status=$? - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_show_eval_locale CMD [FAIL_EXP] -# ------------------------------------ -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - $opt_quiet || { - func_quote_for_expand "$_G_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - $opt_dry_run || { - eval "$_G_user_locale - $_G_cmd" - _G_status=$? - eval "$_G_safe_locale" - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_tr_sh -# ---------- -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - $debug_cmd - - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_verbose ARG... -# ------------------- -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $debug_cmd - - $opt_verbose && func_echo "$*" - - : -} - - -# func_warn_and_continue ARG... -# ----------------------------- -# Echo program name prefixed warning message to standard error. -func_warn_and_continue () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 -} - - -# func_warning CATEGORY ARG... -# ---------------------------- -# Echo program name prefixed warning message to standard error. Warning -# messages can be filtered according to CATEGORY, where this function -# elides messages where CATEGORY is not listed in the global variable -# 'opt_warning_types'. -func_warning () -{ - $debug_cmd - - # CATEGORY must be in the warning_categories list! - case " $warning_categories " in - *" $1 "*) ;; - *) func_internal_error "invalid warning category '$1'" ;; - esac - - _G_category=$1 - shift - - case " $opt_warning_types " in - *" $_G_category "*) $warning_func ${1+"$@"} ;; - esac -} - - -# func_sort_ver VER1 VER2 -# ----------------------- -# 'sort -V' is not generally available. -# Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a -# but this should suffice as we won't be specifying old -# version formats or redundant trailing .0 in bootstrap.conf. -# If we did want full compatibility then we should probably -# use m4_version_compare from autoconf. -func_sort_ver () -{ - $debug_cmd - - printf '%s\n%s\n' "$1" "$2" \ - | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n -} - -# func_lt_ver PREV CURR -# --------------------- -# Return true if PREV and CURR are in the correct order according to -# func_sort_ver, otherwise false. Use it like this: -# -# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." -func_lt_ver () -{ - $debug_cmd - - test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: -#! /bin/sh - -# Set a version string for this script. -scriptversion=2014-01-07.03; # UTC - -# A portable, pluggable option parser for Bourne shell. -# Written by Gary V. Vaughan, 2010 - -# Copyright (C) 2010-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# This file is a library for parsing options in your shell scripts along -# with assorted other useful supporting features that you can make use -# of too. -# -# For the simplest scripts you might need only: -# -# #!/bin/sh -# . relative/path/to/funclib.sh -# . relative/path/to/options-parser -# scriptversion=1.0 -# func_options ${1+"$@"} -# eval set dummy "$func_options_result"; shift -# ...rest of your script... -# -# In order for the '--version' option to work, you will need to have a -# suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. -# -# For '-h' and '--help' to work, you will also need a one line -# description of your script's purpose in a comment directly above the -# '# Written by ' line, like the one at the top of this file. -# -# The default options also support '--debug', which will turn on shell -# execution tracing (see the comment above debug_cmd below for another -# use), and '--verbose' and the func_verbose function to allow your script -# to display verbose messages only when your user has specified -# '--verbose'. -# -# After sourcing this file, you can plug processing for additional -# options by amending the variables from the 'Configuration' section -# below, and following the instructions in the 'Option parsing' -# section further down. - -## -------------- ## -## Configuration. ## -## -------------- ## - -# You should override these variables in your script after sourcing this -# file so that they reflect the customisations you have added to the -# option parser. - -# The usage line for option parsing errors and the start of '-h' and -# '--help' output messages. You can embed shell variables for delayed -# expansion at the time the message is displayed, but you will need to -# quote other shell meta-characters carefully to prevent them being -# expanded when the contents are evaled. -usage='$progpath [OPTION]...' - -# Short help message in response to '-h' and '--help'. Add to this or -# override it after sourcing this library to reflect the full set of -# options your script accepts. -usage_message="\ - --debug enable verbose shell tracing - -W, --warnings=CATEGORY - report the warnings falling in CATEGORY [all] - -v, --verbose verbosely report processing - --version print version information and exit - -h, --help print short or long help message and exit -" - -# Additional text appended to 'usage_message' in response to '--help'. -long_help_message=" -Warning categories include: - 'all' show all warnings - 'none' turn off all the warnings - 'error' warnings are treated as fatal errors" - -# Help message printed before fatal option parsing errors. -fatal_help="Try '\$progname --help' for more information." - - - -## ------------------------- ## -## Hook function management. ## -## ------------------------- ## - -# This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. - -# func_hookable FUNC_NAME -# ----------------------- -# Declare that FUNC_NAME will run hooks added with -# 'func_add_hook FUNC_NAME ...'. -func_hookable () -{ - $debug_cmd - - func_append hookable_fns " $1" -} - - -# func_add_hook FUNC_NAME HOOK_FUNC -# --------------------------------- -# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must -# first have been declared "hookable" by a call to 'func_hookable'. -func_add_hook () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not accept hook functions." ;; - esac - - eval func_append ${1}_hooks '" $2"' -} - - -# func_remove_hook FUNC_NAME HOOK_FUNC -# ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. -func_remove_hook () -{ - $debug_cmd - - eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' -} - - -# func_run_hooks FUNC_NAME [ARG]... -# --------------------------------- -# Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more -# than a whitespace-delimited list of legal shell function names, and -# no effort is wasted trying to catch shell meta-characters or preserve -# whitespace. -func_run_hooks () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook funcions.n" ;; - esac - - eval _G_hook_fns=\$$1_hooks; shift - - for _G_hook in $_G_hook_fns; do - eval $_G_hook '"$@"' - - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift - done - - func_quote_for_eval ${1+"$@"} - func_run_hooks_result=$func_quote_for_eval_result -} - - - -## --------------- ## -## Option parsing. ## -## --------------- ## - -# In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed -# options in '_result', escaped suitably for -# 'eval'. Like this: -# -# my_options_prep () -# { -# $debug_cmd -# -# # Extend the existing usage message. -# usage_message=$usage_message' -# -s, --silent don'\''t print informational messages -# ' -# -# func_quote_for_eval ${1+"$@"} -# my_options_prep_result=$func_quote_for_eval_result -# } -# func_add_hook func_options_prep my_options_prep -# -# -# my_silent_option () -# { -# $debug_cmd -# -# # Note that for efficiency, we parse as many options as we can -# # recognise in a loop before passing the remainder back to the -# # caller on the first unrecognised argument we encounter. -# while test $# -gt 0; do -# opt=$1; shift -# case $opt in -# --silent|-s) opt_silent=: ;; -# # Separate non-argument short options: -# -s*) func_split_short_opt "$_G_opt" -# set dummy "$func_split_short_opt_name" \ -# "-$func_split_short_opt_arg" ${1+"$@"} -# shift -# ;; -# *) set dummy "$_G_opt" "$*"; shift; break ;; -# esac -# done -# -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result -# } -# func_add_hook func_parse_options my_silent_option -# -# -# my_option_validation () -# { -# $debug_cmd -# -# $opt_silent && $opt_verbose && func_fatal_help "\ -# '--silent' and '--verbose' options are mutually exclusive." -# -# func_quote_for_eval ${1+"$@"} -# my_option_validation_result=$func_quote_for_eval_result -# } -# func_add_hook func_validate_options my_option_validation -# -# You'll alse need to manually amend $usage_message to reflect the extra -# options you parse. It's preferable to append if you can, so that -# multiple option parsing hooks can be added safely. - - -# func_options [ARG]... -# --------------------- -# All the functions called inside func_options are hookable. See the -# individual implementations for details. -func_hookable func_options -func_options () -{ - $debug_cmd - - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options_result+"$func_parse_options_result"} - - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} - - # save modified positional parameters for caller - func_options_result=$func_run_hooks_result -} - - -# func_options_prep [ARG]... -# -------------------------- -# All initialisations required before starting the option parse loop. -# Note that when calling hook functions, we pass through the list of -# positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning. -func_hookable func_options_prep -func_options_prep () -{ - $debug_cmd - - # Option defaults: - opt_verbose=false - opt_warning_types= - - func_run_hooks func_options_prep ${1+"$@"} - - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result -} - - -# func_parse_options [ARG]... -# --------------------------- -# The main option parsing loop. -func_hookable func_parse_options -func_parse_options () -{ - $debug_cmd - - func_parse_options_result= - - # this just eases exit handling - while test $# -gt 0; do - # Defer to hook functions for initial option parsing, so they - # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift - - # Break out of the loop if we already parsed every option. - test $# -gt 0 || break - - _G_opt=$1 - shift - case $_G_opt in - --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" - $debug_cmd - ;; - - --no-warnings|--no-warning|--no-warn) - set dummy --warnings none ${1+"$@"} - shift - ;; - - --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break - case " $warning_categories $1" in - *" $1 "*) - # trailing space prevents matching last $1 above - func_append_uniq opt_warning_types " $1" - ;; - *all) - opt_warning_types=$warning_categories - ;; - *none) - opt_warning_types=none - warning_func=: - ;; - *error) - opt_warning_types=$warning_categories - warning_func=func_fatal_error - ;; - *) - func_fatal_error \ - "unsupported warning category: '$1'" - ;; - esac - shift - ;; - - --verbose|-v) opt_verbose=: ;; - --version) func_version ;; - -\?|-h) func_usage ;; - --help) func_help ;; - - # Separate optargs to long options (plugins may need this): - --*=*) func_split_equals "$_G_opt" - set dummy "$func_split_equals_lhs" \ - "$func_split_equals_rhs" ${1+"$@"} - shift - ;; - - # Separate optargs to short options: - -W*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-v*|-x*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result -} - - -# func_validate_options [ARG]... -# ------------------------------ -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -func_hookable func_validate_options -func_validate_options () -{ - $debug_cmd - - # Display all warnings if -W was not given. - test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - - func_run_hooks func_validate_options ${1+"$@"} - - # Bail if the options were screwed! - $exit_cmd $EXIT_FAILURE - - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result -} - - - -## ----------------- ## -## Helper functions. ## -## ----------------- ## - -# This section contains the helper functions used by the rest of the -# hookable option parser framework in ascii-betical order. - - -# func_fatal_help ARG... -# ---------------------- -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - eval \$ECHO \""$fatal_help"\" - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - - -# func_help -# --------- -# Echo long help message to standard output and exit. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message" - exit 0 -} - - -# func_missing_arg ARGNAME -# ------------------------ -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $debug_cmd - - func_error "Missing argument for '$1'." - exit_cmd=exit -} - - -# func_split_equals STRING -# ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. -test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=${1%%=*} - func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs= - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` - func_split_equals_rhs= - test "x$func_split_equals_lhs" = "x$1" \ - || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` - } -fi #func_split_equals - - -# func_split_short_opt SHORTOPT -# ----------------------------- -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"} - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` - func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` - } -fi #func_split_short_opt - - -# func_usage -# ---------- -# Echo short help message to standard output and exit. -func_usage () -{ - $debug_cmd - - func_usage_message - $ECHO "Run '$progname --help |${PAGER-more}' for full usage" - exit 0 -} - - -# func_usage_message -# ------------------ -# Echo short help message to standard output. -func_usage_message () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - echo - $SED -n 's|^# || - /^Written by/{ - x;p;x - } - h - /^Written by/q' < "$progpath" - echo - eval \$ECHO \""$usage_message"\" -} - - -# func_version -# ------------ -# Echo version message to standard output and exit. -func_version () -{ - $debug_cmd - - printf '%s\n' "$progname $scriptversion" - $SED -n ' - /(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p - } - /^# Written by / { - s|^# || - p - } - /^warranty; /q' < "$progpath" - - exit $? -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: - -# Set a version string. -scriptversion='(GNU libtool) 2.4.6' - - -# func_echo ARG... -# ---------------- -# Libtool also displays the current mode in messages, so override -# funclib.sh func_echo with this custom definition. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_warning ARG... -# ------------------- -# Libtool warnings are not categorized, so override funclib.sh -# func_warning with this simpler definition. -func_warning () -{ - $debug_cmd - - $warning_func ${1+"$@"} -} - - -## ---------------- ## -## Options parsing. ## -## ---------------- ## - -# Hook in the functions to make sure our own options are parsed during -# the option parsing loop. - -usage='$progpath [OPTION]... [MODE-ARG]...' - -# Short help message in response to '-h'. -usage_message="Options: - --config show all configuration variables - --debug enable verbose shell tracing - -n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --mode=MODE use operation mode MODE - --no-warnings equivalent to '-Wnone' - --preserve-dup-deps don't remove duplicate dependency libraries - --quiet, --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - -v, --verbose print more informational messages than default - --version print version information - -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] - -h, --help, --help-all print short, long, or detailed help message -" - -# Additional text appended to 'usage_message' in response to '--help'. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. When passed as first option, -'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. -Try '$progname --help --mode=MODE' for a more detailed description of MODE. - -When reporting a bug, please describe a test case to reproduce it and -include the following information: - - host-triplet: $host - shell: $SHELL - compiler: $LTCC - compiler flags: $LTCFLAGS - linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.6 - automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` - autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` - -Report bugs to . -GNU libtool home page: . -General help using GNU software: ." - exit 0 -} - - -# func_lo2o OBJECT-NAME -# --------------------- -# Transform OBJECT-NAME from a '.lo' suffix to the platform specific -# object suffix. - -lo2o=s/\\.lo\$/.$objext/ -o2lo=s/\\.$objext\$/.lo/ - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_lo2o () - { - case $1 in - *.lo) func_lo2o_result=${1%.lo}.$objext ;; - * ) func_lo2o_result=$1 ;; - esac - }' - - # func_xform LIBOBJ-OR-SOURCE - # --------------------------- - # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) - # suffix to a '.lo' libtool-object suffix. - eval 'func_xform () - { - func_xform_result=${1%.*}.lo - }' -else - # ...otherwise fall back to using sed. - func_lo2o () - { - func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` - } - - func_xform () - { - func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` - } -fi - - -# func_fatal_configuration ARG... -# ------------------------------- -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func__fatal_error ${1+"$@"} \ - "See the $PACKAGE documentation for more information." \ - "Fatal configuration error." -} - - -# func_config -# ----------- -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - - -# func_features -# ------------- -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test yes = "$build_libtool_libs"; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test yes = "$build_old_libs"; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - - -# func_enable_tag TAGNAME -# ----------------------- -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname=$1 - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf=/$re_begincf/,/$re_endcf/p - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - - -# func_check_version_match -# ------------------------ -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# libtool_options_prep [ARG]... -# ----------------------------- -# Preparation for options parsed by libtool. -libtool_options_prep () -{ - $debug_mode - - # Option defaults: - opt_config=false - opt_dlopen= - opt_dry_run=false - opt_help=false - opt_mode= - opt_preserve_dup_deps=false - opt_quiet=false - - nonopt= - preserve_args= - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Pass back the list of options. - func_quote_for_eval ${1+"$@"} - libtool_options_prep_result=$func_quote_for_eval_result -} -func_add_hook func_options_prep libtool_options_prep - - -# libtool_parse_options [ARG]... -# --------------------------------- -# Provide handling for libtool specific options. -libtool_parse_options () -{ - $debug_cmd - - # Perform our own loop to consume as many options as possible in - # each iteration. - while test $# -gt 0; do - _G_opt=$1 - shift - case $_G_opt in - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - - --config) func_config ;; - - --dlopen|-dlopen) - opt_dlopen="${opt_dlopen+$opt_dlopen -}$1" - shift - ;; - - --preserve-dup-deps) - opt_preserve_dup_deps=: ;; - - --features) func_features ;; - - --finish) set dummy --mode finish ${1+"$@"}; shift ;; - - --help) opt_help=: ;; - - --help-all) opt_help=': help-all' ;; - - --mode) test $# = 0 && func_missing_arg $_G_opt && break - opt_mode=$1 - case $1 in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $_G_opt" - exit_cmd=exit - break - ;; - esac - shift - ;; - - --no-silent|--no-quiet) - opt_quiet=false - func_append preserve_args " $_G_opt" - ;; - - --no-warnings|--no-warning|--no-warn) - opt_warning=false - func_append preserve_args " $_G_opt" - ;; - - --no-verbose) - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --silent|--quiet) - opt_quiet=: - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --tag) test $# = 0 && func_missing_arg $_G_opt && break - opt_tag=$1 - func_append preserve_args " $_G_opt $1" - func_enable_tag "$1" - shift - ;; - - --verbose|-v) opt_quiet=false - opt_verbose=: - func_append preserve_args " $_G_opt" - ;; - - # An option not handled by this hook function: - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - libtool_parse_options_result=$func_quote_for_eval_result -} -func_add_hook func_parse_options libtool_parse_options - - - -# libtool_validate_options [ARG]... -# --------------------------------- -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -libtool_validate_options () -{ - # save first non-option argument - if test 0 -lt $#; then - nonopt=$1 - shift - fi - - # preserve --debug - test : = "$debug_cmd" || func_append preserve_args " --debug" - - case $host in - # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 - # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - *cygwin* | *msys* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - test yes != "$build_libtool_libs" \ - && test yes != "$build_old_libs" \ - && func_fatal_configuration "not configured to build any kind of library" - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test execute != "$opt_mode"; then - func_error "unrecognized option '-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help=$help - help="Try '$progname --help --mode=$opt_mode' for more information." - } - - # Pass back the unparsed argument list - func_quote_for_eval ${1+"$@"} - libtool_validate_options_result=$func_quote_for_eval_result -} -func_add_hook func_validate_options libtool_validate_options - - -# Process options as early as possible so that --help and --version -# can return quickly. -func_options ${1+"$@"} -eval set dummy "$func_options_result"; shift - - - -## ----------- ## -## Main. ## -## ----------- ## - -magic='%%%MAGIC variable%%%' -magic_exe='%%%MAGIC EXE variable%%%' - -# Global variables. -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# func_generated_by_libtool -# True iff stdin has been generated by Libtool. This function is only -# a basic sanity check; it will hardly flush out determined imposters. -func_generated_by_libtool_p () -{ - $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if 'file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case $lalib_p_line in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test yes = "$lalib_p" -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - test -f "$1" && - $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $debug_cmd - - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# 'FILE.' does not work on cygwin managed mounts. -func_source () -{ - $debug_cmd - - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case $lt_sysroot:$1 in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result='='$func_stripname_result - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $debug_cmd - - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with '--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=$1 - if test yes = "$build_libtool_libs"; then - write_lobj=\'$2\' - else - write_lobj=none - fi - - if test yes = "$build_old_libs"; then - write_oldobj=\'$3\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $debug_cmd - - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result= - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result"; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $debug_cmd - - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $debug_cmd - - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $debug_cmd - - if test -z "$2" && test -n "$1"; then - func_error "Could not determine host file name corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result=$1 - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $debug_cmd - - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " '$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result=$3 - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $debug_cmd - - case $4 in - $1 ) func_to_host_path_result=$3$func_to_host_path_result - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via '$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $debug_cmd - - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $debug_cmd - - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result=$1 -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result=$func_convert_core_msys_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result=$func_convert_core_file_wine_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via '$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $debug_cmd - - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd=func_convert_path_$func_stripname_result - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $debug_cmd - - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result=$1 -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_msys_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_path_wine_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_dll_def_p FILE -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with _LT_DLL_DEF_P in libtool.m4 -func_dll_def_p () -{ - $debug_cmd - - func_dll_def_p_tmp=`$SED -n \ - -e 's/^[ ]*//' \ - -e '/^\(;.*\)*$/d' \ - -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ - -e q \ - "$1"` - test DEF = "$func_dll_def_p_tmp" -} - - -# func_mode_compile arg... -func_mode_compile () -{ - $debug_cmd - - # Get the compilation command and the source file. - base_compile= - srcfile=$nonopt # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg=$arg - arg_mode=normal - ;; - - target ) - libobj=$arg - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify '-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs=$IFS; IFS=, - for arg in $args; do - IFS=$save_ifs - func_append_quoted lastarg "$arg" - done - IFS=$save_ifs - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg=$srcfile - srcfile=$arg - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with '-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj=$func_basename_result - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from '$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test yes = "$build_libtool_libs" \ - || func_fatal_configuration "cannot build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name '$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname=$func_basename_result - xdir=$func_dirname_result - lobj=$xdir$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test yes = "$build_old_libs"; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | msys* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test no = "$compiler_c_o"; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext - lockfile=$output_obj.lock - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test yes = "$need_locks"; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test warn = "$need_locks"; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test yes = "$build_libtool_libs"; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test no != "$pic_mode"; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test yes = "$suppress_opt"; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test yes = "$build_old_libs"; then - if test yes != "$pic_mode"; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test yes = "$compiler_c_o"; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test no != "$need_locks"; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test compile = "$opt_mode" && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a '.o' file suitable for static linking - -static only build a '.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a 'standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix '.c' with the -library object suffix, '.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to '-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the '--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the 'install' or 'cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE use a list of object files found in FILE to specify objects - -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with '-') are ignored. - -Every other argument is treated as a filename. Files ending in '.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in '.la', then a libtool library is created, -only library objects ('.lo' files) may be specified, and '-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created -using 'ar' and 'ranlib', or on Windows using 'lib'. - -If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode '$opt_mode'" - ;; - esac - - echo - $ECHO "Try '$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test : = "$opt_help"; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | $SED -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - $SED '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $debug_cmd - - # The first argument is the command name. - cmd=$nonopt - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "'$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "'$file' was not linked with '-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir=$func_dirname_result - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir=$func_dirname_result - ;; - - *) - func_warning "'-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir=$absdir - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic=$magic - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file=$progdir/$program - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file=$progdir/$program - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if $opt_dry_run; then - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - else - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd=\$cmd$args - fi -} - -test execute = "$opt_mode" && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $debug_cmd - - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "'$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument '$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and '=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_quiet && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the '-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the '$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the '$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the '$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test finish = "$opt_mode" && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $debug_cmd - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac - then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=false - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=: ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test X-m = "X$prev" && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the '$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=: - if $isdir; then - destdir=$dest - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir=$func_dirname_result - destname=$func_basename_result - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "'$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "'$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir=$func_dirname_result - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking '$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname=$1 - shift - - srcname=$realname - test -n "$relink_command" && srcname=${realname}T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme=$stripme - case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme= - ;; - esac - ;; - os2*) - case $realname in - *_dll.a) - tstripme= - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try 'ln -sf' first, because the 'ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib=$destdir/$realname - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name=$func_basename_result - instname=$dir/${name}i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest=$destfile - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to '$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test yes = "$build_old_libs"; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext= - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=.exe - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *msys* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script '$wrapper'" - - finalize=: - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "'$lib' has not been installed in '$libdir'" - finalize=false - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test no = "$fast_install" && test -n "$relink_command"; then - $opt_dry_run || { - if $finalize; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file=$func_basename_result - outputname=$tmpdir/$file - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_quiet || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink '$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file=$outputname - else - func_warning "cannot relink '$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*|*/usr/bin/install*,*msys*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name=$func_basename_result - - # Set up the ranlib parameters. - oldlib=$destdir/$name - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run '$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test install = "$opt_mode" && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $debug_cmd - - my_outputname=$1 - my_originator=$2 - my_pic_p=${3-false} - my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms=${my_outputname}S.c - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist=$output_objdir/$my_outputname.nm - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* External symbol declarations for the compiler. */\ -" - - if test yes = "$dlself"; then - func_verbose "generating symbol list for '$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from '$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols=$output_objdir/$outputname.exp - $opt_dry_run || { - $RM $export_symbols - eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from '$dlprefile'" - func_basename "$dlprefile" - name=$func_basename_result - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename= - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname"; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename=$func_basename_result - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename"; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - func_show_eval '$RM "${nlist}I"' - if test -n "$global_symbol_to_import"; then - eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[];\ -" - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ -static void lt_syminit(void) -{ - LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; - for (; symbol->name; ++symbol) - {" - $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" - echo >> "$output_objdir/$my_dlsyms" "\ - } -}" - fi - echo >> "$output_objdir/$my_dlsyms" "\ -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{ {\"$my_originator\", (void *) 0}," - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ - {\"@INIT@\", (void *) <_syminit}," - fi - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - $my_pic_p && pic_flag_for_symtable=" $pic_flag" - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' - - # Transform the symbol file into the correct name. - symfileobj=$output_objdir/${my_outputname}S.$objext - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for '$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $debug_cmd - - win32_libid_type=unknown - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - case $nm_interface in - "MS dumpbin") - if func_cygming_ms_implib_p "$1" || - func_cygming_gnu_implib_p "$1" - then - win32_nmres=import - else - win32_nmres= - fi - ;; - *) - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s|.*|import| - p - q - } - }'` - ;; - esac - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $debug_cmd - - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $debug_cmd - - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive that possess that section. Heuristic: eliminate - # all those that have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $debug_cmd - - if func_cygming_gnu_implib_p "$1"; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1"; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result= - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $debug_cmd - - f_ex_an_ar_dir=$1; shift - f_ex_an_ar_oldlib=$1 - if test yes = "$lock_old_archive_extraction"; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test yes = "$lock_old_archive_extraction"; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $debug_cmd - - my_gentop=$1; shift - my_oldlibs=${1+"$@"} - my_oldobjs= - my_xlib= - my_xabs= - my_xdir= - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib=$func_basename_result - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir=$my_gentop/$my_xlib_u - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - func_basename "$darwin_archive" - darwin_base_archive=$func_basename_result - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches; do - func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" - $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" - cd "unfat-$$/$darwin_base_archive-$darwin_arch" - func_extract_an_archive "`pwd`" "$darwin_base_archive" - cd "$darwin_curdir" - $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result=$my_oldobjs -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory where it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case \" \$* \" in - *\\ --lt-*) - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done ;; - esac - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test yes = "$fast_install"; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - \$ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# if defined(__STRICT_ANSI__) && !defined(__MINGW64_VERSION_MAJOR) || defined(_POSIX_) -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -n -e ' -s/^\(.\{79\}\)\(..*\)/\1\ -\2/ -h -s/\([\\"]\)/\\\1/g -s/$/\\n/ -s/\([^\n]*\).*/ fputs ("\1", f);/p -g -D' - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_emit_exe_manifest -# emit a Win32 UAC manifest for executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_exe_manifest () -{ - cat < - - - - - - - - - - - - -EOF -} - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $debug_cmd - - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_suncc_cstd_abi -# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! -# Several compiler flags select an ABI that is incompatible with the -# Cstd library. Avoid specifying it if any are in CXXFLAGS. -func_suncc_cstd_abi () -{ - $debug_cmd - - case " $compile_command " in - *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) - suncc_use_cstd_abi=no - ;; - *) - suncc_use_cstd_abi=yes - ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $debug_cmd - - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # what system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll that has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - os2dllname= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=false - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module=$wl-single_module - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test yes != "$build_libtool_libs" \ - && func_fatal_configuration "cannot build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg=$1 - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir=$arg - prev= - continue - ;; - dlfiles|dlprefiles) - $preload || { - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=: - } - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test no = "$dlself"; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test dlprefiles = "$prev"; then - dlself=yes - elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test dlfiles = "$prev"; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols=$arg - test -f "$arg" \ - || func_fatal_error "symbol file '$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex=$arg - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir=$arg - prev= - continue - ;; - mllvm) - # Clang does not use LLVM to link, so we can simply discard any - # '-mllvm $arg' options when doing the link step. - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - if test none != "$pic_object"; then - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - fi - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file '$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - os2dllname) - os2dllname=$arg - prev= - continue - ;; - precious_regex) - precious_files_regex=$arg - prev= - continue - ;; - release) - release=-$arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test rpath = "$prev"; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds=$arg - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg=$arg - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "'-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test X-export-symbols = "X$arg"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between '-L' and '$1'" - else - func_fatal_error "need path for '-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of '$dir'" - dir=$absdir - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test X-lc = "X$arg" || test X-lm = "X$arg"; then - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test X-lc = "X$arg" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc due to us having libc/libc_r. - test X-lc = "X$arg" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test X-lc = "X$arg" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test X-lc = "X$arg" && continue - ;; - esac - elif test X-lc_r = "X$arg"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -mllvm) - prev=mllvm - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module=$wl-multi_module - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "'-no-install' is ignored for $host" - func_warning "assuming '-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -os2dllname) - prev=os2dllname - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # -fstack-protector* stack protector flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -stdlib=* select c++ std lib with clang - # -{shared,static}-libgcc, -static-{libgfortran|libstdc++} - # link against specified runtime library - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -ftree-parallelize-loops=*|-fcilkplus|-fgnu-tm|-ffast-math| \ - -funsafe-math-optimizations|-fvtable-verify*| \ - -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - -Z*) - if test os2 = "`expr $host : '.*\(os2\)'`"; then - # OS/2 uses -Zxxx to specify OS/2-specific options - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case $arg in - -Zlinker | -Zstack) - prev=xcompiler - ;; - esac - continue - else - # Otherwise treat like 'Some other compiler flag' below - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - fi - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - test none = "$pic_object" || { - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - } - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test dlfiles = "$prev"; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test dlprefiles = "$prev"; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the '$prevarg' option requires an argument" - - if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname=$func_basename_result - libobjs_save=$libobjs - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - # Definition is injected by LT_CONFIG during libtool generation. - func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" - - func_dirname "$output" "/" "" - output_objdir=$func_dirname_result$objdir - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test lib = "$linkmode"; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=false - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test lib,link = "$linkmode,$pass"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs=$tmp_deplibs - fi - - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass"; then - libs=$deplibs - deplibs= - fi - if test prog = "$linkmode"; then - case $pass in - dlopen) libs=$dlfiles ;; - dlpreopen) libs=$dlprefiles ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test lib,dlpreopen = "$linkmode,$pass"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs=$dlprefiles - fi - if test dlopen = "$pass"; then - # Collect dlpreopened libraries - save_deplibs=$deplibs - deplibs= - fi - - for deplib in $libs; do - lib= - found=false - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test lib != "$linkmode" && test prog != "$linkmode"; then - func_warning "'-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test lib = "$linkmode"; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib=$searchdir/lib$name$search_ext - if test -f "$lib"; then - if test .la = "$search_ext"; then - found=: - else - found=false - fi - break 2 - fi - done - done - if $found; then - # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll=$l - done - if test "X$ll" = "X$old_library"; then # only static version available - found=false - func_dirname "$lib" "" "." - ladir=$func_dirname_result - lib=$ladir/$old_library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - else - # deplib doesn't seem to be a libtool library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - ;; # -l - *.ltframework) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test conv = "$pass" && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - if test scan = "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "'-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test link = "$pass"; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules and compiler provided static libraries - # into shared libraries is allowed, but linking other static - # libraries is non-portable. - case $deplib in - */libgcc*.$libext | */libclang_rt*.$libext) - deplibs="$deplib $deplibs" - continue - ;; - esac - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=false - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=: - fi - ;; - pass_all) - valid_a_lib=: - ;; - esac - if $valid_a_lib; then - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - else - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - fi - ;; - esac - continue - ;; - prog) - if test link != "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - elif test prog = "$linkmode"; then - if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=: - continue - ;; - esac # case $deplib - - $found || test -f "$lib" \ - || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "'$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir=$func_dirname_result - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass" || - { test prog != "$linkmode" && test lib != "$linkmode"; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test conv = "$pass"; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test prog != "$linkmode" && test lib != "$linkmode"; then - func_fatal_error "'$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test yes = "$prefer_static_libs" || - test built,no = "$prefer_static_libs,$installed"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib=$l - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - - # This library was specified with -dlopen. - if test dlopen = "$pass"; then - test -z "$libdir" \ - && func_fatal_error "cannot -dlopen a convenience library: '$lib'" - if test -z "$dlname" || - test yes != "$dlopen_support" || - test no = "$build_libtool_libs" - then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of '$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir=$ladir - fi - ;; - esac - func_basename "$lib" - laname=$func_basename_result - - # Find the relevant object directory and library name. - if test yes = "$installed"; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library '$lib' was moved." - dir=$ladir - absdir=$abs_ladir - libdir=$abs_ladir - else - dir=$lt_sysroot$libdir - absdir=$lt_sysroot$libdir - fi - test yes = "$hardcode_automatic" && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir=$ladir - absdir=$abs_ladir - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir=$ladir/$objdir - absdir=$abs_ladir/$objdir - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test dlpreopen = "$pass"; then - if test -z "$libdir" && test prog = "$linkmode"; then - func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" - fi - case $host in - # special handling for platforms with PE-DLLs. - *cygwin* | *msys* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test lib = "$linkmode"; then - deplibs="$dir/$old_library $deplibs" - elif test prog,link = "$linkmode,$pass"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test prog = "$linkmode" && test link != "$pass"; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=false - if test no != "$link_all_deplibs" || test -z "$library_names" || - test no = "$build_libtool_libs"; then - linkalldeplibs=: - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if $linkalldeplibs; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test prog,link = "$linkmode,$pass"; then - if test -n "$library_names" && - { { test no = "$prefer_static_libs" || - test built,yes = "$prefer_static_libs,$installed"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then - # Make sure the rpath contains only unique directories. - case $temp_rpath: in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if $alldeplibs && - { test pass_all = "$deplibs_check_method" || - { test yes = "$build_libtool_libs" && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test built = "$use_static_libs" && test yes = "$installed"; then - use_static_libs=no - fi - if test -n "$library_names" && - { test no = "$use_static_libs" || test -z "$old_library"; }; then - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* | *os2*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test no = "$installed"; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule= - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule=$dlpremoduletest - break - fi - done - if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then - echo - if test prog = "$linkmode"; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test lib = "$linkmode" && - test yes = "$hardcode_into_libs"; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname=$1 - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname=$dlname - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | *msys* | mingw* | *cegcc* | *os2*) - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - esac - eval soname=\"$soname_spec\" - else - soname=$realname - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot=$soname - func_basename "$soroot" - soname=$func_basename_result - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from '$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for '$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test prog = "$linkmode" || test relink != "$opt_mode"; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test no = "$hardcode_direct"; then - add=$dir/$linklib - case $host in - *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; - *-*-sysv4*uw2*) add_dir=-L$dir ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir=-L$dir ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we cannot - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library"; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add=$dir/$old_library - fi - elif test -n "$old_library"; then - add=$dir/$old_library - fi - fi - esac - elif test no = "$hardcode_minus_L"; then - case $host in - *-*-sunos*) add_shlibpath=$dir ;; - esac - add_dir=-L$dir - add=-l$name - elif test no = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - relink) - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$dir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$absdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test yes != "$lib_linked"; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test prog = "$linkmode"; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test yes != "$hardcode_direct" && - test yes != "$hardcode_minus_L" && - test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test prog = "$linkmode" || test relink = "$opt_mode"; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$libdir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$libdir - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add=-l$name - elif test yes = "$hardcode_automatic"; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib"; then - add=$inst_prefix_dir$libdir/$linklib - else - add=$libdir/$linklib - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir=-L$libdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - fi - - if test prog = "$linkmode"; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test prog = "$linkmode"; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test unsupported != "$hardcode_direct"; then - test -n "$old_library" && linklib=$old_library - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test yes = "$build_libtool_libs"; then - # Not a shared library - if test pass_all != "$deplibs_check_method"; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system cannot link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test yes = "$module"; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test lib = "$linkmode"; then - if test -n "$dependency_libs" && - { test yes != "$hardcode_into_libs" || - test yes = "$build_old_libs" || - test yes = "$link_static"; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs=$temp_deplibs - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test no != "$link_all_deplibs"; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path=$deplib ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of '$dir'" - absdir=$dir - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names"; then - for tmp in $deplibrary_names; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl"; then - depdepl=$absdir/$objdir/$depdepl - darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" - func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" - path= - fi - fi - ;; - *) - path=-L$absdir/$objdir - ;; - esac - else - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - abs_inode=`ls -i "$deplib" | awk '{print $1}'` - lib_inode=`ls -i "$libdir/$(basename $deplib)" | awk '{print $1}'` - test "$abs_inode" != "$lib_inode" && \ - func_warning "'$deplib' seems to be moved" - - path=-L$absdir - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test link = "$pass"; then - if test prog = "$linkmode"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs=$newdependency_libs - if test dlpreopen = "$pass"; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test dlopen != "$pass"; then - test conv = "$pass" || { - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - } - - if test prog,link = "$linkmode,$pass"; then - vars="compile_deplibs finalize_deplibs" - else - vars=deplibs - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - - # Add Sun CC postdeps if required: - test CXX = "$tagname" && { - case $host_os in - linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C++ 5.9 - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - - solaris*) - func_cc_basename "$CC" - case $func_cc_basename_result in - CC* | sunCC*) - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - esac - } - - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i= - ;; - esac - if test -n "$i"; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test prog = "$linkmode"; then - dlfiles=$newdlfiles - fi - if test prog = "$linkmode" || test lib = "$linkmode"; then - dlprefiles=$newdlprefiles - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "'-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "'-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs=$output - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form 'libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test no = "$module" \ - && func_fatal_help "libtool library '$output' must begin with 'lib'" - - if test no != "$need_lib_prefix"; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test pass_all != "$deplibs_check_method"; then - func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test no = "$dlself" \ - || func_warning "'-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test 1 -lt "$#" \ - && func_warning "ignoring multiple '-rpath's for a libtool library" - - install_libdir=$1 - - oldlibs= - if test -z "$rpath"; then - if test yes = "$build_libtool_libs"; then - # Building a libtool convenience library. - # Some compilers have problems with a '.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "'-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs=$IFS; IFS=: - set dummy $vinfo 0 0 0 - shift - IFS=$save_ifs - - test -n "$7" && \ - func_fatal_help "too many parameters to '-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major=$1 - number_minor=$2 - number_revision=$3 - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # that has an extra 1 added just for fun - # - case $version_type in - # correct linux to gnu/linux during the next big refactor - darwin|freebsd-elf|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_revision - ;; - freebsd-aout|qnx|sunos) - current=$number_major - revision=$number_minor - age=0 - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_minor - lt_irix_increment=no - ;; - esac - ;; - no) - current=$1 - revision=$2 - age=$3 - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT '$current' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION '$revision' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE '$age' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE '$age' is greater than the current interface number '$current'" - func_fatal_error "'$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - # On Darwin other compilers - case $CC in - nagfor*) - verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - ;; - *) - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - esac - ;; - - freebsd-aout) - major=.$current - versuffix=.$current.$revision - ;; - - freebsd-elf) - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - irix | nonstopux) - if test no = "$lt_irix_increment"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring=$verstring_prefix$major.$revision - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test 0 -ne "$loop"; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring_prefix$major.$iface:$verstring - done - - # Before this point, $major must not contain '.'. - major=.$major - versuffix=$major.$revision - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=.$current.$age.$revision - verstring=$current.$age.$revision - - # Add in all the interfaces that we are compatible with. - loop=$age - while test 0 -ne "$loop"; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring:$iface.0 - done - - # Make executables depend on our current version. - func_append verstring ":$current.0" - ;; - - qnx) - major=.$current - versuffix=.$current - ;; - - sco) - major=.$current - versuffix=.$current - ;; - - sunos) - major=.$current - versuffix=.$current.$revision - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 file systems. - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - - *) - func_fatal_configuration "unknown library version type '$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring=0.0 - ;; - esac - if test no = "$need_version"; then - versuffix= - else - versuffix=.0.0 - fi - fi - - # Remove version info from name if versioning should be avoided - if test yes,no = "$avoid_version,$need_version"; then - major= - versuffix= - verstring= - fi - - # Check to see if the archive will have undefined symbols. - if test yes = "$allow_undefined"; then - if test unsupported = "$allow_undefined_flag"; then - if test yes = "$build_old_libs"; then - func_warning "undefined symbols not allowed in $host shared libraries; building static only" - build_libtool_libs=no - else - func_fatal_error "can't build $host shared library unless -no-undefined is specified" - fi - fi - else - # Don't allow undefined symbols. - allow_undefined_flag=$no_undefined_flag - fi - - fi - - func_generate_dlsyms "$libname" "$libname" : - func_append libobjs " $symfileobj" - test " " = "$libobjs" && libobjs= - - if test relink != "$opt_mode"; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) - if test -n "$precious_files_regex"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles=$dlfiles - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles=$dlprefiles - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test yes = "$build_libtool_libs"; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test yes = "$build_libtool_need_lc"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release= - versuffix= - major= - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib=$potent_lib - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | $SED 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; - *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib= - ;; - esac - fi - if test -n "$a_deplib"; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib=$potent_lib # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs= - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - for i in $predeps $postdeps; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test none = "$deplibs_check_method"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test yes = "$droppeddeps"; then - if test yes = "$module"; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test no = "$allow_undefined"; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs=$new_libs - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test yes = "$build_libtool_libs"; then - # Remove $wl instances when linking with ld. - # FIXME: should test the right _cmds variable. - case $archive_cmds in - *\$LD\ *) wl= ;; - esac - if test yes = "$hardcode_into_libs"; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath=$finalize_rpath - test relink = "$opt_mode" || rpath=$compile_rpath$rpath - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath=$finalize_shlibpath - test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname=$1 - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname=$realname - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib=$output_objdir/$realname - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols=$output_objdir/$libname.uexp - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | msys* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - func_dll_def_p "$export_symbols" || { - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols=$export_symbols - export_symbols= - always_export_symbols=yes - } - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs=$IFS; IFS='~' - for cmd1 in $cmds; do - IFS=$save_ifs - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test yes = "$try_normal_branch" \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=$output_objdir/$output_la.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS=$save_ifs - if test -n "$export_symbols_regex" && test : != "$skipped_export"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test : != "$skipped_export" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs=$tmp_deplibs - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test yes = "$compiler_needs_object" && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test : != "$skipped_export" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then - output=$output_objdir/$output_la.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test yes = "$compiler_needs_object"; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - elif test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then - output=$output_objdir/$output_la.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-$k.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test -z "$objlist" || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test 1 -eq "$k"; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-$k.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-$k.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - ${skipped_export-false} && { - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - } - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs=$IFS; IFS='~' - for cmd in $concat_cmds; do - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - ${skipped_export-false} && { - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - } - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs=$IFS; IFS='~' - for cmd in $cmds; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test yes = "$module" || test yes = "$export_dynamic"; then - # On all known operating systems, these are identical. - dlname=$soname - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "'-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object '$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj=$output - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # if reload_cmds runs $LD directly, get rid of -Wl from - # whole_archive_flag_spec and hope we can get by with turning comma - # into space. - case $reload_cmds in - *\$LD[\ \$]*) wl= ;; - esac - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags - else - gentop=$output_objdir/${obj}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test yes = "$build_libtool_libs" || libobjs=$non_pic_objects - - # Create the old-style object. - reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs - - output=$obj - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - test yes = "$build_libtool_libs" || { - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - } - - if test -n "$pic_flag" || test default != "$pic_mode"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output=$libobj - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin* | *msys*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "'-release' is ignored for programs" - - $preload \ - && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ - && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test CXX = "$tagname"; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " $wl-bind_at_load" - func_append finalize_command " $wl-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs=$new_libs - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath=$rpath - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath=$rpath - - if test -n "$libobjs" && test yes = "$build_old_libs"; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" false - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=: - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=false - ;; - *cygwin* | *msys* | *mingw* ) - test yes = "$build_libtool_libs" || wrappers_required=false - ;; - *) - if test no = "$need_relink" || test yes != "$build_libtool_libs"; then - wrappers_required=false - fi - ;; - esac - $wrappers_required || { - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command=$compile_command$compile_rpath - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.$objext"; then - func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' - fi - - exit $exit_status - } - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test yes = "$no_install"; then - # We don't need to create a wrapper script. - link_command=$compile_var$compile_command$compile_rpath - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - case $hardcode_action,$fast_install in - relink,*) - # Fast installation is not supported - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "'$output' will be relinked during installation" - ;; - *,yes) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - ;; - *,no) - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - ;; - *,needless) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command= - ;; - esac - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin* | *msys*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *msys* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource=$output_path/$objdir/lt-$output_name.c - cwrapper=$output_path/$output_name.exe - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper $cwrapper.manifest; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host"; then - # Create the UAC manifests first if necessary (but the - # manifest files must have executable permission regardless). - case $output_name in - *instal*|*patch*|*setup*|*update*) - func_emit_exe_manifest > $cwrapper.manifest - func_emit_exe_manifest > $output_path/$objdir/$output_name.exe.manifest - chmod +x $cwrapper.manifest - chmod +x $output_path/$objdir/$output_name.exe.manifest - ;; - esac - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - case $build_libtool_libs in - convenience) - oldobjs="$libobjs_save $symfileobj" - addlibs=$convenience - build_libtool_libs=no - ;; - module) - oldobjs=$libobjs_save - addlibs=$old_convenience - build_libtool_libs=no - ;; - *) - oldobjs="$old_deplibs $non_pic_objects" - $preload && test -f "$symfileobj" \ - && func_append oldobjs " $symfileobj" - addlibs=$old_convenience - ;; - esac - - if test -n "$addlibs"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase=$func_basename_result - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj"; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test -z "$oldobjs"; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test yes = "$build_old_libs" && old_library=$libname.$libext - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test yes = "$hardcode_automatic"; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test yes = "$installed"; then - if test -z "$install_libdir"; then - break - fi - output=$output_objdir/${outputname}i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name=$func_basename_result - func_resolve_sysroot "$deplib" - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs=$newdependency_libs - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles=$newdlprefiles - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles=$newdlprefiles - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *msys*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test -n "$bindir"; then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result/$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that cannot go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test no,yes = "$installed,$need_relink"; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -if test link = "$opt_mode" || test relink = "$opt_mode"; then - func_mode_link ${1+"$@"} -fi - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $debug_cmd - - RM=$nonopt - files= - rmforce=false - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=: ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir=$func_dirname_result - if test . = "$dir"; then - odir=$objdir - else - odir=$dir/$objdir - fi - func_basename "$file" - name=$func_basename_result - test uninstall = "$opt_mode" && odir=$dir - - # Remember odir for removal later, being careful to avoid duplicates - if test clean = "$opt_mode"; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif $rmforce; then - continue - fi - - rmfiles=$file - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case $opt_mode in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && test none != "$pic_object"; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && test none != "$non_pic_object"; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test clean = "$opt_mode"; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.$objext" - func_append rmfiles " ${name}.manifest $objdir/${name}.manifest" - if test yes = "$fast_install" && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name $objdir/lt-${name}.manifest" - fi - if test "X$noexename" != "X$name"; then - func_append rmfiles " $odir/lt-$noexename.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the $objdir's in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then - func_mode_uninstall ${1+"$@"} -fi - -test -z "$opt_mode" && { - help=$generic_help - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode '$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# where we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD="I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe" - -# How to create reloadable object files. -reload_flag=" -r" -reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" - -# Commands used to build an old-style archive. -old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" - -# A language specific compiler. -CC="g++" - -# Is the compiler the GNU compiler? -with_gcc=yes - -# Compiler flag to turn off builtin functions. -no_builtin_flag=" -fno-builtin" - -# Additional compiler flags for building library objects. -pic_flag=" -DDLL_EXPORT -DPIC" - -# How to pass a linker flag through the compiler. -wl="-Wl," - -# Compiler flag to prevent dynamic linking. -link_static_flag="-static" - -# Does compiler simultaneously support -c and -o options? -compiler_c_o="yes" - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=no - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=yes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="\$wl--export-all-symbols" - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive" - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object="no" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="" - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds="" - -# Commands used to build a shared archive. -archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags -o \$output_objdir/\$soname \$wl--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib" -archive_expsym_cmds="if test DEF = \\\"\\\`\$SED -n -e 's/^[ ]*//' -e '/^\\\\(;.*\\\\)*\$/d' -e 's/^\\\\(EXPORTS\\\\|LIBRARY\\\\)\\\\([ ].*\\\\)*\$/DEF/p' -e q \$export_symbols\\\`\\\" ; then - cp \$export_symbols \$output_objdir/\$soname.def; - else - echo EXPORTS > \$output_objdir/\$soname.def; - cat \$export_symbols >> \$output_objdir/\$soname.def; - fi~ - \$CC -shared -nostdlib \$output_objdir/\$soname.def \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags -o \$output_objdir/\$soname \$wl--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib" - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds="" -module_expsym_cmds="" - -# Whether we are building with GNU ld or not. -with_gnu_ld="yes" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="unsupported" - -# Flag that enforces no undefined symbols. -no_undefined_flag="" - -# Flag to hardcode $libdir into a binary during linking. -# This must work even if $libdir does not exist -hardcode_libdir_flag_spec="-L\$libdir" - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator="" - -# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=no - -# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting $shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=no - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=no - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=unsupported - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=no - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=no - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=unknown - -# Set to "yes" if exported symbols are required. -always_export_symbols=no - -# The commands to list exported symbols. -export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED -e '/^[BCDGRS][ ]/s/.*[ ]\\\\([^ ]*\\\\)/\\\\1 DATA/;s/^.*[ ]__nm__\\\\([^ ]*\\\\)[ ][^ ]*/\\\\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //' | sort | uniq > \$export_symbols" - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms="[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname" - -# Symbols that must always be exported. -include_expsyms="" - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds="" - -# Commands necessary for finishing linking programs. -postlink_cmds="" - -# Specify filename containing input files. -file_list_spec="@" - -# How to hardcode a shared library path into an executable. -hardcode_action=immediate - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs="I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0 I:/Development/MSYS2/mingw64/bin/../lib/gcc I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib/../lib I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../lib I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../.." - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects="I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib/../lib/dllcrt2.o I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/crtbegin.o" -postdep_objects="I:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/crtend.o" -predeps="" -postdeps="-lstdc++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt" - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path="-LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0 -LI:/Development/MSYS2/mingw64/bin/../lib/gcc -LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib/../lib -LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../lib -LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/lib -LI:/Development/MSYS2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../.." - -# ### END LIBTOOL TAG CONFIG: CXX diff --git a/tools/audiofile-0.3.6/ltmain.sh b/tools/audiofile-0.3.6/ltmain.sh deleted file mode 100644 index 9a833f36..00000000 --- a/tools/audiofile-0.3.6/ltmain.sh +++ /dev/null @@ -1,11208 +0,0 @@ -#! /bin/sh -## DO NOT EDIT - This file generated from ./build-aux/ltmain.in -## by inline-source v2014-01-03.01 - -# libtool (GNU libtool) 2.4.6 -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.6 -package_revision=2.4.6 - - -## ------ ## -## Usage. ## -## ------ ## - -# Run './libtool --help' for help with using this script from the -# command line. - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# After configure completes, it has a better idea of some of the -# shell tools we need than the defaults used by the functions shared -# with bootstrap, so set those here where they can still be over- -# ridden by the user, but otherwise take precedence. - -: ${AUTOCONF="autoconf"} -: ${AUTOMAKE="automake"} - - -## -------------------------- ## -## Source external libraries. ## -## -------------------------- ## - -# Much of our low-level functionality needs to be sourced from external -# libraries, which are installed to $pkgauxdir. - -# Set a version string for this script. -scriptversion=2015-01-20.17; # UTC - -# General shell script boiler plate, and helper functions. -# Written by Gary V. Vaughan, 2004 - -# Copyright (C) 2004-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# Evaluate this file near the top of your script to gain access to -# the functions and variables defined here: -# -# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh -# -# If you need to override any of the default environment variable -# settings, do that before evaluating this file. - - -## -------------------- ## -## Shell normalisation. ## -## -------------------- ## - -# Some shells need a little help to be as Bourne compatible as possible. -# Before doing anything else, make sure all that help has been provided! - -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac -fi - -# NLS nuisances: We save the old values in case they are required later. -_G_user_locale= -_G_safe_locale= -for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test set = \"\${$_G_var+set}\"; then - save_$_G_var=\$$_G_var - $_G_var=C - export $_G_var - _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" - _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" - fi" -done - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Make sure IFS has a sensible default -sp=' ' -nl=' -' -IFS="$sp $nl" - -# There are apparently some retarded systems that use ';' as a PATH separator! -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - - -## ------------------------- ## -## Locate command utilities. ## -## ------------------------- ## - - -# func_executable_p FILE -# ---------------------- -# Check that FILE is an executable regular file. -func_executable_p () -{ - test -f "$1" && test -x "$1" -} - - -# func_path_progs PROGS_LIST CHECK_FUNC [PATH] -# -------------------------------------------- -# Search for either a program that responds to --version with output -# containing "GNU", or else returned by CHECK_FUNC otherwise, by -# trying all the directories in PATH with each of the elements of -# PROGS_LIST. -# -# CHECK_FUNC should accept the path to a candidate program, and -# set $func_check_prog_result if it truncates its output less than -# $_G_path_prog_max characters. -func_path_progs () -{ - _G_progs_list=$1 - _G_check_func=$2 - _G_PATH=${3-"$PATH"} - - _G_path_prog_max=0 - _G_path_prog_found=false - _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} - for _G_dir in $_G_PATH; do - IFS=$_G_save_IFS - test -z "$_G_dir" && _G_dir=. - for _G_prog_name in $_G_progs_list; do - for _exeext in '' .EXE; do - _G_path_prog=$_G_dir/$_G_prog_name$_exeext - func_executable_p "$_G_path_prog" || continue - case `"$_G_path_prog" --version 2>&1` in - *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; - *) $_G_check_func $_G_path_prog - func_path_progs_result=$func_check_prog_result - ;; - esac - $_G_path_prog_found && break 3 - done - done - done - IFS=$_G_save_IFS - test -z "$func_path_progs_result" && { - echo "no acceptable sed could be found in \$PATH" >&2 - exit 1 - } -} - - -# We want to be able to use the functions in this file before configure -# has figured out where the best binaries are kept, which means we have -# to search for them ourselves - except when the results are already set -# where we skip the searches. - -# Unless the user overrides by setting SED, search the path for either GNU -# sed, or the sed that truncates its output the least. -test -z "$SED" && { - _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for _G_i in 1 2 3 4 5 6 7; do - _G_sed_script=$_G_sed_script$nl$_G_sed_script - done - echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed - _G_sed_script= - - func_check_prog_sed () - { - _G_path_prog=$1 - - _G_count=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo '' >> conftest.nl - "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin - rm -f conftest.sed - SED=$func_path_progs_result -} - - -# Unless the user overrides by setting GREP, search the path for either GNU -# grep, or the grep that truncates its output the least. -test -z "$GREP" && { - func_check_prog_grep () - { - _G_path_prog=$1 - - _G_count=0 - _G_path_prog_max=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo 'GREP' >> conftest.nl - "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin - GREP=$func_path_progs_result -} - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# All uppercase variable names are used for environment variables. These -# variables can be overridden by the user before calling a script that -# uses them if a suitable command of that name is not already available -# in the command search PATH. - -: ${CP="cp -f"} -: ${ECHO="printf %s\n"} -: ${EGREP="$GREP -E"} -: ${FGREP="$GREP -F"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} - - -## -------------------- ## -## Useful sed snippets. ## -## -------------------- ## - -sed_dirname='s|/[^/]*$||' -sed_basename='s|^.*/||' - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Same as above, but do not quote variable references. -sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' - -# Sed substitution that converts a w32 file name or path -# that contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-'\' parameter expansions in output of sed_double_quote_subst that -# were '\'-ed in input to the same. If an odd number of '\' preceded a -# '$' in input to sed_double_quote_subst, that '$' was protected from -# expansion. Since each input '\' is now two '\'s, look for any number -# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. -_G_bs='\\' -_G_bs2='\\\\' -_G_bs4='\\\\\\\\' -_G_dollar='\$' -sed_double_backslash="\ - s/$_G_bs4/&\\ -/g - s/^$_G_bs2$_G_dollar/$_G_bs&/ - s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g - s/\n//g" - - -## ----------------- ## -## Global variables. ## -## ----------------- ## - -# Except for the global variables explicitly listed below, the following -# functions in the '^func_' namespace, and the '^require_' namespace -# variables initialised in the 'Resource management' section, sourcing -# this file will not pollute your global namespace with anything -# else. There's no portable way to scope variables in Bourne shell -# though, so actually running these functions will sometimes place -# results into a variable named after the function, and often use -# temporary variables in the '^_G_' namespace. If you are careful to -# avoid using those namespaces casually in your sourcing script, things -# should continue to work as you expect. And, of course, you can freely -# overwrite any of the functions or variables defined here before -# calling anything to customize them. - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -# Allow overriding, eg assuming that you follow the convention of -# putting '$debug_cmd' at the start of all your functions, you can get -# bash to show function call trace with: -# -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name -debug_cmd=${debug_cmd-":"} -exit_cmd=: - -# By convention, finish your script with: -# -# exit $exit_status -# -# so that you can set exit_status to non-zero if you want to indicate -# something went wrong during execution without actually bailing out at -# the point of failure. -exit_status=$EXIT_SUCCESS - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath=$0 - -# The name of this program. -progname=`$ECHO "$progpath" |$SED "$sed_basename"` - -# Make sure we have an absolute progpath for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` - progdir=`cd "$progdir" && pwd` - progpath=$progdir/$progname - ;; - *) - _G_IFS=$IFS - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS=$_G_IFS - test -x "$progdir/$progname" && break - done - IFS=$_G_IFS - test -n "$progdir" || progdir=`pwd` - progpath=$progdir/$progname - ;; -esac - - -## ----------------- ## -## Standard options. ## -## ----------------- ## - -# The following options affect the operation of the functions defined -# below, and should be set appropriately depending on run-time para- -# meters passed on the command line. - -opt_dry_run=false -opt_quiet=false -opt_verbose=false - -# Categories 'all' and 'none' are always available. Append any others -# you will pass as the first argument to func_warning from your own -# code. -warning_categories= - -# By default, display warnings according to 'opt_warning_types'. Set -# 'warning_func' to ':' to elide all warnings, or func_fatal_error to -# treat the next displayed warning as a fatal error. -warning_func=func_warn_and_continue - -# Set to 'all' to display all warnings, 'none' to suppress all -# warnings, or a space delimited list of some subset of -# 'warning_categories' to display only the listed warnings. -opt_warning_types=all - - -## -------------------- ## -## Resource management. ## -## -------------------- ## - -# This section contains definitions for functions that each ensure a -# particular resource (a file, or a non-empty configuration variable for -# example) is available, and if appropriate to extract default values -# from pertinent package files. Call them using their associated -# 'require_*' variable to ensure that they are executed, at most, once. -# -# It's entirely deliberate that calling these functions can set -# variables that don't obey the namespace limitations obeyed by the rest -# of this file, in order that that they be as useful as possible to -# callers. - - -# require_term_colors -# ------------------- -# Allow display of bold text on terminals that support it. -require_term_colors=func_require_term_colors -func_require_term_colors () -{ - $debug_cmd - - test -t 1 && { - # COLORTERM and USE_ANSI_COLORS environment variables take - # precedence, because most terminfo databases neglect to describe - # whether color sequences are supported. - test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} - - if test 1 = "$USE_ANSI_COLORS"; then - # Standard ANSI escape sequences - tc_reset='' - tc_bold=''; tc_standout='' - tc_red=''; tc_green='' - tc_blue=''; tc_cyan='' - else - # Otherwise trust the terminfo database after all. - test -n "`tput sgr0 2>/dev/null`" && { - tc_reset=`tput sgr0` - test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` - tc_standout=$tc_bold - test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` - test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` - test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` - test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` - test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` - } - fi - } - - require_term_colors=: -} - - -## ----------------- ## -## Function library. ## -## ----------------- ## - -# This section contains a variety of useful functions to call in your -# scripts. Take note of the portable wrappers for features provided by -# some modern shells, which will fall back to slower equivalents on -# less featureful shells. - - -# func_append VAR VALUE -# --------------------- -# Append VALUE onto the existing contents of VAR. - - # We should try to minimise forks, especially on Windows where they are - # unreasonably slow, so skip the feature probes when bash or zsh are - # being used: - if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then - : ${_G_HAVE_ARITH_OP="yes"} - : ${_G_HAVE_XSI_OPS="yes"} - # The += operator was introduced in bash 3.1 - case $BASH_VERSION in - [12].* | 3.0 | 3.0*) ;; - *) - : ${_G_HAVE_PLUSEQ_OP="yes"} - ;; - esac - fi - - # _G_HAVE_PLUSEQ_OP - # Can be empty, in which case the shell is probed, "yes" if += is - # useable or anything else if it does not work. - test -z "$_G_HAVE_PLUSEQ_OP" \ - && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ - && _G_HAVE_PLUSEQ_OP=yes - -if test yes = "$_G_HAVE_PLUSEQ_OP" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_append () - { - $debug_cmd - - eval "$1+=\$2" - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_append () - { - $debug_cmd - - eval "$1=\$$1\$2" - } -fi - - -# func_append_quoted VAR VALUE -# ---------------------------- -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -if test yes = "$_G_HAVE_PLUSEQ_OP"; then - eval 'func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1+=\\ \$func_quote_for_eval_result" - }' -else - func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1=\$$1\\ \$func_quote_for_eval_result" - } -fi - - -# func_append_uniq VAR VALUE -# -------------------------- -# Append unique VALUE onto the existing contents of VAR, assuming -# entries are delimited by the first character of VALUE. For example: -# -# func_append_uniq options " --another-option option-argument" -# -# will only append to $options if " --another-option option-argument " -# is not already present somewhere in $options already (note spaces at -# each end implied by leading space in second argument). -func_append_uniq () -{ - $debug_cmd - - eval _G_current_value='`$ECHO $'$1'`' - _G_delim=`expr "$2" : '\(.\)'` - - case $_G_delim$_G_current_value$_G_delim in - *"$2$_G_delim"*) ;; - *) func_append "$@" ;; - esac -} - - -# func_arith TERM... -# ------------------ -# Set func_arith_result to the result of evaluating TERMs. - test -z "$_G_HAVE_ARITH_OP" \ - && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ - && _G_HAVE_ARITH_OP=yes - -if test yes = "$_G_HAVE_ARITH_OP"; then - eval 'func_arith () - { - $debug_cmd - - func_arith_result=$(( $* )) - }' -else - func_arith () - { - $debug_cmd - - func_arith_result=`expr "$@"` - } -fi - - -# func_basename FILE -# ------------------ -# Set func_basename_result to FILE with everything up to and including -# the last / stripped. -if test yes = "$_G_HAVE_XSI_OPS"; then - # If this shell supports suffix pattern removal, then use it to avoid - # forking. Hide the definitions single quotes in case the shell chokes - # on unsupported syntax... - _b='func_basename_result=${1##*/}' - _d='case $1 in - */*) func_dirname_result=${1%/*}$2 ;; - * ) func_dirname_result=$3 ;; - esac' - -else - # ...otherwise fall back to using sed. - _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' - _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` - if test "X$func_dirname_result" = "X$1"; then - func_dirname_result=$3 - else - func_append func_dirname_result "$2" - fi' -fi - -eval 'func_basename () -{ - $debug_cmd - - '"$_b"' -}' - - -# func_dirname FILE APPEND NONDIR_REPLACEMENT -# ------------------------------------------- -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -eval 'func_dirname () -{ - $debug_cmd - - '"$_d"' -}' - - -# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT -# -------------------------------------------------------- -# Perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# For efficiency, we do not delegate to the functions above but instead -# duplicate the functionality here. -eval 'func_dirname_and_basename () -{ - $debug_cmd - - '"$_b"' - '"$_d"' -}' - - -# func_echo ARG... -# ---------------- -# Echo program name prefixed message. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_echo_all ARG... -# -------------------- -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - - -# func_echo_infix_1 INFIX ARG... -# ------------------------------ -# Echo program name, followed by INFIX on the first line, with any -# additional lines not showing INFIX. -func_echo_infix_1 () -{ - $debug_cmd - - $require_term_colors - - _G_infix=$1; shift - _G_indent=$_G_infix - _G_prefix="$progname: $_G_infix: " - _G_message=$* - - # Strip color escape sequences before counting printable length - for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" - do - test -n "$_G_tc" && { - _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` - _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` - } - done - _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes - - func_echo_infix_1_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_infix_1_IFS - $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 - _G_prefix=$_G_indent - done - IFS=$func_echo_infix_1_IFS -} - - -# func_error ARG... -# ----------------- -# Echo program name prefixed message to standard error. -func_error () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 -} - - -# func_fatal_error ARG... -# ----------------------- -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - $debug_cmd - - func_error "$*" - exit $EXIT_FAILURE -} - - -# func_grep EXPRESSION FILENAME -# ----------------------------- -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $debug_cmd - - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_len STRING -# --------------- -# Set func_len_result to the length of STRING. STRING may not -# start with a hyphen. - test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_len () - { - $debug_cmd - - func_len_result=${#1} - }' -else - func_len () - { - $debug_cmd - - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` - } -fi - - -# func_mkdir_p DIRECTORY-PATH -# --------------------------- -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - $debug_cmd - - _G_directory_path=$1 - _G_dir_list= - - if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then - - # Protect directory names starting with '-' - case $_G_directory_path in - -*) _G_directory_path=./$_G_directory_path ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$_G_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - _G_dir_list=$_G_directory_path:$_G_dir_list - - # If the last portion added has no slash in it, the list is done - case $_G_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` - done - _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - - func_mkdir_p_IFS=$IFS; IFS=: - for _G_dir in $_G_dir_list; do - IFS=$func_mkdir_p_IFS - # mkdir can fail with a 'File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$_G_dir" 2>/dev/null || : - done - IFS=$func_mkdir_p_IFS - - # Bail out if we (or some other process) failed to create a directory. - test -d "$_G_directory_path" || \ - func_fatal_error "Failed to create '$1'" - fi -} - - -# func_mktempdir [BASENAME] -# ------------------------- -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, BASENAME is the basename for that directory. -func_mktempdir () -{ - $debug_cmd - - _G_template=${TMPDIR-/tmp}/${1-$progname} - - if test : = "$opt_dry_run"; then - # Return a directory name, but don't create it in dry-run mode - _G_tmpdir=$_G_template-$$ - else - - # If mktemp works, use that first and foremost - _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - - if test ! -d "$_G_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - _G_tmpdir=$_G_template-${RANDOM-0}$$ - - func_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$_G_tmpdir" - umask $func_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$_G_tmpdir" || \ - func_fatal_error "cannot create temporary directory '$_G_tmpdir'" - fi - - $ECHO "$_G_tmpdir" -} - - -# func_normal_abspath PATH -# ------------------------ -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -func_normal_abspath () -{ - $debug_cmd - - # These SED scripts presuppose an absolute path with a trailing slash. - _G_pathcar='s|^/\([^/]*\).*$|\1|' - _G_pathcdr='s|^/[^/]*||' - _G_removedotparts=':dotsl - s|/\./|/|g - t dotsl - s|/\.$|/|' - _G_collapseslashes='s|/\{1,\}|/|g' - _G_finalslash='s|/*$|/|' - - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` - while :; do - # Processed it all yet? - if test / = "$func_normal_abspath_tpath"; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result"; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - - -# func_notquiet ARG... -# -------------------- -# Echo program name prefixed message only when not in quiet mode. -func_notquiet () -{ - $debug_cmd - - $opt_quiet || func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - - -# func_relative_path SRCDIR DSTDIR -# -------------------------------- -# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. -func_relative_path () -{ - $debug_cmd - - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=$func_dirname_result - if test -z "$func_relative_path_tlibdir"; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test -n "$func_stripname_result"; then - func_append func_relative_path_result "/$func_stripname_result" - fi - - # Normalisation. If bindir is libdir, return '.' else relative path. - if test -n "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - fi - - test -n "$func_relative_path_result" || func_relative_path_result=. - - : -} - - -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: -# i) func_quote_for_eval_result -# double-quoted, suitable for a subsequent eval -# ii) func_quote_for_eval_unquoted_result -# has all characters that are still active within double -# quotes backslashified. -func_quote_for_eval () -{ - $debug_cmd - - func_quote_for_eval_unquoted_result= - func_quote_for_eval_result= - while test 0 -lt $#; do - case $1 in - *[\\\`\"\$]*) - _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; - *) - _G_unquoted_arg=$1 ;; - esac - if test -n "$func_quote_for_eval_unquoted_result"; then - func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" - else - func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" - fi - - case $_G_unquoted_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_quoted_arg=\"$_G_unquoted_arg\" - ;; - *) - _G_quoted_arg=$_G_unquoted_arg - ;; - esac - - if test -n "$func_quote_for_eval_result"; then - func_append func_quote_for_eval_result " $_G_quoted_arg" - else - func_append func_quote_for_eval_result "$_G_quoted_arg" - fi - shift - done -} - - -# func_quote_for_expand ARG -# ------------------------- -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - $debug_cmd - - case $1 in - *[\\\`\"]*) - _G_arg=`$ECHO "$1" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; - *) - _G_arg=$1 ;; - esac - - case $_G_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_arg=\"$_G_arg\" - ;; - esac - - func_quote_for_expand_result=$_G_arg -} - - -# func_stripname PREFIX SUFFIX NAME -# --------------------------------- -# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_stripname () - { - $debug_cmd - - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary variable first. - func_stripname_result=$3 - func_stripname_result=${func_stripname_result#"$1"} - func_stripname_result=${func_stripname_result%"$2"} - }' -else - func_stripname () - { - $debug_cmd - - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; - esac - } -fi - - -# func_show_eval CMD [FAIL_EXP] -# ----------------------------- -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - func_quote_for_expand "$_G_cmd" - eval "func_notquiet $func_quote_for_expand_result" - - $opt_dry_run || { - eval "$_G_cmd" - _G_status=$? - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_show_eval_locale CMD [FAIL_EXP] -# ------------------------------------ -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - $opt_quiet || { - func_quote_for_expand "$_G_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - $opt_dry_run || { - eval "$_G_user_locale - $_G_cmd" - _G_status=$? - eval "$_G_safe_locale" - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_tr_sh -# ---------- -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - $debug_cmd - - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_verbose ARG... -# ------------------- -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $debug_cmd - - $opt_verbose && func_echo "$*" - - : -} - - -# func_warn_and_continue ARG... -# ----------------------------- -# Echo program name prefixed warning message to standard error. -func_warn_and_continue () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 -} - - -# func_warning CATEGORY ARG... -# ---------------------------- -# Echo program name prefixed warning message to standard error. Warning -# messages can be filtered according to CATEGORY, where this function -# elides messages where CATEGORY is not listed in the global variable -# 'opt_warning_types'. -func_warning () -{ - $debug_cmd - - # CATEGORY must be in the warning_categories list! - case " $warning_categories " in - *" $1 "*) ;; - *) func_internal_error "invalid warning category '$1'" ;; - esac - - _G_category=$1 - shift - - case " $opt_warning_types " in - *" $_G_category "*) $warning_func ${1+"$@"} ;; - esac -} - - -# func_sort_ver VER1 VER2 -# ----------------------- -# 'sort -V' is not generally available. -# Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a -# but this should suffice as we won't be specifying old -# version formats or redundant trailing .0 in bootstrap.conf. -# If we did want full compatibility then we should probably -# use m4_version_compare from autoconf. -func_sort_ver () -{ - $debug_cmd - - printf '%s\n%s\n' "$1" "$2" \ - | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n -} - -# func_lt_ver PREV CURR -# --------------------- -# Return true if PREV and CURR are in the correct order according to -# func_sort_ver, otherwise false. Use it like this: -# -# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." -func_lt_ver () -{ - $debug_cmd - - test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: -#! /bin/sh - -# Set a version string for this script. -scriptversion=2014-01-07.03; # UTC - -# A portable, pluggable option parser for Bourne shell. -# Written by Gary V. Vaughan, 2010 - -# Copyright (C) 2010-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# This file is a library for parsing options in your shell scripts along -# with assorted other useful supporting features that you can make use -# of too. -# -# For the simplest scripts you might need only: -# -# #!/bin/sh -# . relative/path/to/funclib.sh -# . relative/path/to/options-parser -# scriptversion=1.0 -# func_options ${1+"$@"} -# eval set dummy "$func_options_result"; shift -# ...rest of your script... -# -# In order for the '--version' option to work, you will need to have a -# suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. -# -# For '-h' and '--help' to work, you will also need a one line -# description of your script's purpose in a comment directly above the -# '# Written by ' line, like the one at the top of this file. -# -# The default options also support '--debug', which will turn on shell -# execution tracing (see the comment above debug_cmd below for another -# use), and '--verbose' and the func_verbose function to allow your script -# to display verbose messages only when your user has specified -# '--verbose'. -# -# After sourcing this file, you can plug processing for additional -# options by amending the variables from the 'Configuration' section -# below, and following the instructions in the 'Option parsing' -# section further down. - -## -------------- ## -## Configuration. ## -## -------------- ## - -# You should override these variables in your script after sourcing this -# file so that they reflect the customisations you have added to the -# option parser. - -# The usage line for option parsing errors and the start of '-h' and -# '--help' output messages. You can embed shell variables for delayed -# expansion at the time the message is displayed, but you will need to -# quote other shell meta-characters carefully to prevent them being -# expanded when the contents are evaled. -usage='$progpath [OPTION]...' - -# Short help message in response to '-h' and '--help'. Add to this or -# override it after sourcing this library to reflect the full set of -# options your script accepts. -usage_message="\ - --debug enable verbose shell tracing - -W, --warnings=CATEGORY - report the warnings falling in CATEGORY [all] - -v, --verbose verbosely report processing - --version print version information and exit - -h, --help print short or long help message and exit -" - -# Additional text appended to 'usage_message' in response to '--help'. -long_help_message=" -Warning categories include: - 'all' show all warnings - 'none' turn off all the warnings - 'error' warnings are treated as fatal errors" - -# Help message printed before fatal option parsing errors. -fatal_help="Try '\$progname --help' for more information." - - - -## ------------------------- ## -## Hook function management. ## -## ------------------------- ## - -# This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. - -# func_hookable FUNC_NAME -# ----------------------- -# Declare that FUNC_NAME will run hooks added with -# 'func_add_hook FUNC_NAME ...'. -func_hookable () -{ - $debug_cmd - - func_append hookable_fns " $1" -} - - -# func_add_hook FUNC_NAME HOOK_FUNC -# --------------------------------- -# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must -# first have been declared "hookable" by a call to 'func_hookable'. -func_add_hook () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not accept hook functions." ;; - esac - - eval func_append ${1}_hooks '" $2"' -} - - -# func_remove_hook FUNC_NAME HOOK_FUNC -# ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. -func_remove_hook () -{ - $debug_cmd - - eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' -} - - -# func_run_hooks FUNC_NAME [ARG]... -# --------------------------------- -# Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more -# than a whitespace-delimited list of legal shell function names, and -# no effort is wasted trying to catch shell meta-characters or preserve -# whitespace. -func_run_hooks () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook funcions.n" ;; - esac - - eval _G_hook_fns=\$$1_hooks; shift - - for _G_hook in $_G_hook_fns; do - eval $_G_hook '"$@"' - - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift - done - - func_quote_for_eval ${1+"$@"} - func_run_hooks_result=$func_quote_for_eval_result -} - - - -## --------------- ## -## Option parsing. ## -## --------------- ## - -# In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed -# options in '_result', escaped suitably for -# 'eval'. Like this: -# -# my_options_prep () -# { -# $debug_cmd -# -# # Extend the existing usage message. -# usage_message=$usage_message' -# -s, --silent don'\''t print informational messages -# ' -# -# func_quote_for_eval ${1+"$@"} -# my_options_prep_result=$func_quote_for_eval_result -# } -# func_add_hook func_options_prep my_options_prep -# -# -# my_silent_option () -# { -# $debug_cmd -# -# # Note that for efficiency, we parse as many options as we can -# # recognise in a loop before passing the remainder back to the -# # caller on the first unrecognised argument we encounter. -# while test $# -gt 0; do -# opt=$1; shift -# case $opt in -# --silent|-s) opt_silent=: ;; -# # Separate non-argument short options: -# -s*) func_split_short_opt "$_G_opt" -# set dummy "$func_split_short_opt_name" \ -# "-$func_split_short_opt_arg" ${1+"$@"} -# shift -# ;; -# *) set dummy "$_G_opt" "$*"; shift; break ;; -# esac -# done -# -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result -# } -# func_add_hook func_parse_options my_silent_option -# -# -# my_option_validation () -# { -# $debug_cmd -# -# $opt_silent && $opt_verbose && func_fatal_help "\ -# '--silent' and '--verbose' options are mutually exclusive." -# -# func_quote_for_eval ${1+"$@"} -# my_option_validation_result=$func_quote_for_eval_result -# } -# func_add_hook func_validate_options my_option_validation -# -# You'll alse need to manually amend $usage_message to reflect the extra -# options you parse. It's preferable to append if you can, so that -# multiple option parsing hooks can be added safely. - - -# func_options [ARG]... -# --------------------- -# All the functions called inside func_options are hookable. See the -# individual implementations for details. -func_hookable func_options -func_options () -{ - $debug_cmd - - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options_result+"$func_parse_options_result"} - - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} - - # save modified positional parameters for caller - func_options_result=$func_run_hooks_result -} - - -# func_options_prep [ARG]... -# -------------------------- -# All initialisations required before starting the option parse loop. -# Note that when calling hook functions, we pass through the list of -# positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning. -func_hookable func_options_prep -func_options_prep () -{ - $debug_cmd - - # Option defaults: - opt_verbose=false - opt_warning_types= - - func_run_hooks func_options_prep ${1+"$@"} - - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result -} - - -# func_parse_options [ARG]... -# --------------------------- -# The main option parsing loop. -func_hookable func_parse_options -func_parse_options () -{ - $debug_cmd - - func_parse_options_result= - - # this just eases exit handling - while test $# -gt 0; do - # Defer to hook functions for initial option parsing, so they - # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift - - # Break out of the loop if we already parsed every option. - test $# -gt 0 || break - - _G_opt=$1 - shift - case $_G_opt in - --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" - $debug_cmd - ;; - - --no-warnings|--no-warning|--no-warn) - set dummy --warnings none ${1+"$@"} - shift - ;; - - --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break - case " $warning_categories $1" in - *" $1 "*) - # trailing space prevents matching last $1 above - func_append_uniq opt_warning_types " $1" - ;; - *all) - opt_warning_types=$warning_categories - ;; - *none) - opt_warning_types=none - warning_func=: - ;; - *error) - opt_warning_types=$warning_categories - warning_func=func_fatal_error - ;; - *) - func_fatal_error \ - "unsupported warning category: '$1'" - ;; - esac - shift - ;; - - --verbose|-v) opt_verbose=: ;; - --version) func_version ;; - -\?|-h) func_usage ;; - --help) func_help ;; - - # Separate optargs to long options (plugins may need this): - --*=*) func_split_equals "$_G_opt" - set dummy "$func_split_equals_lhs" \ - "$func_split_equals_rhs" ${1+"$@"} - shift - ;; - - # Separate optargs to short options: - -W*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-v*|-x*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result -} - - -# func_validate_options [ARG]... -# ------------------------------ -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -func_hookable func_validate_options -func_validate_options () -{ - $debug_cmd - - # Display all warnings if -W was not given. - test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - - func_run_hooks func_validate_options ${1+"$@"} - - # Bail if the options were screwed! - $exit_cmd $EXIT_FAILURE - - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result -} - - - -## ----------------- ## -## Helper functions. ## -## ----------------- ## - -# This section contains the helper functions used by the rest of the -# hookable option parser framework in ascii-betical order. - - -# func_fatal_help ARG... -# ---------------------- -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - eval \$ECHO \""$fatal_help"\" - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - - -# func_help -# --------- -# Echo long help message to standard output and exit. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message" - exit 0 -} - - -# func_missing_arg ARGNAME -# ------------------------ -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $debug_cmd - - func_error "Missing argument for '$1'." - exit_cmd=exit -} - - -# func_split_equals STRING -# ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. -test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=${1%%=*} - func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs= - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` - func_split_equals_rhs= - test "x$func_split_equals_lhs" = "x$1" \ - || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` - } -fi #func_split_equals - - -# func_split_short_opt SHORTOPT -# ----------------------------- -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"} - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` - func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` - } -fi #func_split_short_opt - - -# func_usage -# ---------- -# Echo short help message to standard output and exit. -func_usage () -{ - $debug_cmd - - func_usage_message - $ECHO "Run '$progname --help |${PAGER-more}' for full usage" - exit 0 -} - - -# func_usage_message -# ------------------ -# Echo short help message to standard output. -func_usage_message () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - echo - $SED -n 's|^# || - /^Written by/{ - x;p;x - } - h - /^Written by/q' < "$progpath" - echo - eval \$ECHO \""$usage_message"\" -} - - -# func_version -# ------------ -# Echo version message to standard output and exit. -func_version () -{ - $debug_cmd - - printf '%s\n' "$progname $scriptversion" - $SED -n ' - /(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p - } - /^# Written by / { - s|^# || - p - } - /^warranty; /q' < "$progpath" - - exit $? -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: - -# Set a version string. -scriptversion='(GNU libtool) 2.4.6' - - -# func_echo ARG... -# ---------------- -# Libtool also displays the current mode in messages, so override -# funclib.sh func_echo with this custom definition. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_warning ARG... -# ------------------- -# Libtool warnings are not categorized, so override funclib.sh -# func_warning with this simpler definition. -func_warning () -{ - $debug_cmd - - $warning_func ${1+"$@"} -} - - -## ---------------- ## -## Options parsing. ## -## ---------------- ## - -# Hook in the functions to make sure our own options are parsed during -# the option parsing loop. - -usage='$progpath [OPTION]... [MODE-ARG]...' - -# Short help message in response to '-h'. -usage_message="Options: - --config show all configuration variables - --debug enable verbose shell tracing - -n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --mode=MODE use operation mode MODE - --no-warnings equivalent to '-Wnone' - --preserve-dup-deps don't remove duplicate dependency libraries - --quiet, --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - -v, --verbose print more informational messages than default - --version print version information - -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] - -h, --help, --help-all print short, long, or detailed help message -" - -# Additional text appended to 'usage_message' in response to '--help'. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. When passed as first option, -'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. -Try '$progname --help --mode=MODE' for a more detailed description of MODE. - -When reporting a bug, please describe a test case to reproduce it and -include the following information: - - host-triplet: $host - shell: $SHELL - compiler: $LTCC - compiler flags: $LTCFLAGS - linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.6 - automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` - autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` - -Report bugs to . -GNU libtool home page: . -General help using GNU software: ." - exit 0 -} - - -# func_lo2o OBJECT-NAME -# --------------------- -# Transform OBJECT-NAME from a '.lo' suffix to the platform specific -# object suffix. - -lo2o=s/\\.lo\$/.$objext/ -o2lo=s/\\.$objext\$/.lo/ - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_lo2o () - { - case $1 in - *.lo) func_lo2o_result=${1%.lo}.$objext ;; - * ) func_lo2o_result=$1 ;; - esac - }' - - # func_xform LIBOBJ-OR-SOURCE - # --------------------------- - # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) - # suffix to a '.lo' libtool-object suffix. - eval 'func_xform () - { - func_xform_result=${1%.*}.lo - }' -else - # ...otherwise fall back to using sed. - func_lo2o () - { - func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` - } - - func_xform () - { - func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` - } -fi - - -# func_fatal_configuration ARG... -# ------------------------------- -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func__fatal_error ${1+"$@"} \ - "See the $PACKAGE documentation for more information." \ - "Fatal configuration error." -} - - -# func_config -# ----------- -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - - -# func_features -# ------------- -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test yes = "$build_libtool_libs"; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test yes = "$build_old_libs"; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - - -# func_enable_tag TAGNAME -# ----------------------- -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname=$1 - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf=/$re_begincf/,/$re_endcf/p - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - - -# func_check_version_match -# ------------------------ -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# libtool_options_prep [ARG]... -# ----------------------------- -# Preparation for options parsed by libtool. -libtool_options_prep () -{ - $debug_mode - - # Option defaults: - opt_config=false - opt_dlopen= - opt_dry_run=false - opt_help=false - opt_mode= - opt_preserve_dup_deps=false - opt_quiet=false - - nonopt= - preserve_args= - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Pass back the list of options. - func_quote_for_eval ${1+"$@"} - libtool_options_prep_result=$func_quote_for_eval_result -} -func_add_hook func_options_prep libtool_options_prep - - -# libtool_parse_options [ARG]... -# --------------------------------- -# Provide handling for libtool specific options. -libtool_parse_options () -{ - $debug_cmd - - # Perform our own loop to consume as many options as possible in - # each iteration. - while test $# -gt 0; do - _G_opt=$1 - shift - case $_G_opt in - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - - --config) func_config ;; - - --dlopen|-dlopen) - opt_dlopen="${opt_dlopen+$opt_dlopen -}$1" - shift - ;; - - --preserve-dup-deps) - opt_preserve_dup_deps=: ;; - - --features) func_features ;; - - --finish) set dummy --mode finish ${1+"$@"}; shift ;; - - --help) opt_help=: ;; - - --help-all) opt_help=': help-all' ;; - - --mode) test $# = 0 && func_missing_arg $_G_opt && break - opt_mode=$1 - case $1 in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $_G_opt" - exit_cmd=exit - break - ;; - esac - shift - ;; - - --no-silent|--no-quiet) - opt_quiet=false - func_append preserve_args " $_G_opt" - ;; - - --no-warnings|--no-warning|--no-warn) - opt_warning=false - func_append preserve_args " $_G_opt" - ;; - - --no-verbose) - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --silent|--quiet) - opt_quiet=: - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --tag) test $# = 0 && func_missing_arg $_G_opt && break - opt_tag=$1 - func_append preserve_args " $_G_opt $1" - func_enable_tag "$1" - shift - ;; - - --verbose|-v) opt_quiet=false - opt_verbose=: - func_append preserve_args " $_G_opt" - ;; - - # An option not handled by this hook function: - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - libtool_parse_options_result=$func_quote_for_eval_result -} -func_add_hook func_parse_options libtool_parse_options - - - -# libtool_validate_options [ARG]... -# --------------------------------- -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -libtool_validate_options () -{ - # save first non-option argument - if test 0 -lt $#; then - nonopt=$1 - shift - fi - - # preserve --debug - test : = "$debug_cmd" || func_append preserve_args " --debug" - - case $host in - # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 - # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - *cygwin* | *msys* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - test yes != "$build_libtool_libs" \ - && test yes != "$build_old_libs" \ - && func_fatal_configuration "not configured to build any kind of library" - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test execute != "$opt_mode"; then - func_error "unrecognized option '-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help=$help - help="Try '$progname --help --mode=$opt_mode' for more information." - } - - # Pass back the unparsed argument list - func_quote_for_eval ${1+"$@"} - libtool_validate_options_result=$func_quote_for_eval_result -} -func_add_hook func_validate_options libtool_validate_options - - -# Process options as early as possible so that --help and --version -# can return quickly. -func_options ${1+"$@"} -eval set dummy "$func_options_result"; shift - - - -## ----------- ## -## Main. ## -## ----------- ## - -magic='%%%MAGIC variable%%%' -magic_exe='%%%MAGIC EXE variable%%%' - -# Global variables. -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# func_generated_by_libtool -# True iff stdin has been generated by Libtool. This function is only -# a basic sanity check; it will hardly flush out determined imposters. -func_generated_by_libtool_p () -{ - $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if 'file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case $lalib_p_line in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test yes = "$lalib_p" -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - test -f "$1" && - $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $debug_cmd - - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# 'FILE.' does not work on cygwin managed mounts. -func_source () -{ - $debug_cmd - - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case $lt_sysroot:$1 in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result='='$func_stripname_result - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $debug_cmd - - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with '--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=$1 - if test yes = "$build_libtool_libs"; then - write_lobj=\'$2\' - else - write_lobj=none - fi - - if test yes = "$build_old_libs"; then - write_oldobj=\'$3\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $debug_cmd - - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result= - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result"; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $debug_cmd - - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $debug_cmd - - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $debug_cmd - - if test -z "$2" && test -n "$1"; then - func_error "Could not determine host file name corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result=$1 - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $debug_cmd - - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " '$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result=$3 - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $debug_cmd - - case $4 in - $1 ) func_to_host_path_result=$3$func_to_host_path_result - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via '$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $debug_cmd - - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $debug_cmd - - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result=$1 -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result=$func_convert_core_msys_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result=$func_convert_core_file_wine_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via '$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $debug_cmd - - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd=func_convert_path_$func_stripname_result - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $debug_cmd - - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result=$1 -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_msys_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_path_wine_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_dll_def_p FILE -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with _LT_DLL_DEF_P in libtool.m4 -func_dll_def_p () -{ - $debug_cmd - - func_dll_def_p_tmp=`$SED -n \ - -e 's/^[ ]*//' \ - -e '/^\(;.*\)*$/d' \ - -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ - -e q \ - "$1"` - test DEF = "$func_dll_def_p_tmp" -} - - -# func_mode_compile arg... -func_mode_compile () -{ - $debug_cmd - - # Get the compilation command and the source file. - base_compile= - srcfile=$nonopt # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg=$arg - arg_mode=normal - ;; - - target ) - libobj=$arg - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify '-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs=$IFS; IFS=, - for arg in $args; do - IFS=$save_ifs - func_append_quoted lastarg "$arg" - done - IFS=$save_ifs - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg=$srcfile - srcfile=$arg - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with '-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj=$func_basename_result - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from '$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test yes = "$build_libtool_libs" \ - || func_fatal_configuration "cannot build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name '$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname=$func_basename_result - xdir=$func_dirname_result - lobj=$xdir$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test yes = "$build_old_libs"; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | msys* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test no = "$compiler_c_o"; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext - lockfile=$output_obj.lock - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test yes = "$need_locks"; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test warn = "$need_locks"; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test yes = "$build_libtool_libs"; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test no != "$pic_mode"; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test yes = "$suppress_opt"; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test yes = "$build_old_libs"; then - if test yes != "$pic_mode"; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test yes = "$compiler_c_o"; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test no != "$need_locks"; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test compile = "$opt_mode" && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a '.o' file suitable for static linking - -static only build a '.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a 'standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix '.c' with the -library object suffix, '.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to '-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the '--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the 'install' or 'cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE use a list of object files found in FILE to specify objects - -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with '-') are ignored. - -Every other argument is treated as a filename. Files ending in '.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in '.la', then a libtool library is created, -only library objects ('.lo' files) may be specified, and '-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created -using 'ar' and 'ranlib', or on Windows using 'lib'. - -If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode '$opt_mode'" - ;; - esac - - echo - $ECHO "Try '$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test : = "$opt_help"; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | $SED -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - $SED '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $debug_cmd - - # The first argument is the command name. - cmd=$nonopt - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "'$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "'$file' was not linked with '-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir=$func_dirname_result - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir=$func_dirname_result - ;; - - *) - func_warning "'-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir=$absdir - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic=$magic - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file=$progdir/$program - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file=$progdir/$program - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if $opt_dry_run; then - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - else - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd=\$cmd$args - fi -} - -test execute = "$opt_mode" && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $debug_cmd - - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "'$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument '$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and '=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_quiet && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the '-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the '$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the '$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the '$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test finish = "$opt_mode" && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $debug_cmd - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac - then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=false - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=: ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test X-m = "X$prev" && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the '$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=: - if $isdir; then - destdir=$dest - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir=$func_dirname_result - destname=$func_basename_result - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "'$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "'$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir=$func_dirname_result - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking '$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname=$1 - shift - - srcname=$realname - test -n "$relink_command" && srcname=${realname}T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme=$stripme - case $host_os in - cygwin* | msys* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme= - ;; - esac - ;; - os2*) - case $realname in - *_dll.a) - tstripme= - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try 'ln -sf' first, because the 'ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib=$destdir/$realname - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name=$func_basename_result - instname=$dir/${name}i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest=$destfile - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to '$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test yes = "$build_old_libs"; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext= - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=.exe - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *msys* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script '$wrapper'" - - finalize=: - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "'$lib' has not been installed in '$libdir'" - finalize=false - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test no = "$fast_install" && test -n "$relink_command"; then - $opt_dry_run || { - if $finalize; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file=$func_basename_result - outputname=$tmpdir/$file - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_quiet || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink '$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file=$outputname - else - func_warning "cannot relink '$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*|*/usr/bin/install*,*msys*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name=$func_basename_result - - # Set up the ranlib parameters. - oldlib=$destdir/$name - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run '$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test install = "$opt_mode" && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $debug_cmd - - my_outputname=$1 - my_originator=$2 - my_pic_p=${3-false} - my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms=${my_outputname}S.c - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist=$output_objdir/$my_outputname.nm - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* External symbol declarations for the compiler. */\ -" - - if test yes = "$dlself"; then - func_verbose "generating symbol list for '$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from '$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols=$output_objdir/$outputname.exp - $opt_dry_run || { - $RM $export_symbols - eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from '$dlprefile'" - func_basename "$dlprefile" - name=$func_basename_result - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename= - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname"; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename=$func_basename_result - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename"; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - func_show_eval '$RM "${nlist}I"' - if test -n "$global_symbol_to_import"; then - eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[];\ -" - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ -static void lt_syminit(void) -{ - LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; - for (; symbol->name; ++symbol) - {" - $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" - echo >> "$output_objdir/$my_dlsyms" "\ - } -}" - fi - echo >> "$output_objdir/$my_dlsyms" "\ -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{ {\"$my_originator\", (void *) 0}," - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ - {\"@INIT@\", (void *) <_syminit}," - fi - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - $my_pic_p && pic_flag_for_symtable=" $pic_flag" - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' - - # Transform the symbol file into the correct name. - symfileobj=$output_objdir/${my_outputname}S.$objext - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for '$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $debug_cmd - - win32_libid_type=unknown - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - case $nm_interface in - "MS dumpbin") - if func_cygming_ms_implib_p "$1" || - func_cygming_gnu_implib_p "$1" - then - win32_nmres=import - else - win32_nmres= - fi - ;; - *) - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s|.*|import| - p - q - } - }'` - ;; - esac - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $debug_cmd - - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $debug_cmd - - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive that possess that section. Heuristic: eliminate - # all those that have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $debug_cmd - - if func_cygming_gnu_implib_p "$1"; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1"; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result= - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $debug_cmd - - f_ex_an_ar_dir=$1; shift - f_ex_an_ar_oldlib=$1 - if test yes = "$lock_old_archive_extraction"; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test yes = "$lock_old_archive_extraction"; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $debug_cmd - - my_gentop=$1; shift - my_oldlibs=${1+"$@"} - my_oldobjs= - my_xlib= - my_xabs= - my_xdir= - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib=$func_basename_result - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir=$my_gentop/$my_xlib_u - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - func_basename "$darwin_archive" - darwin_base_archive=$func_basename_result - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches; do - func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" - $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" - cd "unfat-$$/$darwin_base_archive-$darwin_arch" - func_extract_an_archive "`pwd`" "$darwin_base_archive" - cd "$darwin_curdir" - $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result=$my_oldobjs -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory where it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case \" \$* \" in - *\\ --lt-*) - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done ;; - esac - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test yes = "$fast_install"; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - \$ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# if defined(__STRICT_ANSI__) && !defined(__MINGW64_VERSION_MAJOR) || defined(_POSIX_) -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -n -e ' -s/^\(.\{79\}\)\(..*\)/\1\ -\2/ -h -s/\([\\"]\)/\\\1/g -s/$/\\n/ -s/\([^\n]*\).*/ fputs ("\1", f);/p -g -D' - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_emit_exe_manifest -# emit a Win32 UAC manifest for executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_exe_manifest () -{ - cat < - - - - - - - - - - - - -EOF -} - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $debug_cmd - - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_suncc_cstd_abi -# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! -# Several compiler flags select an ABI that is incompatible with the -# Cstd library. Avoid specifying it if any are in CXXFLAGS. -func_suncc_cstd_abi () -{ - $debug_cmd - - case " $compile_command " in - *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) - suncc_use_cstd_abi=no - ;; - *) - suncc_use_cstd_abi=yes - ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $debug_cmd - - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # what system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll that has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - os2dllname= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=false - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module=$wl-single_module - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test yes != "$build_libtool_libs" \ - && func_fatal_configuration "cannot build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg=$1 - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir=$arg - prev= - continue - ;; - dlfiles|dlprefiles) - $preload || { - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=: - } - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test no = "$dlself"; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test dlprefiles = "$prev"; then - dlself=yes - elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test dlfiles = "$prev"; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols=$arg - test -f "$arg" \ - || func_fatal_error "symbol file '$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex=$arg - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir=$arg - prev= - continue - ;; - mllvm) - # Clang does not use LLVM to link, so we can simply discard any - # '-mllvm $arg' options when doing the link step. - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - if test none != "$pic_object"; then - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - fi - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file '$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - os2dllname) - os2dllname=$arg - prev= - continue - ;; - precious_regex) - precious_files_regex=$arg - prev= - continue - ;; - release) - release=-$arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test rpath = "$prev"; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds=$arg - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg=$arg - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "'-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test X-export-symbols = "X$arg"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between '-L' and '$1'" - else - func_fatal_error "need path for '-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of '$dir'" - dir=$absdir - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test X-lc = "X$arg" || test X-lm = "X$arg"; then - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test X-lc = "X$arg" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc due to us having libc/libc_r. - test X-lc = "X$arg" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test X-lc = "X$arg" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test X-lc = "X$arg" && continue - ;; - esac - elif test X-lc_r = "X$arg"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -mllvm) - prev=mllvm - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module=$wl-multi_module - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "'-no-install' is ignored for $host" - func_warning "assuming '-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -os2dllname) - prev=os2dllname - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # -fstack-protector* stack protector flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -stdlib=* select c++ std lib with clang - # -{shared,static}-libgcc, -static-{libgfortran|libstdc++} - # link against specified runtime library - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -ftree-parallelize-loops=*|-fcilkplus|-fgnu-tm|-ffast-math| \ - -funsafe-math-optimizations|-fvtable-verify*| \ - -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - -Z*) - if test os2 = "`expr $host : '.*\(os2\)'`"; then - # OS/2 uses -Zxxx to specify OS/2-specific options - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case $arg in - -Zlinker | -Zstack) - prev=xcompiler - ;; - esac - continue - else - # Otherwise treat like 'Some other compiler flag' below - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - fi - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - test none = "$pic_object" || { - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - } - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test dlfiles = "$prev"; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test dlprefiles = "$prev"; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the '$prevarg' option requires an argument" - - if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname=$func_basename_result - libobjs_save=$libobjs - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - # Definition is injected by LT_CONFIG during libtool generation. - func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" - - func_dirname "$output" "/" "" - output_objdir=$func_dirname_result$objdir - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test lib = "$linkmode"; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=false - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test lib,link = "$linkmode,$pass"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs=$tmp_deplibs - fi - - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass"; then - libs=$deplibs - deplibs= - fi - if test prog = "$linkmode"; then - case $pass in - dlopen) libs=$dlfiles ;; - dlpreopen) libs=$dlprefiles ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test lib,dlpreopen = "$linkmode,$pass"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs=$dlprefiles - fi - if test dlopen = "$pass"; then - # Collect dlpreopened libraries - save_deplibs=$deplibs - deplibs= - fi - - for deplib in $libs; do - lib= - found=false - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test lib != "$linkmode" && test prog != "$linkmode"; then - func_warning "'-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test lib = "$linkmode"; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib=$searchdir/lib$name$search_ext - if test -f "$lib"; then - if test .la = "$search_ext"; then - found=: - else - found=false - fi - break 2 - fi - done - done - if $found; then - # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll=$l - done - if test "X$ll" = "X$old_library"; then # only static version available - found=false - func_dirname "$lib" "" "." - ladir=$func_dirname_result - lib=$ladir/$old_library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - else - # deplib doesn't seem to be a libtool library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - ;; # -l - *.ltframework) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test conv = "$pass" && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - if test scan = "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "'-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test link = "$pass"; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules and compiler provided static libraries - # into shared libraries is allowed, but linking other static - # libraries is non-portable. - case $deplib in - */libgcc*.$libext | */libclang_rt*.$libext) - deplibs="$deplib $deplibs" - continue - ;; - esac - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=false - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=: - fi - ;; - pass_all) - valid_a_lib=: - ;; - esac - if $valid_a_lib; then - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - else - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - fi - ;; - esac - continue - ;; - prog) - if test link != "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - elif test prog = "$linkmode"; then - if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=: - continue - ;; - esac # case $deplib - - $found || test -f "$lib" \ - || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "'$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir=$func_dirname_result - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass" || - { test prog != "$linkmode" && test lib != "$linkmode"; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test conv = "$pass"; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test prog != "$linkmode" && test lib != "$linkmode"; then - func_fatal_error "'$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test yes = "$prefer_static_libs" || - test built,no = "$prefer_static_libs,$installed"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib=$l - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - - # This library was specified with -dlopen. - if test dlopen = "$pass"; then - test -z "$libdir" \ - && func_fatal_error "cannot -dlopen a convenience library: '$lib'" - if test -z "$dlname" || - test yes != "$dlopen_support" || - test no = "$build_libtool_libs" - then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of '$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir=$ladir - fi - ;; - esac - func_basename "$lib" - laname=$func_basename_result - - # Find the relevant object directory and library name. - if test yes = "$installed"; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library '$lib' was moved." - dir=$ladir - absdir=$abs_ladir - libdir=$abs_ladir - else - dir=$lt_sysroot$libdir - absdir=$lt_sysroot$libdir - fi - test yes = "$hardcode_automatic" && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir=$ladir - absdir=$abs_ladir - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir=$ladir/$objdir - absdir=$abs_ladir/$objdir - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test dlpreopen = "$pass"; then - if test -z "$libdir" && test prog = "$linkmode"; then - func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" - fi - case $host in - # special handling for platforms with PE-DLLs. - *cygwin* | *msys* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test lib = "$linkmode"; then - deplibs="$dir/$old_library $deplibs" - elif test prog,link = "$linkmode,$pass"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test prog = "$linkmode" && test link != "$pass"; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=false - if test no != "$link_all_deplibs" || test -z "$library_names" || - test no = "$build_libtool_libs"; then - linkalldeplibs=: - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if $linkalldeplibs; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test prog,link = "$linkmode,$pass"; then - if test -n "$library_names" && - { { test no = "$prefer_static_libs" || - test built,yes = "$prefer_static_libs,$installed"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then - # Make sure the rpath contains only unique directories. - case $temp_rpath: in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if $alldeplibs && - { test pass_all = "$deplibs_check_method" || - { test yes = "$build_libtool_libs" && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test built = "$use_static_libs" && test yes = "$installed"; then - use_static_libs=no - fi - if test -n "$library_names" && - { test no = "$use_static_libs" || test -z "$old_library"; }; then - case $host in - *cygwin* | *msys* | *mingw* | *cegcc* | *os2*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test no = "$installed"; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule= - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule=$dlpremoduletest - break - fi - done - if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then - echo - if test prog = "$linkmode"; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test lib = "$linkmode" && - test yes = "$hardcode_into_libs"; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname=$1 - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname=$dlname - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | *msys* | mingw* | *cegcc* | *os2*) - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - esac - eval soname=\"$soname_spec\" - else - soname=$realname - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot=$soname - func_basename "$soroot" - soname=$func_basename_result - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from '$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for '$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test prog = "$linkmode" || test relink != "$opt_mode"; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test no = "$hardcode_direct"; then - add=$dir/$linklib - case $host in - *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; - *-*-sysv4*uw2*) add_dir=-L$dir ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir=-L$dir ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we cannot - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library"; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add=$dir/$old_library - fi - elif test -n "$old_library"; then - add=$dir/$old_library - fi - fi - esac - elif test no = "$hardcode_minus_L"; then - case $host in - *-*-sunos*) add_shlibpath=$dir ;; - esac - add_dir=-L$dir - add=-l$name - elif test no = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - relink) - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$dir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$absdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test yes != "$lib_linked"; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test prog = "$linkmode"; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test yes != "$hardcode_direct" && - test yes != "$hardcode_minus_L" && - test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test prog = "$linkmode" || test relink = "$opt_mode"; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$libdir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$libdir - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add=-l$name - elif test yes = "$hardcode_automatic"; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib"; then - add=$inst_prefix_dir$libdir/$linklib - else - add=$libdir/$linklib - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir=-L$libdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - fi - - if test prog = "$linkmode"; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test prog = "$linkmode"; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test unsupported != "$hardcode_direct"; then - test -n "$old_library" && linklib=$old_library - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test yes = "$build_libtool_libs"; then - # Not a shared library - if test pass_all != "$deplibs_check_method"; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system cannot link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test yes = "$module"; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test lib = "$linkmode"; then - if test -n "$dependency_libs" && - { test yes != "$hardcode_into_libs" || - test yes = "$build_old_libs" || - test yes = "$link_static"; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs=$temp_deplibs - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test no != "$link_all_deplibs"; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path=$deplib ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of '$dir'" - absdir=$dir - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names"; then - for tmp in $deplibrary_names; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl"; then - depdepl=$absdir/$objdir/$depdepl - darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" - func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" - path= - fi - fi - ;; - *) - path=-L$absdir/$objdir - ;; - esac - else - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - abs_inode=`ls -i "$deplib" | awk '{print $1}'` - lib_inode=`ls -i "$libdir/$(basename $deplib)" | awk '{print $1}'` - test "$abs_inode" != "$lib_inode" && \ - func_warning "'$deplib' seems to be moved" - - path=-L$absdir - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test link = "$pass"; then - if test prog = "$linkmode"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs=$newdependency_libs - if test dlpreopen = "$pass"; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test dlopen != "$pass"; then - test conv = "$pass" || { - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - } - - if test prog,link = "$linkmode,$pass"; then - vars="compile_deplibs finalize_deplibs" - else - vars=deplibs - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - - # Add Sun CC postdeps if required: - test CXX = "$tagname" && { - case $host_os in - linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C++ 5.9 - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - - solaris*) - func_cc_basename "$CC" - case $func_cc_basename_result in - CC* | sunCC*) - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - esac - } - - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i= - ;; - esac - if test -n "$i"; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test prog = "$linkmode"; then - dlfiles=$newdlfiles - fi - if test prog = "$linkmode" || test lib = "$linkmode"; then - dlprefiles=$newdlprefiles - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "'-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "'-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs=$output - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form 'libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test no = "$module" \ - && func_fatal_help "libtool library '$output' must begin with 'lib'" - - if test no != "$need_lib_prefix"; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test pass_all != "$deplibs_check_method"; then - func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test no = "$dlself" \ - || func_warning "'-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test 1 -lt "$#" \ - && func_warning "ignoring multiple '-rpath's for a libtool library" - - install_libdir=$1 - - oldlibs= - if test -z "$rpath"; then - if test yes = "$build_libtool_libs"; then - # Building a libtool convenience library. - # Some compilers have problems with a '.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "'-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs=$IFS; IFS=: - set dummy $vinfo 0 0 0 - shift - IFS=$save_ifs - - test -n "$7" && \ - func_fatal_help "too many parameters to '-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major=$1 - number_minor=$2 - number_revision=$3 - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # that has an extra 1 added just for fun - # - case $version_type in - # correct linux to gnu/linux during the next big refactor - darwin|freebsd-elf|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_revision - ;; - freebsd-aout|qnx|sunos) - current=$number_major - revision=$number_minor - age=0 - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_minor - lt_irix_increment=no - ;; - esac - ;; - no) - current=$1 - revision=$2 - age=$3 - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT '$current' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION '$revision' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE '$age' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE '$age' is greater than the current interface number '$current'" - func_fatal_error "'$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - # On Darwin other compilers - case $CC in - nagfor*) - verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - ;; - *) - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - esac - ;; - - freebsd-aout) - major=.$current - versuffix=.$current.$revision - ;; - - freebsd-elf) - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - irix | nonstopux) - if test no = "$lt_irix_increment"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring=$verstring_prefix$major.$revision - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test 0 -ne "$loop"; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring_prefix$major.$iface:$verstring - done - - # Before this point, $major must not contain '.'. - major=.$major - versuffix=$major.$revision - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=.$current.$age.$revision - verstring=$current.$age.$revision - - # Add in all the interfaces that we are compatible with. - loop=$age - while test 0 -ne "$loop"; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring:$iface.0 - done - - # Make executables depend on our current version. - func_append verstring ":$current.0" - ;; - - qnx) - major=.$current - versuffix=.$current - ;; - - sco) - major=.$current - versuffix=.$current - ;; - - sunos) - major=.$current - versuffix=.$current.$revision - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 file systems. - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - - *) - func_fatal_configuration "unknown library version type '$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring=0.0 - ;; - esac - if test no = "$need_version"; then - versuffix= - else - versuffix=.0.0 - fi - fi - - # Remove version info from name if versioning should be avoided - if test yes,no = "$avoid_version,$need_version"; then - major= - versuffix= - verstring= - fi - - # Check to see if the archive will have undefined symbols. - if test yes = "$allow_undefined"; then - if test unsupported = "$allow_undefined_flag"; then - if test yes = "$build_old_libs"; then - func_warning "undefined symbols not allowed in $host shared libraries; building static only" - build_libtool_libs=no - else - func_fatal_error "can't build $host shared library unless -no-undefined is specified" - fi - fi - else - # Don't allow undefined symbols. - allow_undefined_flag=$no_undefined_flag - fi - - fi - - func_generate_dlsyms "$libname" "$libname" : - func_append libobjs " $symfileobj" - test " " = "$libobjs" && libobjs= - - if test relink != "$opt_mode"; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) - if test -n "$precious_files_regex"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles=$dlfiles - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles=$dlprefiles - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test yes = "$build_libtool_libs"; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test yes = "$build_libtool_need_lc"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release= - versuffix= - major= - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib=$potent_lib - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | $SED 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; - *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib= - ;; - esac - fi - if test -n "$a_deplib"; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib=$potent_lib # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs= - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - for i in $predeps $postdeps; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test none = "$deplibs_check_method"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test yes = "$droppeddeps"; then - if test yes = "$module"; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test no = "$allow_undefined"; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs=$new_libs - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test yes = "$build_libtool_libs"; then - # Remove $wl instances when linking with ld. - # FIXME: should test the right _cmds variable. - case $archive_cmds in - *\$LD\ *) wl= ;; - esac - if test yes = "$hardcode_into_libs"; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath=$finalize_rpath - test relink = "$opt_mode" || rpath=$compile_rpath$rpath - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath=$finalize_shlibpath - test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname=$1 - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname=$realname - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib=$output_objdir/$realname - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols=$output_objdir/$libname.uexp - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | msys* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - func_dll_def_p "$export_symbols" || { - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols=$export_symbols - export_symbols= - always_export_symbols=yes - } - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs=$IFS; IFS='~' - for cmd1 in $cmds; do - IFS=$save_ifs - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test yes = "$try_normal_branch" \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=$output_objdir/$output_la.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS=$save_ifs - if test -n "$export_symbols_regex" && test : != "$skipped_export"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test : != "$skipped_export" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs=$tmp_deplibs - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test yes = "$compiler_needs_object" && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test : != "$skipped_export" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then - output=$output_objdir/$output_la.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test yes = "$compiler_needs_object"; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - elif test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then - output=$output_objdir/$output_la.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-$k.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test -z "$objlist" || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test 1 -eq "$k"; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-$k.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-$k.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - ${skipped_export-false} && { - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - } - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs=$IFS; IFS='~' - for cmd in $concat_cmds; do - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - ${skipped_export-false} && { - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - } - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs=$IFS; IFS='~' - for cmd in $cmds; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test yes = "$module" || test yes = "$export_dynamic"; then - # On all known operating systems, these are identical. - dlname=$soname - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "'-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object '$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj=$output - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # if reload_cmds runs $LD directly, get rid of -Wl from - # whole_archive_flag_spec and hope we can get by with turning comma - # into space. - case $reload_cmds in - *\$LD[\ \$]*) wl= ;; - esac - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags - else - gentop=$output_objdir/${obj}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test yes = "$build_libtool_libs" || libobjs=$non_pic_objects - - # Create the old-style object. - reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs - - output=$obj - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - test yes = "$build_libtool_libs" || { - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - } - - if test -n "$pic_flag" || test default != "$pic_mode"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output=$libobj - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin* | *msys*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "'-release' is ignored for programs" - - $preload \ - && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ - && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test CXX = "$tagname"; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " $wl-bind_at_load" - func_append finalize_command " $wl-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs=$new_libs - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath=$rpath - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath=$rpath - - if test -n "$libobjs" && test yes = "$build_old_libs"; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" false - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=: - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=false - ;; - *cygwin* | *msys* | *mingw* ) - test yes = "$build_libtool_libs" || wrappers_required=false - ;; - *) - if test no = "$need_relink" || test yes != "$build_libtool_libs"; then - wrappers_required=false - fi - ;; - esac - $wrappers_required || { - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command=$compile_command$compile_rpath - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.$objext"; then - func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' - fi - - exit $exit_status - } - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test yes = "$no_install"; then - # We don't need to create a wrapper script. - link_command=$compile_var$compile_command$compile_rpath - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - case $hardcode_action,$fast_install in - relink,*) - # Fast installation is not supported - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "'$output' will be relinked during installation" - ;; - *,yes) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - ;; - *,no) - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - ;; - *,needless) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command= - ;; - esac - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin* | *msys*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *msys* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource=$output_path/$objdir/lt-$output_name.c - cwrapper=$output_path/$output_name.exe - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper $cwrapper.manifest; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host"; then - # Create the UAC manifests first if necessary (but the - # manifest files must have executable permission regardless). - case $output_name in - *instal*|*patch*|*setup*|*update*) - func_emit_exe_manifest > $cwrapper.manifest - func_emit_exe_manifest > $output_path/$objdir/$output_name.exe.manifest - chmod +x $cwrapper.manifest - chmod +x $output_path/$objdir/$output_name.exe.manifest - ;; - esac - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - case $build_libtool_libs in - convenience) - oldobjs="$libobjs_save $symfileobj" - addlibs=$convenience - build_libtool_libs=no - ;; - module) - oldobjs=$libobjs_save - addlibs=$old_convenience - build_libtool_libs=no - ;; - *) - oldobjs="$old_deplibs $non_pic_objects" - $preload && test -f "$symfileobj" \ - && func_append oldobjs " $symfileobj" - addlibs=$old_convenience - ;; - esac - - if test -n "$addlibs"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase=$func_basename_result - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj"; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test -z "$oldobjs"; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test yes = "$build_old_libs" && old_library=$libname.$libext - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test yes = "$hardcode_automatic"; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test yes = "$installed"; then - if test -z "$install_libdir"; then - break - fi - output=$output_objdir/${outputname}i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name=$func_basename_result - func_resolve_sysroot "$deplib" - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs=$newdependency_libs - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles=$newdlprefiles - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles=$newdlprefiles - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *msys*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test -n "$bindir"; then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result/$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that cannot go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test no,yes = "$installed,$need_relink"; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -if test link = "$opt_mode" || test relink = "$opt_mode"; then - func_mode_link ${1+"$@"} -fi - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $debug_cmd - - RM=$nonopt - files= - rmforce=false - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=: ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir=$func_dirname_result - if test . = "$dir"; then - odir=$objdir - else - odir=$dir/$objdir - fi - func_basename "$file" - name=$func_basename_result - test uninstall = "$opt_mode" && odir=$dir - - # Remember odir for removal later, being careful to avoid duplicates - if test clean = "$opt_mode"; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif $rmforce; then - continue - fi - - rmfiles=$file - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case $opt_mode in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && test none != "$pic_object"; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && test none != "$non_pic_object"; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test clean = "$opt_mode"; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.$objext" - func_append rmfiles " ${name}.manifest $objdir/${name}.manifest" - if test yes = "$fast_install" && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name $objdir/lt-${name}.manifest" - fi - if test "X$noexename" != "X$name"; then - func_append rmfiles " $odir/lt-$noexename.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the $objdir's in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then - func_mode_uninstall ${1+"$@"} -fi - -test -z "$opt_mode" && { - help=$generic_help - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode '$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# where we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/tools/audiofile-0.3.6/missing b/tools/audiofile-0.3.6/missing deleted file mode 100644 index 86a8fc31..00000000 --- a/tools/audiofile-0.3.6/missing +++ /dev/null @@ -1,331 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2012-01-06.13; # UTC - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/tools/audiofile-0.3.6/patch.patch b/tools/audiofile-0.3.6/patch.patch deleted file mode 100644 index fbb237ca..00000000 --- a/tools/audiofile-0.3.6/patch.patch +++ /dev/null @@ -1,102 +0,0 @@ -Description: Fix FTBFS with GCC 6 -Author: Michael Schwendt -Origin: vendor, https://github.com/mpruett/audiofile/pull/27 -Bug-Debian: https://bugs.debian.org/812055 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ - ---- a/libaudiofile/modules/SimpleModule.h -+++ b/libaudiofile/modules/SimpleModule.h -@@ -123,7 +123,7 @@ struct signConverter - typedef typename IntTypes::UnsignedType UnsignedType; - - static const int kScaleBits = (Format + 1) * CHAR_BIT - 1; -- static const int kMinSignedValue = -1 << kScaleBits; -+ static const int kMinSignedValue = 0-(1U< - { ---- a/test/FloatToInt.cpp -+++ b/test/FloatToInt.cpp -@@ -115,7 +115,7 @@ TEST_F(FloatToIntTest, Int16) - EXPECT_EQ(readData[i], expectedData[i]); - } - --static const int32_t kMinInt24 = -1<<23; -+static const int32_t kMinInt24 = 0-(1U<<23); - static const int32_t kMaxInt24 = (1<<23) - 1; - - TEST_F(FloatToIntTest, Int24) ---- a/test/IntToFloat.cpp -+++ b/test/IntToFloat.cpp -@@ -117,7 +117,7 @@ TEST_F(IntToFloatTest, Int16) - EXPECT_EQ(readData[i], expectedData[i]); - } - --static const int32_t kMinInt24 = -1<<23; -+static const int32_t kMinInt24 = 0-(1U<<23); - static const int32_t kMaxInt24 = (1<<23) - 1; - - TEST_F(IntToFloatTest, Int24) ---- a/test/NeXT.cpp -+++ b/test/NeXT.cpp -@@ -37,13 +37,13 @@ - - #include "TestUtilities.h" - --const char kDataUnspecifiedLength[] = -+const signed char kDataUnspecifiedLength[] = - { - '.', 's', 'n', 'd', - 0, 0, 0, 24, // offset of 24 bytes -- 0xff, 0xff, 0xff, 0xff, // unspecified length -+ -1, -1, -1, -1, // unspecified length - 0, 0, 0, 3, // 16-bit linear -- 0, 0, 172, 68, // 44100 Hz -+ 0, 0, -84, 68, // 44100 Hz (0xAC44) - 0, 0, 0, 1, // 1 channel - 0, 1, - 0, 1, -@@ -57,13 +57,13 @@ const char kDataUnspecifiedLength[] = - 0, 55 - }; - --const char kDataTruncated[] = -+const signed char kDataTruncated[] = - { - '.', 's', 'n', 'd', - 0, 0, 0, 24, // offset of 24 bytes - 0, 0, 0, 20, // length of 20 bytes - 0, 0, 0, 3, // 16-bit linear -- 0, 0, 172, 68, // 44100 Hz -+ 0, 0, -84, 68, // 44100 Hz (0xAC44) - 0, 0, 0, 1, // 1 channel - 0, 1, - 0, 1, -@@ -152,13 +152,13 @@ TEST(NeXT, Truncated) - ASSERT_EQ(::unlink(testFileName.c_str()), 0); - } - --const char kDataZeroChannels[] = -+const signed char kDataZeroChannels[] = - { - '.', 's', 'n', 'd', - 0, 0, 0, 24, // offset of 24 bytes - 0, 0, 0, 2, // 2 bytes - 0, 0, 0, 3, // 16-bit linear -- 0, 0, 172, 68, // 44100 Hz -+ 0, 0, -84, 68, // 44100 Hz (0xAC44) - 0, 0, 0, 0, // 0 channels - 0, 1 - }; ---- a/test/Sign.cpp -+++ b/test/Sign.cpp -@@ -116,7 +116,7 @@ TEST_F(SignConversionTest, Int16) - EXPECT_EQ(readData[i], expectedData[i]); - } - --static const int32_t kMinInt24 = -1<<23; -+static const int32_t kMinInt24 = 0-(1U<<23); - static const int32_t kMaxInt24 = (1<<23) - 1; - static const uint32_t kMaxUInt24 = (1<<24) - 1; - diff --git a/tools/audiofile-0.3.6/sfcommands/.deps/printinfo.Po b/tools/audiofile-0.3.6/sfcommands/.deps/printinfo.Po deleted file mode 100644 index 14977918..00000000 --- a/tools/audiofile-0.3.6/sfcommands/.deps/printinfo.Po +++ /dev/null @@ -1,56 +0,0 @@ -printinfo.o: printinfo.c ../config.h printinfo.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdbool.h \ - ../libaudiofile/audiofile.h ../libaudiofile/aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h -../config.h: -printinfo.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdbool.h: -../libaudiofile/audiofile.h: -../libaudiofile/aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: diff --git a/tools/audiofile-0.3.6/sfcommands/.deps/sfconvert.Po b/tools/audiofile-0.3.6/sfcommands/.deps/sfconvert.Po deleted file mode 100644 index b0570773..00000000 --- a/tools/audiofile-0.3.6/sfcommands/.deps/sfconvert.Po +++ /dev/null @@ -1,73 +0,0 @@ -sfconvert.o: sfconvert.c ../config.h ../libaudiofile/audiofile.h \ - ../libaudiofile/aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdbool.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/unistd.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/io.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/getopt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \ - printinfo.h -../config.h: -../libaudiofile/audiofile.h: -../libaudiofile/aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdbool.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/unistd.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/io.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/process.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/getopt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h: -printinfo.h: diff --git a/tools/audiofile-0.3.6/sfcommands/.deps/sfinfo.Po b/tools/audiofile-0.3.6/sfcommands/.deps/sfinfo.Po deleted file mode 100644 index ebbeb709..00000000 --- a/tools/audiofile-0.3.6/sfcommands/.deps/sfinfo.Po +++ /dev/null @@ -1,63 +0,0 @@ -sfinfo.o: sfinfo.c ../config.h ../libaudiofile/audiofile.h \ - ../libaudiofile/aupvlist.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/getopt.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdbool.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h \ - I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h \ - I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \ - printinfo.h -../config.h: -../libaudiofile/audiofile.h: -../libaudiofile/aupvlist.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdint.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/crtdefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/vadefs.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stddef.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sys/types.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/getopt.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/stdbool.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdio.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/swprintf.inl: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/stdlib.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/limits.h: -I:/Development/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include-fixed/syslimits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/limits.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/malloc.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/string.h: -I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h: -printinfo.h: diff --git a/tools/audiofile-0.3.6/sfcommands/.libs/lt-sfconvert.c b/tools/audiofile-0.3.6/sfcommands/.libs/lt-sfconvert.c deleted file mode 100644 index c90e484f..00000000 --- a/tools/audiofile-0.3.6/sfcommands/.libs/lt-sfconvert.c +++ /dev/null @@ -1,1055 +0,0 @@ - -/* ./.libs/lt-sfconvert.c - temporary wrapper executable for .libs/sfconvert.exe - Generated by libtool (GNU libtool) 2.4.6 - - The sfconvert program cannot be directly executed until all the libtool - libraries that it depends on are installed. - - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. -*/ -#ifdef _MSC_VER -# define _CRT_SECURE_NO_DEPRECATE 1 -#endif -#include -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# if defined(__STRICT_ANSI__) && !defined(__MINGW64_VERSION_MAJOR) || defined(_POSIX_) -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) -# define externally_visible volatile -#else -# define externally_visible __attribute__((externally_visible)) volatile -#endif -externally_visible const char * MAGIC_EXE = "%%%MAGIC EXE variable%%%"; -const char * LIB_PATH_VARNAME = "PATH"; -const char * LIB_PATH_VALUE = "I:\\Development\\sm64pc\\tools\\audiofile-0.3.6\\libaudiofile\\.libs;"; -const char * EXE_PATH_VARNAME = "PATH"; -const char * EXE_PATH_VALUE = "I:\\Development\\sm64pc\\tools\\audiofile-0.3.6\\libaudiofile\\.libs;I:\\Development\\MSYS2\\mingw64\\lib;I:\\Development\\MSYS2\\mingw64\\bin;"; -const char * TARGET_PROGRAM_NAME = "sfconvert.exe"; /* hopefully, no .exe */ - -#define LTWRAPPER_OPTION_PREFIX "--lt-" - -static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; -static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; -static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; - -int -main (int argc, char *argv[]) -{ - char **newargz; - int newargc; - char *tmp_pathspec; - char *actual_cwrapper_path; - char *actual_cwrapper_name; - char *target_name; - char *lt_argv_zero; - int rval = 127; - - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - newargz = XMALLOC (char *, (size_t) argc + 1); - - /* very simple arg parsing; don't want to rely on getopt - * also, copy all non cwrapper options to newargz, except - * argz[0], which is handled differently - */ - newargc=0; - for (i = 1; i < argc; i++) - { - if (STREQ (argv[i], dumpscript_opt)) - { - setmode(1,_O_BINARY); - lt_dump_script (stdout); - return 0; - } - if (STREQ (argv[i], debug_opt)) - { - lt_debug = 1; - continue; - } - if (STREQ (argv[i], ltwrapper_option_prefix)) - { - /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX - namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then - report an error. Otherwise, targets might begin to believe - they are allowed to use options in the LTWRAPPER_OPTION_PREFIX - namespace. The first time any user complains about this, we'll - need to make LTWRAPPER_OPTION_PREFIX a configure-time option - or a configure.ac-settable value. - */ - lt_fatal (__FILE__, __LINE__, - "unrecognized %s option: '%s'", - ltwrapper_option_prefix, argv[i]); - } - /* otherwise ... */ - newargz[++newargc] = xstrdup (argv[i]); - } - newargz[++newargc] = NULL; - - /* The GNU banner must be the first non-error debug message */ - lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU libtool) 2.4.6\n"); - lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); - lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); - - tmp_pathspec = find_executable (argv[0]); - if (tmp_pathspec == NULL) - lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (before symlink chase) at: %s\n", - tmp_pathspec); - - actual_cwrapper_path = chase_symlinks (tmp_pathspec); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (after symlink chase) at: %s\n", - actual_cwrapper_path); - XFREE (tmp_pathspec); - - actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); - strendzap (actual_cwrapper_path, actual_cwrapper_name); - - /* wrapper name transforms */ - strendzap (actual_cwrapper_name, ".exe"); - tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); - XFREE (actual_cwrapper_name); - actual_cwrapper_name = tmp_pathspec; - tmp_pathspec = 0; - - /* target_name transforms -- use actual target program name; might have lt- prefix */ - target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); - strendzap (target_name, ".exe"); - tmp_pathspec = lt_extend_str (target_name, ".exe", 1); - XFREE (target_name); - target_name = tmp_pathspec; - tmp_pathspec = 0; - - lt_debugprintf (__FILE__, __LINE__, - "(main) libtool target name: %s\n", - target_name); - newargz[0] = - XMALLOC (char, (strlen (actual_cwrapper_path) + - strlen (".libs") + 1 + strlen (actual_cwrapper_name) + 1)); - strcpy (newargz[0], actual_cwrapper_path); - strcat (newargz[0], ".libs"); - strcat (newargz[0], "/"); - /* stop here, and copy so we don't have to do this twice */ - tmp_pathspec = xstrdup (newargz[0]); - - /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ - strcat (newargz[0], actual_cwrapper_name); - - /* DO want the lt- prefix here if it exists, so use target_name */ - lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); - XFREE (tmp_pathspec); - tmp_pathspec = NULL; - { - char* p; - while ((p = strchr (newargz[0], '\\')) != NULL) - { - *p = '/'; - } - while ((p = strchr (lt_argv_zero, '\\')) != NULL) - { - *p = '/'; - } - } - XFREE (target_name); - XFREE (actual_cwrapper_path); - XFREE (actual_cwrapper_name); - - lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ - lt_setenv ("DUALCASE", "1"); /* for MSK sh */ - /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must - be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) - because on Windows, both *_VARNAMEs are PATH but uninstalled - libraries must come first. */ - lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); - lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); - - lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", - nonnull (lt_argv_zero)); - for (i = 0; i < newargc; i++) - { - lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", - i, nonnull (newargz[i])); - } - - /* execv doesn't actually work on mingw as expected on unix */ - newargz = prepare_spawn (newargz); - rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ - lt_debugprintf (__FILE__, __LINE__, - "(main) failed to launch target \"%s\": %s\n", - lt_argv_zero, nonnull (strerror (errno))); - return 127; - } - return rval; -} - -void * -xmalloc (size_t num) -{ - void *p = (void *) malloc (num); - if (!p) - lt_fatal (__FILE__, __LINE__, "memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), - string) : NULL; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined HAVE_DOS_BASED_FILE_SYSTEM - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char) name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable (const char *path) -{ - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -void lt_dump_script (FILE* f) -{ - fputs ("#! /bin/sh\n", f); - fputs ("\n", f); - fputs ("# sfconvert - temporary wrapper script for .libs/sfconvert.exe\n", f); - fputs ("# Generated by libtool (GNU libtool) 2.4.6\n", f); - fputs ("#\n", f); - fputs ("# The sfconvert program cannot be directly executed until all the libtool\n", f); - fputs ("# libraries that it depends on are installed.\n", f); - fputs ("#\n", f); - fputs ("# This wrapper script should never be moved out of the build directory.\n", f); - fputs ("# If it is, it will not operate correctly.\n", f); - fputs ("\n", f); - fputs ("# Sed substitution that helps us do robust quoting. It backslashifies\n", f); - fputs ("# metacharacters that are still active within double-quoted strings.\n", f); - fputs ("sed_quote_subst='s|\\([`\"$\\\\]\\)|\\\\\\1|g'\n", f); - fputs ("\n", f); - fputs ("# Be Bourne compatible\n", f); - fputs ("if test -n \"${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then\n", f); - fputs (" emulate sh\n", f); - fputs (" NULLCMD=:\n", f); - fputs (" # Zsh 3.x and 4.x performs word splitting on ${1+\"$@\"}, which\n", f); - fputs (" # is contrary to our usage. Disable this feature.\n", f); - fputs (" alias -g '${1+\"$@\"}'='\"$@\"'\n", f); - fputs (" setopt NO_GLOB_SUBST\n", f); - fputs ("else\n", f); - fputs (" case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac\n", f); - fputs ("fi\n", f); - fputs ("BIN_SH=xpg4; export BIN_SH # for Tru64\n", f); - fputs ("DUALCASE=1; export DUALCASE # for MKS sh\n", f); - fputs ("\n", f); - fputs ("# The HP-UX ksh and POSIX shell print the target directory to stdout\n", f); - fputs ("# if CDPATH is set.\n", f); - fputs ("(unset CDPATH) >/dev/null 2>&1 && unset CDPATH\n", f); - fputs ("\n", f); - fputs ("relink_command=\"\"\n", f); - fputs ("\n", f); - fputs ("# This environment variable determines our operation mode.\n", f); - fputs ("if test \"$libtool_install_magic\" = \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" # install mode needs the following variables:\n", f); - fputs (" generated_by_libtool_version='2.4.6'\n", f); - fputs (" notinst_deplibs=' ../libaudiofile/libaudiofile.la'\n", f); - fputs ("else\n", f); - fputs (" # When we are sourced in execute mode, $file and $ECHO are already set.\n", f); - fputs (" if test \"$libtool_execute_magic\" != \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" file=\"$0\"\n", f); - fputs ("\n", f); - fputs ("# A function that is used when there is no print builtin or printf.\n", f); - fputs ("func_fallback_echo ()\n", f); - fputs ("{\n", f); - fputs (" eval 'cat <<_LTECHO_EOF\n", f); - fputs ("$1\n", f); - fputs ("_LTECHO_EOF'\n", f); - fputs ("}\n", f); - fputs (" ECHO=\"printf %s\\\\n\"\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs ("# Very basic option parsing. These options are (a) specific to\n", f); - fputs ("# the libtool wrapper, (b) are identical between the wrapper\n", f); - fputs ("# /script/ and the wrapper /executable/ that is used only on\n", f); - fputs ("# windows platforms, and (c) all begin with the string --lt-\n", f); - fputs ("# (application programs are unlikely to have options that match\n", f); - fputs ("# this pattern).\n", f); - fputs ("#\n", f); - fputs ("# There are only two supported options: --lt-debug and\n", f); - fputs ("# --lt-dump-script. There is, deliberately, no --lt-help.\n", f); - fputs ("#\n", f); - fputs ("# The first argument to this parsing function should be the\n", f); - fputs ("# script's ../libtool value, followed by yes.\n", f); - fputs ("lt_option_debug=\n", f); - fputs ("func_parse_lt_options ()\n", f); - fputs ("{\n", f); - fputs (" lt_script_arg0=$0\n", f); - fputs (" shift\n", f); - fputs (" for lt_opt\n", f); - fputs (" do\n", f); - fputs (" case \"$lt_opt\" in\n", f); - fputs (" --lt-debug) lt_option_debug=1 ;;\n", f); - fputs (" --lt-dump-script)\n", f); - fputs (" lt_dump_D=`$ECHO \"X$lt_script_arg0\" | /usr/bin/sed -e 's/^X//' -e 's%/[", f); - fputs ("^/]*$%%'`\n", f); - fputs (" test \"X$lt_dump_D\" = \"X$lt_script_arg0\" && lt_dump_D=.\n", f); - fputs (" lt_dump_F=`$ECHO \"X$lt_script_arg0\" | /usr/bin/sed -e 's/^X//' -e 's%^.", f); - fputs ("*/%%'`\n", f); - fputs (" cat \"$lt_dump_D/$lt_dump_F\"\n", f); - fputs (" exit 0\n", f); - fputs (" ;;\n", f); - fputs (" --lt-*)\n", f); - fputs (" $ECHO \"Unrecognized --lt- option: '$lt_opt'\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs (" ;;\n", f); - fputs (" esac\n", f); - fputs (" done\n", f); - fputs ("\n", f); - fputs (" # Print the debug banner immediately:\n", f); - fputs (" if test -n \"$lt_option_debug\"; then\n", f); - fputs (" echo \"sfconvert.exe:sfconvert:$LINENO: libtool wrapper (GNU libtool) 2.4.6\"", f); - fputs (" 1>&2\n", f); - fputs (" fi\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# Used when --lt-debug. Prints its arguments to stdout\n", f); - fputs ("# (redirection is the responsibility of the caller)\n", f); - fputs ("func_lt_dump_args ()\n", f); - fputs ("{\n", f); - fputs (" lt_dump_args_N=1;\n", f); - fputs (" for lt_arg\n", f); - fputs (" do\n", f); - fputs (" $ECHO \"sfconvert.exe:sfconvert:$LINENO: newargv[$lt_dump_args_N]: $lt_arg\"\n", f); - fputs (" lt_dump_args_N=`expr $lt_dump_args_N + 1`\n", f); - fputs (" done\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# Core function for launching the target application\n", f); - fputs ("func_exec_program_core ()\n", f); - fputs ("{\n", f); - fputs ("\n", f); - fputs (" if test -n \"$lt_option_debug\"; then\n", f); - fputs (" $ECHO \"sfconvert.exe:sfconvert:$LINENO: newargv[0]: $progdir/$program\" ", f); - fputs ("1>&2\n", f); - fputs (" func_lt_dump_args ${1+\"$@\"} 1>&2\n", f); - fputs (" fi\n", f); - fputs (" exec \"$progdir/$program\" ${1+\"$@\"}\n", f); - fputs ("\n", f); - fputs (" $ECHO \"$0: cannot exec $program $*\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# A function to encapsulate launching the target application\n", f); - fputs ("# Strips options in the --lt-* namespace from $@ and\n", f); - fputs ("# launches target application with the remaining arguments.\n", f); - fputs ("func_exec_program ()\n", f); - fputs ("{\n", f); - fputs (" case \" $* \" in\n", f); - fputs (" *\\ --lt-*)\n", f); - fputs (" for lt_wr_arg\n", f); - fputs (" do\n", f); - fputs (" case $lt_wr_arg in\n", f); - fputs (" --lt-*) ;;\n", f); - fputs (" *) set x \"$@\" \"$lt_wr_arg\"; shift;;\n", f); - fputs (" esac\n", f); - fputs (" shift\n", f); - fputs (" done ;;\n", f); - fputs (" esac\n", f); - fputs (" func_exec_program_core ${1+\"$@\"}\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs (" # Parse options\n", f); - fputs (" func_parse_lt_options \"$0\" ${1+\"$@\"}\n", f); - fputs ("\n", f); - fputs (" # Find the directory that this script lives in.\n", f); - fputs (" thisdir=`$ECHO \"$file\" | /usr/bin/sed 's%/[^/]*$%%'`\n", f); - fputs (" test \"x$thisdir\" = \"x$file\" && thisdir=.\n", f); - fputs ("\n", f); - fputs (" # Follow symbolic links until we get to the real thisdir.\n", f); - fputs (" file=`ls -ld \"$file\" | /usr/bin/sed -n 's/.*-> //p'`\n", f); - fputs (" while test -n \"$file\"; do\n", f); - fputs (" destdir=`$ECHO \"$file\" | /usr/bin/sed 's%/[^/]*$%%'`\n", f); - fputs ("\n", f); - fputs (" # If there was a directory component, then change thisdir.\n", f); - fputs (" if test \"x$destdir\" != \"x$file\"; then\n", f); - fputs (" case \"$destdir\" in\n", f); - fputs (" [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"$destdir\" ;;\n", f); - fputs (" *) thisdir=\"$thisdir/$destdir\" ;;\n", f); - fputs (" esac\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs (" file=`$ECHO \"$file\" | /usr/bin/sed 's%^.*/%%'`\n", f); - fputs (" file=`ls -ld \"$thisdir/$file\" | /usr/bin/sed -n 's/.*-> //p'`\n", f); - fputs (" done\n", f); - fputs ("\n", f); - fputs (" # Usually 'no', except on cygwin/mingw when embedded into\n", f); - fputs (" # the cwrapper.\n", f); - fputs (" WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=yes\n", f); - fputs (" if test \"$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then\n", f); - fputs (" # special case for '.'\n", f); - fputs (" if test \"$thisdir\" = \".\"; then\n", f); - fputs (" thisdir=`pwd`\n", f); - fputs (" fi\n", f); - fputs (" # remove .libs from thisdir\n", f); - fputs (" case \"$thisdir\" in\n", f); - fputs (" *[\\\\/].libs ) thisdir=`$ECHO \"$thisdir\" | /usr/bin/sed 's%[\\\\/][^\\\\/]*$%%'`", f); - fputs (" ;;\n", f); - fputs (" .libs ) thisdir=. ;;\n", f); - fputs (" esac\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs (" # Try to get the absolute directory name.\n", f); - fputs (" absdir=`cd \"$thisdir\" && pwd`\n", f); - fputs (" test -n \"$absdir\" && thisdir=\"$absdir\"\n", f); - fputs ("\n", f); - fputs (" program='sfconvert.exe'\n", f); - fputs (" progdir=\"$thisdir/.libs\"\n", f); - fputs ("\n", f); - fputs ("\n", f); - fputs (" if test -f \"$progdir/$program\"; then\n", f); - fputs (" # Add the dll search path components to the executable PATH\n", f); - fputs (" PATH=/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:/mingw6", f); - fputs ("4/lib:/mingw64/bin:$PATH\n", f); - fputs ("\n", f); - fputs (" # Add our own library path to PATH\n", f); - fputs (" PATH=\"/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:$PATH\"\n", f); - fputs ("\n", f); - fputs (" # Some systems cannot cope with colon-terminated PATH\n", f); - fputs (" # The second colon is a workaround for a bug in BeOS R4 sed\n", f); - fputs (" PATH=`$ECHO \"$PATH\" | /usr/bin/sed 's/::*$//'`\n", f); - fputs ("\n", f); - fputs (" export PATH\n", f); - fputs ("\n", f); - fputs (" if test \"$libtool_execute_magic\" != \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" # Run the actual program with our arguments.\n", f); - fputs (" func_exec_program ${1+\"$@\"}\n", f); - fputs (" fi\n", f); - fputs (" else\n", f); - fputs (" # The program doesn't exist.\n", f); - fputs (" $ECHO \"$0: error: '$progdir/$program' does not exist\" 1>&2\n", f); - fputs (" $ECHO \"This script is just a wrapper for $program.\" 1>&2\n", f); - fputs (" $ECHO \"See the libtool documentation for more information.\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs (" fi\n", f); - fputs ("fi\n", f); -} diff --git a/tools/audiofile-0.3.6/sfcommands/.libs/lt-sfinfo.c b/tools/audiofile-0.3.6/sfcommands/.libs/lt-sfinfo.c deleted file mode 100644 index 9a2065b2..00000000 --- a/tools/audiofile-0.3.6/sfcommands/.libs/lt-sfinfo.c +++ /dev/null @@ -1,1053 +0,0 @@ - -/* ./.libs/lt-sfinfo.c - temporary wrapper executable for .libs/sfinfo.exe - Generated by libtool (GNU libtool) 2.4.6 - - The sfinfo program cannot be directly executed until all the libtool - libraries that it depends on are installed. - - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. -*/ -#ifdef _MSC_VER -# define _CRT_SECURE_NO_DEPRECATE 1 -#endif -#include -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# if defined(__STRICT_ANSI__) && !defined(__MINGW64_VERSION_MAJOR) || defined(_POSIX_) -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) -# define externally_visible volatile -#else -# define externally_visible __attribute__((externally_visible)) volatile -#endif -externally_visible const char * MAGIC_EXE = "%%%MAGIC EXE variable%%%"; -const char * LIB_PATH_VARNAME = "PATH"; -const char * LIB_PATH_VALUE = "I:\\Development\\sm64pc\\tools\\audiofile-0.3.6\\libaudiofile\\.libs;"; -const char * EXE_PATH_VARNAME = "PATH"; -const char * EXE_PATH_VALUE = "I:\\Development\\sm64pc\\tools\\audiofile-0.3.6\\libaudiofile\\.libs;I:\\Development\\MSYS2\\mingw64\\lib;I:\\Development\\MSYS2\\mingw64\\bin;"; -const char * TARGET_PROGRAM_NAME = "sfinfo.exe"; /* hopefully, no .exe */ - -#define LTWRAPPER_OPTION_PREFIX "--lt-" - -static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; -static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; -static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; - -int -main (int argc, char *argv[]) -{ - char **newargz; - int newargc; - char *tmp_pathspec; - char *actual_cwrapper_path; - char *actual_cwrapper_name; - char *target_name; - char *lt_argv_zero; - int rval = 127; - - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - newargz = XMALLOC (char *, (size_t) argc + 1); - - /* very simple arg parsing; don't want to rely on getopt - * also, copy all non cwrapper options to newargz, except - * argz[0], which is handled differently - */ - newargc=0; - for (i = 1; i < argc; i++) - { - if (STREQ (argv[i], dumpscript_opt)) - { - setmode(1,_O_BINARY); - lt_dump_script (stdout); - return 0; - } - if (STREQ (argv[i], debug_opt)) - { - lt_debug = 1; - continue; - } - if (STREQ (argv[i], ltwrapper_option_prefix)) - { - /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX - namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then - report an error. Otherwise, targets might begin to believe - they are allowed to use options in the LTWRAPPER_OPTION_PREFIX - namespace. The first time any user complains about this, we'll - need to make LTWRAPPER_OPTION_PREFIX a configure-time option - or a configure.ac-settable value. - */ - lt_fatal (__FILE__, __LINE__, - "unrecognized %s option: '%s'", - ltwrapper_option_prefix, argv[i]); - } - /* otherwise ... */ - newargz[++newargc] = xstrdup (argv[i]); - } - newargz[++newargc] = NULL; - - /* The GNU banner must be the first non-error debug message */ - lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU libtool) 2.4.6\n"); - lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); - lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); - - tmp_pathspec = find_executable (argv[0]); - if (tmp_pathspec == NULL) - lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (before symlink chase) at: %s\n", - tmp_pathspec); - - actual_cwrapper_path = chase_symlinks (tmp_pathspec); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (after symlink chase) at: %s\n", - actual_cwrapper_path); - XFREE (tmp_pathspec); - - actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); - strendzap (actual_cwrapper_path, actual_cwrapper_name); - - /* wrapper name transforms */ - strendzap (actual_cwrapper_name, ".exe"); - tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); - XFREE (actual_cwrapper_name); - actual_cwrapper_name = tmp_pathspec; - tmp_pathspec = 0; - - /* target_name transforms -- use actual target program name; might have lt- prefix */ - target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); - strendzap (target_name, ".exe"); - tmp_pathspec = lt_extend_str (target_name, ".exe", 1); - XFREE (target_name); - target_name = tmp_pathspec; - tmp_pathspec = 0; - - lt_debugprintf (__FILE__, __LINE__, - "(main) libtool target name: %s\n", - target_name); - newargz[0] = - XMALLOC (char, (strlen (actual_cwrapper_path) + - strlen (".libs") + 1 + strlen (actual_cwrapper_name) + 1)); - strcpy (newargz[0], actual_cwrapper_path); - strcat (newargz[0], ".libs"); - strcat (newargz[0], "/"); - /* stop here, and copy so we don't have to do this twice */ - tmp_pathspec = xstrdup (newargz[0]); - - /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ - strcat (newargz[0], actual_cwrapper_name); - - /* DO want the lt- prefix here if it exists, so use target_name */ - lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); - XFREE (tmp_pathspec); - tmp_pathspec = NULL; - { - char* p; - while ((p = strchr (newargz[0], '\\')) != NULL) - { - *p = '/'; - } - while ((p = strchr (lt_argv_zero, '\\')) != NULL) - { - *p = '/'; - } - } - XFREE (target_name); - XFREE (actual_cwrapper_path); - XFREE (actual_cwrapper_name); - - lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ - lt_setenv ("DUALCASE", "1"); /* for MSK sh */ - /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must - be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) - because on Windows, both *_VARNAMEs are PATH but uninstalled - libraries must come first. */ - lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); - lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); - - lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", - nonnull (lt_argv_zero)); - for (i = 0; i < newargc; i++) - { - lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", - i, nonnull (newargz[i])); - } - - /* execv doesn't actually work on mingw as expected on unix */ - newargz = prepare_spawn (newargz); - rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ - lt_debugprintf (__FILE__, __LINE__, - "(main) failed to launch target \"%s\": %s\n", - lt_argv_zero, nonnull (strerror (errno))); - return 127; - } - return rval; -} - -void * -xmalloc (size_t num) -{ - void *p = (void *) malloc (num); - if (!p) - lt_fatal (__FILE__, __LINE__, "memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), - string) : NULL; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined HAVE_DOS_BASED_FILE_SYSTEM - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char) name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable (const char *path) -{ - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -void lt_dump_script (FILE* f) -{ - fputs ("#! /bin/sh\n", f); - fputs ("\n", f); - fputs ("# sfinfo - temporary wrapper script for .libs/sfinfo.exe\n", f); - fputs ("# Generated by libtool (GNU libtool) 2.4.6\n", f); - fputs ("#\n", f); - fputs ("# The sfinfo program cannot be directly executed until all the libtool\n", f); - fputs ("# libraries that it depends on are installed.\n", f); - fputs ("#\n", f); - fputs ("# This wrapper script should never be moved out of the build directory.\n", f); - fputs ("# If it is, it will not operate correctly.\n", f); - fputs ("\n", f); - fputs ("# Sed substitution that helps us do robust quoting. It backslashifies\n", f); - fputs ("# metacharacters that are still active within double-quoted strings.\n", f); - fputs ("sed_quote_subst='s|\\([`\"$\\\\]\\)|\\\\\\1|g'\n", f); - fputs ("\n", f); - fputs ("# Be Bourne compatible\n", f); - fputs ("if test -n \"${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then\n", f); - fputs (" emulate sh\n", f); - fputs (" NULLCMD=:\n", f); - fputs (" # Zsh 3.x and 4.x performs word splitting on ${1+\"$@\"}, which\n", f); - fputs (" # is contrary to our usage. Disable this feature.\n", f); - fputs (" alias -g '${1+\"$@\"}'='\"$@\"'\n", f); - fputs (" setopt NO_GLOB_SUBST\n", f); - fputs ("else\n", f); - fputs (" case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac\n", f); - fputs ("fi\n", f); - fputs ("BIN_SH=xpg4; export BIN_SH # for Tru64\n", f); - fputs ("DUALCASE=1; export DUALCASE # for MKS sh\n", f); - fputs ("\n", f); - fputs ("# The HP-UX ksh and POSIX shell print the target directory to stdout\n", f); - fputs ("# if CDPATH is set.\n", f); - fputs ("(unset CDPATH) >/dev/null 2>&1 && unset CDPATH\n", f); - fputs ("\n", f); - fputs ("relink_command=\"\"\n", f); - fputs ("\n", f); - fputs ("# This environment variable determines our operation mode.\n", f); - fputs ("if test \"$libtool_install_magic\" = \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" # install mode needs the following variables:\n", f); - fputs (" generated_by_libtool_version='2.4.6'\n", f); - fputs (" notinst_deplibs=' ../libaudiofile/libaudiofile.la'\n", f); - fputs ("else\n", f); - fputs (" # When we are sourced in execute mode, $file and $ECHO are already set.\n", f); - fputs (" if test \"$libtool_execute_magic\" != \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" file=\"$0\"\n", f); - fputs ("\n", f); - fputs ("# A function that is used when there is no print builtin or printf.\n", f); - fputs ("func_fallback_echo ()\n", f); - fputs ("{\n", f); - fputs (" eval 'cat <<_LTECHO_EOF\n", f); - fputs ("$1\n", f); - fputs ("_LTECHO_EOF'\n", f); - fputs ("}\n", f); - fputs (" ECHO=\"printf %s\\\\n\"\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs ("# Very basic option parsing. These options are (a) specific to\n", f); - fputs ("# the libtool wrapper, (b) are identical between the wrapper\n", f); - fputs ("# /script/ and the wrapper /executable/ that is used only on\n", f); - fputs ("# windows platforms, and (c) all begin with the string --lt-\n", f); - fputs ("# (application programs are unlikely to have options that match\n", f); - fputs ("# this pattern).\n", f); - fputs ("#\n", f); - fputs ("# There are only two supported options: --lt-debug and\n", f); - fputs ("# --lt-dump-script. There is, deliberately, no --lt-help.\n", f); - fputs ("#\n", f); - fputs ("# The first argument to this parsing function should be the\n", f); - fputs ("# script's ../libtool value, followed by yes.\n", f); - fputs ("lt_option_debug=\n", f); - fputs ("func_parse_lt_options ()\n", f); - fputs ("{\n", f); - fputs (" lt_script_arg0=$0\n", f); - fputs (" shift\n", f); - fputs (" for lt_opt\n", f); - fputs (" do\n", f); - fputs (" case \"$lt_opt\" in\n", f); - fputs (" --lt-debug) lt_option_debug=1 ;;\n", f); - fputs (" --lt-dump-script)\n", f); - fputs (" lt_dump_D=`$ECHO \"X$lt_script_arg0\" | /usr/bin/sed -e 's/^X//' -e 's%/[", f); - fputs ("^/]*$%%'`\n", f); - fputs (" test \"X$lt_dump_D\" = \"X$lt_script_arg0\" && lt_dump_D=.\n", f); - fputs (" lt_dump_F=`$ECHO \"X$lt_script_arg0\" | /usr/bin/sed -e 's/^X//' -e 's%^.", f); - fputs ("*/%%'`\n", f); - fputs (" cat \"$lt_dump_D/$lt_dump_F\"\n", f); - fputs (" exit 0\n", f); - fputs (" ;;\n", f); - fputs (" --lt-*)\n", f); - fputs (" $ECHO \"Unrecognized --lt- option: '$lt_opt'\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs (" ;;\n", f); - fputs (" esac\n", f); - fputs (" done\n", f); - fputs ("\n", f); - fputs (" # Print the debug banner immediately:\n", f); - fputs (" if test -n \"$lt_option_debug\"; then\n", f); - fputs (" echo \"sfinfo.exe:sfinfo:$LINENO: libtool wrapper (GNU libtool) 2.4.6\" 1>&2\n", f); - fputs (" fi\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# Used when --lt-debug. Prints its arguments to stdout\n", f); - fputs ("# (redirection is the responsibility of the caller)\n", f); - fputs ("func_lt_dump_args ()\n", f); - fputs ("{\n", f); - fputs (" lt_dump_args_N=1;\n", f); - fputs (" for lt_arg\n", f); - fputs (" do\n", f); - fputs (" $ECHO \"sfinfo.exe:sfinfo:$LINENO: newargv[$lt_dump_args_N]: $lt_arg\"\n", f); - fputs (" lt_dump_args_N=`expr $lt_dump_args_N + 1`\n", f); - fputs (" done\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# Core function for launching the target application\n", f); - fputs ("func_exec_program_core ()\n", f); - fputs ("{\n", f); - fputs ("\n", f); - fputs (" if test -n \"$lt_option_debug\"; then\n", f); - fputs (" $ECHO \"sfinfo.exe:sfinfo:$LINENO: newargv[0]: $progdir/$program\" 1>&2\n", f); - fputs (" func_lt_dump_args ${1+\"$@\"} 1>&2\n", f); - fputs (" fi\n", f); - fputs (" exec \"$progdir/$program\" ${1+\"$@\"}\n", f); - fputs ("\n", f); - fputs (" $ECHO \"$0: cannot exec $program $*\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs ("# A function to encapsulate launching the target application\n", f); - fputs ("# Strips options in the --lt-* namespace from $@ and\n", f); - fputs ("# launches target application with the remaining arguments.\n", f); - fputs ("func_exec_program ()\n", f); - fputs ("{\n", f); - fputs (" case \" $* \" in\n", f); - fputs (" *\\ --lt-*)\n", f); - fputs (" for lt_wr_arg\n", f); - fputs (" do\n", f); - fputs (" case $lt_wr_arg in\n", f); - fputs (" --lt-*) ;;\n", f); - fputs (" *) set x \"$@\" \"$lt_wr_arg\"; shift;;\n", f); - fputs (" esac\n", f); - fputs (" shift\n", f); - fputs (" done ;;\n", f); - fputs (" esac\n", f); - fputs (" func_exec_program_core ${1+\"$@\"}\n", f); - fputs ("}\n", f); - fputs ("\n", f); - fputs (" # Parse options\n", f); - fputs (" func_parse_lt_options \"$0\" ${1+\"$@\"}\n", f); - fputs ("\n", f); - fputs (" # Find the directory that this script lives in.\n", f); - fputs (" thisdir=`$ECHO \"$file\" | /usr/bin/sed 's%/[^/]*$%%'`\n", f); - fputs (" test \"x$thisdir\" = \"x$file\" && thisdir=.\n", f); - fputs ("\n", f); - fputs (" # Follow symbolic links until we get to the real thisdir.\n", f); - fputs (" file=`ls -ld \"$file\" | /usr/bin/sed -n 's/.*-> //p'`\n", f); - fputs (" while test -n \"$file\"; do\n", f); - fputs (" destdir=`$ECHO \"$file\" | /usr/bin/sed 's%/[^/]*$%%'`\n", f); - fputs ("\n", f); - fputs (" # If there was a directory component, then change thisdir.\n", f); - fputs (" if test \"x$destdir\" != \"x$file\"; then\n", f); - fputs (" case \"$destdir\" in\n", f); - fputs (" [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"$destdir\" ;;\n", f); - fputs (" *) thisdir=\"$thisdir/$destdir\" ;;\n", f); - fputs (" esac\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs (" file=`$ECHO \"$file\" | /usr/bin/sed 's%^.*/%%'`\n", f); - fputs (" file=`ls -ld \"$thisdir/$file\" | /usr/bin/sed -n 's/.*-> //p'`\n", f); - fputs (" done\n", f); - fputs ("\n", f); - fputs (" # Usually 'no', except on cygwin/mingw when embedded into\n", f); - fputs (" # the cwrapper.\n", f); - fputs (" WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=yes\n", f); - fputs (" if test \"$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then\n", f); - fputs (" # special case for '.'\n", f); - fputs (" if test \"$thisdir\" = \".\"; then\n", f); - fputs (" thisdir=`pwd`\n", f); - fputs (" fi\n", f); - fputs (" # remove .libs from thisdir\n", f); - fputs (" case \"$thisdir\" in\n", f); - fputs (" *[\\\\/].libs ) thisdir=`$ECHO \"$thisdir\" | /usr/bin/sed 's%[\\\\/][^\\\\/]*$%%'`", f); - fputs (" ;;\n", f); - fputs (" .libs ) thisdir=. ;;\n", f); - fputs (" esac\n", f); - fputs (" fi\n", f); - fputs ("\n", f); - fputs (" # Try to get the absolute directory name.\n", f); - fputs (" absdir=`cd \"$thisdir\" && pwd`\n", f); - fputs (" test -n \"$absdir\" && thisdir=\"$absdir\"\n", f); - fputs ("\n", f); - fputs (" program='sfinfo.exe'\n", f); - fputs (" progdir=\"$thisdir/.libs\"\n", f); - fputs ("\n", f); - fputs ("\n", f); - fputs (" if test -f \"$progdir/$program\"; then\n", f); - fputs (" # Add the dll search path components to the executable PATH\n", f); - fputs (" PATH=/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:/mingw6", f); - fputs ("4/lib:/mingw64/bin:$PATH\n", f); - fputs ("\n", f); - fputs (" # Add our own library path to PATH\n", f); - fputs (" PATH=\"/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:$PATH\"\n", f); - fputs ("\n", f); - fputs (" # Some systems cannot cope with colon-terminated PATH\n", f); - fputs (" # The second colon is a workaround for a bug in BeOS R4 sed\n", f); - fputs (" PATH=`$ECHO \"$PATH\" | /usr/bin/sed 's/::*$//'`\n", f); - fputs ("\n", f); - fputs (" export PATH\n", f); - fputs ("\n", f); - fputs (" if test \"$libtool_execute_magic\" != \"%%%MAGIC variable%%%\"; then\n", f); - fputs (" # Run the actual program with our arguments.\n", f); - fputs (" func_exec_program ${1+\"$@\"}\n", f); - fputs (" fi\n", f); - fputs (" else\n", f); - fputs (" # The program doesn't exist.\n", f); - fputs (" $ECHO \"$0: error: '$progdir/$program' does not exist\" 1>&2\n", f); - fputs (" $ECHO \"This script is just a wrapper for $program.\" 1>&2\n", f); - fputs (" $ECHO \"See the libtool documentation for more information.\" 1>&2\n", f); - fputs (" exit 1\n", f); - fputs (" fi\n", f); - fputs ("fi\n", f); -} diff --git a/tools/audiofile-0.3.6/sfcommands/.libs/sfconvert_ltshwrapper b/tools/audiofile-0.3.6/sfcommands/.libs/sfconvert_ltshwrapper deleted file mode 100644 index d46e9cc7..00000000 --- a/tools/audiofile-0.3.6/sfcommands/.libs/sfconvert_ltshwrapper +++ /dev/null @@ -1,213 +0,0 @@ -#! /bin/sh - -# sfconvert - temporary wrapper script for .libs/sfconvert.exe -# Generated by libtool (GNU libtool) 2.4.6 -# -# The sfconvert program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command="" - -# This environment variable determines our operation mode. -if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then - # install mode needs the following variables: - generated_by_libtool_version='2.4.6' - notinst_deplibs=' ../libaudiofile/libaudiofile.la' -else - # When we are sourced in execute mode, $file and $ECHO are already set. - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - file="$0" - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - ECHO="printf %s\\n" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string --lt- -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's ../libtool value, followed by yes. -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=$0 - shift - for lt_opt - do - case "$lt_opt" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` - test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. - lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` - cat "$lt_dump_D/$lt_dump_F" - exit 0 - ;; - --lt-*) - $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n "$lt_option_debug"; then - echo "sfconvert.exe:sfconvert:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - $ECHO "sfconvert.exe:sfconvert:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" - lt_dump_args_N=`expr $lt_dump_args_N + 1` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ - - if test -n "$lt_option_debug"; then - $ECHO "sfconvert.exe:sfconvert:$LINENO: newargv[0]: $progdir/$program" 1>&2 - func_lt_dump_args ${1+"$@"} 1>&2 - fi - exec "$progdir/$program" ${1+"$@"} - - $ECHO "$0: cannot exec $program $*" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from $@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case " $* " in - *\ --lt-*) - for lt_wr_arg - do - case $lt_wr_arg in - --lt-*) ;; - *) set x "$@" "$lt_wr_arg"; shift;; - esac - shift - done ;; - esac - func_exec_program_core ${1+"$@"} -} - - # Parse options - func_parse_lt_options "$0" ${1+"$@"} - - # Find the directory that this script lives in. - thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` - test "x$thisdir" = "x$file" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` - while test -n "$file"; do - destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` - - # If there was a directory component, then change thisdir. - if test "x$destdir" != "x$file"; then - case "$destdir" in - [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; - *) thisdir="$thisdir/$destdir" ;; - esac - fi - - file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` - file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=yes - if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then - # special case for '.' - if test "$thisdir" = "."; then - thisdir=`pwd` - fi - # remove .libs from thisdir - case "$thisdir" in - *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; - .libs ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=`cd "$thisdir" && pwd` - test -n "$absdir" && thisdir="$absdir" - - program='sfconvert.exe' - progdir="$thisdir/.libs" - - - if test -f "$progdir/$program"; then - # Add the dll search path components to the executable PATH - PATH=/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:/mingw64/lib:/mingw64/bin:$PATH - - # Add our own library path to PATH - PATH="/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:$PATH" - - # Some systems cannot cope with colon-terminated PATH - # The second colon is a workaround for a bug in BeOS R4 sed - PATH=`$ECHO "$PATH" | /usr/bin/sed 's/::*$//'` - - export PATH - - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - # Run the actual program with our arguments. - func_exec_program ${1+"$@"} - fi - else - # The program doesn't exist. - $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 - $ECHO "This script is just a wrapper for $program." 1>&2 - $ECHO "See the libtool documentation for more information." 1>&2 - exit 1 - fi -fi diff --git a/tools/audiofile-0.3.6/sfcommands/.libs/sfinfo_ltshwrapper b/tools/audiofile-0.3.6/sfcommands/.libs/sfinfo_ltshwrapper deleted file mode 100644 index 1e473d6a..00000000 --- a/tools/audiofile-0.3.6/sfcommands/.libs/sfinfo_ltshwrapper +++ /dev/null @@ -1,213 +0,0 @@ -#! /bin/sh - -# sfinfo - temporary wrapper script for .libs/sfinfo.exe -# Generated by libtool (GNU libtool) 2.4.6 -# -# The sfinfo program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command="" - -# This environment variable determines our operation mode. -if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then - # install mode needs the following variables: - generated_by_libtool_version='2.4.6' - notinst_deplibs=' ../libaudiofile/libaudiofile.la' -else - # When we are sourced in execute mode, $file and $ECHO are already set. - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - file="$0" - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - ECHO="printf %s\\n" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string --lt- -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's ../libtool value, followed by yes. -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=$0 - shift - for lt_opt - do - case "$lt_opt" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` - test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. - lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` - cat "$lt_dump_D/$lt_dump_F" - exit 0 - ;; - --lt-*) - $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n "$lt_option_debug"; then - echo "sfinfo.exe:sfinfo:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - $ECHO "sfinfo.exe:sfinfo:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" - lt_dump_args_N=`expr $lt_dump_args_N + 1` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ - - if test -n "$lt_option_debug"; then - $ECHO "sfinfo.exe:sfinfo:$LINENO: newargv[0]: $progdir/$program" 1>&2 - func_lt_dump_args ${1+"$@"} 1>&2 - fi - exec "$progdir/$program" ${1+"$@"} - - $ECHO "$0: cannot exec $program $*" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from $@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case " $* " in - *\ --lt-*) - for lt_wr_arg - do - case $lt_wr_arg in - --lt-*) ;; - *) set x "$@" "$lt_wr_arg"; shift;; - esac - shift - done ;; - esac - func_exec_program_core ${1+"$@"} -} - - # Parse options - func_parse_lt_options "$0" ${1+"$@"} - - # Find the directory that this script lives in. - thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` - test "x$thisdir" = "x$file" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` - while test -n "$file"; do - destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` - - # If there was a directory component, then change thisdir. - if test "x$destdir" != "x$file"; then - case "$destdir" in - [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; - *) thisdir="$thisdir/$destdir" ;; - esac - fi - - file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` - file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=yes - if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then - # special case for '.' - if test "$thisdir" = "."; then - thisdir=`pwd` - fi - # remove .libs from thisdir - case "$thisdir" in - *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; - .libs ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=`cd "$thisdir" && pwd` - test -n "$absdir" && thisdir="$absdir" - - program='sfinfo.exe' - progdir="$thisdir/.libs" - - - if test -f "$progdir/$program"; then - # Add the dll search path components to the executable PATH - PATH=/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:/mingw64/lib:/mingw64/bin:$PATH - - # Add our own library path to PATH - PATH="/i/Development/sm64pc/tools/audiofile-0.3.6/libaudiofile/.libs:$PATH" - - # Some systems cannot cope with colon-terminated PATH - # The second colon is a workaround for a bug in BeOS R4 sed - PATH=`$ECHO "$PATH" | /usr/bin/sed 's/::*$//'` - - export PATH - - if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - # Run the actual program with our arguments. - func_exec_program ${1+"$@"} - fi - else - # The program doesn't exist. - $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 - $ECHO "This script is just a wrapper for $program." 1>&2 - $ECHO "See the libtool documentation for more information." 1>&2 - exit 1 - fi -fi diff --git a/tools/audiofile-0.3.6/sfcommands/Makefile b/tools/audiofile-0.3.6/sfcommands/Makefile deleted file mode 100644 index 85305834..00000000 --- a/tools/audiofile-0.3.6/sfcommands/Makefile +++ /dev/null @@ -1,571 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# sfcommands/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -bin_PROGRAMS = sfconvert$(EXEEXT) sfinfo$(EXEEXT) -subdir = sfcommands -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" -PROGRAMS = $(bin_PROGRAMS) -am_sfconvert_OBJECTS = sfconvert.$(OBJEXT) printinfo.$(OBJEXT) -sfconvert_OBJECTS = $(am_sfconvert_OBJECTS) -sfconvert_LDADD = $(LDADD) -sfconvert_DEPENDENCIES = $(top_builddir)/libaudiofile/libaudiofile.la -am_sfinfo_OBJECTS = sfinfo.$(OBJEXT) printinfo.$(OBJEXT) -sfinfo_OBJECTS = $(am_sfinfo_OBJECTS) -sfinfo_LDADD = $(LDADD) -sfinfo_DEPENDENCIES = $(top_builddir)/libaudiofile/libaudiofile.la -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(sfconvert_SOURCES) $(sfinfo_SOURCES) -DIST_SOURCES = $(sfconvert_SOURCES) $(sfinfo_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6/sfcommands -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6/sfcommands -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -INCLUDES = -I$(top_srcdir)/libaudiofile -sfconvert_SOURCES = sfconvert.c printinfo.c printinfo.h -sfinfo_SOURCES = sfinfo.c printinfo.c printinfo.h -LDADD = $(top_builddir)/libaudiofile/libaudiofile.la -DEPENDENCIES = $(top_builddir)/libaudiofile/libaudiofile.la -AM_CFLAGS = -Wall $(WERROR_CFLAGS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sfcommands/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu sfcommands/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -sfconvert$(EXEEXT): $(sfconvert_OBJECTS) $(sfconvert_DEPENDENCIES) $(EXTRA_sfconvert_DEPENDENCIES) - @rm -f sfconvert$(EXEEXT) - $(LINK) $(sfconvert_OBJECTS) $(sfconvert_LDADD) $(LIBS) -sfinfo$(EXEEXT): $(sfinfo_OBJECTS) $(sfinfo_DEPENDENCIES) $(EXTRA_sfinfo_DEPENDENCIES) - @rm -f sfinfo$(EXEEXT) - $(LINK) $(sfinfo_OBJECTS) $(sfinfo_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/printinfo.Po -include ./$(DEPDIR)/sfconvert.Po -include ./$(DEPDIR)/sfinfo.Po - -.c.o: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: - $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-binPROGRAMS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/sfcommands/Makefile.am b/tools/audiofile-0.3.6/sfcommands/Makefile.am deleted file mode 100644 index f5d3d916..00000000 --- a/tools/audiofile-0.3.6/sfcommands/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -INCLUDES = -I$(top_srcdir)/libaudiofile - -bin_PROGRAMS = sfconvert sfinfo - -sfconvert_SOURCES = sfconvert.c printinfo.c printinfo.h - -sfinfo_SOURCES = sfinfo.c printinfo.c printinfo.h - -LDADD = $(top_builddir)/libaudiofile/libaudiofile.la - -DEPENDENCIES = $(top_builddir)/libaudiofile/libaudiofile.la - -AM_CFLAGS = -Wall $(WERROR_CFLAGS) diff --git a/tools/audiofile-0.3.6/sfcommands/Makefile.in b/tools/audiofile-0.3.6/sfcommands/Makefile.in deleted file mode 100644 index a750adab..00000000 --- a/tools/audiofile-0.3.6/sfcommands/Makefile.in +++ /dev/null @@ -1,571 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -bin_PROGRAMS = sfconvert$(EXEEXT) sfinfo$(EXEEXT) -subdir = sfcommands -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" -PROGRAMS = $(bin_PROGRAMS) -am_sfconvert_OBJECTS = sfconvert.$(OBJEXT) printinfo.$(OBJEXT) -sfconvert_OBJECTS = $(am_sfconvert_OBJECTS) -sfconvert_LDADD = $(LDADD) -sfconvert_DEPENDENCIES = $(top_builddir)/libaudiofile/libaudiofile.la -am_sfinfo_OBJECTS = sfinfo.$(OBJEXT) printinfo.$(OBJEXT) -sfinfo_OBJECTS = $(am_sfinfo_OBJECTS) -sfinfo_LDADD = $(LDADD) -sfinfo_DEPENDENCIES = $(top_builddir)/libaudiofile/libaudiofile.la -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(sfconvert_SOURCES) $(sfinfo_SOURCES) -DIST_SOURCES = $(sfconvert_SOURCES) $(sfinfo_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir)/libaudiofile -sfconvert_SOURCES = sfconvert.c printinfo.c printinfo.h -sfinfo_SOURCES = sfinfo.c printinfo.c printinfo.h -LDADD = $(top_builddir)/libaudiofile/libaudiofile.la -DEPENDENCIES = $(top_builddir)/libaudiofile/libaudiofile.la -AM_CFLAGS = -Wall $(WERROR_CFLAGS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sfcommands/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu sfcommands/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -sfconvert$(EXEEXT): $(sfconvert_OBJECTS) $(sfconvert_DEPENDENCIES) $(EXTRA_sfconvert_DEPENDENCIES) - @rm -f sfconvert$(EXEEXT) - $(LINK) $(sfconvert_OBJECTS) $(sfconvert_LDADD) $(LIBS) -sfinfo$(EXEEXT): $(sfinfo_OBJECTS) $(sfinfo_DEPENDENCIES) $(EXTRA_sfinfo_DEPENDENCIES) - @rm -f sfinfo$(EXEEXT) - $(LINK) $(sfinfo_OBJECTS) $(sfinfo_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printinfo.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfconvert.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfinfo.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-binPROGRAMS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/sfcommands/printinfo.c b/tools/audiofile-0.3.6/sfcommands/printinfo.c deleted file mode 100644 index 60e69471..00000000 --- a/tools/audiofile-0.3.6/sfcommands/printinfo.c +++ /dev/null @@ -1,216 +0,0 @@ -/* - Audio File Library - - Copyright 1998, 2011, Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - printinfo.c - - This file contains the function used by the sf commands to print - information regarding a file. -*/ - -#include "config.h" -#include "printinfo.h" - -#ifdef __USE_SGI_HEADERS__ -#include -#else -#include -#endif - -#include -#include -#include - -static char *copyrightstring (AFfilehandle file); - -bool printfileinfo (const char *filename) -{ - AFfilehandle file = afOpenFile(filename, "r", NULL); - if (!file) - return false; - - int fileFormat = afGetFileFormat(file, NULL); - const char *formatstring = - (const char *) afQueryPointer(AF_QUERYTYPE_FILEFMT, AF_QUERY_DESC, - fileFormat, 0, 0); - const char *labelstring = - (const char *) afQueryPointer(AF_QUERYTYPE_FILEFMT, AF_QUERY_LABEL, - fileFormat, 0, 0); - - if (!formatstring || !labelstring) - return false; - - printf("File Name %s\n", filename); - printf("File Format %s (%s)\n", formatstring, labelstring); - - int sampleFormat, sampleWidth; - afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - - int byteOrder = afGetByteOrder(file, AF_DEFAULT_TRACK); - - printf("Data Format "); - - int compressionType = afGetCompression(file, AF_DEFAULT_TRACK); - if (compressionType == AF_COMPRESSION_NONE) - { - switch (sampleFormat) - { - case AF_SAMPFMT_TWOSCOMP: - printf("%d-bit integer (2's complement, %s)", - sampleWidth, - byteOrder == AF_BYTEORDER_BIGENDIAN ? - "big endian" : "little endian"); - break; - case AF_SAMPFMT_UNSIGNED: - printf("%d-bit integer (unsigned, %s)", - sampleWidth, - byteOrder == AF_BYTEORDER_BIGENDIAN ? - "big endian" : "little endian"); - break; - case AF_SAMPFMT_FLOAT: - printf("single-precision (32-bit) floating point, %s", - byteOrder == AF_BYTEORDER_BIGENDIAN ? - "big endian" : "little endian"); - break; - case AF_SAMPFMT_DOUBLE: - printf("double-precision (64-bit) floating point, %s", - byteOrder == AF_BYTEORDER_BIGENDIAN ? - "big endian" : "little endian"); - break; - default: - printf("unknown"); - break; - } - } - else - { - const char *compressionName = - (const char *) afQueryPointer(AF_QUERYTYPE_COMPRESSION, - AF_QUERY_NAME, compressionType, 0, 0); - - if (!compressionName) - printf("unknown compression"); - else - printf("%s compression", compressionName); - } - printf("\n"); - - printf("Audio Data %jd bytes begins at offset %jd (%jx hex)\n", - (intmax_t) afGetTrackBytes(file, AF_DEFAULT_TRACK), - (intmax_t) afGetDataOffset(file, AF_DEFAULT_TRACK), - (uintmax_t) afGetDataOffset(file, AF_DEFAULT_TRACK)); - - printf(" %d channel%s, %jd frames\n", - afGetChannels(file, AF_DEFAULT_TRACK), - afGetChannels(file, AF_DEFAULT_TRACK) > 1 ? "s" : "", - (intmax_t) afGetFrameCount(file, AF_DEFAULT_TRACK)); - - printf("Sampling Rate %.2f Hz\n", afGetRate(file, AF_DEFAULT_TRACK)); - - printf("Duration %.3f seconds\n", - afGetFrameCount(file, AF_DEFAULT_TRACK) / - afGetRate(file, AF_DEFAULT_TRACK)); - - char *copyright = copyrightstring(file); - if (copyright) - { - printf("Copyright %s\n", copyright); - free(copyright); - } - - afCloseFile(file); - - return true; -} - -static char *copyrightstring (AFfilehandle file) -{ - char *copyright = NULL; - int *miscids; - int i, misccount; - - misccount = afGetMiscIDs(file, NULL); - miscids = (int *) malloc(sizeof (int) * misccount); - afGetMiscIDs(file, miscids); - - for (i=0; i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#ifndef PRINTINFO_H -#define PRINTINFO_H - -#include - -bool printfileinfo(const char *filename); -bool printshortinfo(const char *filename); - -#endif diff --git a/tools/audiofile-0.3.6/sfcommands/sfconvert.c b/tools/audiofile-0.3.6/sfcommands/sfconvert.c deleted file mode 100644 index 80a1bc41..00000000 --- a/tools/audiofile-0.3.6/sfcommands/sfconvert.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - Audio File Library - - Copyright (C) 1998, 2011-2012, Michael Pruett - Copyright (C) 2001, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - sfconvert is a program which can convert various parameters of - sound files. -*/ - -#include "config.h" - -#ifdef __USE_SGI_HEADERS__ -#include -#else -#include -#endif - -#include -#include -#include -#include -#include - -#include "printinfo.h" - -void printversion (void); -void printusage (void); -void usageerror (void); -bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid); - -int main (int argc, char **argv) -{ - if (argc == 2) - { - if (!strcmp(argv[1], "--version") || !strcmp(argv[1], "-v")) - { - printversion(); - exit(EXIT_SUCCESS); - } - - if (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-h")) - { - printusage(); - exit(EXIT_SUCCESS); - } - } - - if (argc < 3) - usageerror(); - - const char *inFileName = argv[1]; - const char *outFileName = argv[2]; - - int outFileFormat = AF_FILE_UNKNOWN; - int outSampleFormat = -1, outSampleWidth = -1, outChannelCount = -1; - int outCompression = AF_COMPRESSION_NONE; - double outMaxAmp = 1.0; - - int i = 3; - - while (i < argc) - { - if (!strcmp(argv[i], "format")) - { - if (i + 1 >= argc) - usageerror(); - - if (!strcmp(argv[i+1], "aiff")) - outFileFormat = AF_FILE_AIFF; - else if (!strcmp(argv[i+1], "aifc")) - outFileFormat = AF_FILE_AIFFC; - else if (!strcmp(argv[i+1], "wave")) - outFileFormat = AF_FILE_WAVE; - else if (!strcmp(argv[i+1], "next")) - outFileFormat = AF_FILE_NEXTSND; - else if (!strcmp(argv[i+1], "bics")) - outFileFormat = AF_FILE_BICSF; - else if (!strcmp(argv[i+1], "smp")) - outFileFormat = AF_FILE_SAMPLEVISION; - else if (!strcmp(argv[i+1], "voc")) - outFileFormat = AF_FILE_VOC; - else if (!strcmp(argv[i+1], "nist")) - outFileFormat = AF_FILE_NIST_SPHERE; - else if (!strcmp(argv[i+1], "caf")) - outFileFormat = AF_FILE_CAF; - else if (!strcmp(argv[i+1], "flac")) - outFileFormat = AF_FILE_FLAC; - else - { - fprintf(stderr, "sfconvert: Unknown format %s.\n", argv[i+1]); - exit(EXIT_FAILURE); - } - - // Increment for argument. - i++; - } - else if (!strcmp(argv[i], "channels")) - { - if (i + 1 >= argc) - usageerror(); - - outChannelCount = atoi(argv[i+1]); - if (outChannelCount < 1) - usageerror(); - - // Increment for argument. - i++; - } - else if (!strcmp(argv[i], "float")) - { - if (i + 1 >= argc) - usageerror(); - - outSampleFormat = AF_SAMPFMT_FLOAT; - outSampleWidth = 32; - outMaxAmp = atof(argv[i+1]); - - // outMaxAmp is currently unused. - (void) outMaxAmp; - - // Increment for argument. - i++; - } - else if (!strcmp(argv[i], "integer")) - { - if (i + 2 >= argc) - usageerror(); - - outSampleWidth = atoi(argv[i+1]); - if (outSampleWidth < 1 || outSampleWidth > 32) - usageerror(); - - if (!strcmp(argv[i+2], "2scomp")) - outSampleFormat = AF_SAMPFMT_TWOSCOMP; - else if (!strcmp(argv[i+2], "unsigned")) - outSampleFormat = AF_SAMPFMT_UNSIGNED; - else - usageerror(); - - // Increment for arguments. - i += 2; - } - else if (!strcmp(argv[i], "compression")) - { - if (i + 1 >= argc) - usageerror(); - - if (!strcmp(argv[i+1], "none")) - outCompression = AF_COMPRESSION_NONE; - else if (!strcmp(argv[i+1], "ulaw")) - outCompression = AF_COMPRESSION_G711_ULAW; - else if (!strcmp(argv[i+1], "alaw")) - outCompression = AF_COMPRESSION_G711_ALAW; - else if (!strcmp(argv[i+1], "ima")) - outCompression = AF_COMPRESSION_IMA; - else if (!strcmp(argv[i+1], "msadpcm")) - outCompression = AF_COMPRESSION_MS_ADPCM; - else if (!strcmp(argv[i+1], "flac")) - outCompression = AF_COMPRESSION_FLAC; - else if (!strcmp(argv[i+1], "alac")) - outCompression = AF_COMPRESSION_ALAC; - else - { - fprintf(stderr, "sfconvert: Unknown compression format %s.\n", argv[i+1]); - exit(EXIT_FAILURE); - } - - i++; - } - else - { - printf("Unrecognized command %s\n", argv[i]); - } - - i++; - } - - AFfilehandle inFile = afOpenFile(inFileName, "r", AF_NULL_FILESETUP); - if (!inFile) - { - printf("Could not open file '%s' for reading.\n", inFileName); - return EXIT_FAILURE; - } - - // Get audio format parameters from input file. - int fileFormat = afGetFileFormat(inFile, NULL); - int channelCount = afGetChannels(inFile, AF_DEFAULT_TRACK); - double sampleRate = afGetRate(inFile, AF_DEFAULT_TRACK); - int sampleFormat, sampleWidth; - afGetSampleFormat(inFile, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - - // Initialize output audio format parameters. - AFfilesetup outFileSetup = afNewFileSetup(); - - if (outFileFormat == -1) - outFileFormat = fileFormat; - - if (outSampleFormat == -1 || outSampleWidth == -1) - { - outSampleFormat = sampleFormat; - outSampleWidth = sampleWidth; - } - - if (outChannelCount == -1) - outChannelCount = channelCount; - - afInitFileFormat(outFileSetup, outFileFormat); - afInitCompression(outFileSetup, AF_DEFAULT_TRACK, outCompression); - afInitSampleFormat(outFileSetup, AF_DEFAULT_TRACK, outSampleFormat, - outSampleWidth); - afInitChannels(outFileSetup, AF_DEFAULT_TRACK, outChannelCount); - afInitRate(outFileSetup, AF_DEFAULT_TRACK, sampleRate); - - AFfilehandle outFile = afOpenFile(outFileName, "w", outFileSetup); - if (!outFile) - { - printf("Could not open file '%s' for writing.\n", outFileName); - return EXIT_FAILURE; - } - - afFreeFileSetup(outFileSetup); - - /* - Set the output file's virtual audio format parameters - to match the audio format parameters of the input file. - */ - afSetVirtualChannels(outFile, AF_DEFAULT_TRACK, channelCount); - afSetVirtualSampleFormat(outFile, AF_DEFAULT_TRACK, sampleFormat, - sampleWidth); - - bool success = copyaudiodata(inFile, outFile, AF_DEFAULT_TRACK); - - afCloseFile(inFile); - afCloseFile(outFile); - - if (!success) - { - unlink(outFileName); - return EXIT_FAILURE; - } - - printfileinfo(inFileName); - putchar('\n'); - printfileinfo(outFileName); - - return EXIT_SUCCESS; -} - -void printusage (void) -{ - printf("usage: sfconvert infile outfile [ options ... ] [ output keywords ... ]\n"); - printf("\n"); - - printf("Where keywords specify format of input or output soundfile:\n"); - printf(" format f file format f (see below)\n"); - printf(" compression c compression format c (see below)\n"); - printf(" byteorder e endian (e is big or little)\n"); - printf(" channels n n-channel file (1 or 2)\n"); - printf(" integer n s n-bit integer file, where s is one of\n"); - printf(" 2scomp: 2's complement signed data\n"); - printf(" unsigned: unsigned data\n"); - printf(" float m floating point file, maxamp m (usually 1.0)\n"); - printf("\n"); - - printf("Currently supported file formats are:\n"); - printf("\n"); - printf(" aiff Audio Interchange File Format\n"); - printf(" aifc AIFF-C File Format\n"); - printf(" next NeXT/Sun Format\n"); - printf(" wave MS RIFF WAVE Format\n"); - printf(" bics Berkeley/IRCAM/CARL Sound File Format\n"); - printf(" smp Sample Vision Format\n"); - printf(" voc Creative Voice File\n"); - printf(" nist NIST SPHERE Format\n"); - printf(" caf Core Audio Format\n"); - printf("\n"); - - printf("Currently supported compression formats are:\n"); - printf("\n"); - printf(" ulaw G.711 u-law\n"); - printf(" alaw G.711 A-law\n"); - printf(" ima IMA ADPCM\n"); - printf(" msadpcm MS ADPCM\n"); - printf(" flac FLAC\n"); - printf(" alac Apple Lossless Audio Codec\n"); - printf("\n"); -} - -void usageerror (void) -{ - printusage(); - exit(EXIT_FAILURE); -} - -void printversion (void) -{ - printf("sfconvert: Audio File Library version %s\n", VERSION); -} - -/* - Copy audio data from one file to another. This function - assumes that the virtual sample formats of the two files - match. -*/ -bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid) -{ - int frameSize = afGetVirtualFrameSize(infile, trackid, 1); - - const int kBufferFrameCount = 65536; - void *buffer = malloc(kBufferFrameCount * frameSize); - - AFframecount totalFrames = afGetFrameCount(infile, AF_DEFAULT_TRACK); - AFframecount totalFramesWritten = 0; - - bool success = true; - - while (totalFramesWritten < totalFrames) - { - AFframecount framesToRead = totalFrames - totalFramesWritten; - if (framesToRead > kBufferFrameCount) - framesToRead = kBufferFrameCount; - - AFframecount framesRead = afReadFrames(infile, trackid, buffer, - framesToRead); - - if (framesRead < framesToRead) - { - fprintf(stderr, "Bad read of audio track data.\n"); - success = false; - break; - } - - AFframecount framesWritten = afWriteFrames(outfile, trackid, buffer, - framesRead); - - if (framesWritten < framesRead) - { - fprintf(stderr, "Bad write of audio track data.\n"); - success = false; - break; - } - - totalFramesWritten += framesWritten; - } - - free(buffer); - - return success; -} diff --git a/tools/audiofile-0.3.6/sfcommands/sfinfo.c b/tools/audiofile-0.3.6/sfcommands/sfinfo.c deleted file mode 100644 index c8fb9131..00000000 --- a/tools/audiofile-0.3.6/sfcommands/sfinfo.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - Audio File Library - - Copyright 1998, 2011, Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - sfinfo.c - - This program displays information about audio files. -*/ - -#include "config.h" - -#ifdef __USE_SGI_HEADERS__ -#include -#else -#include -#endif - -#include -#include -#include -#include -#include - -#include "printinfo.h" - -bool reportError = false; - -void errorHandler(long error, const char *message) -{ - if (reportError) - fprintf(stderr, "sfinfo: %s [error %ld]\n", message, error); -} - -void printusage() -{ - printf("usage: sfinfo [options...] soundfiles...\n"); - printf("options:\n"); - printf(" -s, --short Print information in short format\n"); - printf(" -r, --reporterror Report errors when reading sound files\n"); - printf(" -h, --help Print this help message\n"); - printf(" -v, --version Print version\n"); -} - -void printversion() -{ - printf("sfinfo: Audio File Library version %s\n", VERSION); -} - -int main(int argc, char **argv) -{ - bool brief = false; - - afSetErrorHandler(errorHandler); - - if (argc == 1) - { - printusage(); - return 0; - } - - static struct option long_options[] = - { - {"short", 0, 0, 's'}, - {"reporterror", 0, 0, 'r'}, - {"help", 0, 0, 'h'}, - {"version", 0, 0, 'v'}, - {0, 0, 0, 0} - }; - - int result; - int option_index = 1; - while ((result = getopt_long(argc, argv, "srhv", long_options, - &option_index)) != -1) - { - switch (result) - { - case 's': - brief = true; - break; - case 'r': - reportError = true; - break; - case 'h': - printusage(); - exit(EXIT_SUCCESS); - case 'v': - printversion(); - exit(EXIT_SUCCESS); - } - } - - int i = optind; - while (i < argc) - { - bool processed = brief ? printshortinfo(argv[i]) : - printfileinfo(argv[i]); - i++; - if (!brief && processed && i < argc) - putchar('\n'); - } - - return 0; -} diff --git a/tools/audiofile-0.3.6/stamp-h1 b/tools/audiofile-0.3.6/stamp-h1 deleted file mode 100644 index 4547fe1b..00000000 --- a/tools/audiofile-0.3.6/stamp-h1 +++ /dev/null @@ -1 +0,0 @@ -timestamp for config.h diff --git a/tools/audiofile-0.3.6/test/.deps/ADPCM.Po b/tools/audiofile-0.3.6/test/.deps/ADPCM.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/ADPCM.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/AES.Po b/tools/audiofile-0.3.6/test/.deps/AES.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/AES.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/ALAC.Po b/tools/audiofile-0.3.6/test/.deps/ALAC.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/ALAC.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/ChannelMatrix.Po b/tools/audiofile-0.3.6/test/.deps/ChannelMatrix.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/ChannelMatrix.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Error.Po b/tools/audiofile-0.3.6/test/.deps/Error.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Error.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/FLAC.Po b/tools/audiofile-0.3.6/test/.deps/FLAC.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/FLAC.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/FloatToInt.Po b/tools/audiofile-0.3.6/test/.deps/FloatToInt.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/FloatToInt.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Instrument.Po b/tools/audiofile-0.3.6/test/.deps/Instrument.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Instrument.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/IntToFloat.Po b/tools/audiofile-0.3.6/test/.deps/IntToFloat.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/IntToFloat.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/InvalidCompressionFormat.Po b/tools/audiofile-0.3.6/test/.deps/InvalidCompressionFormat.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/InvalidCompressionFormat.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/InvalidSampleFormat.Po b/tools/audiofile-0.3.6/test/.deps/InvalidSampleFormat.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/InvalidSampleFormat.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Large.Po b/tools/audiofile-0.3.6/test/.deps/Large.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Large.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Loop.Po b/tools/audiofile-0.3.6/test/.deps/Loop.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Loop.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Marker.Po b/tools/audiofile-0.3.6/test/.deps/Marker.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Marker.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Miscellaneous.Po b/tools/audiofile-0.3.6/test/.deps/Miscellaneous.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Miscellaneous.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/NeXT.Po b/tools/audiofile-0.3.6/test/.deps/NeXT.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/NeXT.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/PCMData.Po b/tools/audiofile-0.3.6/test/.deps/PCMData.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/PCMData.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/PCMMapping.Po b/tools/audiofile-0.3.6/test/.deps/PCMMapping.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/PCMMapping.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Pipe.Po b/tools/audiofile-0.3.6/test/.deps/Pipe.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Pipe.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Query.Po b/tools/audiofile-0.3.6/test/.deps/Query.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Query.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/SampleFormat.Po b/tools/audiofile-0.3.6/test/.deps/SampleFormat.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/SampleFormat.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Seek.Po b/tools/audiofile-0.3.6/test/.deps/Seek.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Seek.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/Sign.Po b/tools/audiofile-0.3.6/test/.deps/Sign.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/Sign.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/TestUtilities.Po b/tools/audiofile-0.3.6/test/.deps/TestUtilities.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/TestUtilities.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/VirtualFile.Po b/tools/audiofile-0.3.6/test/.deps/VirtualFile.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/VirtualFile.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/floatto24.Po b/tools/audiofile-0.3.6/test/.deps/floatto24.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/floatto24.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/instparamtest.Po b/tools/audiofile-0.3.6/test/.deps/instparamtest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/instparamtest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/instparamwrite.Po b/tools/audiofile-0.3.6/test/.deps/instparamwrite.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/instparamwrite.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/printmarkers.Po b/tools/audiofile-0.3.6/test/.deps/printmarkers.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/printmarkers.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/query2.Po b/tools/audiofile-0.3.6/test/.deps/query2.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/query2.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/sixteen-to-eight.Po b/tools/audiofile-0.3.6/test/.deps/sixteen-to-eight.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/sixteen-to-eight.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/testaupv.Po b/tools/audiofile-0.3.6/test/.deps/testaupv.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/testaupv.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/testchannelmatrix.Po b/tools/audiofile-0.3.6/test/.deps/testchannelmatrix.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/testchannelmatrix.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/testdouble.Po b/tools/audiofile-0.3.6/test/.deps/testdouble.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/testdouble.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/testfloat.Po b/tools/audiofile-0.3.6/test/.deps/testfloat.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/testfloat.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/testmarkers.Po b/tools/audiofile-0.3.6/test/.deps/testmarkers.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/testmarkers.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/twentyfour.Po b/tools/audiofile-0.3.6/test/.deps/twentyfour.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/twentyfour.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/twentyfour2.Po b/tools/audiofile-0.3.6/test/.deps/twentyfour2.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/twentyfour2.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/writealaw.Po b/tools/audiofile-0.3.6/test/.deps/writealaw.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/writealaw.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/writeraw.Po b/tools/audiofile-0.3.6/test/.deps/writeraw.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/writeraw.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/.deps/writeulaw.Po b/tools/audiofile-0.3.6/test/.deps/writeulaw.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/tools/audiofile-0.3.6/test/.deps/writeulaw.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/tools/audiofile-0.3.6/test/ADPCM.cpp b/tools/audiofile-0.3.6/test/ADPCM.cpp deleted file mode 100644 index 7e7da3a5..00000000 --- a/tools/audiofile-0.3.6/test/ADPCM.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* - Audio File Library - - Copyright (C) 2012, Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -static const int kIMABytesPerPacketQT = 34; -static const int kIMABytesPerPacketWAVE = 256; - -static const int kIMAFramesPerPacketQT = 64; -static const int kIMAFramesPerPacketWAVE = 505; - -static const int kIMAThresholdQT = 128; -static const int kIMAThresholdWAVE = 16; - -static const int kMSADPCMBytesPerPacket = 256; -static const int kMSADPCMFramesPerPacket = 500; -static const int kMSADPCMThreshold = 16; - -static void testADPCM(int fileFormat, int compressionFormat, int channelCount, - int bytesPerPacket, int framesPerPacket, int frameCount, int threshold) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("ADPCM", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitChannels(setup, AF_DEFAULT_TRACK, channelCount); - afInitCompression(setup, AF_DEFAULT_TRACK, compressionFormat); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_TRUE(file); - afFreeFileSetup(setup); - - int16_t *data = new int16_t[frameCount * channelCount]; - for (int i=0; i -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -static void testAESSupported(int fileFormat) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("AES", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitAESChannelDataTo(setup, AF_DEFAULT_TRACK, true); - - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_TRUE(file); - - afFreeFileSetup(setup); - - unsigned char aesData[24]; - for (int i=0; i<24; i++) - aesData[i] = 3*i + 1; - afSetAESChannelData(file, AF_DEFAULT_TRACK, aesData); - - afCloseFile(file); - - file = afOpenFile(testFileName.c_str(), "r", NULL); - ASSERT_TRUE(file); - - unsigned char readAESData[24]; - EXPECT_TRUE(afGetAESChannelData(file, AF_DEFAULT_TRACK, readAESData)); - EXPECT_TRUE(!memcmp(aesData, readAESData, 24)); - - afCloseFile(file); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -TEST(AES_Supported, AIFFC) { testAESSupported(AF_FILE_AIFFC); } -TEST(AES_Supported, AIFF) { testAESSupported(AF_FILE_AIFF); } - -static void testAESUnsupported(int fileFormat) -{ - IgnoreErrors ignoreErrors; - - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("AES", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitAESChannelDataTo(setup, AF_DEFAULT_TRACK, true); - - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_FALSE(file); - - afFreeFileSetup(setup); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -TEST(AES_Unsupported, Raw) { testAESUnsupported(AF_FILE_RAWDATA); } -TEST(AES_Unsupported, NeXT) { testAESUnsupported(AF_FILE_NEXTSND); } -TEST(AES_Unsupported, WAVE) { testAESUnsupported(AF_FILE_WAVE); } -TEST(AES_Unsupported, IRCAM) { testAESUnsupported(AF_FILE_IRCAM); } -TEST(AES_Unsupported, AVR) { testAESUnsupported(AF_FILE_AVR); } -TEST(AES_Unsupported, IFF) { testAESUnsupported(AF_FILE_IFF_8SVX); } -TEST(AES_Unsupported, SampleVision) { testAESUnsupported(AF_FILE_SAMPLEVISION); } -TEST(AES_Unsupported, VOC) { testAESUnsupported(AF_FILE_VOC); } -TEST(AES_Unsupported, NIST) { testAESUnsupported(AF_FILE_NIST_SPHERE); } -TEST(AES_Unsupported, CAF) { testAESUnsupported(AF_FILE_CAF); } -TEST(AES_Unsupported, FLAC) { testAESUnsupported(AF_FILE_FLAC); } - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/ALAC.cpp b/tools/audiofile-0.3.6/test/ALAC.cpp deleted file mode 100644 index e18c8eba..00000000 --- a/tools/audiofile-0.3.6/test/ALAC.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include -#include - -#include -#include -#include - -#include "Lossless.h" -#include "TestUtilities.h" - -template -static void testALAC(int fileFormat, int channelCount, int sampleWidth, int frameCount) -{ - testLossless("ALAC", fileFormat, AF_COMPRESSION_ALAC, - channelCount, sampleWidth, frameCount); -} - -TEST(ALAC, ALAC_16) -{ - for (int channelCount=1; channelCount<=8; channelCount++) - testALAC(AF_FILE_CAF, channelCount, 16, 82421); -} - -TEST(ALAC, ALAC_20) -{ - for (int channelCount=1; channelCount<=8; channelCount++) - testALAC(AF_FILE_CAF, channelCount, 20, 82421); -} - -TEST(ALAC, ALAC_24) -{ - for (int channelCount=1; channelCount<=8; channelCount++) - testALAC(AF_FILE_CAF, channelCount, 24, 82421); -} - -TEST(ALAC, ALAC_32) -{ - for (int channelCount=1; channelCount<=8; channelCount++) - testALAC(AF_FILE_CAF, channelCount, 32, 82421); -} - -static void testInvalidSampleFormat(int sampleFormat, int sampleWidth) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("ALAC", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_CAF); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); - afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_ALAC); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_FALSE(file); - afFreeFileSetup(setup); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -TEST(ALAC, InvalidSampleWidths) -{ - IgnoreErrors ignoreErrors; - - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - { - if (sampleWidth == 16 || - sampleWidth == 20 || - sampleWidth == 24 || - sampleWidth == 32) - continue; - - testInvalidSampleFormat(AF_SAMPFMT_TWOSCOMP, sampleWidth); - } -} - -TEST(ALAC, InvalidSampleFormats) -{ - IgnoreErrors ignoreErrors; - - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - testInvalidSampleFormat(AF_SAMPFMT_UNSIGNED, sampleWidth); - - testInvalidSampleFormat(AF_SAMPFMT_FLOAT, 32); - testInvalidSampleFormat(AF_SAMPFMT_DOUBLE, 64); -} - -TEST(ALAC, InvalidChannels) -{ - IgnoreErrors ignoreErrors; - - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("ALAC", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_CAF); - afInitChannels(setup, AF_DEFAULT_TRACK, 9); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_ALAC); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_FALSE(file); - afFreeFileSetup(setup); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/ChannelMatrix.cpp b/tools/audiofile-0.3.6/test/ChannelMatrix.cpp deleted file mode 100644 index 09d5dd13..00000000 --- a/tools/audiofile-0.3.6/test/ChannelMatrix.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* - Copyright (C) 2011, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#include -#include - -#include "TestUtilities.h" - -template -void testChannelMatrixReading(int sampleFormat, int sampleWidth) -{ - // Create test file. - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("ChannelMatrix", &testFileName)); - - const int channelCount = 2; - const int frameCount = 10; - const T samples[channelCount * frameCount] = - { - 2, 3, 5, 7, 11, - 13, 17, 19, 23, 29, - 31, 37, 41, 43, 47, - 53, 59, 61, 67, 71 - }; - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFFC); - afInitChannels(setup, AF_DEFAULT_TRACK, 2); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - afFreeFileSetup(setup); - EXPECT_TRUE(file); - - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, - samples, frameCount); - EXPECT_EQ(framesWritten, frameCount); - - EXPECT_EQ(afCloseFile(file), 0); - - // Open file for reading and read data using different channel matrices. - file = afOpenFile(testFileName.c_str(), "r", NULL); - EXPECT_TRUE(file); - - EXPECT_EQ(afGetChannels(file, AF_DEFAULT_TRACK), 2); - EXPECT_EQ(afGetFrameCount(file, AF_DEFAULT_TRACK), frameCount); - - afSetVirtualChannels(file, AF_DEFAULT_TRACK, 1); - - for (int c=0; c<2; c++) - { - double channelMatrix[2] = { 0, 0 }; - channelMatrix[c] = 1; - afSetChannelMatrix(file, AF_DEFAULT_TRACK, channelMatrix); - - EXPECT_EQ(afSeekFrame(file, AF_DEFAULT_TRACK, 0), 0); - - T *readSamples = new T[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, - readSamples, frameCount); - EXPECT_EQ(framesRead, frameCount); - - for (int i=0; i(AF_SAMPFMT_TWOSCOMP, 8); -} - -TEST(ChannelMatrix, ReadInt16) -{ - testChannelMatrixReading(AF_SAMPFMT_TWOSCOMP, 16); -} - -TEST(ChannelMatrix, ReadInt24) -{ - testChannelMatrixReading(AF_SAMPFMT_TWOSCOMP, 24); -} - -TEST(ChannelMatrix, ReadInt32) -{ - testChannelMatrixReading(AF_SAMPFMT_TWOSCOMP, 32); -} - -TEST(ChannelMatrix, ReadFloat) -{ - testChannelMatrixReading(AF_SAMPFMT_FLOAT, 32); -} - -TEST(ChannelMatrix, ReadDouble) -{ - testChannelMatrixReading(AF_SAMPFMT_DOUBLE, 64); -} - -template -void testChannelMatrixWriting(int sampleFormat, int sampleWidth) -{ - const int channelCount = 2; - const int frameCount = 10; - const T samples[channelCount * frameCount] = - { - 2, 3, 5, 7, 11, - 13, 17, 19, 23, 29, - 31, 37, 41, 43, 47, - 53, 59, 61, 67, 71 - }; - - for (int c=0; c<2; c++) - { - // Create test file. - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("ChannelMatrix", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFFC); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - afFreeFileSetup(setup); - EXPECT_TRUE(file); - - afSetVirtualChannels(file, AF_DEFAULT_TRACK, 2); - - double channelMatrix[2] = { 0, 0 }; - channelMatrix[c] = 1; - afSetChannelMatrix(file, AF_DEFAULT_TRACK, channelMatrix); - - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, - samples, frameCount); - EXPECT_EQ(framesWritten, frameCount); - - EXPECT_EQ(afCloseFile(file), 0); - - // Open file for reading. - file = afOpenFile(testFileName.c_str(), "r", NULL); - EXPECT_TRUE(file); - - EXPECT_EQ(afGetChannels(file, AF_DEFAULT_TRACK), 1); - EXPECT_EQ(afGetFrameCount(file, AF_DEFAULT_TRACK), frameCount); - - T *readSamples = new T[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, - readSamples, frameCount); - EXPECT_EQ(framesRead, frameCount); - - for (int i=0; i(AF_SAMPFMT_TWOSCOMP, 8); -} - -TEST(ChannelMatrix, WriteInt16) -{ - testChannelMatrixWriting(AF_SAMPFMT_TWOSCOMP, 16); -} - -TEST(ChannelMatrix, WriteInt24) -{ - testChannelMatrixWriting(AF_SAMPFMT_TWOSCOMP, 24); -} - -TEST(ChannelMatrix, WriteInt32) -{ - testChannelMatrixWriting(AF_SAMPFMT_TWOSCOMP, 32); -} - -TEST(ChannelMatrix, WriteFloat) -{ - testChannelMatrixWriting(AF_SAMPFMT_FLOAT, 32); -} - -TEST(ChannelMatrix, WriteDouble) -{ - testChannelMatrixWriting(AF_SAMPFMT_DOUBLE, 64); -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/Error.cpp b/tools/audiofile-0.3.6/test/Error.cpp deleted file mode 100644 index 5e10be2e..00000000 --- a/tools/audiofile-0.3.6/test/Error.cpp +++ /dev/null @@ -1,259 +0,0 @@ -/* - Copyright (C) 2011, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#include -#include - -struct ErrorListener *g_listener; - -struct ErrorListener -{ - ErrorListener(long expectedError) : - m_expectedError(expectedError), - m_receivedError(-1), - m_oldErrorFunction(0) - { - g_listener = this; - m_oldErrorFunction = afSetErrorHandler(errorHandlerHelper); - } - ~ErrorListener() - { - g_listener = 0; - EXPECT_EQ(m_expectedError, m_receivedError); - afSetErrorHandler(m_oldErrorFunction); - } - - long m_expectedError; - long m_receivedError; - AFerrfunc m_oldErrorFunction; - - static void errorHandlerHelper(long error, const char *description) - { - g_listener->errorHandler(error, description); - } - void errorHandler(long error, const char *description) - { - m_receivedError = error; - EXPECT_EQ(m_expectedError, m_receivedError); - } -}; - -#define TEST_ERROR(ExpectedError, Message, TestBody) \ - { \ - SCOPED_TRACE(Message); \ - ErrorListener el(ExpectedError); \ - TestBody; \ - } - -TEST(Data, Null) -{ - TEST_ERROR(AF_BAD_FILEHANDLE, "closing null file handle", - afCloseFile(AF_NULL_FILEHANDLE)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "reading from null file handle", - afReadFrames(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, NULL, 0)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "writing to null file handle", - afWriteFrames(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, NULL, 0)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "setting position on null file handle", - afSeekFrame(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, 0)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "retrieving position on null file handle", - afTellFrame(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); -} - -TEST(Channels, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, "initializing channels of null file setup", - afInitChannels(AF_NULL_FILESETUP, AF_DEFAULT_TRACK, 1)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "getting channels of null file handle", - afGetChannels(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "getting virtual channels of null file handle", - afGetVirtualChannels(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "setting virtual channels of null file handle", - afSetVirtualChannels(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, 1)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "setting channel matrix of null file handle", - afSetChannelMatrix(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, NULL)); -} - -TEST(Rate, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, "initializing rate of null file setup", - afInitRate(AF_NULL_FILESETUP, AF_DEFAULT_TRACK, 44100)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "getting rate of null file handle", - afGetRate(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); -} - -TEST(Compression, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, "initializing compression of null file setup", - afInitCompression(AF_NULL_FILESETUP, AF_DEFAULT_TRACK, - AF_COMPRESSION_NONE)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "getting compression of null file handle", - afGetCompression(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); -} - -TEST(SampleFormat, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, - "initializing sample format of null file setup", - afInitSampleFormat(AF_NULL_FILESETUP, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16)); - - TEST_ERROR(AF_BAD_FILEHANDLE, - "getting sample format of null file handle", - afGetSampleFormat(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, NULL, NULL)); - - TEST_ERROR(AF_BAD_FILEHANDLE, - "getting virtual sample format of null file handle", - afGetVirtualSampleFormat(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, NULL, NULL)); - - TEST_ERROR(AF_BAD_FILEHANDLE, - "setting virtual sample format of null file handle", - afSetVirtualSampleFormat(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16)); -} - -TEST(ByteOrder, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, - "initializing byte order of null file setup", - afInitByteOrder(AF_NULL_FILESETUP, AF_DEFAULT_TRACK, AF_BYTEORDER_BIGENDIAN)); - - TEST_ERROR(AF_BAD_FILEHANDLE, - "getting byte order of null file handle", - afGetByteOrder(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); - - TEST_ERROR(AF_BAD_FILEHANDLE, - "getting virtual byte order of null file handle", - afGetVirtualByteOrder(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); - - TEST_ERROR(AF_BAD_FILEHANDLE, - "setting virtual byte order of null file handle", - afSetVirtualByteOrder(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, AF_BYTEORDER_BIGENDIAN)); -} - -TEST(DataOffset, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, "initializing data offset of null file setup", - afInitDataOffset(AF_NULL_FILESETUP, AF_DEFAULT_TRACK, 0)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "getting data offset of null file handle", - afGetDataOffset(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); -} - -TEST(FrameCount, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, "initializing frame count of null file setup", - afInitFrameCount(AF_NULL_FILESETUP, AF_DEFAULT_TRACK, 0)); - - TEST_ERROR(AF_BAD_FILEHANDLE, "getting frame count of null file handle", - afGetFrameCount(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK)); -} - -TEST(AES, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, - "initializing AES channel data of null file setup", - afInitAESChannelData(AF_NULL_FILESETUP, AF_DEFAULT_TRACK)); - - TEST_ERROR(AF_BAD_FILESETUP, - "initializing AES channel data of null file setup", - afInitAESChannelDataTo(AF_NULL_FILESETUP, AF_DEFAULT_TRACK, 1)); - - TEST_ERROR(AF_BAD_FILEHANDLE, - "getting AES channel data of null file handle", - afGetAESChannelData(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, NULL)); - - TEST_ERROR(AF_BAD_FILEHANDLE, - "setting AES channel data of null file handle", - afSetAESChannelData(AF_NULL_FILEHANDLE, AF_DEFAULT_TRACK, NULL)); -} - -TEST(Setup, Null) -{ - TEST_ERROR(AF_BAD_FILESETUP, "freeing null file setup", - afFreeFileSetup(AF_NULL_FILESETUP)); -} - -TEST(File, Bad) -{ - TEST_ERROR(AF_BAD_OPEN, "opening nonexistent file for reading", - afOpenFile("sldkjflsdkfjalksdjflaksdjflsakfdj", "r", NULL)); - - TEST_ERROR(AF_BAD_ACCMODE, "opening file with null access mode", - afOpenFile("", NULL, NULL)); - - TEST_ERROR(AF_BAD_ACCMODE, "opening file with invalid access mode", - afOpenFile("", "x", NULL)); - - TEST_ERROR(AF_BAD_FILEFMT, "initializing file format to invalid value", - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, 91094); - afFreeFileSetup(setup)); - - TEST_ERROR(AF_BAD_SAMPFMT, - "initializing sample format and sample width to invalid values", - AFfilesetup setup = afNewFileSetup(); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, 3992, 3932); - afFreeFileSetup(setup)); -} - -TEST(Query, Bad) -{ - TEST_ERROR(AF_BAD_QUERY, "querying on bad selectors", - afQueryLong(AF_QUERYTYPE_INST, 9999, 9999, 9999, 9999)); - - TEST_ERROR(AF_BAD_QUERY, "querying on bad selectors", - afQueryLong(AF_QUERYTYPE_INSTPARAM, 9999, 9999, 9999, 9999)); - - TEST_ERROR(AF_BAD_QUERY, "querying on bad selectors", - afQueryLong(AF_QUERYTYPE_FILEFMT, 9999, 9999, 9999, 9999)); - - TEST_ERROR(AF_BAD_QUERY, "querying on bad selectors", - afQueryLong(AF_QUERYTYPE_COMPRESSION, 9999, 9999, 9999, 9999)); - - TEST_ERROR(AF_BAD_QUERY, "querying on bad selectors", - afQueryLong(AF_QUERYTYPE_MARK, 9999, 9999, 9999, 9999)); - - TEST_ERROR(AF_BAD_QUERYTYPE, "querying using bad query type", - afQueryLong(9999, 9999, 9999, 9999, 9999)); -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/FLAC.cpp b/tools/audiofile-0.3.6/test/FLAC.cpp deleted file mode 100644 index adb7ffde..00000000 --- a/tools/audiofile-0.3.6/test/FLAC.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013 Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include -#include -#include -#include - -#include "Lossless.h" -#include "TestUtilities.h" - -template -static void testFLAC(int channelCount, int sampleWidth, int frameCount) -{ - testLossless("FLAC", AF_FILE_FLAC, AF_COMPRESSION_FLAC, - channelCount, sampleWidth, frameCount); -} - -TEST(FLAC, FLAC_16) -{ - for (int channelCount=1; channelCount<=8; channelCount++) - testFLAC(channelCount, 16, 82421); -} - -TEST(FLAC, FLAC_24) -{ - for (int channelCount=1; channelCount<=8; channelCount++) - testFLAC(channelCount, 24, 82421); -} - -static void testInvalidSampleFormat(int sampleFormat, int sampleWidth) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("FLAC", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_FLAC); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); - afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_FLAC); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_FALSE(file); - afFreeFileSetup(setup); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -TEST(FLAC, InvalidSampleWidths) -{ - IgnoreErrors ignoreErrors; - - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - { - if (sampleWidth == 16 || sampleWidth == 24) - continue; - - testInvalidSampleFormat(AF_SAMPFMT_TWOSCOMP, sampleWidth); - } -} - -TEST(FLAC, InvalidSampleFormats) -{ - IgnoreErrors ignoreErrors; - - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - testInvalidSampleFormat(AF_SAMPFMT_UNSIGNED, sampleWidth); - - testInvalidSampleFormat(AF_SAMPFMT_FLOAT, 32); - testInvalidSampleFormat(AF_SAMPFMT_DOUBLE, 64); -} - -TEST(FLAC, InvalidChannels) -{ - IgnoreErrors ignoreErrors; - - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("FLAC", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_FLAC); - afInitChannels(setup, AF_DEFAULT_TRACK, 9); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_FLAC); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_FALSE(file); - afFreeFileSetup(setup); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/FloatToInt.cpp b/tools/audiofile-0.3.6/test/FloatToInt.cpp deleted file mode 100644 index bf491b2b..00000000 --- a/tools/audiofile-0.3.6/test/FloatToInt.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/* - Copyright (C) 2010, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -class FloatToIntTest : public testing::Test -{ -protected: - virtual void SetUp() - { - ASSERT_TRUE(createTemporaryFile("FloatToInt", &m_testFileName)); - } - virtual void TearDown() - { - ASSERT_EQ(::unlink(m_testFileName.c_str()), 0); - } - - AFfilehandle createTestFile(int sampleWidth) - { - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFFC); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, sampleWidth); - AFfilehandle file = afOpenFile(m_testFileName.c_str(), "w", setup); - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_FLOAT, 32); - afFreeFileSetup(setup); - return file; - } - AFfilehandle openTestFile(int sampleWidth) - { - AFfilehandle file = afOpenFile(m_testFileName.c_str(), "r", AF_NULL_FILESETUP); - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, sampleWidth); - return file; - } - -private: - std::string m_testFileName; -}; - -static const int8_t kMinInt8 = std::numeric_limits::min(); -static const int8_t kMaxInt8 = std::numeric_limits::max(); - -TEST_F(FloatToIntTest, Int8) -{ - AFfilehandle file = createTestFile(8); - const float data[] = { -1, 0, 1 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(8); - ASSERT_TRUE(file != NULL); - int8_t readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const int8_t expectedData[] = { kMinInt8, 0, kMaxInt8 }; - for (int i=0; i::min(); -static const int16_t kMaxInt16 = std::numeric_limits::max(); - -TEST_F(FloatToIntTest, Int16) -{ - AFfilehandle file = createTestFile(16); - const float data[] = { -1, 0, 1 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(16); - ASSERT_TRUE(file != NULL); - int16_t readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const int16_t expectedData[] = { kMinInt16, 0, kMaxInt16 }; - for (int i=0; i::min(); -static const int32_t kMaxInt32 = std::numeric_limits::max(); - -TEST_F(FloatToIntTest, Int32) -{ - AFfilehandle file = createTestFile(32); - const float data[] = { -1, 0, 1 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(32); - ASSERT_TRUE(file != NULL); - int32_t readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const int32_t expectedData[] = { kMinInt32, 0, kMaxInt32 }; - for (int i=0; i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include -#include -#include - -#include "TestUtilities.h" - -static void testInstrumentParameters(int fileFormat) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("Instrument", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - int instrumentIDs[] = {AF_DEFAULT_INST}; - int numInstruments = sizeof (instrumentIDs) / sizeof (int); - afInitInstIDs(setup, instrumentIDs, numInstruments); - - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_TRUE(file); - - afFreeFileSetup(setup); - - afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE, 50); - afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE, -30); - afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_LOVELOCITY, 22); - afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_HIVELOCITY, 111); - - ASSERT_EQ(0, afCloseFile(file)); - - file = afOpenFile(testFileName.c_str(), "r", NULL); - ASSERT_TRUE(file); - ASSERT_EQ(fileFormat, afGetFileFormat(file, NULL)); - - ASSERT_EQ(1, afGetInstIDs(file, NULL)); - int readInstrumentIDs[1] = {0}; - ASSERT_EQ(1, afGetInstIDs(file, readInstrumentIDs)); - ASSERT_EQ(AF_DEFAULT_INST, readInstrumentIDs[0]); - - EXPECT_EQ(50, - afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE)); - EXPECT_EQ(-30, - afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE)); - EXPECT_EQ(22, - afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_LOVELOCITY)); - EXPECT_EQ(111, - afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_HIVELOCITY)); - - ASSERT_EQ(0, afCloseFile(file)); - ASSERT_EQ(0, ::unlink(testFileName.c_str())); -} - -TEST(Instrument, AIFF) { testInstrumentParameters(AF_FILE_AIFF); } -TEST(Instrument, AIFFC) { testInstrumentParameters(AF_FILE_AIFFC); } - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/IntToFloat.cpp b/tools/audiofile-0.3.6/test/IntToFloat.cpp deleted file mode 100644 index 1d91b588..00000000 --- a/tools/audiofile-0.3.6/test/IntToFloat.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/* - Copyright (C) 2010, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -class IntToFloatTest : public testing::Test -{ -protected: - virtual void SetUp() - { - ASSERT_TRUE(createTemporaryFile("IntToFloat", &m_testFileName)); - } - virtual void TearDown() - { - ASSERT_EQ(::unlink(m_testFileName.c_str()), 0); - } - - static char kTestFileName[]; - - AFfilehandle createTestFile(int sampleWidth) - { - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFFC); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, sampleWidth); - AFfilehandle file = afOpenFile(m_testFileName.c_str(), "w", setup); - afFreeFileSetup(setup); - return file; - } - AFfilehandle openTestFile() - { - AFfilehandle file = afOpenFile(m_testFileName.c_str(), "r", AF_NULL_FILESETUP); - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_FLOAT, 32); - return file; - } - -private: - std::string m_testFileName; -}; - -static const int8_t kMinInt8 = std::numeric_limits::min(); -static const int8_t kMaxInt8 = std::numeric_limits::max(); - -TEST_F(IntToFloatTest, Int8) -{ - AFfilehandle file = createTestFile(8); - const int8_t data[] = { kMinInt8, 0, kMaxInt8 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(); - ASSERT_TRUE(file != NULL); - float readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const float expectedData[] = { -1, 0, 1 - 1.0 / (1<<7) }; - for (int i=0; i::min(); -static const int16_t kMaxInt16 = std::numeric_limits::max(); - -TEST_F(IntToFloatTest, Int16) -{ - AFfilehandle file = createTestFile(16); - const int16_t data[] = { kMinInt16, 0, kMaxInt16 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(); - ASSERT_TRUE(file != NULL); - float readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const float expectedData[] = { -1, 0, 1 - 1.0 / (1<<15) }; - for (int i=0; i::min(); -static const int32_t kMaxInt32 = std::numeric_limits::max(); - -TEST_F(IntToFloatTest, Int32) -{ - AFfilehandle file = createTestFile(32); - const int32_t data[] = { kMinInt32, 0, kMaxInt32 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(); - ASSERT_TRUE(file != NULL); - float readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const float expectedData[] = { -1, 0, 1 - 1.0 / (1<<31) }; - for (int i=0; i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include "config.h" - -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -static const int kNativeByteOrder = -#ifdef WORDS_BIGENDIAN - AF_BYTEORDER_BIGENDIAN; -#else - AF_BYTEORDER_LITTLEENDIAN; -#endif - -static const int kNonNativeByteOrder = -#if WORDS_BIGENDIAN - AF_BYTEORDER_LITTLEENDIAN; -#else - AF_BYTEORDER_BIGENDIAN; -#endif - -static void runTest(int fileFormat, int compressionFormat, int channelCount = 1, - int sampleFormat = AF_SAMPFMT_TWOSCOMP, int sampleWidth = 16, - int byteOrder = kNativeByteOrder) -{ - IgnoreErrors ignoreErrors; - - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("InvalidCompressionFormat", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); - afInitChannels(setup, AF_DEFAULT_TRACK, channelCount); - afInitCompression(setup, AF_DEFAULT_TRACK, compressionFormat); - afInitByteOrder(setup, AF_DEFAULT_TRACK, byteOrder); - ASSERT_TRUE(afOpenFile(testFileName.c_str(), "w", setup) == AF_NULL_FILEHANDLE); - afFreeFileSetup(setup); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -TEST(AIFF, mulaw) { runTest(AF_FILE_AIFF, AF_COMPRESSION_G711_ULAW); } -TEST(AIFF, Alaw) { runTest(AF_FILE_AIFF, AF_COMPRESSION_G711_ALAW); } -TEST(AIFF, IMA) { runTest(AF_FILE_AIFF, AF_COMPRESSION_IMA); } -TEST(AIFF, MSADPCM) { runTest(AF_FILE_AIFF, AF_COMPRESSION_MS_ADPCM); } - -TEST(AIFFC, MSADPCM) { runTest(AF_FILE_AIFFC, AF_COMPRESSION_MS_ADPCM); } - -TEST(NeXT, IMA) { runTest(AF_FILE_NEXTSND, AF_COMPRESSION_IMA); } -TEST(NeXT, MSADPCM) { runTest(AF_FILE_NEXTSND, AF_COMPRESSION_MS_ADPCM); } - -TEST(IRCAM, IMA) { runTest(AF_FILE_BICSF, AF_COMPRESSION_IMA); } -TEST(IRCAM, MSADPCM) { runTest(AF_FILE_BICSF, AF_COMPRESSION_MS_ADPCM); } - -TEST(AVR, mulaw) { runTest(AF_FILE_AVR, AF_COMPRESSION_G711_ULAW); } -TEST(AVR, Alaw) { runTest(AF_FILE_AVR, AF_COMPRESSION_G711_ALAW); } -TEST(AVR, IMA) { runTest(AF_FILE_AVR, AF_COMPRESSION_IMA); } -TEST(AVR, MSADPCM) { runTest(AF_FILE_AVR, AF_COMPRESSION_MS_ADPCM); } - -TEST(IFF, mulaw) { runTest(AF_FILE_IFF_8SVX, AF_COMPRESSION_G711_ULAW); } -TEST(IFF, Alaw) { runTest(AF_FILE_IFF_8SVX, AF_COMPRESSION_G711_ALAW); } -TEST(IFF, IMA) { runTest(AF_FILE_IFF_8SVX, AF_COMPRESSION_IMA); } -TEST(IFF, MSADPCM) { runTest(AF_FILE_IFF_8SVX, AF_COMPRESSION_MS_ADPCM); } - -TEST(SampleVision, mulaw) { runTest(AF_FILE_SAMPLEVISION, AF_COMPRESSION_G711_ULAW); } -TEST(SampleVision, Alaw) { runTest(AF_FILE_SAMPLEVISION, AF_COMPRESSION_G711_ALAW); } -TEST(SampleVision, IMA) { runTest(AF_FILE_SAMPLEVISION, AF_COMPRESSION_IMA); } -TEST(SampleVision, MSADPCM) { runTest(AF_FILE_SAMPLEVISION, AF_COMPRESSION_MS_ADPCM); } - -TEST(VOC, IMA) { runTest(AF_FILE_VOC, AF_COMPRESSION_IMA); } -TEST(VOC, MSADPCM) { runTest(AF_FILE_VOC, AF_COMPRESSION_MS_ADPCM); } - -TEST(NIST, IMA) { runTest(AF_FILE_NIST_SPHERE, AF_COMPRESSION_IMA); } -TEST(NIST, MSADPCM) { runTest(AF_FILE_NIST_SPHERE, AF_COMPRESSION_MS_ADPCM); } - -TEST(CAF, MSADPCM) { runTest(AF_FILE_CAF, AF_COMPRESSION_MS_ADPCM); } - -/* - Test that opening an audio file with an invalid number of channels - results in failure. -*/ - -TEST(AIFFC, IMA) { runTest(AF_FILE_AIFFC, AF_COMPRESSION_IMA, 3); } - -TEST(WAVE, IMA) { runTest(AF_FILE_WAVE, AF_COMPRESSION_IMA, 3); } -TEST(WAVE, MSADPCM) { runTest(AF_FILE_WAVE, AF_COMPRESSION_MS_ADPCM, 3); } - -TEST(CAF, IMA) { runTest(AF_FILE_CAF, AF_COMPRESSION_IMA, 3); } - -/* - Test that opening an audio file with an invalid sample format results - in failure. -*/ - -TEST(Mulaw, Signed) -{ - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - { - if (sampleWidth==16) - continue; - runTest(AF_FILE_AIFFC, AF_COMPRESSION_G711_ULAW, 1, AF_SAMPFMT_TWOSCOMP, sampleWidth); - } -} - -TEST(Mulaw, Unsigned) -{ - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - runTest(AF_FILE_AIFFC, AF_COMPRESSION_G711_ULAW, 1, AF_SAMPFMT_UNSIGNED, sampleWidth); -} - -TEST(Mulaw, Float) -{ - runTest(AF_FILE_AIFFC, AF_COMPRESSION_G711_ULAW, 1, AF_SAMPFMT_FLOAT, 32); -} - -TEST(Mulaw, Double) -{ - runTest(AF_FILE_AIFFC, AF_COMPRESSION_G711_ULAW, 1, AF_SAMPFMT_DOUBLE, 64); -} - -TEST(IMA, Signed) -{ - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - { - if (sampleWidth==16) - continue; - runTest(AF_FILE_AIFFC, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_TWOSCOMP, sampleWidth); - runTest(AF_FILE_WAVE, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_TWOSCOMP, sampleWidth); - runTest(AF_FILE_CAF, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_TWOSCOMP, sampleWidth); - } -} - -TEST(IMA, Unsigned) -{ - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - { - runTest(AF_FILE_AIFFC, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_UNSIGNED, sampleWidth); - runTest(AF_FILE_WAVE, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_UNSIGNED, sampleWidth); - runTest(AF_FILE_CAF, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_UNSIGNED, sampleWidth); - } -} - -TEST(IMA, Float) -{ - runTest(AF_FILE_AIFFC, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_FLOAT, 32); - runTest(AF_FILE_WAVE, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_FLOAT, 32); - runTest(AF_FILE_CAF, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_FLOAT, 32); -} - -TEST(IMA, Double) -{ - runTest(AF_FILE_AIFFC, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_DOUBLE, 64); - runTest(AF_FILE_WAVE, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_DOUBLE, 64); - runTest(AF_FILE_CAF, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_DOUBLE, 64); -} - -TEST(MSADPCM, Signed) -{ - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - if (sampleWidth!=16) - runTest(AF_FILE_WAVE, AF_COMPRESSION_MS_ADPCM, 1, AF_SAMPFMT_TWOSCOMP, sampleWidth); -} - -TEST(MSADPCM, Unsigned) -{ - for (int sampleWidth=1; sampleWidth<=32; sampleWidth++) - runTest(AF_FILE_WAVE, AF_COMPRESSION_MS_ADPCM, 1, AF_SAMPFMT_UNSIGNED, sampleWidth); -} - -TEST(MSADPCM, Float) -{ - runTest(AF_FILE_WAVE, AF_COMPRESSION_MS_ADPCM, 1, AF_SAMPFMT_FLOAT, 32); -} - -TEST(MSADPCM, Double) -{ - runTest(AF_FILE_WAVE, AF_COMPRESSION_MS_ADPCM, 1, AF_SAMPFMT_DOUBLE, 64); -} - -TEST(Mulaw, InvalidByteOrder) -{ - runTest(AF_FILE_WAVE, AF_COMPRESSION_G711_ULAW, 1, AF_SAMPFMT_TWOSCOMP, 16, - kNonNativeByteOrder); -} - -TEST(Alaw, InvalidByteOrder) -{ - runTest(AF_FILE_WAVE, AF_COMPRESSION_G711_ALAW, 1, AF_SAMPFMT_TWOSCOMP, 16, - kNonNativeByteOrder); -} - -TEST(IMA, InvalidByteOrder) -{ - runTest(AF_FILE_WAVE, AF_COMPRESSION_IMA, 1, AF_SAMPFMT_TWOSCOMP, 16, - kNonNativeByteOrder); -} - -TEST(MSADPCM, InvalidByteOrder) -{ - runTest(AF_FILE_WAVE, AF_COMPRESSION_MS_ADPCM, 1, AF_SAMPFMT_TWOSCOMP, 16, - kNonNativeByteOrder); -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/InvalidSampleFormat.cpp b/tools/audiofile-0.3.6/test/InvalidSampleFormat.cpp deleted file mode 100644 index 2128ec2f..00000000 --- a/tools/audiofile-0.3.6/test/InvalidSampleFormat.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - Copyright (C) 2012, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -void runTest(int fileFormat, int sampleFormat, int sampleWidth) -{ - IgnoreErrors ignoreErrors; - - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("InvalidSampleFormat", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - ASSERT_TRUE(afOpenFile(testFileName.c_str(), "w", setup) == AF_NULL_FILEHANDLE); - afFreeFileSetup(setup); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -void testInt8(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_TWOSCOMP, 8); -} - -void testUInt8(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_UNSIGNED, 8); -} - -void testInt16(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_TWOSCOMP, 16); -} - -void testUInt16(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_UNSIGNED, 16); -} - -void testInt24(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_TWOSCOMP, 24); -} - -void testUInt24(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_UNSIGNED, 24); -} - -void testInt32(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_TWOSCOMP, 32); -} - -void testUInt32(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_UNSIGNED, 32); -} - -void testFloat32(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_FLOAT, 32); -} - -void testFloat64(int fileFormat) -{ - runTest(fileFormat, AF_SAMPFMT_DOUBLE, 64); -} - -TEST(AIFF, Float) { testFloat32(AF_FILE_AIFF); } -TEST(AIFF, Double) { testFloat64(AF_FILE_AIFF); } - -TEST(IFF, Int16) { testInt16(AF_FILE_IFF_8SVX); } -TEST(IFF, Int24) { testInt24(AF_FILE_IFF_8SVX); } -TEST(IFF, Int32) { testInt32(AF_FILE_IFF_8SVX); } -TEST(IFF, Float) { testFloat32(AF_FILE_IFF_8SVX); } -TEST(IFF, Double) { testFloat64(AF_FILE_IFF_8SVX); } - -TEST(AVR, Int24) { testInt24(AF_FILE_AVR); } -TEST(AVR, Int32) { testInt32(AF_FILE_AVR); } -TEST(AVR, Float) { testFloat32(AF_FILE_AVR); } -TEST(AVR, Double) { testFloat64(AF_FILE_AVR); } - -TEST(SampleVision, Int8) { testInt8(AF_FILE_SAMPLEVISION); } -TEST(SampleVision, Int24) { testInt24(AF_FILE_SAMPLEVISION); } -TEST(SampleVision, Int32) { testInt32(AF_FILE_SAMPLEVISION); } -TEST(SampleVision, Float) { testFloat32(AF_FILE_SAMPLEVISION); } -TEST(SampleVision, Double) { testFloat64(AF_FILE_SAMPLEVISION); } - -TEST(VOC, Int24) { testInt24(AF_FILE_VOC); } -TEST(VOC, Int32) { testInt32(AF_FILE_VOC); } -TEST(VOC, Float) { testFloat32(AF_FILE_VOC); } -TEST(VOC, Double) { testFloat64(AF_FILE_VOC); } - -TEST(NIST, Int24) { testInt24(AF_FILE_NIST_SPHERE); } -TEST(NIST, Int32) { testInt32(AF_FILE_NIST_SPHERE); } -TEST(NIST, Float) { testFloat32(AF_FILE_NIST_SPHERE); } -TEST(NIST, Double) { testFloat64(AF_FILE_NIST_SPHERE); } - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/Large.cpp b/tools/audiofile-0.3.6/test/Large.cpp deleted file mode 100644 index 652f0234..00000000 --- a/tools/audiofile-0.3.6/test/Large.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/* - Copyright (C) 2010-2011, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - This program tests writing and reading audio files with more - than 2^24 frames. - - This program serves as a regression test for a bug in which - writing certain audio file formats with more than 2^24 frames - would produce files with incorrect sizes. -*/ - -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -void testLargeFile(int fileFormat) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("ChannelMatrix", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - afFreeFileSetup(setup); - ASSERT_TRUE(file) << "Could not open file for writing"; - - const int bufferFrameCount = 32768; - int16_t *data = new int16_t[bufferFrameCount]; - const AFframecount frameCount = 0x1000007; - AFframecount framesWritten = 0; - while (framesWritten < frameCount) - { - AFframecount framesToWrite = bufferFrameCount; - if (framesToWrite > frameCount - framesWritten) - framesToWrite = frameCount - framesWritten; - int dataValue = framesWritten % 32749; - for (int i=0; i frameCount - framesRead) - framesToRead = frameCount - framesRead; - afReadFrames(file, AF_DEFAULT_TRACK, data, framesToRead); - bool valid = true; - int dataValue = framesRead % 32749; - for (int i=0; i -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -TEST(Loop, AIFF) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("Loop", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFF); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - - int markerIDs[] = { 1, 2, 3, 4 }; - const int numMarkers = sizeof (markerIDs) / sizeof (int); - const char * const markerNames[numMarkers] = - { - "sustain loop start", - "sustain loop end", - "release loop start", - "release loop end" - }; - const int markerPositions[] = { 0, 2, 4, 5 }; - afInitMarkIDs(setup, AF_DEFAULT_TRACK, markerIDs, 4); - for (int i=0; i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#ifndef Lossless_h -#define Lossless_h - -#include -#include - -#include -#include - -#include "TestUtilities.h" - -struct NaturalGenerator -{ - NaturalGenerator() : m_n(0) - { - } - int32_t operator() () { return ++m_n; } - -private: - int32_t m_n; -}; - -struct LinearCongruentialGenerator -{ - LinearCongruentialGenerator() : m_n(0) - { - } - int32_t operator() () - { - m_n = 1664525 * m_n + 1013904223; - return static_cast(m_n); - } - -private: - uint32_t m_n; -}; - -static inline int32_t trim(int32_t n, int sampleWidth) -{ - unsigned shift = (((sampleWidth + 7) >> 3) << 3) - sampleWidth; - unsigned maskShift = 32 - sampleWidth; - n <<= shift; - return (n << maskShift) >> maskShift; -} - -template -static void testLossless(const char *prefix, int fileFormat, - int compressionFormat, int channelCount, int sampleWidth, int frameCount) -{ - SCOPED_TRACE(channelCount); - std::string testFileName; - ASSERT_TRUE(createTemporaryFile(prefix, &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitChannels(setup, AF_DEFAULT_TRACK, channelCount); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, sampleWidth); - afInitCompression(setup, AF_DEFAULT_TRACK, compressionFormat); - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_TRUE(file); - afFreeFileSetup(setup); - - Generator g; - SampleType *data = new SampleType[frameCount * channelCount]; - for (int i=0; i -static void testLossless(const char *prefix, int fileFormat, - int compressionFormat, int channelCount, int sampleWidth, int frameCount) -{ - { - SCOPED_TRACE("Sequential"); - testLossless(prefix, fileFormat, compressionFormat, channelCount, sampleWidth, frameCount); - } - { - SCOPED_TRACE("Pseudo-random"); - testLossless(prefix, fileFormat, compressionFormat, channelCount, sampleWidth, frameCount); - } -} - -#endif diff --git a/tools/audiofile-0.3.6/test/Makefile b/tools/audiofile-0.3.6/test/Makefile deleted file mode 100644 index 03042e62..00000000 --- a/tools/audiofile-0.3.6/test/Makefile +++ /dev/null @@ -1,1064 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# test/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/audiofile -pkgincludedir = $(includedir)/audiofile -pkglibdir = $(libdir)/audiofile -pkglibexecdir = $(libexecdir)/audiofile -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-w64-mingw32 -host_triplet = x86_64-w64-mingw32 -TESTS = ADPCM$(EXEEXT) AES$(EXEEXT) ALAC$(EXEEXT) \ - ChannelMatrix$(EXEEXT) Error$(EXEEXT) FloatToInt$(EXEEXT) \ - Instrument$(EXEEXT) IntToFloat$(EXEEXT) \ - InvalidCompressionFormat$(EXEEXT) InvalidSampleFormat$(EXEEXT) \ - Large$(EXEEXT) Loop$(EXEEXT) Marker$(EXEEXT) \ - Miscellaneous$(EXEEXT) NeXT$(EXEEXT) PCMData$(EXEEXT) \ - PCMMapping$(EXEEXT) Pipe$(EXEEXT) Query$(EXEEXT) \ - SampleFormat$(EXEEXT) Seek$(EXEEXT) Sign$(EXEEXT) \ - VirtualFile$(EXEEXT) floatto24$(EXEEXT) query2$(EXEEXT) \ - sixteen-to-eight$(EXEEXT) testchannelmatrix$(EXEEXT) \ - testdouble$(EXEEXT) testfloat$(EXEEXT) testmarkers$(EXEEXT) \ - twentyfour$(EXEEXT) twentyfour2$(EXEEXT) writealaw$(EXEEXT) \ - writeraw$(EXEEXT) writeulaw$(EXEEXT) $(am__EXEEXT_1) -#am__append_1 = FLAC -check_PROGRAMS = $(am__EXEEXT_2) instparamtest$(EXEEXT) \ - instparamwrite$(EXEEXT) printmarkers$(EXEEXT) \ - testaupv$(EXEEXT) -subdir = test -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -#am__EXEEXT_1 = FLAC$(EXEEXT) -am__EXEEXT_2 = ADPCM$(EXEEXT) AES$(EXEEXT) ALAC$(EXEEXT) \ - ChannelMatrix$(EXEEXT) Error$(EXEEXT) FloatToInt$(EXEEXT) \ - Instrument$(EXEEXT) IntToFloat$(EXEEXT) \ - InvalidCompressionFormat$(EXEEXT) InvalidSampleFormat$(EXEEXT) \ - Large$(EXEEXT) Loop$(EXEEXT) Marker$(EXEEXT) \ - Miscellaneous$(EXEEXT) NeXT$(EXEEXT) PCMData$(EXEEXT) \ - PCMMapping$(EXEEXT) Pipe$(EXEEXT) Query$(EXEEXT) \ - SampleFormat$(EXEEXT) Seek$(EXEEXT) Sign$(EXEEXT) \ - VirtualFile$(EXEEXT) floatto24$(EXEEXT) query2$(EXEEXT) \ - sixteen-to-eight$(EXEEXT) testchannelmatrix$(EXEEXT) \ - testdouble$(EXEEXT) testfloat$(EXEEXT) testmarkers$(EXEEXT) \ - twentyfour$(EXEEXT) twentyfour2$(EXEEXT) writealaw$(EXEEXT) \ - writeraw$(EXEEXT) writeulaw$(EXEEXT) $(am__EXEEXT_1) -am_ADPCM_OBJECTS = ADPCM.$(OBJEXT) TestUtilities.$(OBJEXT) -ADPCM_OBJECTS = $(am_ADPCM_OBJECTS) -ADPCM_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_AES_OBJECTS = AES.$(OBJEXT) TestUtilities.$(OBJEXT) -AES_OBJECTS = $(am_AES_OBJECTS) -AES_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_ALAC_OBJECTS = ALAC.$(OBJEXT) TestUtilities.$(OBJEXT) -ALAC_OBJECTS = $(am_ALAC_OBJECTS) -ALAC_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_ChannelMatrix_OBJECTS = ChannelMatrix.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -ChannelMatrix_OBJECTS = $(am_ChannelMatrix_OBJECTS) -ChannelMatrix_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Error_OBJECTS = Error.$(OBJEXT) TestUtilities.$(OBJEXT) -Error_OBJECTS = $(am_Error_OBJECTS) -Error_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_FLAC_OBJECTS = FLAC.$(OBJEXT) TestUtilities.$(OBJEXT) -FLAC_OBJECTS = $(am_FLAC_OBJECTS) -FLAC_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_FloatToInt_OBJECTS = FloatToInt.$(OBJEXT) TestUtilities.$(OBJEXT) -FloatToInt_OBJECTS = $(am_FloatToInt_OBJECTS) -FloatToInt_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Instrument_OBJECTS = Instrument.$(OBJEXT) TestUtilities.$(OBJEXT) -Instrument_OBJECTS = $(am_Instrument_OBJECTS) -Instrument_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_IntToFloat_OBJECTS = IntToFloat.$(OBJEXT) TestUtilities.$(OBJEXT) -IntToFloat_OBJECTS = $(am_IntToFloat_OBJECTS) -IntToFloat_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_InvalidCompressionFormat_OBJECTS = \ - InvalidCompressionFormat.$(OBJEXT) TestUtilities.$(OBJEXT) -InvalidCompressionFormat_OBJECTS = \ - $(am_InvalidCompressionFormat_OBJECTS) -InvalidCompressionFormat_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_InvalidSampleFormat_OBJECTS = InvalidSampleFormat.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -InvalidSampleFormat_OBJECTS = $(am_InvalidSampleFormat_OBJECTS) -InvalidSampleFormat_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Large_OBJECTS = Large.$(OBJEXT) TestUtilities.$(OBJEXT) -Large_OBJECTS = $(am_Large_OBJECTS) -Large_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Loop_OBJECTS = Loop.$(OBJEXT) TestUtilities.$(OBJEXT) -Loop_OBJECTS = $(am_Loop_OBJECTS) -Loop_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Marker_OBJECTS = Marker.$(OBJEXT) TestUtilities.$(OBJEXT) -Marker_OBJECTS = $(am_Marker_OBJECTS) -Marker_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Miscellaneous_OBJECTS = Miscellaneous.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -Miscellaneous_OBJECTS = $(am_Miscellaneous_OBJECTS) -Miscellaneous_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_NeXT_OBJECTS = NeXT.$(OBJEXT) TestUtilities.$(OBJEXT) -NeXT_OBJECTS = $(am_NeXT_OBJECTS) -NeXT_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_PCMData_OBJECTS = PCMData.$(OBJEXT) TestUtilities.$(OBJEXT) -PCMData_OBJECTS = $(am_PCMData_OBJECTS) -PCMData_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_PCMMapping_OBJECTS = PCMMapping.$(OBJEXT) TestUtilities.$(OBJEXT) -PCMMapping_OBJECTS = $(am_PCMMapping_OBJECTS) -PCMMapping_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Pipe_OBJECTS = Pipe.$(OBJEXT) TestUtilities.$(OBJEXT) -Pipe_OBJECTS = $(am_Pipe_OBJECTS) -Pipe_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Query_OBJECTS = Query.$(OBJEXT) TestUtilities.$(OBJEXT) -Query_OBJECTS = $(am_Query_OBJECTS) -Query_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_SampleFormat_OBJECTS = SampleFormat.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -SampleFormat_OBJECTS = $(am_SampleFormat_OBJECTS) -SampleFormat_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Seek_OBJECTS = Seek.$(OBJEXT) TestUtilities.$(OBJEXT) -Seek_OBJECTS = $(am_Seek_OBJECTS) -Seek_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Sign_OBJECTS = Sign.$(OBJEXT) TestUtilities.$(OBJEXT) -Sign_OBJECTS = $(am_Sign_OBJECTS) -Sign_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_VirtualFile_OBJECTS = VirtualFile.$(OBJEXT) TestUtilities.$(OBJEXT) -VirtualFile_OBJECTS = $(am_VirtualFile_OBJECTS) -VirtualFile_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_floatto24_OBJECTS = floatto24.$(OBJEXT) TestUtilities.$(OBJEXT) -floatto24_OBJECTS = $(am_floatto24_OBJECTS) -floatto24_LDADD = $(LDADD) -floatto24_DEPENDENCIES = $(LIBAUDIOFILE) -instparamtest_SOURCES = instparamtest.c -instparamtest_OBJECTS = instparamtest.$(OBJEXT) -instparamtest_LDADD = $(LDADD) -instparamtest_DEPENDENCIES = $(LIBAUDIOFILE) -instparamwrite_SOURCES = instparamwrite.c -instparamwrite_OBJECTS = instparamwrite.$(OBJEXT) -instparamwrite_LDADD = $(LDADD) -instparamwrite_DEPENDENCIES = $(LIBAUDIOFILE) -am_printmarkers_OBJECTS = printmarkers.$(OBJEXT) -printmarkers_OBJECTS = $(am_printmarkers_OBJECTS) -printmarkers_DEPENDENCIES = $(LIBAUDIOFILE) -query2_SOURCES = query2.c -query2_OBJECTS = query2.$(OBJEXT) -query2_LDADD = $(LDADD) -query2_DEPENDENCIES = $(LIBAUDIOFILE) -am_sixteen_to_eight_OBJECTS = sixteen-to-eight.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -sixteen_to_eight_OBJECTS = $(am_sixteen_to_eight_OBJECTS) -sixteen_to_eight_LDADD = $(LDADD) -sixteen_to_eight_DEPENDENCIES = $(LIBAUDIOFILE) -testaupv_SOURCES = testaupv.c -testaupv_OBJECTS = testaupv.$(OBJEXT) -testaupv_LDADD = $(LDADD) -testaupv_DEPENDENCIES = $(LIBAUDIOFILE) -am_testchannelmatrix_OBJECTS = testchannelmatrix.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -testchannelmatrix_OBJECTS = $(am_testchannelmatrix_OBJECTS) -testchannelmatrix_LDADD = $(LDADD) -testchannelmatrix_DEPENDENCIES = $(LIBAUDIOFILE) -am_testdouble_OBJECTS = testdouble.$(OBJEXT) TestUtilities.$(OBJEXT) -testdouble_OBJECTS = $(am_testdouble_OBJECTS) -testdouble_LDADD = $(LDADD) -testdouble_DEPENDENCIES = $(LIBAUDIOFILE) -am_testfloat_OBJECTS = testfloat.$(OBJEXT) TestUtilities.$(OBJEXT) -testfloat_OBJECTS = $(am_testfloat_OBJECTS) -testfloat_LDADD = $(LDADD) -testfloat_DEPENDENCIES = $(LIBAUDIOFILE) -am_testmarkers_OBJECTS = testmarkers.$(OBJEXT) TestUtilities.$(OBJEXT) -testmarkers_OBJECTS = $(am_testmarkers_OBJECTS) -testmarkers_LDADD = $(LDADD) -testmarkers_DEPENDENCIES = $(LIBAUDIOFILE) -am_twentyfour_OBJECTS = twentyfour.$(OBJEXT) TestUtilities.$(OBJEXT) -twentyfour_OBJECTS = $(am_twentyfour_OBJECTS) -twentyfour_LDADD = $(LDADD) -twentyfour_DEPENDENCIES = $(LIBAUDIOFILE) -am_twentyfour2_OBJECTS = twentyfour2.$(OBJEXT) TestUtilities.$(OBJEXT) -twentyfour2_OBJECTS = $(am_twentyfour2_OBJECTS) -twentyfour2_LDADD = $(LDADD) -twentyfour2_DEPENDENCIES = $(LIBAUDIOFILE) -am_writealaw_OBJECTS = writealaw.$(OBJEXT) TestUtilities.$(OBJEXT) -writealaw_OBJECTS = $(am_writealaw_OBJECTS) -writealaw_LDADD = $(LDADD) -writealaw_DEPENDENCIES = $(LIBAUDIOFILE) -am_writeraw_OBJECTS = writeraw.$(OBJEXT) TestUtilities.$(OBJEXT) -writeraw_OBJECTS = $(am_writeraw_OBJECTS) -writeraw_LDADD = $(LDADD) -writeraw_DEPENDENCIES = $(LIBAUDIOFILE) -am_writeulaw_OBJECTS = writeulaw.$(OBJEXT) TestUtilities.$(OBJEXT) -writeulaw_OBJECTS = $(am_writeulaw_OBJECTS) -writeulaw_LDADD = $(LDADD) -writeulaw_DEPENDENCIES = $(LIBAUDIOFILE) -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(ADPCM_SOURCES) $(AES_SOURCES) $(ALAC_SOURCES) \ - $(ChannelMatrix_SOURCES) $(Error_SOURCES) $(FLAC_SOURCES) \ - $(FloatToInt_SOURCES) $(Instrument_SOURCES) \ - $(IntToFloat_SOURCES) $(InvalidCompressionFormat_SOURCES) \ - $(InvalidSampleFormat_SOURCES) $(Large_SOURCES) \ - $(Loop_SOURCES) $(Marker_SOURCES) $(Miscellaneous_SOURCES) \ - $(NeXT_SOURCES) $(PCMData_SOURCES) $(PCMMapping_SOURCES) \ - $(Pipe_SOURCES) $(Query_SOURCES) $(SampleFormat_SOURCES) \ - $(Seek_SOURCES) $(Sign_SOURCES) $(VirtualFile_SOURCES) \ - $(floatto24_SOURCES) instparamtest.c instparamwrite.c \ - $(printmarkers_SOURCES) query2.c $(sixteen_to_eight_SOURCES) \ - testaupv.c $(testchannelmatrix_SOURCES) $(testdouble_SOURCES) \ - $(testfloat_SOURCES) $(testmarkers_SOURCES) \ - $(twentyfour_SOURCES) $(twentyfour2_SOURCES) \ - $(writealaw_SOURCES) $(writeraw_SOURCES) $(writeulaw_SOURCES) -DIST_SOURCES = $(ADPCM_SOURCES) $(AES_SOURCES) $(ALAC_SOURCES) \ - $(ChannelMatrix_SOURCES) $(Error_SOURCES) $(FLAC_SOURCES) \ - $(FloatToInt_SOURCES) $(Instrument_SOURCES) \ - $(IntToFloat_SOURCES) $(InvalidCompressionFormat_SOURCES) \ - $(InvalidSampleFormat_SOURCES) $(Large_SOURCES) \ - $(Loop_SOURCES) $(Marker_SOURCES) $(Miscellaneous_SOURCES) \ - $(NeXT_SOURCES) $(PCMData_SOURCES) $(PCMMapping_SOURCES) \ - $(Pipe_SOURCES) $(Query_SOURCES) $(SampleFormat_SOURCES) \ - $(Seek_SOURCES) $(Sign_SOURCES) $(VirtualFile_SOURCES) \ - $(floatto24_SOURCES) instparamtest.c instparamwrite.c \ - $(printmarkers_SOURCES) query2.c $(sixteen_to_eight_SOURCES) \ - testaupv.c $(testchannelmatrix_SOURCES) $(testdouble_SOURCES) \ - $(testfloat_SOURCES) $(testmarkers_SOURCES) \ - $(twentyfour_SOURCES) $(twentyfour2_SOURCES) \ - $(writealaw_SOURCES) $(writeraw_SOURCES) $(writeulaw_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = -ACLOCAL = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run aclocal-1.11 -AMTAR = $${TAR-tar} -AR = ar -ASCIIDOC = -AUDIOFILE_VERSION = 0.3.6 -AUDIOFILE_VERSION_INFO = 1:0:0 -AUTOCONF = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoconf -AUTOHEADER = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run autoheader -AUTOMAKE = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run automake-1.11 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -COVERAGE_CFLAGS = -COVERAGE_LIBS = -CPP = gcc -E -CPPFLAGS = -CXX = g++ -CXXCPP = g++ -E -CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 -CYGPATH_W = cygpath -w -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DLLTOOL = dlltool -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /usr/bin/grep -E -EXEEXT = .exe -FGREP = /usr/bin/grep -F -FLAC_CFLAGS = -FLAC_LIBS = -GENHTML = -GREP = /usr/bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LCOV = -LD = I:/Development/MSYS2/mingw64/x86_64-w64-mingw32/bin/ld.exe -LDFLAGS = -LIBOBJS = -LIBS = -lstdc++ -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = cp -pR -LTLIBOBJS = -LT_SYS_LIBRARY_PATH = -MAKEINFO = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/missing --run makeinfo -MANIFEST_TOOL = : -MKDIR_P = /usr/bin/mkdir -p -NM = /mingw64/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OTOOL = -OTOOL64 = -PACKAGE = audiofile -PACKAGE_BUGREPORT = -PACKAGE_NAME = audiofile -PACKAGE_STRING = audiofile 0.3.6 -PACKAGE_TARNAME = audiofile -PACKAGE_URL = -PACKAGE_VERSION = 0.3.6 -PATH_SEPARATOR = : -PKG_CONFIG = /mingw64/bin/pkg-config -PKG_CONFIG_LIBDIR = -PKG_CONFIG_PATH = /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig -RANLIB = ranlib -SED = /usr/bin/sed -SET_MAKE = -SHELL = /bin/sh -STRIP = strip -TEST_BIN = -VALGRIND = -VERSION = 0.3.6 -WERROR_CFLAGS = -abs_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6/test -abs_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6/test -abs_top_builddir = /i/Development/sm64pc/tools/audiofile-0.3.6 -abs_top_srcdir = /i/Development/sm64pc/tools/audiofile-0.3.6 -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -bindir = ${exec_prefix}/bin -build = x86_64-w64-mingw32 -build_alias = x86_64-w64-mingw32 -build_cpu = x86_64 -build_os = mingw32 -build_vendor = w64 -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-w64-mingw32 -host_alias = -host_cpu = x86_64 -host_os = mingw32 -host_vendor = w64 -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /i/Development/sm64pc/tools/audiofile-0.3.6/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /usr/bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /mingw64 -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -INCLUDES = -I$(top_srcdir)/libaudiofile -I$(top_srcdir) -#VALGRIND_FLAGS = --quiet --leak-check=full --show-reachable=yes --error-exitcode=1 -#TESTS_ENVIRONMENT = $(top_builddir)/libtool --mode=execute $(VALGRIND) $(VALGRIND_FLAGS) -LIBAUDIOFILE = $(top_builddir)/libaudiofile/libaudiofile.la -LDADD = $(LIBAUDIOFILE) -DEPENDENCIES = $(LIBAUDIOFILE) -LIBGTEST = ../gtest/libgtest.la -ADPCM_SOURCES = ADPCM.cpp TestUtilities.cpp TestUtilities.h -ADPCM_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -AES_SOURCES = AES.cpp TestUtilities.cpp TestUtilities.h -AES_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -ALAC_SOURCES = ALAC.cpp Lossless.h TestUtilities.cpp TestUtilities.h -ALAC_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -ChannelMatrix_SOURCES = ChannelMatrix.cpp TestUtilities.cpp TestUtilities.h -ChannelMatrix_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Error_SOURCES = Error.cpp TestUtilities.cpp TestUtilities.h -Error_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -FLAC_SOURCES = FLAC.cpp Lossless.h TestUtilities.cpp TestUtilities.h -FLAC_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -FloatToInt_SOURCES = FloatToInt.cpp TestUtilities.cpp TestUtilities.h -FloatToInt_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Instrument_SOURCES = Instrument.cpp TestUtilities.cpp TestUtilities.h -Instrument_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -IntToFloat_SOURCES = IntToFloat.cpp TestUtilities.cpp TestUtilities.h -IntToFloat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -InvalidCompressionFormat_SOURCES = InvalidCompressionFormat.cpp TestUtilities.cpp TestUtilities.h -InvalidCompressionFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -InvalidSampleFormat_SOURCES = InvalidSampleFormat.cpp TestUtilities.cpp TestUtilities.h -InvalidSampleFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Large_SOURCES = Large.cpp TestUtilities.cpp TestUtilities.h -Large_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Loop_SOURCES = Loop.cpp TestUtilities.cpp TestUtilities.h -Loop_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Marker_SOURCES = Marker.cpp TestUtilities.cpp TestUtilities.h -Marker_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Miscellaneous_SOURCES = Miscellaneous.cpp TestUtilities.cpp TestUtilities.h -Miscellaneous_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -NeXT_SOURCES = NeXT.cpp TestUtilities.cpp TestUtilities.h -NeXT_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -PCMData_SOURCES = PCMData.cpp TestUtilities.cpp TestUtilities.h -PCMData_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -PCMMapping_SOURCES = PCMMapping.cpp TestUtilities.cpp TestUtilities.h -PCMMapping_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Pipe_SOURCES = Pipe.cpp TestUtilities.cpp TestUtilities.h -Pipe_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Query_SOURCES = Query.cpp TestUtilities.cpp TestUtilities.h -Query_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -SampleFormat_SOURCES = SampleFormat.cpp TestUtilities.cpp TestUtilities.h -SampleFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Seek_SOURCES = Seek.cpp TestUtilities.cpp TestUtilities.h -Seek_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Sign_SOURCES = Sign.cpp TestUtilities.cpp TestUtilities.h -Sign_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -VirtualFile_SOURCES = VirtualFile.cpp TestUtilities.cpp TestUtilities.h -VirtualFile_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -floatto24_SOURCES = floatto24.c TestUtilities.cpp TestUtilities.h -printmarkers_SOURCES = printmarkers.c -printmarkers_LDADD = $(LIBAUDIOFILE) -lm -sixteen_to_eight_SOURCES = sixteen-to-eight.c TestUtilities.cpp TestUtilities.h -testchannelmatrix_SOURCES = testchannelmatrix.c TestUtilities.cpp TestUtilities.h -testdouble_SOURCES = testdouble.c TestUtilities.cpp TestUtilities.h -testfloat_SOURCES = testfloat.c TestUtilities.cpp TestUtilities.h -testmarkers_SOURCES = testmarkers.c TestUtilities.cpp TestUtilities.h -twentyfour_SOURCES = twentyfour.c TestUtilities.cpp TestUtilities.h -twentyfour2_SOURCES = twentyfour2.c TestUtilities.cpp TestUtilities.h -writealaw_SOURCES = writealaw.c TestUtilities.cpp TestUtilities.h -writeraw_SOURCES = writeraw.c TestUtilities.cpp TestUtilities.h -writeulaw_SOURCES = writeulaw.c TestUtilities.cpp TestUtilities.h -AM_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -ADPCM$(EXEEXT): $(ADPCM_OBJECTS) $(ADPCM_DEPENDENCIES) $(EXTRA_ADPCM_DEPENDENCIES) - @rm -f ADPCM$(EXEEXT) - $(CXXLINK) $(ADPCM_OBJECTS) $(ADPCM_LDADD) $(LIBS) -AES$(EXEEXT): $(AES_OBJECTS) $(AES_DEPENDENCIES) $(EXTRA_AES_DEPENDENCIES) - @rm -f AES$(EXEEXT) - $(CXXLINK) $(AES_OBJECTS) $(AES_LDADD) $(LIBS) -ALAC$(EXEEXT): $(ALAC_OBJECTS) $(ALAC_DEPENDENCIES) $(EXTRA_ALAC_DEPENDENCIES) - @rm -f ALAC$(EXEEXT) - $(CXXLINK) $(ALAC_OBJECTS) $(ALAC_LDADD) $(LIBS) -ChannelMatrix$(EXEEXT): $(ChannelMatrix_OBJECTS) $(ChannelMatrix_DEPENDENCIES) $(EXTRA_ChannelMatrix_DEPENDENCIES) - @rm -f ChannelMatrix$(EXEEXT) - $(CXXLINK) $(ChannelMatrix_OBJECTS) $(ChannelMatrix_LDADD) $(LIBS) -Error$(EXEEXT): $(Error_OBJECTS) $(Error_DEPENDENCIES) $(EXTRA_Error_DEPENDENCIES) - @rm -f Error$(EXEEXT) - $(CXXLINK) $(Error_OBJECTS) $(Error_LDADD) $(LIBS) -FLAC$(EXEEXT): $(FLAC_OBJECTS) $(FLAC_DEPENDENCIES) $(EXTRA_FLAC_DEPENDENCIES) - @rm -f FLAC$(EXEEXT) - $(CXXLINK) $(FLAC_OBJECTS) $(FLAC_LDADD) $(LIBS) -FloatToInt$(EXEEXT): $(FloatToInt_OBJECTS) $(FloatToInt_DEPENDENCIES) $(EXTRA_FloatToInt_DEPENDENCIES) - @rm -f FloatToInt$(EXEEXT) - $(CXXLINK) $(FloatToInt_OBJECTS) $(FloatToInt_LDADD) $(LIBS) -Instrument$(EXEEXT): $(Instrument_OBJECTS) $(Instrument_DEPENDENCIES) $(EXTRA_Instrument_DEPENDENCIES) - @rm -f Instrument$(EXEEXT) - $(CXXLINK) $(Instrument_OBJECTS) $(Instrument_LDADD) $(LIBS) -IntToFloat$(EXEEXT): $(IntToFloat_OBJECTS) $(IntToFloat_DEPENDENCIES) $(EXTRA_IntToFloat_DEPENDENCIES) - @rm -f IntToFloat$(EXEEXT) - $(CXXLINK) $(IntToFloat_OBJECTS) $(IntToFloat_LDADD) $(LIBS) -InvalidCompressionFormat$(EXEEXT): $(InvalidCompressionFormat_OBJECTS) $(InvalidCompressionFormat_DEPENDENCIES) $(EXTRA_InvalidCompressionFormat_DEPENDENCIES) - @rm -f InvalidCompressionFormat$(EXEEXT) - $(CXXLINK) $(InvalidCompressionFormat_OBJECTS) $(InvalidCompressionFormat_LDADD) $(LIBS) -InvalidSampleFormat$(EXEEXT): $(InvalidSampleFormat_OBJECTS) $(InvalidSampleFormat_DEPENDENCIES) $(EXTRA_InvalidSampleFormat_DEPENDENCIES) - @rm -f InvalidSampleFormat$(EXEEXT) - $(CXXLINK) $(InvalidSampleFormat_OBJECTS) $(InvalidSampleFormat_LDADD) $(LIBS) -Large$(EXEEXT): $(Large_OBJECTS) $(Large_DEPENDENCIES) $(EXTRA_Large_DEPENDENCIES) - @rm -f Large$(EXEEXT) - $(CXXLINK) $(Large_OBJECTS) $(Large_LDADD) $(LIBS) -Loop$(EXEEXT): $(Loop_OBJECTS) $(Loop_DEPENDENCIES) $(EXTRA_Loop_DEPENDENCIES) - @rm -f Loop$(EXEEXT) - $(CXXLINK) $(Loop_OBJECTS) $(Loop_LDADD) $(LIBS) -Marker$(EXEEXT): $(Marker_OBJECTS) $(Marker_DEPENDENCIES) $(EXTRA_Marker_DEPENDENCIES) - @rm -f Marker$(EXEEXT) - $(CXXLINK) $(Marker_OBJECTS) $(Marker_LDADD) $(LIBS) -Miscellaneous$(EXEEXT): $(Miscellaneous_OBJECTS) $(Miscellaneous_DEPENDENCIES) $(EXTRA_Miscellaneous_DEPENDENCIES) - @rm -f Miscellaneous$(EXEEXT) - $(CXXLINK) $(Miscellaneous_OBJECTS) $(Miscellaneous_LDADD) $(LIBS) -NeXT$(EXEEXT): $(NeXT_OBJECTS) $(NeXT_DEPENDENCIES) $(EXTRA_NeXT_DEPENDENCIES) - @rm -f NeXT$(EXEEXT) - $(CXXLINK) $(NeXT_OBJECTS) $(NeXT_LDADD) $(LIBS) -PCMData$(EXEEXT): $(PCMData_OBJECTS) $(PCMData_DEPENDENCIES) $(EXTRA_PCMData_DEPENDENCIES) - @rm -f PCMData$(EXEEXT) - $(CXXLINK) $(PCMData_OBJECTS) $(PCMData_LDADD) $(LIBS) -PCMMapping$(EXEEXT): $(PCMMapping_OBJECTS) $(PCMMapping_DEPENDENCIES) $(EXTRA_PCMMapping_DEPENDENCIES) - @rm -f PCMMapping$(EXEEXT) - $(CXXLINK) $(PCMMapping_OBJECTS) $(PCMMapping_LDADD) $(LIBS) -Pipe$(EXEEXT): $(Pipe_OBJECTS) $(Pipe_DEPENDENCIES) $(EXTRA_Pipe_DEPENDENCIES) - @rm -f Pipe$(EXEEXT) - $(CXXLINK) $(Pipe_OBJECTS) $(Pipe_LDADD) $(LIBS) -Query$(EXEEXT): $(Query_OBJECTS) $(Query_DEPENDENCIES) $(EXTRA_Query_DEPENDENCIES) - @rm -f Query$(EXEEXT) - $(CXXLINK) $(Query_OBJECTS) $(Query_LDADD) $(LIBS) -SampleFormat$(EXEEXT): $(SampleFormat_OBJECTS) $(SampleFormat_DEPENDENCIES) $(EXTRA_SampleFormat_DEPENDENCIES) - @rm -f SampleFormat$(EXEEXT) - $(CXXLINK) $(SampleFormat_OBJECTS) $(SampleFormat_LDADD) $(LIBS) -Seek$(EXEEXT): $(Seek_OBJECTS) $(Seek_DEPENDENCIES) $(EXTRA_Seek_DEPENDENCIES) - @rm -f Seek$(EXEEXT) - $(CXXLINK) $(Seek_OBJECTS) $(Seek_LDADD) $(LIBS) -Sign$(EXEEXT): $(Sign_OBJECTS) $(Sign_DEPENDENCIES) $(EXTRA_Sign_DEPENDENCIES) - @rm -f Sign$(EXEEXT) - $(CXXLINK) $(Sign_OBJECTS) $(Sign_LDADD) $(LIBS) -VirtualFile$(EXEEXT): $(VirtualFile_OBJECTS) $(VirtualFile_DEPENDENCIES) $(EXTRA_VirtualFile_DEPENDENCIES) - @rm -f VirtualFile$(EXEEXT) - $(CXXLINK) $(VirtualFile_OBJECTS) $(VirtualFile_LDADD) $(LIBS) -floatto24$(EXEEXT): $(floatto24_OBJECTS) $(floatto24_DEPENDENCIES) $(EXTRA_floatto24_DEPENDENCIES) - @rm -f floatto24$(EXEEXT) - $(CXXLINK) $(floatto24_OBJECTS) $(floatto24_LDADD) $(LIBS) -instparamtest$(EXEEXT): $(instparamtest_OBJECTS) $(instparamtest_DEPENDENCIES) $(EXTRA_instparamtest_DEPENDENCIES) - @rm -f instparamtest$(EXEEXT) - $(LINK) $(instparamtest_OBJECTS) $(instparamtest_LDADD) $(LIBS) -instparamwrite$(EXEEXT): $(instparamwrite_OBJECTS) $(instparamwrite_DEPENDENCIES) $(EXTRA_instparamwrite_DEPENDENCIES) - @rm -f instparamwrite$(EXEEXT) - $(LINK) $(instparamwrite_OBJECTS) $(instparamwrite_LDADD) $(LIBS) -printmarkers$(EXEEXT): $(printmarkers_OBJECTS) $(printmarkers_DEPENDENCIES) $(EXTRA_printmarkers_DEPENDENCIES) - @rm -f printmarkers$(EXEEXT) - $(LINK) $(printmarkers_OBJECTS) $(printmarkers_LDADD) $(LIBS) -query2$(EXEEXT): $(query2_OBJECTS) $(query2_DEPENDENCIES) $(EXTRA_query2_DEPENDENCIES) - @rm -f query2$(EXEEXT) - $(LINK) $(query2_OBJECTS) $(query2_LDADD) $(LIBS) -sixteen-to-eight$(EXEEXT): $(sixteen_to_eight_OBJECTS) $(sixteen_to_eight_DEPENDENCIES) $(EXTRA_sixteen_to_eight_DEPENDENCIES) - @rm -f sixteen-to-eight$(EXEEXT) - $(CXXLINK) $(sixteen_to_eight_OBJECTS) $(sixteen_to_eight_LDADD) $(LIBS) -testaupv$(EXEEXT): $(testaupv_OBJECTS) $(testaupv_DEPENDENCIES) $(EXTRA_testaupv_DEPENDENCIES) - @rm -f testaupv$(EXEEXT) - $(LINK) $(testaupv_OBJECTS) $(testaupv_LDADD) $(LIBS) -testchannelmatrix$(EXEEXT): $(testchannelmatrix_OBJECTS) $(testchannelmatrix_DEPENDENCIES) $(EXTRA_testchannelmatrix_DEPENDENCIES) - @rm -f testchannelmatrix$(EXEEXT) - $(CXXLINK) $(testchannelmatrix_OBJECTS) $(testchannelmatrix_LDADD) $(LIBS) -testdouble$(EXEEXT): $(testdouble_OBJECTS) $(testdouble_DEPENDENCIES) $(EXTRA_testdouble_DEPENDENCIES) - @rm -f testdouble$(EXEEXT) - $(CXXLINK) $(testdouble_OBJECTS) $(testdouble_LDADD) $(LIBS) -testfloat$(EXEEXT): $(testfloat_OBJECTS) $(testfloat_DEPENDENCIES) $(EXTRA_testfloat_DEPENDENCIES) - @rm -f testfloat$(EXEEXT) - $(CXXLINK) $(testfloat_OBJECTS) $(testfloat_LDADD) $(LIBS) -testmarkers$(EXEEXT): $(testmarkers_OBJECTS) $(testmarkers_DEPENDENCIES) $(EXTRA_testmarkers_DEPENDENCIES) - @rm -f testmarkers$(EXEEXT) - $(CXXLINK) $(testmarkers_OBJECTS) $(testmarkers_LDADD) $(LIBS) -twentyfour$(EXEEXT): $(twentyfour_OBJECTS) $(twentyfour_DEPENDENCIES) $(EXTRA_twentyfour_DEPENDENCIES) - @rm -f twentyfour$(EXEEXT) - $(CXXLINK) $(twentyfour_OBJECTS) $(twentyfour_LDADD) $(LIBS) -twentyfour2$(EXEEXT): $(twentyfour2_OBJECTS) $(twentyfour2_DEPENDENCIES) $(EXTRA_twentyfour2_DEPENDENCIES) - @rm -f twentyfour2$(EXEEXT) - $(CXXLINK) $(twentyfour2_OBJECTS) $(twentyfour2_LDADD) $(LIBS) -writealaw$(EXEEXT): $(writealaw_OBJECTS) $(writealaw_DEPENDENCIES) $(EXTRA_writealaw_DEPENDENCIES) - @rm -f writealaw$(EXEEXT) - $(CXXLINK) $(writealaw_OBJECTS) $(writealaw_LDADD) $(LIBS) -writeraw$(EXEEXT): $(writeraw_OBJECTS) $(writeraw_DEPENDENCIES) $(EXTRA_writeraw_DEPENDENCIES) - @rm -f writeraw$(EXEEXT) - $(CXXLINK) $(writeraw_OBJECTS) $(writeraw_LDADD) $(LIBS) -writeulaw$(EXEEXT): $(writeulaw_OBJECTS) $(writeulaw_DEPENDENCIES) $(EXTRA_writeulaw_DEPENDENCIES) - @rm -f writeulaw$(EXEEXT) - $(CXXLINK) $(writeulaw_OBJECTS) $(writeulaw_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/ADPCM.Po -include ./$(DEPDIR)/AES.Po -include ./$(DEPDIR)/ALAC.Po -include ./$(DEPDIR)/ChannelMatrix.Po -include ./$(DEPDIR)/Error.Po -include ./$(DEPDIR)/FLAC.Po -include ./$(DEPDIR)/FloatToInt.Po -include ./$(DEPDIR)/Instrument.Po -include ./$(DEPDIR)/IntToFloat.Po -include ./$(DEPDIR)/InvalidCompressionFormat.Po -include ./$(DEPDIR)/InvalidSampleFormat.Po -include ./$(DEPDIR)/Large.Po -include ./$(DEPDIR)/Loop.Po -include ./$(DEPDIR)/Marker.Po -include ./$(DEPDIR)/Miscellaneous.Po -include ./$(DEPDIR)/NeXT.Po -include ./$(DEPDIR)/PCMData.Po -include ./$(DEPDIR)/PCMMapping.Po -include ./$(DEPDIR)/Pipe.Po -include ./$(DEPDIR)/Query.Po -include ./$(DEPDIR)/SampleFormat.Po -include ./$(DEPDIR)/Seek.Po -include ./$(DEPDIR)/Sign.Po -include ./$(DEPDIR)/TestUtilities.Po -include ./$(DEPDIR)/VirtualFile.Po -include ./$(DEPDIR)/floatto24.Po -include ./$(DEPDIR)/instparamtest.Po -include ./$(DEPDIR)/instparamwrite.Po -include ./$(DEPDIR)/printmarkers.Po -include ./$(DEPDIR)/query2.Po -include ./$(DEPDIR)/sixteen-to-eight.Po -include ./$(DEPDIR)/testaupv.Po -include ./$(DEPDIR)/testchannelmatrix.Po -include ./$(DEPDIR)/testdouble.Po -include ./$(DEPDIR)/testfloat.Po -include ./$(DEPDIR)/testmarkers.Po -include ./$(DEPDIR)/twentyfour.Po -include ./$(DEPDIR)/twentyfour2.Po -include ./$(DEPDIR)/writealaw.Po -include ./$(DEPDIR)/writeraw.Po -include ./$(DEPDIR)/writeulaw.Po - -.c.o: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: - $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LTCOMPILE) -c -o $@ $< - -.cpp.o: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: - $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: - $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ -# $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic clean-libtool ctags \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/test/Makefile.am b/tools/audiofile-0.3.6/test/Makefile.am deleted file mode 100644 index 7562e6a8..00000000 --- a/tools/audiofile-0.3.6/test/Makefile.am +++ /dev/null @@ -1,161 +0,0 @@ -INCLUDES = -I$(top_srcdir)/libaudiofile -I$(top_srcdir) - -TESTS = \ - ADPCM \ - AES \ - ALAC \ - ChannelMatrix \ - Error \ - FloatToInt \ - Instrument \ - IntToFloat \ - InvalidCompressionFormat \ - InvalidSampleFormat \ - Large \ - Loop \ - Marker \ - Miscellaneous \ - NeXT \ - PCMData \ - PCMMapping \ - Pipe \ - Query \ - SampleFormat \ - Seek \ - Sign \ - VirtualFile \ - floatto24 \ - query2 \ - sixteen-to-eight \ - testchannelmatrix \ - testdouble \ - testfloat \ - testmarkers \ - twentyfour \ - twentyfour2 \ - writealaw \ - writeraw \ - writeulaw - -if ENABLE_FLAC -TESTS += FLAC -endif - -check_PROGRAMS = \ - $(TESTS) \ - instparamtest \ - instparamwrite \ - printmarkers \ - testaupv - -if ENABLE_VALGRIND -VALGRIND_FLAGS = --quiet --leak-check=full --show-reachable=yes --error-exitcode=1 -TESTS_ENVIRONMENT = $(top_builddir)/libtool --mode=execute $(VALGRIND) $(VALGRIND_FLAGS) -endif - -LIBAUDIOFILE = $(top_builddir)/libaudiofile/libaudiofile.la - -LDADD = $(LIBAUDIOFILE) - -DEPENDENCIES = $(LIBAUDIOFILE) - -LIBGTEST = ../gtest/libgtest.la - -ADPCM_SOURCES = ADPCM.cpp TestUtilities.cpp TestUtilities.h -ADPCM_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -AES_SOURCES = AES.cpp TestUtilities.cpp TestUtilities.h -AES_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -ALAC_SOURCES = ALAC.cpp Lossless.h TestUtilities.cpp TestUtilities.h -ALAC_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -ChannelMatrix_SOURCES = ChannelMatrix.cpp TestUtilities.cpp TestUtilities.h -ChannelMatrix_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Error_SOURCES = Error.cpp TestUtilities.cpp TestUtilities.h -Error_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -FLAC_SOURCES = FLAC.cpp Lossless.h TestUtilities.cpp TestUtilities.h -FLAC_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -FloatToInt_SOURCES = FloatToInt.cpp TestUtilities.cpp TestUtilities.h -FloatToInt_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Instrument_SOURCES = Instrument.cpp TestUtilities.cpp TestUtilities.h -Instrument_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -IntToFloat_SOURCES = IntToFloat.cpp TestUtilities.cpp TestUtilities.h -IntToFloat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -InvalidCompressionFormat_SOURCES = InvalidCompressionFormat.cpp TestUtilities.cpp TestUtilities.h -InvalidCompressionFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -InvalidSampleFormat_SOURCES = InvalidSampleFormat.cpp TestUtilities.cpp TestUtilities.h -InvalidSampleFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Large_SOURCES = Large.cpp TestUtilities.cpp TestUtilities.h -Large_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Loop_SOURCES = Loop.cpp TestUtilities.cpp TestUtilities.h -Loop_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Marker_SOURCES = Marker.cpp TestUtilities.cpp TestUtilities.h -Marker_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Miscellaneous_SOURCES = Miscellaneous.cpp TestUtilities.cpp TestUtilities.h -Miscellaneous_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -NeXT_SOURCES = NeXT.cpp TestUtilities.cpp TestUtilities.h -NeXT_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -PCMData_SOURCES = PCMData.cpp TestUtilities.cpp TestUtilities.h -PCMData_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -PCMMapping_SOURCES = PCMMapping.cpp TestUtilities.cpp TestUtilities.h -PCMMapping_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Pipe_SOURCES = Pipe.cpp TestUtilities.cpp TestUtilities.h -Pipe_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Query_SOURCES = Query.cpp TestUtilities.cpp TestUtilities.h -Query_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -SampleFormat_SOURCES = SampleFormat.cpp TestUtilities.cpp TestUtilities.h -SampleFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Seek_SOURCES = Seek.cpp TestUtilities.cpp TestUtilities.h -Seek_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -Sign_SOURCES = Sign.cpp TestUtilities.cpp TestUtilities.h -Sign_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -VirtualFile_SOURCES = VirtualFile.cpp TestUtilities.cpp TestUtilities.h -VirtualFile_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) - -floatto24_SOURCES = floatto24.c TestUtilities.cpp TestUtilities.h - -printmarkers_SOURCES = printmarkers.c -printmarkers_LDADD = $(LIBAUDIOFILE) -lm - -sixteen_to_eight_SOURCES = sixteen-to-eight.c TestUtilities.cpp TestUtilities.h - -testchannelmatrix_SOURCES = testchannelmatrix.c TestUtilities.cpp TestUtilities.h - -testdouble_SOURCES = testdouble.c TestUtilities.cpp TestUtilities.h - -testfloat_SOURCES = testfloat.c TestUtilities.cpp TestUtilities.h - -testmarkers_SOURCES = testmarkers.c TestUtilities.cpp TestUtilities.h - -twentyfour_SOURCES = twentyfour.c TestUtilities.cpp TestUtilities.h - -twentyfour2_SOURCES = twentyfour2.c TestUtilities.cpp TestUtilities.h - -writealaw_SOURCES = writealaw.c TestUtilities.cpp TestUtilities.h - -writeraw_SOURCES = writeraw.c TestUtilities.cpp TestUtilities.h - -writeulaw_SOURCES = writeulaw.c TestUtilities.cpp TestUtilities.h - -AM_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 diff --git a/tools/audiofile-0.3.6/test/Makefile.in b/tools/audiofile-0.3.6/test/Makefile.in deleted file mode 100644 index 6efb1225..00000000 --- a/tools/audiofile-0.3.6/test/Makefile.in +++ /dev/null @@ -1,1064 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -TESTS = ADPCM$(EXEEXT) AES$(EXEEXT) ALAC$(EXEEXT) \ - ChannelMatrix$(EXEEXT) Error$(EXEEXT) FloatToInt$(EXEEXT) \ - Instrument$(EXEEXT) IntToFloat$(EXEEXT) \ - InvalidCompressionFormat$(EXEEXT) InvalidSampleFormat$(EXEEXT) \ - Large$(EXEEXT) Loop$(EXEEXT) Marker$(EXEEXT) \ - Miscellaneous$(EXEEXT) NeXT$(EXEEXT) PCMData$(EXEEXT) \ - PCMMapping$(EXEEXT) Pipe$(EXEEXT) Query$(EXEEXT) \ - SampleFormat$(EXEEXT) Seek$(EXEEXT) Sign$(EXEEXT) \ - VirtualFile$(EXEEXT) floatto24$(EXEEXT) query2$(EXEEXT) \ - sixteen-to-eight$(EXEEXT) testchannelmatrix$(EXEEXT) \ - testdouble$(EXEEXT) testfloat$(EXEEXT) testmarkers$(EXEEXT) \ - twentyfour$(EXEEXT) twentyfour2$(EXEEXT) writealaw$(EXEEXT) \ - writeraw$(EXEEXT) writeulaw$(EXEEXT) $(am__EXEEXT_1) -@ENABLE_FLAC_TRUE@am__append_1 = FLAC -check_PROGRAMS = $(am__EXEEXT_2) instparamtest$(EXEEXT) \ - instparamwrite$(EXEEXT) printmarkers$(EXEEXT) \ - testaupv$(EXEEXT) -subdir = test -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -@ENABLE_FLAC_TRUE@am__EXEEXT_1 = FLAC$(EXEEXT) -am__EXEEXT_2 = ADPCM$(EXEEXT) AES$(EXEEXT) ALAC$(EXEEXT) \ - ChannelMatrix$(EXEEXT) Error$(EXEEXT) FloatToInt$(EXEEXT) \ - Instrument$(EXEEXT) IntToFloat$(EXEEXT) \ - InvalidCompressionFormat$(EXEEXT) InvalidSampleFormat$(EXEEXT) \ - Large$(EXEEXT) Loop$(EXEEXT) Marker$(EXEEXT) \ - Miscellaneous$(EXEEXT) NeXT$(EXEEXT) PCMData$(EXEEXT) \ - PCMMapping$(EXEEXT) Pipe$(EXEEXT) Query$(EXEEXT) \ - SampleFormat$(EXEEXT) Seek$(EXEEXT) Sign$(EXEEXT) \ - VirtualFile$(EXEEXT) floatto24$(EXEEXT) query2$(EXEEXT) \ - sixteen-to-eight$(EXEEXT) testchannelmatrix$(EXEEXT) \ - testdouble$(EXEEXT) testfloat$(EXEEXT) testmarkers$(EXEEXT) \ - twentyfour$(EXEEXT) twentyfour2$(EXEEXT) writealaw$(EXEEXT) \ - writeraw$(EXEEXT) writeulaw$(EXEEXT) $(am__EXEEXT_1) -am_ADPCM_OBJECTS = ADPCM.$(OBJEXT) TestUtilities.$(OBJEXT) -ADPCM_OBJECTS = $(am_ADPCM_OBJECTS) -ADPCM_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_AES_OBJECTS = AES.$(OBJEXT) TestUtilities.$(OBJEXT) -AES_OBJECTS = $(am_AES_OBJECTS) -AES_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_ALAC_OBJECTS = ALAC.$(OBJEXT) TestUtilities.$(OBJEXT) -ALAC_OBJECTS = $(am_ALAC_OBJECTS) -ALAC_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_ChannelMatrix_OBJECTS = ChannelMatrix.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -ChannelMatrix_OBJECTS = $(am_ChannelMatrix_OBJECTS) -ChannelMatrix_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Error_OBJECTS = Error.$(OBJEXT) TestUtilities.$(OBJEXT) -Error_OBJECTS = $(am_Error_OBJECTS) -Error_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_FLAC_OBJECTS = FLAC.$(OBJEXT) TestUtilities.$(OBJEXT) -FLAC_OBJECTS = $(am_FLAC_OBJECTS) -FLAC_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_FloatToInt_OBJECTS = FloatToInt.$(OBJEXT) TestUtilities.$(OBJEXT) -FloatToInt_OBJECTS = $(am_FloatToInt_OBJECTS) -FloatToInt_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Instrument_OBJECTS = Instrument.$(OBJEXT) TestUtilities.$(OBJEXT) -Instrument_OBJECTS = $(am_Instrument_OBJECTS) -Instrument_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_IntToFloat_OBJECTS = IntToFloat.$(OBJEXT) TestUtilities.$(OBJEXT) -IntToFloat_OBJECTS = $(am_IntToFloat_OBJECTS) -IntToFloat_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_InvalidCompressionFormat_OBJECTS = \ - InvalidCompressionFormat.$(OBJEXT) TestUtilities.$(OBJEXT) -InvalidCompressionFormat_OBJECTS = \ - $(am_InvalidCompressionFormat_OBJECTS) -InvalidCompressionFormat_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_InvalidSampleFormat_OBJECTS = InvalidSampleFormat.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -InvalidSampleFormat_OBJECTS = $(am_InvalidSampleFormat_OBJECTS) -InvalidSampleFormat_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Large_OBJECTS = Large.$(OBJEXT) TestUtilities.$(OBJEXT) -Large_OBJECTS = $(am_Large_OBJECTS) -Large_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Loop_OBJECTS = Loop.$(OBJEXT) TestUtilities.$(OBJEXT) -Loop_OBJECTS = $(am_Loop_OBJECTS) -Loop_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Marker_OBJECTS = Marker.$(OBJEXT) TestUtilities.$(OBJEXT) -Marker_OBJECTS = $(am_Marker_OBJECTS) -Marker_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Miscellaneous_OBJECTS = Miscellaneous.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -Miscellaneous_OBJECTS = $(am_Miscellaneous_OBJECTS) -Miscellaneous_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_NeXT_OBJECTS = NeXT.$(OBJEXT) TestUtilities.$(OBJEXT) -NeXT_OBJECTS = $(am_NeXT_OBJECTS) -NeXT_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_PCMData_OBJECTS = PCMData.$(OBJEXT) TestUtilities.$(OBJEXT) -PCMData_OBJECTS = $(am_PCMData_OBJECTS) -PCMData_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_PCMMapping_OBJECTS = PCMMapping.$(OBJEXT) TestUtilities.$(OBJEXT) -PCMMapping_OBJECTS = $(am_PCMMapping_OBJECTS) -PCMMapping_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Pipe_OBJECTS = Pipe.$(OBJEXT) TestUtilities.$(OBJEXT) -Pipe_OBJECTS = $(am_Pipe_OBJECTS) -Pipe_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Query_OBJECTS = Query.$(OBJEXT) TestUtilities.$(OBJEXT) -Query_OBJECTS = $(am_Query_OBJECTS) -Query_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_SampleFormat_OBJECTS = SampleFormat.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -SampleFormat_OBJECTS = $(am_SampleFormat_OBJECTS) -SampleFormat_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Seek_OBJECTS = Seek.$(OBJEXT) TestUtilities.$(OBJEXT) -Seek_OBJECTS = $(am_Seek_OBJECTS) -Seek_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_Sign_OBJECTS = Sign.$(OBJEXT) TestUtilities.$(OBJEXT) -Sign_OBJECTS = $(am_Sign_OBJECTS) -Sign_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_VirtualFile_OBJECTS = VirtualFile.$(OBJEXT) TestUtilities.$(OBJEXT) -VirtualFile_OBJECTS = $(am_VirtualFile_OBJECTS) -VirtualFile_DEPENDENCIES = $(LIBGTEST) $(LIBAUDIOFILE) -am_floatto24_OBJECTS = floatto24.$(OBJEXT) TestUtilities.$(OBJEXT) -floatto24_OBJECTS = $(am_floatto24_OBJECTS) -floatto24_LDADD = $(LDADD) -floatto24_DEPENDENCIES = $(LIBAUDIOFILE) -instparamtest_SOURCES = instparamtest.c -instparamtest_OBJECTS = instparamtest.$(OBJEXT) -instparamtest_LDADD = $(LDADD) -instparamtest_DEPENDENCIES = $(LIBAUDIOFILE) -instparamwrite_SOURCES = instparamwrite.c -instparamwrite_OBJECTS = instparamwrite.$(OBJEXT) -instparamwrite_LDADD = $(LDADD) -instparamwrite_DEPENDENCIES = $(LIBAUDIOFILE) -am_printmarkers_OBJECTS = printmarkers.$(OBJEXT) -printmarkers_OBJECTS = $(am_printmarkers_OBJECTS) -printmarkers_DEPENDENCIES = $(LIBAUDIOFILE) -query2_SOURCES = query2.c -query2_OBJECTS = query2.$(OBJEXT) -query2_LDADD = $(LDADD) -query2_DEPENDENCIES = $(LIBAUDIOFILE) -am_sixteen_to_eight_OBJECTS = sixteen-to-eight.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -sixteen_to_eight_OBJECTS = $(am_sixteen_to_eight_OBJECTS) -sixteen_to_eight_LDADD = $(LDADD) -sixteen_to_eight_DEPENDENCIES = $(LIBAUDIOFILE) -testaupv_SOURCES = testaupv.c -testaupv_OBJECTS = testaupv.$(OBJEXT) -testaupv_LDADD = $(LDADD) -testaupv_DEPENDENCIES = $(LIBAUDIOFILE) -am_testchannelmatrix_OBJECTS = testchannelmatrix.$(OBJEXT) \ - TestUtilities.$(OBJEXT) -testchannelmatrix_OBJECTS = $(am_testchannelmatrix_OBJECTS) -testchannelmatrix_LDADD = $(LDADD) -testchannelmatrix_DEPENDENCIES = $(LIBAUDIOFILE) -am_testdouble_OBJECTS = testdouble.$(OBJEXT) TestUtilities.$(OBJEXT) -testdouble_OBJECTS = $(am_testdouble_OBJECTS) -testdouble_LDADD = $(LDADD) -testdouble_DEPENDENCIES = $(LIBAUDIOFILE) -am_testfloat_OBJECTS = testfloat.$(OBJEXT) TestUtilities.$(OBJEXT) -testfloat_OBJECTS = $(am_testfloat_OBJECTS) -testfloat_LDADD = $(LDADD) -testfloat_DEPENDENCIES = $(LIBAUDIOFILE) -am_testmarkers_OBJECTS = testmarkers.$(OBJEXT) TestUtilities.$(OBJEXT) -testmarkers_OBJECTS = $(am_testmarkers_OBJECTS) -testmarkers_LDADD = $(LDADD) -testmarkers_DEPENDENCIES = $(LIBAUDIOFILE) -am_twentyfour_OBJECTS = twentyfour.$(OBJEXT) TestUtilities.$(OBJEXT) -twentyfour_OBJECTS = $(am_twentyfour_OBJECTS) -twentyfour_LDADD = $(LDADD) -twentyfour_DEPENDENCIES = $(LIBAUDIOFILE) -am_twentyfour2_OBJECTS = twentyfour2.$(OBJEXT) TestUtilities.$(OBJEXT) -twentyfour2_OBJECTS = $(am_twentyfour2_OBJECTS) -twentyfour2_LDADD = $(LDADD) -twentyfour2_DEPENDENCIES = $(LIBAUDIOFILE) -am_writealaw_OBJECTS = writealaw.$(OBJEXT) TestUtilities.$(OBJEXT) -writealaw_OBJECTS = $(am_writealaw_OBJECTS) -writealaw_LDADD = $(LDADD) -writealaw_DEPENDENCIES = $(LIBAUDIOFILE) -am_writeraw_OBJECTS = writeraw.$(OBJEXT) TestUtilities.$(OBJEXT) -writeraw_OBJECTS = $(am_writeraw_OBJECTS) -writeraw_LDADD = $(LDADD) -writeraw_DEPENDENCIES = $(LIBAUDIOFILE) -am_writeulaw_OBJECTS = writeulaw.$(OBJEXT) TestUtilities.$(OBJEXT) -writeulaw_OBJECTS = $(am_writeulaw_OBJECTS) -writeulaw_LDADD = $(LDADD) -writeulaw_DEPENDENCIES = $(LIBAUDIOFILE) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(ADPCM_SOURCES) $(AES_SOURCES) $(ALAC_SOURCES) \ - $(ChannelMatrix_SOURCES) $(Error_SOURCES) $(FLAC_SOURCES) \ - $(FloatToInt_SOURCES) $(Instrument_SOURCES) \ - $(IntToFloat_SOURCES) $(InvalidCompressionFormat_SOURCES) \ - $(InvalidSampleFormat_SOURCES) $(Large_SOURCES) \ - $(Loop_SOURCES) $(Marker_SOURCES) $(Miscellaneous_SOURCES) \ - $(NeXT_SOURCES) $(PCMData_SOURCES) $(PCMMapping_SOURCES) \ - $(Pipe_SOURCES) $(Query_SOURCES) $(SampleFormat_SOURCES) \ - $(Seek_SOURCES) $(Sign_SOURCES) $(VirtualFile_SOURCES) \ - $(floatto24_SOURCES) instparamtest.c instparamwrite.c \ - $(printmarkers_SOURCES) query2.c $(sixteen_to_eight_SOURCES) \ - testaupv.c $(testchannelmatrix_SOURCES) $(testdouble_SOURCES) \ - $(testfloat_SOURCES) $(testmarkers_SOURCES) \ - $(twentyfour_SOURCES) $(twentyfour2_SOURCES) \ - $(writealaw_SOURCES) $(writeraw_SOURCES) $(writeulaw_SOURCES) -DIST_SOURCES = $(ADPCM_SOURCES) $(AES_SOURCES) $(ALAC_SOURCES) \ - $(ChannelMatrix_SOURCES) $(Error_SOURCES) $(FLAC_SOURCES) \ - $(FloatToInt_SOURCES) $(Instrument_SOURCES) \ - $(IntToFloat_SOURCES) $(InvalidCompressionFormat_SOURCES) \ - $(InvalidSampleFormat_SOURCES) $(Large_SOURCES) \ - $(Loop_SOURCES) $(Marker_SOURCES) $(Miscellaneous_SOURCES) \ - $(NeXT_SOURCES) $(PCMData_SOURCES) $(PCMMapping_SOURCES) \ - $(Pipe_SOURCES) $(Query_SOURCES) $(SampleFormat_SOURCES) \ - $(Seek_SOURCES) $(Sign_SOURCES) $(VirtualFile_SOURCES) \ - $(floatto24_SOURCES) instparamtest.c instparamwrite.c \ - $(printmarkers_SOURCES) query2.c $(sixteen_to_eight_SOURCES) \ - testaupv.c $(testchannelmatrix_SOURCES) $(testdouble_SOURCES) \ - $(testfloat_SOURCES) $(testmarkers_SOURCES) \ - $(twentyfour_SOURCES) $(twentyfour2_SOURCES) \ - $(writealaw_SOURCES) $(writeraw_SOURCES) $(writeulaw_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -AUDIOFILE_VERSION = @AUDIOFILE_VERSION@ -AUDIOFILE_VERSION_INFO = @AUDIOFILE_VERSION_INFO@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -COVERAGE_LIBS = @COVERAGE_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FLAC_CFLAGS = @FLAC_CFLAGS@ -FLAC_LIBS = @FLAC_LIBS@ -GENHTML = @GENHTML@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TEST_BIN = @TEST_BIN@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir)/libaudiofile -I$(top_srcdir) -@ENABLE_VALGRIND_TRUE@VALGRIND_FLAGS = --quiet --leak-check=full --show-reachable=yes --error-exitcode=1 -@ENABLE_VALGRIND_TRUE@TESTS_ENVIRONMENT = $(top_builddir)/libtool --mode=execute $(VALGRIND) $(VALGRIND_FLAGS) -LIBAUDIOFILE = $(top_builddir)/libaudiofile/libaudiofile.la -LDADD = $(LIBAUDIOFILE) -DEPENDENCIES = $(LIBAUDIOFILE) -LIBGTEST = ../gtest/libgtest.la -ADPCM_SOURCES = ADPCM.cpp TestUtilities.cpp TestUtilities.h -ADPCM_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -AES_SOURCES = AES.cpp TestUtilities.cpp TestUtilities.h -AES_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -ALAC_SOURCES = ALAC.cpp Lossless.h TestUtilities.cpp TestUtilities.h -ALAC_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -ChannelMatrix_SOURCES = ChannelMatrix.cpp TestUtilities.cpp TestUtilities.h -ChannelMatrix_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Error_SOURCES = Error.cpp TestUtilities.cpp TestUtilities.h -Error_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -FLAC_SOURCES = FLAC.cpp Lossless.h TestUtilities.cpp TestUtilities.h -FLAC_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -FloatToInt_SOURCES = FloatToInt.cpp TestUtilities.cpp TestUtilities.h -FloatToInt_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Instrument_SOURCES = Instrument.cpp TestUtilities.cpp TestUtilities.h -Instrument_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -IntToFloat_SOURCES = IntToFloat.cpp TestUtilities.cpp TestUtilities.h -IntToFloat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -InvalidCompressionFormat_SOURCES = InvalidCompressionFormat.cpp TestUtilities.cpp TestUtilities.h -InvalidCompressionFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -InvalidSampleFormat_SOURCES = InvalidSampleFormat.cpp TestUtilities.cpp TestUtilities.h -InvalidSampleFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Large_SOURCES = Large.cpp TestUtilities.cpp TestUtilities.h -Large_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Loop_SOURCES = Loop.cpp TestUtilities.cpp TestUtilities.h -Loop_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Marker_SOURCES = Marker.cpp TestUtilities.cpp TestUtilities.h -Marker_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Miscellaneous_SOURCES = Miscellaneous.cpp TestUtilities.cpp TestUtilities.h -Miscellaneous_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -NeXT_SOURCES = NeXT.cpp TestUtilities.cpp TestUtilities.h -NeXT_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -PCMData_SOURCES = PCMData.cpp TestUtilities.cpp TestUtilities.h -PCMData_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -PCMMapping_SOURCES = PCMMapping.cpp TestUtilities.cpp TestUtilities.h -PCMMapping_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Pipe_SOURCES = Pipe.cpp TestUtilities.cpp TestUtilities.h -Pipe_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Query_SOURCES = Query.cpp TestUtilities.cpp TestUtilities.h -Query_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -SampleFormat_SOURCES = SampleFormat.cpp TestUtilities.cpp TestUtilities.h -SampleFormat_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Seek_SOURCES = Seek.cpp TestUtilities.cpp TestUtilities.h -Seek_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -Sign_SOURCES = Sign.cpp TestUtilities.cpp TestUtilities.h -Sign_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -VirtualFile_SOURCES = VirtualFile.cpp TestUtilities.cpp TestUtilities.h -VirtualFile_LDADD = $(LIBGTEST) $(LIBAUDIOFILE) -floatto24_SOURCES = floatto24.c TestUtilities.cpp TestUtilities.h -printmarkers_SOURCES = printmarkers.c -printmarkers_LDADD = $(LIBAUDIOFILE) -lm -sixteen_to_eight_SOURCES = sixteen-to-eight.c TestUtilities.cpp TestUtilities.h -testchannelmatrix_SOURCES = testchannelmatrix.c TestUtilities.cpp TestUtilities.h -testdouble_SOURCES = testdouble.c TestUtilities.cpp TestUtilities.h -testfloat_SOURCES = testfloat.c TestUtilities.cpp TestUtilities.h -testmarkers_SOURCES = testmarkers.c TestUtilities.cpp TestUtilities.h -twentyfour_SOURCES = twentyfour.c TestUtilities.cpp TestUtilities.h -twentyfour2_SOURCES = twentyfour2.c TestUtilities.cpp TestUtilities.h -writealaw_SOURCES = writealaw.c TestUtilities.cpp TestUtilities.h -writeraw_SOURCES = writeraw.c TestUtilities.cpp TestUtilities.h -writeulaw_SOURCES = writeulaw.c TestUtilities.cpp TestUtilities.h -AM_CXXFLAGS = -fno-rtti -fno-exceptions -DGTEST_HAS_RTTI=0 -DGTEST_HAS_EXCEPTIONS=0 -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu test/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -ADPCM$(EXEEXT): $(ADPCM_OBJECTS) $(ADPCM_DEPENDENCIES) $(EXTRA_ADPCM_DEPENDENCIES) - @rm -f ADPCM$(EXEEXT) - $(CXXLINK) $(ADPCM_OBJECTS) $(ADPCM_LDADD) $(LIBS) -AES$(EXEEXT): $(AES_OBJECTS) $(AES_DEPENDENCIES) $(EXTRA_AES_DEPENDENCIES) - @rm -f AES$(EXEEXT) - $(CXXLINK) $(AES_OBJECTS) $(AES_LDADD) $(LIBS) -ALAC$(EXEEXT): $(ALAC_OBJECTS) $(ALAC_DEPENDENCIES) $(EXTRA_ALAC_DEPENDENCIES) - @rm -f ALAC$(EXEEXT) - $(CXXLINK) $(ALAC_OBJECTS) $(ALAC_LDADD) $(LIBS) -ChannelMatrix$(EXEEXT): $(ChannelMatrix_OBJECTS) $(ChannelMatrix_DEPENDENCIES) $(EXTRA_ChannelMatrix_DEPENDENCIES) - @rm -f ChannelMatrix$(EXEEXT) - $(CXXLINK) $(ChannelMatrix_OBJECTS) $(ChannelMatrix_LDADD) $(LIBS) -Error$(EXEEXT): $(Error_OBJECTS) $(Error_DEPENDENCIES) $(EXTRA_Error_DEPENDENCIES) - @rm -f Error$(EXEEXT) - $(CXXLINK) $(Error_OBJECTS) $(Error_LDADD) $(LIBS) -FLAC$(EXEEXT): $(FLAC_OBJECTS) $(FLAC_DEPENDENCIES) $(EXTRA_FLAC_DEPENDENCIES) - @rm -f FLAC$(EXEEXT) - $(CXXLINK) $(FLAC_OBJECTS) $(FLAC_LDADD) $(LIBS) -FloatToInt$(EXEEXT): $(FloatToInt_OBJECTS) $(FloatToInt_DEPENDENCIES) $(EXTRA_FloatToInt_DEPENDENCIES) - @rm -f FloatToInt$(EXEEXT) - $(CXXLINK) $(FloatToInt_OBJECTS) $(FloatToInt_LDADD) $(LIBS) -Instrument$(EXEEXT): $(Instrument_OBJECTS) $(Instrument_DEPENDENCIES) $(EXTRA_Instrument_DEPENDENCIES) - @rm -f Instrument$(EXEEXT) - $(CXXLINK) $(Instrument_OBJECTS) $(Instrument_LDADD) $(LIBS) -IntToFloat$(EXEEXT): $(IntToFloat_OBJECTS) $(IntToFloat_DEPENDENCIES) $(EXTRA_IntToFloat_DEPENDENCIES) - @rm -f IntToFloat$(EXEEXT) - $(CXXLINK) $(IntToFloat_OBJECTS) $(IntToFloat_LDADD) $(LIBS) -InvalidCompressionFormat$(EXEEXT): $(InvalidCompressionFormat_OBJECTS) $(InvalidCompressionFormat_DEPENDENCIES) $(EXTRA_InvalidCompressionFormat_DEPENDENCIES) - @rm -f InvalidCompressionFormat$(EXEEXT) - $(CXXLINK) $(InvalidCompressionFormat_OBJECTS) $(InvalidCompressionFormat_LDADD) $(LIBS) -InvalidSampleFormat$(EXEEXT): $(InvalidSampleFormat_OBJECTS) $(InvalidSampleFormat_DEPENDENCIES) $(EXTRA_InvalidSampleFormat_DEPENDENCIES) - @rm -f InvalidSampleFormat$(EXEEXT) - $(CXXLINK) $(InvalidSampleFormat_OBJECTS) $(InvalidSampleFormat_LDADD) $(LIBS) -Large$(EXEEXT): $(Large_OBJECTS) $(Large_DEPENDENCIES) $(EXTRA_Large_DEPENDENCIES) - @rm -f Large$(EXEEXT) - $(CXXLINK) $(Large_OBJECTS) $(Large_LDADD) $(LIBS) -Loop$(EXEEXT): $(Loop_OBJECTS) $(Loop_DEPENDENCIES) $(EXTRA_Loop_DEPENDENCIES) - @rm -f Loop$(EXEEXT) - $(CXXLINK) $(Loop_OBJECTS) $(Loop_LDADD) $(LIBS) -Marker$(EXEEXT): $(Marker_OBJECTS) $(Marker_DEPENDENCIES) $(EXTRA_Marker_DEPENDENCIES) - @rm -f Marker$(EXEEXT) - $(CXXLINK) $(Marker_OBJECTS) $(Marker_LDADD) $(LIBS) -Miscellaneous$(EXEEXT): $(Miscellaneous_OBJECTS) $(Miscellaneous_DEPENDENCIES) $(EXTRA_Miscellaneous_DEPENDENCIES) - @rm -f Miscellaneous$(EXEEXT) - $(CXXLINK) $(Miscellaneous_OBJECTS) $(Miscellaneous_LDADD) $(LIBS) -NeXT$(EXEEXT): $(NeXT_OBJECTS) $(NeXT_DEPENDENCIES) $(EXTRA_NeXT_DEPENDENCIES) - @rm -f NeXT$(EXEEXT) - $(CXXLINK) $(NeXT_OBJECTS) $(NeXT_LDADD) $(LIBS) -PCMData$(EXEEXT): $(PCMData_OBJECTS) $(PCMData_DEPENDENCIES) $(EXTRA_PCMData_DEPENDENCIES) - @rm -f PCMData$(EXEEXT) - $(CXXLINK) $(PCMData_OBJECTS) $(PCMData_LDADD) $(LIBS) -PCMMapping$(EXEEXT): $(PCMMapping_OBJECTS) $(PCMMapping_DEPENDENCIES) $(EXTRA_PCMMapping_DEPENDENCIES) - @rm -f PCMMapping$(EXEEXT) - $(CXXLINK) $(PCMMapping_OBJECTS) $(PCMMapping_LDADD) $(LIBS) -Pipe$(EXEEXT): $(Pipe_OBJECTS) $(Pipe_DEPENDENCIES) $(EXTRA_Pipe_DEPENDENCIES) - @rm -f Pipe$(EXEEXT) - $(CXXLINK) $(Pipe_OBJECTS) $(Pipe_LDADD) $(LIBS) -Query$(EXEEXT): $(Query_OBJECTS) $(Query_DEPENDENCIES) $(EXTRA_Query_DEPENDENCIES) - @rm -f Query$(EXEEXT) - $(CXXLINK) $(Query_OBJECTS) $(Query_LDADD) $(LIBS) -SampleFormat$(EXEEXT): $(SampleFormat_OBJECTS) $(SampleFormat_DEPENDENCIES) $(EXTRA_SampleFormat_DEPENDENCIES) - @rm -f SampleFormat$(EXEEXT) - $(CXXLINK) $(SampleFormat_OBJECTS) $(SampleFormat_LDADD) $(LIBS) -Seek$(EXEEXT): $(Seek_OBJECTS) $(Seek_DEPENDENCIES) $(EXTRA_Seek_DEPENDENCIES) - @rm -f Seek$(EXEEXT) - $(CXXLINK) $(Seek_OBJECTS) $(Seek_LDADD) $(LIBS) -Sign$(EXEEXT): $(Sign_OBJECTS) $(Sign_DEPENDENCIES) $(EXTRA_Sign_DEPENDENCIES) - @rm -f Sign$(EXEEXT) - $(CXXLINK) $(Sign_OBJECTS) $(Sign_LDADD) $(LIBS) -VirtualFile$(EXEEXT): $(VirtualFile_OBJECTS) $(VirtualFile_DEPENDENCIES) $(EXTRA_VirtualFile_DEPENDENCIES) - @rm -f VirtualFile$(EXEEXT) - $(CXXLINK) $(VirtualFile_OBJECTS) $(VirtualFile_LDADD) $(LIBS) -floatto24$(EXEEXT): $(floatto24_OBJECTS) $(floatto24_DEPENDENCIES) $(EXTRA_floatto24_DEPENDENCIES) - @rm -f floatto24$(EXEEXT) - $(CXXLINK) $(floatto24_OBJECTS) $(floatto24_LDADD) $(LIBS) -instparamtest$(EXEEXT): $(instparamtest_OBJECTS) $(instparamtest_DEPENDENCIES) $(EXTRA_instparamtest_DEPENDENCIES) - @rm -f instparamtest$(EXEEXT) - $(LINK) $(instparamtest_OBJECTS) $(instparamtest_LDADD) $(LIBS) -instparamwrite$(EXEEXT): $(instparamwrite_OBJECTS) $(instparamwrite_DEPENDENCIES) $(EXTRA_instparamwrite_DEPENDENCIES) - @rm -f instparamwrite$(EXEEXT) - $(LINK) $(instparamwrite_OBJECTS) $(instparamwrite_LDADD) $(LIBS) -printmarkers$(EXEEXT): $(printmarkers_OBJECTS) $(printmarkers_DEPENDENCIES) $(EXTRA_printmarkers_DEPENDENCIES) - @rm -f printmarkers$(EXEEXT) - $(LINK) $(printmarkers_OBJECTS) $(printmarkers_LDADD) $(LIBS) -query2$(EXEEXT): $(query2_OBJECTS) $(query2_DEPENDENCIES) $(EXTRA_query2_DEPENDENCIES) - @rm -f query2$(EXEEXT) - $(LINK) $(query2_OBJECTS) $(query2_LDADD) $(LIBS) -sixteen-to-eight$(EXEEXT): $(sixteen_to_eight_OBJECTS) $(sixteen_to_eight_DEPENDENCIES) $(EXTRA_sixteen_to_eight_DEPENDENCIES) - @rm -f sixteen-to-eight$(EXEEXT) - $(CXXLINK) $(sixteen_to_eight_OBJECTS) $(sixteen_to_eight_LDADD) $(LIBS) -testaupv$(EXEEXT): $(testaupv_OBJECTS) $(testaupv_DEPENDENCIES) $(EXTRA_testaupv_DEPENDENCIES) - @rm -f testaupv$(EXEEXT) - $(LINK) $(testaupv_OBJECTS) $(testaupv_LDADD) $(LIBS) -testchannelmatrix$(EXEEXT): $(testchannelmatrix_OBJECTS) $(testchannelmatrix_DEPENDENCIES) $(EXTRA_testchannelmatrix_DEPENDENCIES) - @rm -f testchannelmatrix$(EXEEXT) - $(CXXLINK) $(testchannelmatrix_OBJECTS) $(testchannelmatrix_LDADD) $(LIBS) -testdouble$(EXEEXT): $(testdouble_OBJECTS) $(testdouble_DEPENDENCIES) $(EXTRA_testdouble_DEPENDENCIES) - @rm -f testdouble$(EXEEXT) - $(CXXLINK) $(testdouble_OBJECTS) $(testdouble_LDADD) $(LIBS) -testfloat$(EXEEXT): $(testfloat_OBJECTS) $(testfloat_DEPENDENCIES) $(EXTRA_testfloat_DEPENDENCIES) - @rm -f testfloat$(EXEEXT) - $(CXXLINK) $(testfloat_OBJECTS) $(testfloat_LDADD) $(LIBS) -testmarkers$(EXEEXT): $(testmarkers_OBJECTS) $(testmarkers_DEPENDENCIES) $(EXTRA_testmarkers_DEPENDENCIES) - @rm -f testmarkers$(EXEEXT) - $(CXXLINK) $(testmarkers_OBJECTS) $(testmarkers_LDADD) $(LIBS) -twentyfour$(EXEEXT): $(twentyfour_OBJECTS) $(twentyfour_DEPENDENCIES) $(EXTRA_twentyfour_DEPENDENCIES) - @rm -f twentyfour$(EXEEXT) - $(CXXLINK) $(twentyfour_OBJECTS) $(twentyfour_LDADD) $(LIBS) -twentyfour2$(EXEEXT): $(twentyfour2_OBJECTS) $(twentyfour2_DEPENDENCIES) $(EXTRA_twentyfour2_DEPENDENCIES) - @rm -f twentyfour2$(EXEEXT) - $(CXXLINK) $(twentyfour2_OBJECTS) $(twentyfour2_LDADD) $(LIBS) -writealaw$(EXEEXT): $(writealaw_OBJECTS) $(writealaw_DEPENDENCIES) $(EXTRA_writealaw_DEPENDENCIES) - @rm -f writealaw$(EXEEXT) - $(CXXLINK) $(writealaw_OBJECTS) $(writealaw_LDADD) $(LIBS) -writeraw$(EXEEXT): $(writeraw_OBJECTS) $(writeraw_DEPENDENCIES) $(EXTRA_writeraw_DEPENDENCIES) - @rm -f writeraw$(EXEEXT) - $(CXXLINK) $(writeraw_OBJECTS) $(writeraw_LDADD) $(LIBS) -writeulaw$(EXEEXT): $(writeulaw_OBJECTS) $(writeulaw_DEPENDENCIES) $(EXTRA_writeulaw_DEPENDENCIES) - @rm -f writeulaw$(EXEEXT) - $(CXXLINK) $(writeulaw_OBJECTS) $(writeulaw_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADPCM.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AES.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ALAC.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ChannelMatrix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Error.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FLAC.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FloatToInt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Instrument.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IntToFloat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InvalidCompressionFormat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InvalidSampleFormat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Large.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Loop.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Marker.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Miscellaneous.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NeXT.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PCMData.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PCMMapping.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Pipe.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Query.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SampleFormat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Seek.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Sign.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestUtilities.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VirtualFile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/floatto24.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/instparamtest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/instparamwrite.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printmarkers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/query2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sixteen-to-eight.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testaupv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testchannelmatrix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdouble.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testfloat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testmarkers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twentyfour.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twentyfour2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writealaw.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeraw.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeulaw.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic clean-libtool ctags \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/audiofile-0.3.6/test/Marker.cpp b/tools/audiofile-0.3.6/test/Marker.cpp deleted file mode 100644 index 61911916..00000000 --- a/tools/audiofile-0.3.6/test/Marker.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* - Audio File Library - Copyright (C) 2012, Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include -#include -#include -#include - -#include "TestUtilities.h" - -static void testMarkers(int fileFormat, bool supportsComments) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("Marker", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - - const int markerIDs[] = { 1, 2, 3, 5, 8 }; - const int numMarkers = sizeof (markerIDs) / sizeof (int); - const char * const markerNames[numMarkers] = - { - "one", - "two", - "three", - "five", - "eight" - }; - const char * const markerComments[numMarkers] = - { - "comment one", - "comment two", - "comment three", - "comment five", - "comment eight" - }; - const int markerPositions[numMarkers] = { 1, 2, 3, 5, 8 }; - afInitMarkIDs(setup, AF_DEFAULT_TRACK, markerIDs, numMarkers); - for (int i=0; i -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -struct Miscellaneous -{ - int id; - int type; - const char *data; -}; - -const Miscellaneous kMiscellaneous[] = -{ - { 1, AF_MISC_COPY, "1806 Ludwig van Beethoven" }, - { 2, AF_MISC_NAME, "Violin Concerto in D major" } -}; - -const int kNumMiscellaneous = sizeof (kMiscellaneous) / sizeof (Miscellaneous); - -void writeMiscellaneous(int fileFormat, const std::string &testFileName) -{ - AFfilesetup setup = afNewFileSetup(); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitFileFormat(setup, fileFormat); - int *miscIDs = new int[kNumMiscellaneous]; - for (int i=0; i -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -const signed char kDataUnspecifiedLength[] = -{ - '.', 's', 'n', 'd', - 0, 0, 0, 24, // offset of 24 bytes - -1, -1, -1, -1, // unspecified length - 0, 0, 0, 3, // 16-bit linear - 0, 0, -84, 68, // 44100 Hz (0xAC44) - 0, 0, 0, 1, // 1 channel - 0, 1, - 0, 1, - 0, 2, - 0, 3, - 0, 5, - 0, 8, - 0, 13, - 0, 21, - 0, 34, - 0, 55 -}; - -const signed char kDataTruncated[] = -{ - '.', 's', 'n', 'd', - 0, 0, 0, 24, // offset of 24 bytes - 0, 0, 0, 20, // length of 20 bytes - 0, 0, 0, 3, // 16-bit linear - 0, 0, -84, 68, // 44100 Hz (0xAC44) - 0, 0, 0, 1, // 1 channel - 0, 1, - 0, 1, - 0, 2, - 0, 3, - 0, 5, - 0, 8, - 0, 13, - 0, 21, - 0, 34, - 0, 55 -}; - -const int16_t kFrames[] = { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 }; -const int kFrameCount = sizeof (kFrames) / sizeof (kFrames[0]); - -TEST(NeXT, UnspecifiedLength) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("NeXT", &testFileName)); - - int fd = ::open(testFileName.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0644); - ASSERT_GT(fd, -1); - ASSERT_EQ(::write(fd, kDataUnspecifiedLength, sizeof (kDataUnspecifiedLength)), sizeof (kDataUnspecifiedLength)); - ::close(fd); - - AFfilehandle file = afOpenFile(testFileName.c_str(), "r", NULL); - EXPECT_TRUE(file); - - int sampleFormat, sampleWidth; - afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - EXPECT_EQ(sampleFormat, AF_SAMPFMT_TWOSCOMP); - EXPECT_EQ(sampleWidth, 16); - EXPECT_EQ(afGetChannels(file, AF_DEFAULT_TRACK), 1); - EXPECT_EQ(afGetTrackBytes(file, AF_DEFAULT_TRACK), - kFrameCount * sizeof (int16_t)); - EXPECT_EQ(afGetFrameCount(file, AF_DEFAULT_TRACK), kFrameCount); - - int16_t *data = new int16_t[kFrameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, data, - kFrameCount); - EXPECT_EQ(framesRead, kFrameCount); - for (int i=0; i -#include -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -struct PCMMapping -{ - double slope, intercept, minClip, maxClip; -}; - -void getDefaultPCMMapping(int sampleFormat, int bitsPerSample, PCMMapping &m) -{ - switch (sampleFormat) - { - case AF_SAMPFMT_TWOSCOMP: - { - double s = std::pow(2.0, bitsPerSample - 1); - m.slope = s; - m.intercept = 0; - m.minClip = -s; - m.maxClip = s - 1; - break; - } - case AF_SAMPFMT_UNSIGNED: - { - double s = std::pow(2.0, bitsPerSample - 1); - m.slope = s; - m.intercept = s; - m.minClip = 0; - m.maxClip = 2 * s - 1; - break; - } - case AF_SAMPFMT_FLOAT: - case AF_SAMPFMT_DOUBLE: - m.slope = 1; - m.intercept = 0; - m.minClip = 0; - m.maxClip = 0; - break; - } -} - -template -void runTestWithChannels(int fileFormat, int channelCount) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("PCMData", &testFileName)); - - const int numFrames = 20; - const int numSamples = numFrames * channelCount; - T samples[numSamples]; - for (int i=0; i(i*i + 3*c + 1); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, fileFormat); - afInitChannels(setup, AF_DEFAULT_TRACK, channelCount); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, kSampleFormat, kBitsPerSample); - - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_TRUE(file) << "Could not open file for writing"; - - afFreeFileSetup(setup); - - PCMMapping mapping, defaultMapping; - getDefaultPCMMapping(kSampleFormat, kBitsPerSample, defaultMapping); - - afGetPCMMapping(file, AF_DEFAULT_TRACK, - &mapping.slope, &mapping.intercept, &mapping.minClip, &mapping.maxClip); - ASSERT_EQ(mapping.slope, defaultMapping.slope); - ASSERT_EQ(mapping.intercept, defaultMapping.intercept); - ASSERT_EQ(mapping.minClip, defaultMapping.minClip); - ASSERT_EQ(mapping.maxClip, defaultMapping.maxClip); - - afGetVirtualPCMMapping(file, AF_DEFAULT_TRACK, - &mapping.slope, &mapping.intercept, &mapping.minClip, &mapping.maxClip); - ASSERT_EQ(mapping.slope, defaultMapping.slope); - ASSERT_EQ(mapping.intercept, defaultMapping.intercept); - ASSERT_EQ(mapping.minClip, defaultMapping.minClip); - ASSERT_EQ(mapping.maxClip, defaultMapping.maxClip); - - ASSERT_EQ(afWriteFrames(file, AF_DEFAULT_TRACK, samples, numFrames), - numFrames) << - "Number of frames written does not match number of frames requested"; - - ASSERT_EQ(afCloseFile(file), 0) << "Error closing file"; - - file = afOpenFile(testFileName.c_str(), "r", NULL); - ASSERT_TRUE(file) << "Could not open file for reading"; - - ASSERT_EQ(afGetFileFormat(file, NULL), fileFormat) << - "Incorrect file format"; - - int sampleFormat, sampleWidth; - afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - ASSERT_EQ(sampleFormat, kSampleFormat) << "Incorrect sample format"; - ASSERT_EQ(sampleWidth, kBitsPerSample) << "Incorrect sample width"; - - ASSERT_EQ(afGetChannels(file, AF_DEFAULT_TRACK), channelCount) << - "Incorrect number of channels"; - - afGetPCMMapping(file, AF_DEFAULT_TRACK, - &mapping.slope, &mapping.intercept, &mapping.minClip, &mapping.maxClip); - ASSERT_EQ(mapping.slope, defaultMapping.slope); - ASSERT_EQ(mapping.intercept, defaultMapping.intercept); - ASSERT_EQ(mapping.minClip, defaultMapping.minClip); - ASSERT_EQ(mapping.maxClip, defaultMapping.maxClip); - - afGetVirtualPCMMapping(file, AF_DEFAULT_TRACK, - &mapping.slope, &mapping.intercept, &mapping.minClip, &mapping.maxClip); - ASSERT_EQ(mapping.slope, defaultMapping.slope); - ASSERT_EQ(mapping.intercept, defaultMapping.intercept); - ASSERT_EQ(mapping.minClip, defaultMapping.minClip); - ASSERT_EQ(mapping.maxClip, defaultMapping.maxClip); - - T *samplesRead = new T[numSamples]; - ASSERT_EQ(afReadFrames(file, AF_DEFAULT_TRACK, samplesRead, numFrames), - numFrames) << - "Number of frames read does not match number of frames requested"; - - for (int i=0; i -void runTest(int fileFormat) -{ - runTestWithChannels(fileFormat, 1); - runTestWithChannels(fileFormat, 2); - runTestWithChannels(fileFormat, 4); -} - -void testInt8(int fileFormat) -{ - runTest(fileFormat); -} - -void testInt8MonoOnly(int fileFormat) -{ - runTestWithChannels(fileFormat, 1); -} - -void testUInt8(int fileFormat) -{ - runTest(fileFormat); -} - -void testInt16(int fileFormat) -{ - runTest(fileFormat); -} - -void testInt16MonoOnly(int fileFormat) -{ - runTestWithChannels(fileFormat, 1); -} - -void testInt24(int fileFormat) -{ - runTest(fileFormat); -} - -void testInt32(int fileFormat) -{ - runTest(fileFormat); -} - -void testFloat32(int fileFormat) -{ - runTest(fileFormat); -} - -void testFloat64(int fileFormat) -{ - runTest(fileFormat); -} - -TEST(AIFF, Int8) { testInt8(AF_FILE_AIFF); } -TEST(AIFF, Int16) { testInt16(AF_FILE_AIFF); } -TEST(AIFF, Int24) { testInt24(AF_FILE_AIFF); } -TEST(AIFF, Int32) { testInt32(AF_FILE_AIFF); } - -TEST(AIFFC, Int8) { testInt8(AF_FILE_AIFFC); } -TEST(AIFFC, Int16) { testInt16(AF_FILE_AIFFC); } -TEST(AIFFC, Int24) { testInt24(AF_FILE_AIFFC); } -TEST(AIFFC, Int32) { testInt32(AF_FILE_AIFFC); } -TEST(AIFFC, Float) { testFloat32(AF_FILE_AIFFC); } -TEST(AIFFC, Double) { testFloat64(AF_FILE_AIFFC); } - -TEST(WAVE, UInt8) { testUInt8(AF_FILE_WAVE); } -TEST(WAVE, Int16) { testInt16(AF_FILE_WAVE); } -TEST(WAVE, Int24) { testInt24(AF_FILE_WAVE); } -TEST(WAVE, Int32) { testInt32(AF_FILE_WAVE); } -TEST(WAVE, Float) { testFloat32(AF_FILE_WAVE); } -TEST(WAVE, Double) { testFloat64(AF_FILE_WAVE); } - -TEST(NeXT, Int8) { testInt8(AF_FILE_NEXTSND); } -TEST(NeXT, Int16) { testInt16(AF_FILE_NEXTSND); } -TEST(NeXT, Int24) { testInt24(AF_FILE_NEXTSND); } -TEST(NeXT, Int32) { testInt32(AF_FILE_NEXTSND); } -TEST(NeXT, Float) { testFloat32(AF_FILE_NEXTSND); } -TEST(NeXT, Double) { testFloat64(AF_FILE_NEXTSND); } - -TEST(IRCAM, Int8) { testInt8(AF_FILE_IRCAM); } -TEST(IRCAM, Int16) { testInt16(AF_FILE_IRCAM); } -TEST(IRCAM, Int24) { testInt24(AF_FILE_IRCAM); } -TEST(IRCAM, Int32) { testInt32(AF_FILE_IRCAM); } -TEST(IRCAM, Float) { testFloat32(AF_FILE_IRCAM); } -TEST(IRCAM, Double) { testFloat64(AF_FILE_IRCAM); } - -TEST(IFF, Int8) { testInt8MonoOnly(AF_FILE_IFF_8SVX); } - -TEST(AVR, Int8) { testInt8MonoOnly(AF_FILE_AVR); } -TEST(AVR, Int16) { testInt16MonoOnly(AF_FILE_AVR); } - -TEST(SampleVision, Int16) { testInt16MonoOnly(AF_FILE_SAMPLEVISION); } - -TEST(VOC, UInt8) { testUInt8(AF_FILE_VOC); } -TEST(VOC, Int16) { testInt16(AF_FILE_VOC); } - -TEST(NIST, Int16) { testInt16(AF_FILE_NIST_SPHERE); } - -TEST(CAF, Int8) { testInt8(AF_FILE_CAF); } -TEST(CAF, Int16) { testInt16(AF_FILE_CAF); } -TEST(CAF, Int24) { testInt24(AF_FILE_CAF); } -TEST(CAF, Int32) { testInt32(AF_FILE_CAF); } -TEST(CAF, Float) { testFloat32(AF_FILE_CAF); } -TEST(CAF, Double) { testFloat64(AF_FILE_CAF); } - -int main (int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/PCMMapping.cpp b/tools/audiofile-0.3.6/test/PCMMapping.cpp deleted file mode 100644 index 60537315..00000000 --- a/tools/audiofile-0.3.6/test/PCMMapping.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* - Copyright (C) 2010, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -class PCMMappingTest : public testing::Test -{ -protected: - virtual void SetUp() - { - ASSERT_TRUE(createTemporaryFile("PCMMapping", &m_testFileName)); - } - virtual void TearDown() - { - ::unlink(m_testFileName.c_str()); - } - - AFfilehandle createTestFile(int sampleFormat, int sampleWidth) - { - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFFC); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); - AFfilehandle file = afOpenFile(m_testFileName.c_str(), "w", setup); - afFreeFileSetup(setup); - return file; - } - AFfilehandle openTestFile() - { - AFfilehandle file = afOpenFile(m_testFileName.c_str(), "r", AF_NULL_FILESETUP); - return file; - } - -private: - std::string m_testFileName; -}; - -TEST_F(PCMMappingTest, Float) -{ - AFfilehandle file = createTestFile(AF_SAMPFMT_FLOAT, 32); - const float data[] = { -1, 0, 1 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(); - ASSERT_TRUE(file != NULL); - double slope = 2, intercept = 2, minClip = 0, maxClip = 4; - afSetVirtualPCMMapping(file, AF_DEFAULT_TRACK, slope, intercept, minClip, maxClip); - float readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const float expectedData[] = { 0, 2, 4 }; - for (int i=0; i -#include - -#include -#include - -TEST(Pipe, Pipe) -{ - const int kFrameCount = 500; - const int kSampleCount = 2 * kFrameCount; - - int16_t data[kSampleCount]; - int16_t readData[kSampleCount]; - - for (int i=0; i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include -#include -#include - -#include "TestUtilities.h" - -TEST(Query, FileFormats) -{ - IgnoreErrors ignoreErrors; - - int fileFormats[] = - { - AF_FILE_UNKNOWN, - AF_FILE_RAWDATA, - AF_FILE_AIFFC, - AF_FILE_AIFF, - AF_FILE_NEXTSND, - AF_FILE_WAVE, - AF_FILE_BICSF, - AF_FILE_MPEG1BITSTREAM, - AF_FILE_SOUNDDESIGNER1, - AF_FILE_SOUNDDESIGNER2, - AF_FILE_AVR, - AF_FILE_IFF_8SVX, - AF_FILE_SAMPLEVISION, - AF_FILE_VOC, - AF_FILE_NIST_SPHERE, - AF_FILE_SOUNDFONT2, - AF_FILE_CAF - }; - int numFileFormats = sizeof (fileFormats) / sizeof (int); - for (int i=0; i(afQueryPointer(AF_QUERYTYPE_FILEFMT, - AF_QUERY_LABEL, fileFormats[i], 0, 0)); - if (implemented) - EXPECT_TRUE(label); - const char *name = - static_cast(afQueryPointer(AF_QUERYTYPE_FILEFMT, - AF_QUERY_NAME, fileFormats[i], 0, 0)); - if (implemented) - EXPECT_TRUE(name); - const char *description = - static_cast(afQueryPointer(AF_QUERYTYPE_FILEFMT, - AF_QUERY_DESC, fileFormats[i], 0, 0)); - if (implemented) - EXPECT_TRUE(description); - } -} - -TEST(Query, CompressionFormats) -{ - IgnoreErrors ignoreErrors; - - int compressionFormats[] = - { - AF_COMPRESSION_NONE, - AF_COMPRESSION_G711_ULAW, - AF_COMPRESSION_G711_ALAW, - AF_COMPRESSION_IMA, - AF_COMPRESSION_MS_ADPCM, - AF_COMPRESSION_G722, - AF_COMPRESSION_APPLE_ACE2, - AF_COMPRESSION_APPLE_ACE8, - AF_COMPRESSION_APPLE_MAC3, - AF_COMPRESSION_APPLE_MAC6 - }; - int numCompressionFormats = sizeof (compressionFormats) / sizeof (int); - for (int i=0; i(afQueryPointer(AF_QUERYTYPE_COMPRESSION, - AF_QUERY_LABEL, compressionFormats[i], 0, 0)); - if (implemented) - EXPECT_TRUE(label); - const char *name = - static_cast(afQueryPointer(AF_QUERYTYPE_COMPRESSION, - AF_QUERY_NAME, compressionFormats[i], 0, 0)); - if (implemented) - EXPECT_TRUE(name); - const char *description = - static_cast(afQueryPointer(AF_QUERYTYPE_COMPRESSION, - AF_QUERY_DESC, compressionFormats[i], 0, 0)); - if (implemented) - EXPECT_TRUE(description); - } -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/SampleFormat.cpp b/tools/audiofile-0.3.6/test/SampleFormat.cpp deleted file mode 100644 index dab122c1..00000000 --- a/tools/audiofile-0.3.6/test/SampleFormat.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/* - Audio File Library - Copyright (C) 2013, Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -TEST(SampleFormat, NullArguments) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("SampleFormat", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFFC); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_TRUE(file); - afFreeFileSetup(setup); - - int sampleFormat, sampleWidth; - afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - ASSERT_EQ(sampleFormat, AF_SAMPFMT_TWOSCOMP); - ASSERT_EQ(sampleWidth, 16); - - sampleFormat = -1; - afGetSampleFormat(file, AF_DEFAULT_TRACK, NULL, &sampleWidth); - ASSERT_EQ(sampleFormat, -1); - ASSERT_EQ(sampleWidth, 16); - - sampleWidth = -1; - afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, NULL); - ASSERT_EQ(sampleFormat, AF_SAMPFMT_TWOSCOMP); - ASSERT_EQ(sampleWidth, -1); - - afGetVirtualSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - ASSERT_EQ(sampleFormat, AF_SAMPFMT_TWOSCOMP); - ASSERT_EQ(sampleWidth, 16); - - sampleFormat = -1; - afGetVirtualSampleFormat(file, AF_DEFAULT_TRACK, NULL, &sampleWidth); - ASSERT_EQ(sampleFormat, -1); - ASSERT_EQ(sampleWidth, 16); - - sampleWidth = -1; - afGetVirtualSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, NULL); - ASSERT_EQ(sampleFormat, AF_SAMPFMT_TWOSCOMP); - ASSERT_EQ(sampleWidth, -1); - - ASSERT_EQ(afCloseFile(file), 0); - - ASSERT_EQ(::unlink(testFileName.c_str()), 0); -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/tools/audiofile-0.3.6/test/Seek.cpp b/tools/audiofile-0.3.6/test/Seek.cpp deleted file mode 100644 index a2b7678b..00000000 --- a/tools/audiofile-0.3.6/test/Seek.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* - Copyright (C) 2003, 2011, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - This program tests seeking within an audio file. -*/ - -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -TEST(Seek, Seek) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("Seek", &testFileName)); - - const int kFrameCount = 2000; - const int kPadFrameCount = kFrameCount + 5; - const int kDataLength = kFrameCount * sizeof (int16_t); - - int16_t data[kFrameCount]; - int16_t readData[kPadFrameCount]; - - AFfilesetup setup = afNewFileSetup(); - ASSERT_TRUE(setup); - - afInitFileFormat(setup, AF_FILE_AIFF); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_TRUE(file) << "could not open file for writing"; - - afFreeFileSetup(setup); - - /* Initialize data to a nontrivial test pattern. */ - for (int i=0; i -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -class SignConversionTest : public testing::Test -{ -protected: - virtual void SetUp() - { - ASSERT_TRUE(createTemporaryFile("Sign", &m_testFileName)); - } - virtual void TearDown() - { - ASSERT_EQ(::unlink(m_testFileName.c_str()), 0); - } - - AFfilehandle createTestFile(int sampleWidth) - { - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFFC); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, sampleWidth); - AFfilehandle file = afOpenFile(m_testFileName.c_str(), "w", setup); - afFreeFileSetup(setup); - return file; - } - AFfilehandle openTestFile(int sampleWidth) - { - AFfilehandle file = afOpenFile(m_testFileName.c_str(), "r", AF_NULL_FILESETUP); - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_UNSIGNED, sampleWidth); - return file; - } - -private: - std::string m_testFileName; -}; - -static const int8_t kMinInt8 = std::numeric_limits::min(); -static const int8_t kMaxInt8 = std::numeric_limits::max(); -static const uint8_t kMaxUInt8 = std::numeric_limits::max(); - -TEST_F(SignConversionTest, Int8) -{ - AFfilehandle file = createTestFile(8); - const int8_t data[] = { kMinInt8, 0, kMaxInt8 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(8); - ASSERT_TRUE(file != NULL); - uint8_t readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const uint8_t expectedData[] = { 0, -kMinInt8, kMaxUInt8 }; - for (int i=0; i::min(); -static const int16_t kMaxInt16 = std::numeric_limits::max(); -static const uint16_t kMaxUInt16 = std::numeric_limits::max(); - -TEST_F(SignConversionTest, Int16) -{ - AFfilehandle file = createTestFile(16); - const int16_t data[] = { kMinInt16, 0, kMaxInt16 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(16); - ASSERT_TRUE(file != NULL); - uint16_t readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const uint16_t expectedData[] = { 0, -kMinInt16, kMaxUInt16 }; - for (int i=0; i::min(); -static const int32_t kMaxInt32 = std::numeric_limits::max(); -static const uint32_t kMaxUInt32 = std::numeric_limits::max(); - -TEST_F(SignConversionTest, Int32) -{ - AFfilehandle file = createTestFile(32); - const int32_t data[] = { kMinInt32, 0, kMaxInt32 }; - const int frameCount = sizeof (data) / sizeof (data[0]); - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); - ASSERT_EQ(framesWritten, frameCount); - afCloseFile(file); - file = openTestFile(32); - ASSERT_TRUE(file != NULL); - uint32_t readData[frameCount]; - AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); - ASSERT_EQ(framesRead, frameCount); - afCloseFile(file); - const uint32_t expectedData[] = { 0, -kMinInt32, kMaxUInt32 }; - for (int i=0; i - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#include "TestUtilities.h" - -#include -#include -#include -#include - -bool createTemporaryFile(const std::string &prefix, std::string *path) -{ - *path = "/tmp/" + prefix + "-XXXXXX"; - int fd = ::mkstemp(const_cast(path->c_str())); - if (fd < 0) - return false; - ::close(fd); - return true; -} - -bool createTemporaryFile(const char *prefix, char *path) -{ - snprintf(path, PATH_MAX, "/tmp/%s-XXXXXX", prefix); - int fd = ::mkstemp(path); - if (fd < 0) - return false; - ::close(fd); - return true; -} diff --git a/tools/audiofile-0.3.6/test/TestUtilities.h b/tools/audiofile-0.3.6/test/TestUtilities.h deleted file mode 100644 index 9353656d..00000000 --- a/tools/audiofile-0.3.6/test/TestUtilities.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - Audio File Library - Copyright (C) 2012, Michael Pruett - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA -*/ - -#ifndef TEST_UTILITIES_H -#define TEST_UTILITIES_H - -#include - -#ifdef __cplusplus - -#include - -bool createTemporaryFile(const std::string &prefix, std::string *path); - -class IgnoreErrors -{ -public: - IgnoreErrors() - { - m_oldErrorHandler = afSetErrorHandler(NULL); - } - ~IgnoreErrors() - { - afSetErrorHandler(m_oldErrorHandler); - } - -private: - AFerrfunc m_oldErrorHandler; -}; - -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -bool createTemporaryFile(const char *prefix, char *path); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/tools/audiofile-0.3.6/test/VirtualFile.cpp b/tools/audiofile-0.3.6/test/VirtualFile.cpp deleted file mode 100644 index e5b5e4e1..00000000 --- a/tools/audiofile-0.3.6/test/VirtualFile.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/* - Copyright (C) 2011, Michael Pruett. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -TEST(VirtualFile, Basic) -{ - ASSERT_GE(sizeof (off_t), 8) << "Size of off_t must be at least 8 bytes."; -} - -static ssize_t vf_read(AFvirtualfile *vf, void *data, size_t nbytes) -{ - FILE *fp = static_cast(vf->closure); - return fread(data, 1, nbytes, fp); -} - -static AFfileoffset vf_length(AFvirtualfile *vf) -{ - FILE *fp = static_cast(vf->closure); - off_t current = ftello(fp); - fseeko(fp, 0, SEEK_END); - off_t length = ftello(fp); - fseeko(fp, current, SEEK_SET); - return length; -} - -static ssize_t vf_write(AFvirtualfile *vf, const void *data, size_t nbytes) -{ - FILE *fp = static_cast(vf->closure); - return fwrite(data, 1, nbytes, fp); -} - -static void vf_close(AFvirtualfile *vf) -{ - FILE *fp = static_cast(vf->closure); - fclose(fp); -} - -static AFfileoffset vf_seek(AFvirtualfile *vf, AFfileoffset offset, int is_relative) -{ - FILE *fp = static_cast(vf->closure); - fseeko(fp, offset, is_relative ? SEEK_CUR : SEEK_SET); - return ftello(fp); -} - -static AFfileoffset vf_tell(AFvirtualfile *vf) -{ - FILE *fp = static_cast(vf->closure); - return ftello(fp); -} - -static AFvirtualfile *vf_create(FILE *fp) -{ - AFvirtualfile *vf = af_virtual_file_new(); - vf->read = vf_read; - vf->length = vf_length; - vf->write = vf_write; - vf->destroy = vf_close; - vf->seek = vf_seek; - vf->tell = vf_tell; - vf->closure = fp; - return vf; -} - -TEST(VirtualFile, ReadVirtual) -{ - std::string testFileName; - ASSERT_TRUE(createTemporaryFile("VirtualFile", &testFileName)); - - AFfilesetup setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFF); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - - AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); - ASSERT_TRUE(file) << "Could not open virtual file"; - - afFreeFileSetup(setup); - - const int16_t samples[] = { 1, 1, 2, 3, 5, 8, 13 }; - const int numSamples = sizeof (samples) / sizeof (int16_t); - ASSERT_EQ(afWriteFrames(file, AF_DEFAULT_TRACK, samples, numSamples), - numSamples) << "Incorrect number of samples written"; - - ASSERT_EQ(afCloseFile(file), 0) << "Error closing virtual file"; - - FILE *fp = fopen(testFileName.c_str(), "r"); - AFvirtualfile *vf = vf_create(fp); - - file = afOpenVirtualFile(vf, "r", NULL); - ASSERT_TRUE(file) << "Could not open file"; - - int16_t readSamples[numSamples]; - ASSERT_EQ(afReadFrames(file, AF_DEFAULT_TRACK, readSamples, numSamples), - numSamples) << "Incorrect number of samples read"; - - for (int i=0; i -#endif - -#include -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -/* - When converted to samples with width 24 bits, the samples - should have the following values: -*/ - -const float samples[] = -{ - 0, - 0.5, - -0.5, - 1, - -1, - -0.25, - 0.25, - 0.75, - -0.75 -}; - -const int referenceConvertedSamples[] = -{ - 0, - 4194304, // = 2^23 * 0.5 - -4194304, // = 2^23 * -0.5 - 8388607, // = 2^23 - 1 - -8388608, // = 2^23 * -1 - -2097152, // = 2^23 * -0.25 - 2097152, // = 2^23 * 0.25 - 6291456, // = 2^23 * 0.75 - -6291456 // = 2^23 * -0.75 -}; - -const int frameCount = sizeof (samples) / sizeof (samples[0]); - -int main (int argc, char **argv) -{ - AFfilesetup setup; - if ((setup = afNewFileSetup()) == AF_NULL_FILESETUP) - { - fprintf(stderr, "Could not allocate file setup.\n"); - exit(EXIT_FAILURE); - } - - afInitFileFormat(setup, AF_FILE_IRCAM); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_FLOAT, 32); - - char testFileName[PATH_MAX]; - if (!createTemporaryFile("floatto24", testFileName)) - { - fprintf(stderr, "Could not create temporary file.\n"); - exit(EXIT_FAILURE); - } - - AFfilehandle file = afOpenFile(testFileName, "w", setup); - if (file == AF_NULL_FILEHANDLE) - { - printf("could not open file for writing\n"); - exit(EXIT_FAILURE); - } - - afFreeFileSetup(setup); - - AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, - frameCount); - - if (framesWritten != frameCount) - { - fprintf(stderr, "Wrong number of frames read.\n"); - exit(EXIT_FAILURE); - } - - if (afCloseFile(file) != 0) - { - fprintf(stderr, "Closing file returned non-zero status.\n"); - exit(EXIT_FAILURE); - } - - file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "Could not open file for writing.\n"); - exit(EXIT_FAILURE); - } - - if (afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, - AF_SAMPFMT_TWOSCOMP, 24) != 0) - { - fprintf(stderr, "afSetVirtualSampleFormat returned non-zero status.\n"); - exit(EXIT_FAILURE); - } - - int readSamples[frameCount]; - for (int i=0; i - Copyright 2000, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include -#include -#include - -int main (int argc, char **argv) -{ - AFfilehandle file; - long result; - int count, instids; - - if (argc != 2) - { - fprintf(stderr, "usage: %s filename\n", argv[0]); - exit(EXIT_FAILURE); - } - - file = afOpenFile(argv[1], "r", NULL); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "could not open file '%s'\n", argv[1]); - exit(EXIT_FAILURE); - } - - count = afGetInstIDs(file, &instids); - printf("%ld instruments in file '%s'\n", count, argv[1]); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE); - printf("MIDI base note: %ld\n", result); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE); - printf("detune in cents: %ld\n", result); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_LONOTE); - printf("MIDI low note: %ld\n", result); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_HINOTE); - printf("MIDI high note: %ld\n", result); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_LOVELOCITY); - printf("MIDI low velocity: %ld\n", result); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_HIVELOCITY); - printf("MIDI high velocity: %ld\n", result); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_NUMDBS_GAIN); - printf("gain in decibels: %ld\n", result); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_SUSLOOPID); - printf("sustain loop id: %ld\n", result); - - result = afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_RELLOOPID); - printf("release loop id: %ld\n", result); - - afCloseFile(file); - - return 0; -} diff --git a/tools/audiofile-0.3.6/test/instparamwrite.c b/tools/audiofile-0.3.6/test/instparamwrite.c deleted file mode 100644 index be7a8063..00000000 --- a/tools/audiofile-0.3.6/test/instparamwrite.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - Audio File Library - - Copyright 2000, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include - -#include - -int main (int argc, char **argv) -{ - AFfilehandle file; - AFfilesetup setup; - AUpvlist list; - - if (argc != 2) - { - fprintf(stderr, "usage: instparamwrite filename\n"); - } - - setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_AIFFC); - - file = afOpenFile(argv[1], "w", setup); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "could not open file %s for writing", argv[1]); - } - - afFreeFileSetup(setup); - - /* Set the base note to a 'D.' */ - afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE, 50); - - /* Detune down by 30 cents. */ - afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE, -30); - - afCloseFile(file); - - return 0; -} diff --git a/tools/audiofile-0.3.6/test/printmarkers.c b/tools/audiofile-0.3.6/test/printmarkers.c deleted file mode 100644 index e1086d97..00000000 --- a/tools/audiofile-0.3.6/test/printmarkers.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - Audio File Library - - Copyright (C) 2002, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - printmarkers - - This program lists the markers in an audio file. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include - -#include - -void printtime (AFframecount position, double rate) -{ - double time_in_seconds; - - time_in_seconds = (double) position / rate; - - /* Handle hours. */ - if (time_in_seconds > 3600) - { - printf("%d:", (int) (time_in_seconds / 3600)); - time_in_seconds = fmod(time_in_seconds, 3600); - } - - /* Handle minutes. */ - if (time_in_seconds > 60) - { - printf("%02d:", (int) (time_in_seconds / 60)); - time_in_seconds = fmod(time_in_seconds, 60); - } - - /* Handle seconds and milliseconds. */ - printf("%02.3f", time_in_seconds); -} - -int main (int argc, char **argv) -{ - AFfilehandle file; - double rate; - int markcount; - int *markids; - int i; - - if (argc != 2) - { - fprintf(stderr, "usage: %s filename\n", argv[0]); - fprintf(stderr, "where filename is the name of an audio file containing markers\n"); - exit(0); - } - - file = afOpenFile(argv[1], "r", NULL); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "Could not open file '%s' for reading.", argv[1]); - exit(0); - } - - markcount = afGetMarkIDs(file, AF_DEFAULT_TRACK, NULL); - if (markcount <= 0) - { - fprintf(stderr, "The file '%s' does not contain any markers.", argv[1]); - exit(0); - } - - markids = calloc(markcount, sizeof (int)); - if (markids == NULL) - { - fprintf(stderr, "Could not allocate enough memory for markers."); - exit(0); - } - - afGetMarkIDs(file, AF_DEFAULT_TRACK, markids); - - rate = afGetRate(file, AF_DEFAULT_TRACK); - - for (i=0; i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef __USE_SGI_HEADERS__ -#include -#include -#else -#include -#include -#endif - -#include -#include - -const char *paramtypename (int paramtype); -void printinstparams (int format); - -#define DEBUG - -#ifdef DEBUG -#define DEBG printf -#else -#define DEBG -#endif - -int main (int ac, char **av) -{ - AUpvlist formatlist; - int *flist; - long lvalue; - int i, formatcount; - - formatlist = afQuery(AF_QUERYTYPE_FILEFMT, AF_QUERY_IDS, 0, 0, 0); - formatcount = afQueryLong(AF_QUERYTYPE_FILEFMT, AF_QUERY_ID_COUNT, 0, 0, 0); - - DEBG("formatcount = %d\n", formatcount); - - AUpvgetval(formatlist, 0, &flist); - AUpvfree(formatlist); - - for (i=0; i -#endif - -#include -#include -#include -#include -#include -#include - -#include - -#include "TestUtilities.h" - -int main (int argc, char **argv) -{ - AFfilehandle file; - AFfilesetup setup; - int16_t frames16[] = {14298, 392, 3923, -683, 958, -1921}; - int8_t frames8[] = {55, 1, 15, -3, 3, -8}; - int i, frameCount = 6; - int8_t byte; - AFframecount result; - - setup = afNewFileSetup(); - - afInitFileFormat(setup, AF_FILE_WAVE); - - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_UNSIGNED, 8); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - - char testFileName[PATH_MAX]; - if (!createTemporaryFile("sixteen-to-eight", testFileName)) - { - fprintf(stderr, "Could not create temporary file.\n"); - exit(EXIT_FAILURE); - } - - file = afOpenFile(testFileName, "w", setup); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "could not open file for writing\n"); - exit(EXIT_FAILURE); - } - - afFreeFileSetup(setup); - - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - - afWriteFrames(file, AF_DEFAULT_TRACK, frames16, frameCount); - - afCloseFile(file); - - file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "could not open file for reading\n"); - exit(EXIT_FAILURE); - } - - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 8); - - for (i=0; i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - testaupv.c - - This is a program to test the AUpvlist commands. -*/ - -#ifdef __USE_SGI_HEADERS__ -#include -#include -#else -#include -#include -#endif - -#include -#include - -int main (int argc, char **argv) -{ - AUpvlist list; - int size; - AFfilehandle file; - - long fuck = 99; - - if (argc != 2) - { - fprintf(stderr, "usage: testaupv filename\n"); - exit(EXIT_FAILURE); - } - - file = afOpenFile(argv[1], "r", NULL); - - list = AUpvnew(4); - size = AUpvgetmaxitems(list); - - printf("AUpvsetparam: %d\n", AUpvsetparam(list, 0, AF_INST_MIDI_BASENOTE)); - printf("AUpvsetparam: %d\n", AUpvsetparam(list, 1, AF_INST_MIDI_LONOTE)); - printf("AUpvsetparam: %d\n", AUpvsetparam(list, 2, AF_INST_SUSLOOPID)); - printf("AUpvsetparam: %d\n", AUpvsetparam(list, 3, AF_INST_RELLOOPID)); - - afGetInstParams(file, AF_DEFAULT_INST, list, 4); - - AUpvgetval(list, 0, &fuck); - printf("AUpvgetval: %ld\n", fuck); - - AUpvgetval(list, 1, &fuck); - printf("AUpvgetval: %ld\n", fuck); - - AUpvgetval(list, 2, &fuck); - printf("AUpvgetval: %ld\n", fuck); - - AUpvgetval(list, 3, &fuck); - printf("AUpvgetval: %ld\n", fuck); - - afCloseFile(file); - - return 0; -} diff --git a/tools/audiofile-0.3.6/test/testchannelmatrix.c b/tools/audiofile-0.3.6/test/testchannelmatrix.c deleted file mode 100644 index 40dba8f3..00000000 --- a/tools/audiofile-0.3.6/test/testchannelmatrix.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - Audio File Library - - Copyright (C) 2003, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - testchannelmatrix.c - - This program tests the channel matrix functionality of virtual - sample format conversion in the Audio File Library. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include - -#include - -#include "TestUtilities.h" - -static char sTestFileName[PATH_MAX]; - -const short samples[] = {300, -300, 515, -515, 2315, -2315, 9154, -9154}; -#define SAMPLE_COUNT (sizeof (samples) / sizeof (short)) -#define CHANNEL_COUNT 2 - -void cleanup (void) -{ - unlink(sTestFileName); -} - -void ensure (int condition, const char *message) -{ - if (!condition) - { - printf("%s.\n", message); - cleanup(); - exit(EXIT_FAILURE); - } -} - -int main (void) -{ - AFfilesetup setup; - AFfilehandle file; - int framesWritten, framesRead; - const int frameCount = SAMPLE_COUNT / CHANNEL_COUNT; - short readsamples[SAMPLE_COUNT]; - int i; - int sampleFormat, sampleWidth; - - setup = afNewFileSetup(); - - afInitChannels(setup, AF_DEFAULT_TRACK, CHANNEL_COUNT); - afInitFileFormat(setup, AF_FILE_AIFFC); - - /* Write stereo data to test file. */ - ensure(createTemporaryFile("testchannelmatrix", sTestFileName), - "could not create temporary file"); - file = afOpenFile(sTestFileName, "w", setup); - ensure(file != AF_NULL_FILEHANDLE, "could not open file for writing"); - - afFreeFileSetup(setup); - - framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, - frameCount); - ensure(framesWritten == frameCount, - "number of frames written doesn't match " - "number of frames requested"); - - ensure(afCloseFile(file) == 0, "error closing file"); - - /* - Open the test file and read stereo data mixed down to a - single channel. The default channel matrix for one - file channel and two virtual channels is {0.5, 0.5}, - and since each odd sample is the inverse of the - corresponding even sample, the data read should be all - zeros. - */ - file = afOpenFile(sTestFileName, "r", AF_NULL_FILESETUP); - ensure(file != AF_NULL_FILEHANDLE, "could not open file for reading"); - - ensure(afGetChannels(file, AF_DEFAULT_TRACK) == 2, - "file doesn't have exactly two channels"); - afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - ensure(sampleFormat == AF_SAMPFMT_TWOSCOMP && sampleWidth == 16, - "file doesn't contain 16-bit two's complement data"); - ensure(afGetFileFormat(file, NULL) == AF_FILE_AIFFC, - "file format doesn't match format requested"); - - afSetVirtualChannels(file, AF_DEFAULT_TRACK, 1); - - framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readsamples, - frameCount); - ensure(framesRead == frameCount, "number of frames read does not match number of frames requested"); - - for (i=0; i -#endif - -#include -#include -#include -#include - -#include - -#include "TestUtilities.h" - -static char sTestFileName[PATH_MAX]; - -const double samples[] = - {1.0, 0.6, -0.3, 0.95, 0.2, -0.6, 0.9, 0.4, -0.22, 0.125, 0.1, -0.4}; -const int SAMPLE_COUNT = sizeof (samples) / sizeof (samples[0]); - -void testdouble (int fileFormat); - -void cleanup (void) -{ - unlink(sTestFileName); -} - -void ensure (int condition, const char *message) -{ - if (!condition) - { - printf("%s.\n", message); - cleanup(); - exit(EXIT_FAILURE); - } -} - -int main (int argc, char **argv) -{ - /* These file formats support double-precision floating-point audio data. */ - const int fileFormats[] = - { AF_FILE_AIFFC, AF_FILE_WAVE, AF_FILE_NEXTSND }; - const int fileFormatCount = sizeof (fileFormats) / sizeof (fileFormats[0]); - int i; - - for (i=0; i -#endif - -#include -#include -#include -#include - -#include - -#include "TestUtilities.h" - -static char sTestFileName[PATH_MAX]; - -const float samples[] = - {1.0, 0.6, -0.3, 0.95, 0.2, -0.6, 0.9, 0.4, -0.22, 0.125, 0.1, -0.4}; -#define SAMPLE_COUNT (sizeof (samples) / sizeof (float)) - -void testfloat (int fileFormat); - -void cleanup (void) -{ - unlink(sTestFileName); -} - -void ensure (int condition, const char *message) -{ - if (!condition) - { - printf("%s.\n", message); - cleanup(); - exit(EXIT_FAILURE); - } -} - -int main (int argc, char **argv) -{ - /* These file formats support floating-point audio data. */ - int fileFormatCount = 4; - int fileFormats[] = - {AF_FILE_AIFFC, AF_FILE_WAVE, AF_FILE_NEXTSND, AF_FILE_IRCAM}; - char *formatNames[] = {"AIFF-C", "WAVE", "NeXT .snd", "IRCAM"}; - int i; - - for (i=0; i -#endif - -#include -#include -#include -#include -#include - -#include - -#include "TestUtilities.h" - -static char sTestFileName[PATH_MAX]; - -#define FRAME_COUNT 200 - -void cleanup (void) -{ -#ifndef DEBUG - unlink(sTestFileName); -#endif -} - -void ensure (int condition, const char *message) -{ - if (!condition) - { - printf("%s.\n", message); - cleanup(); - exit(EXIT_FAILURE); - } -} - -int testmarkers (int fileformat) -{ - AFfilehandle file; - AFfilesetup setup; - int markids[] = {1, 2, 3, 4}; - AFframecount markpositions[] = {14, 54, 23, 101}; - const char *marknames[] = {"one", "two", "three", "four"}; - short frames[FRAME_COUNT * 2] = {0}; - int readmarkcount; - int readmarkids[4]; - AFframecount frameswritten; - - setup = afNewFileSetup(); - ensure(setup != AF_NULL_FILESETUP, "Could not create file setup"); - - afInitFileFormat(setup, fileformat); - afInitChannels(setup, AF_DEFAULT_TRACK, 2); - - afInitMarkIDs(setup, AF_DEFAULT_TRACK, markids, 4); - - afInitMarkName(setup, AF_DEFAULT_TRACK, markids[0], marknames[0]); - afInitMarkName(setup, AF_DEFAULT_TRACK, markids[1], marknames[1]); - afInitMarkName(setup, AF_DEFAULT_TRACK, markids[2], marknames[2]); - afInitMarkName(setup, AF_DEFAULT_TRACK, markids[3], marknames[3]); - - file = afOpenFile(sTestFileName, "w", setup); - ensure(file != AF_NULL_FILEHANDLE, "Could not open file for writing"); - - afFreeFileSetup(setup); - - frameswritten = afWriteFrames(file, AF_DEFAULT_TRACK, frames, FRAME_COUNT); - ensure(frameswritten == FRAME_COUNT, "Error writing audio data"); - - afSetMarkPosition(file, AF_DEFAULT_TRACK, markids[0], markpositions[0]); - afSetMarkPosition(file, AF_DEFAULT_TRACK, markids[1], markpositions[1]); - afSetMarkPosition(file, AF_DEFAULT_TRACK, markids[2], markpositions[2]); - afSetMarkPosition(file, AF_DEFAULT_TRACK, markids[3], markpositions[3]); - - afCloseFile(file); - - file = afOpenFile(sTestFileName, "r", NULL); - ensure(file != AF_NULL_FILEHANDLE, "Could not open file for reading"); - - readmarkcount = afGetMarkIDs(file, AF_DEFAULT_TRACK, NULL); - ensure(readmarkcount == 4, "Number of markers is not correct"); - - afGetMarkIDs(file, AF_DEFAULT_TRACK, readmarkids); - - for (int i=0; i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - twentyfour.c - - This program tests the conversion between 24-bit signed integer - data in a file and 32-bit signed integer data in memory. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "TestUtilities.h" - -#define FRAME_COUNT 6 - -int main (int argc, char **argv) -{ - AFfilehandle file; - AFfilesetup setup; - /* All elements in frames32 must be in the range -2^23 to 2^23 - 1. */ - const int32_t frames32[FRAME_COUNT] = - {4314298, -49392, 3923, -143683, 43, -992129}; - const uint8_t frames24[FRAME_COUNT*3] = - { - 0x41, 0xd4, 0xba, /* 4314298 */ - 0xff, 0x3f, 0x10, /* -49392 */ - 0x00, 0x0f, 0x53, /* 3923 */ - 0xfd, 0xce, 0xbd, /* -143683 */ - 0x00, 0x00, 0x2b, /* 43 */ - 0xf0, 0xdc, 0x7f /* -992129 */ - }; - int32_t readframes32[FRAME_COUNT]; - int i; - - setup = afNewFileSetup(); - assert(setup); - - afInitFileFormat(setup, AF_FILE_AIFF); - - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 24); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - - char testFileName[PATH_MAX]; - if (!createTemporaryFile("twentyfour", testFileName)) - { - fprintf(stderr, "could not create temporary file\n"); - exit(EXIT_FAILURE); - } - - file = afOpenFile(testFileName, "w", setup); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "could not open file for writing\n"); - exit(EXIT_FAILURE); - } - - afFreeFileSetup(setup); - - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 24); - afWriteFrames(file, AF_DEFAULT_TRACK, frames32, FRAME_COUNT); - - afCloseFile(file); - - file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP); - if (file == AF_NULL_FILEHANDLE) - { - fprintf(stderr, "could not open file for reading\n"); - exit(EXIT_FAILURE); - } - - /* Test virtual sample width of 24 bits. */ -#ifdef DEBUG - fprintf(stderr, "Testing virtual sample width of 24 bits.\n"); -#endif - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 24); - - for (i=0; i> 16) & 0xff; - x[2] = (frames32[i] >> 8) & 0xff; - x[3] = (frames32[i]) & 0xff; - - /* - Check to see that the precomputed values match - what we've just computed. - */ - if (x[1] != frames24[3*i] || - x[2] != frames24[3*i + 1] || - x[3] != frames24[3*i + 2]) - { - fprintf(stderr, "Data doesn't match pre-computed values.\n"); - exit(EXIT_FAILURE); - } - - if (afReadFrames(file, AF_DEFAULT_TRACK, y, 1) != 1) - { - fprintf(stderr, "Could not read from test file.\n"); - exit(EXIT_FAILURE); - } - - /* - x is in big-endian byte order; make z a - native-endian copy of x. - */ -#ifdef WORDS_BIGENDIAN - memcpy(z, x, 4); -#else - z[0] = x[3]; - z[1] = x[2]; - z[2] = x[1]; - z[3] = x[0]; -#endif - -#ifdef DEBUG - printf("x = %02x %02x %02x %02x\n", x[0], x[1], x[2], x[3]); - printf("y = %02x %02x %02x %02x\n", y[0], y[1], y[2], y[3]); - printf("z = %02x %02x %02x %02x\n", z[0], z[1], z[2], z[3]); -#endif - - /* - Check to see that the data read from the file - matches computed value. - */ - if (memcmp(y, z, 4) != 0) - { - fprintf(stderr, "Data read from file is incorrect.\n"); - exit(EXIT_FAILURE); - } - } - - /* Test virtual sample width of 32 bits. */ -#ifdef DEBUG - fprintf(stderr, "Testing virtual sample width of 32 bits.\n"); -#endif - afSeekFrame(file, AF_DEFAULT_TRACK, 0); - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 32); - - for (i=0; i> 16) & 0xff; - x[1] = (frames32[i] >> 8) & 0xff; - x[2] = (frames32[i]) & 0xff; - x[3] = 0; - - /* - Check to see that the precomputed values match - what we've just computed. - */ - if (x[0] != frames24[3*i] || - x[1] != frames24[3*i + 1] || - x[2] != frames24[3*i + 2]) - { - fprintf(stderr, "Data doesn't match pre-computed values.\n"); - exit(EXIT_FAILURE); - } - - if (afReadFrames(file, AF_DEFAULT_TRACK, y, 1) != 1) - { - fprintf(stderr, "Could not read from test file.\n"); - exit(EXIT_FAILURE); - } - - /* - x is in big-endian byte order; make z a - native-endian copy of x. - */ -#ifdef WORDS_BIGENDIAN - memcpy(z, x, 4); -#else - z[0] = x[3]; - z[1] = x[2]; - z[2] = x[1]; - z[3] = x[0]; -#endif - -#ifdef DEBUG - printf("x = %02x %02x %02x %02x\n", x[0], x[1], x[2], x[3]); - printf("y = %02x %02x %02x %02x\n", y[0], y[1], y[2], y[3]); - printf("z = %02x %02x %02x %02x\n", z[0], z[1], z[2], z[3]); -#endif - - /* - Check to see that the data read from the file - matches computed value. - */ - if (memcmp(y, z, 4) != 0) - { - fprintf(stderr, "Data read from file is incorrect.\n"); - exit(EXIT_FAILURE); - } - } - - if (afCloseFile(file) != 0) - { - fprintf(stderr, "Error closing file.\n"); - exit(EXIT_FAILURE); - } - unlink(testFileName); - - exit(EXIT_SUCCESS); -} diff --git a/tools/audiofile-0.3.6/test/twentyfour2.c b/tools/audiofile-0.3.6/test/twentyfour2.c deleted file mode 100644 index 027ede91..00000000 --- a/tools/audiofile-0.3.6/test/twentyfour2.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - Audio File Library - - Copyright (C) 2003, Michael Pruett - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - twentyfour2.c - - This program checks reading and writing a large amount of 24-bit - audio data to an AIFF file. - - This program serves as a regression test for a bug in the Audio - File Library in which requesting more than _AF_ATOMIC_NVFRAMES - (1024 frames) from afReadFrames when reading a 24-bit audio file - would result in corrupted audio data. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include -#include - -#include - -#include "TestUtilities.h" - -static char sTestFileName[PATH_MAX]; - -#define FRAME_COUNT 10000 - -void cleanup (void) -{ -#ifndef DEBUG - unlink(sTestFileName); -#endif -} - -void ensure (int condition, const char *message) -{ - if (!condition) - { - printf("%s.\n", message); - cleanup(); - exit(EXIT_FAILURE); - } -} - -int main (void) -{ - AFfilehandle file; - AFfilesetup setup; - int32_t *buffer, *readbuffer; - int i; - AFframecount frameswritten, framesread; - - setup = afNewFileSetup(); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 24); - - ensure(createTemporaryFile("twentyfour2", sTestFileName), - "could not create temporary file"); - file = afOpenFile(sTestFileName, "w", setup); - ensure(file != NULL, "could not open test file for writing"); - - afFreeFileSetup(setup); - - buffer = malloc(sizeof (int32_t) * FRAME_COUNT); - ensure(buffer != NULL, "could not allocate buffer for audio data"); - - readbuffer = malloc(sizeof (int32_t) * FRAME_COUNT); - ensure(readbuffer != NULL, "could not allocate buffer for audio data"); - - for (i=0; i - Copyright (C) 2001, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - writealaw.c - - The writealaw program performs sanity testing on the Audio File - Library's G.711 A-law compression by writing and then reading - back known data to a file to make sure the two sets of data agree. - - This program writes a set of data which is invariant under G.711 - A-law compression to a file and then reads that set of data back. - - The data read from that file should match the data written - exactly. - - If this test fails, something in the Audio File Library is broken. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef __USE_SGI_HEADERS__ -#include -#else -#include -#endif - -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -static char sTestFileName[PATH_MAX]; - -#define FRAME_COUNT 16 -#define SAMPLE_COUNT FRAME_COUNT - -void testalaw (int fileFormat); - -void cleanup (void) -{ -#ifndef DEBUG - unlink(sTestFileName); -#endif -} - -void ensure (int condition, const char *message) -{ - if (!condition) - { - printf("%s.\n", message); - cleanup(); - exit(EXIT_FAILURE); - } -} - -int main (int argc, char **argv) -{ - printf("writealaw: testing NeXT .snd.\n"); - testalaw(AF_FILE_NEXTSND); - printf("writealaw: testing AIFF-C.\n"); - testalaw(AF_FILE_AIFFC); - printf("writealaw: testing WAVE.\n"); - testalaw(AF_FILE_WAVE); - printf("writealaw: testing IRCAM.\n"); - testalaw(AF_FILE_IRCAM); - printf("writealaw: testing VOC.\n"); - testalaw(AF_FILE_VOC); - printf("writealaw: testing CAF.\n"); - testalaw(AF_FILE_CAF); - - printf("writealaw test passed.\n"); - - exit(0); -} - -void testalaw (int fileFormat) -{ - AFfilehandle file; - AFfilesetup setup; - uint16_t samples[] = {8, 24, 88, 120, 184, 784, 912, 976, - 1120, 1440, 1888, 8960, 9984, 16128, 19968, 32256}; - uint16_t readsamples[SAMPLE_COUNT]; - AFframecount framesWritten, framesRead; - int i; - - setup = afNewFileSetup(); - - afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_G711_ALAW); - afInitFileFormat(setup, fileFormat); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - - ensure(createTemporaryFile("writealaw", sTestFileName), - "could not create temporary file"); - file = afOpenFile(sTestFileName, "w", setup); - afFreeFileSetup(setup); - - ensure(afGetCompression(file, AF_DEFAULT_TRACK) == - AF_COMPRESSION_G711_ALAW, - "test file not created with G.711 A-law compression"); - - ensure(file != AF_NULL_FILEHANDLE, "unable to open file for writing"); - - framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, - FRAME_COUNT); - - ensure(framesWritten == FRAME_COUNT, - "number of frames requested does not match number of frames written"); - afCloseFile(file); - - /* Open the file for reading and verify the data. */ - file = afOpenFile(sTestFileName, "r", NULL); - ensure(file != AF_NULL_FILEHANDLE, "unable to open file for reading"); - - ensure(afGetFileFormat(file, NULL) == fileFormat, - "test file format incorrect"); - - ensure(afGetCompression(file, AF_DEFAULT_TRACK) == - AF_COMPRESSION_G711_ALAW, - "test file not opened with G.711 A-law compression"); - - framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readsamples, - FRAME_COUNT); - - ensure(framesRead == FRAME_COUNT, - "number of frames read does not match number of frames requested"); - -#ifdef DEBUG - for (i=0; i - Copyright (C) 2002, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - writeraw.c - - This program tests the validity of the AIFF file reading and writing - code. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef __USE_SGI_HEADERS__ -#include -#else -#include -#endif - -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -static char sTestFileName[PATH_MAX]; - -void cleanup (void) -{ -#ifndef DEBUG - unlink(sTestFileName); -#endif -} - -void ensure (int condition, const char *message) -{ - if (!condition) - { - printf("%s.\n", message); - cleanup(); - exit(EXIT_FAILURE); - } -} - -int main (int argc, char **argv) -{ - AFfilehandle file; - AFfilesetup setup; - uint16_t samples[] = {11, 51, 101, 501, 1001, 5001, 10001, 50001}; - int i; - int sampleFormat, sampleWidth; - int framesRead, framesWritten; - int nativeByteOrder; - -#ifdef WORDS_BIGENDIAN - nativeByteOrder = AF_BYTEORDER_BIGENDIAN; -#else - nativeByteOrder = AF_BYTEORDER_LITTLEENDIAN; -#endif - - setup = afNewFileSetup(); - afInitFileFormat(setup, AF_FILE_RAWDATA); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); - - ensure(createTemporaryFile("writeraw", sTestFileName), - "could not create temporary file"); - file = afOpenFile(sTestFileName, "w", setup); - ensure(file != AF_NULL_FILEHANDLE, "unable to open file for writing"); - - framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, 8); - ensure(framesWritten == 8, - "number of frames written does not match number of frames requested"); - - ensure(afCloseFile(file) == 0, "error closing file"); - - file = afOpenFile(sTestFileName, "r", setup); - ensure(file != AF_NULL_FILEHANDLE, "unable to open file for reading"); - afFreeFileSetup(setup); - - ensure(afGetFileFormat(file, NULL) == AF_FILE_RAWDATA, - "test file not created as raw audio data file"); - - afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); - ensure(sampleFormat == AF_SAMPFMT_TWOSCOMP, - "test file not two's complement"); - ensure(sampleWidth == 16, - "test file sample format is not 16-bit"); - - ensure(afGetChannels(file, AF_DEFAULT_TRACK) == 1, - "test file doesn't have exactly one channel"); - - ensure(afGetByteOrder(file, AF_DEFAULT_TRACK) == nativeByteOrder, - "test file not in native byte order"); - - for (i=0; i<8; i++) - { - uint16_t temporary; - - framesRead = afReadFrames(file, AF_DEFAULT_TRACK, &temporary, 1); - ensure(framesRead == 1, - "number of frames read does not match number of frames requested"); - - ensure(temporary == samples[i], - "data written to file doesn't match data read from file"); - } - - ensure(afCloseFile(file) == 0, "error closing file"); - - cleanup(); - - printf("writeraw test passed.\n"); - - exit(EXIT_SUCCESS); -} diff --git a/tools/audiofile-0.3.6/test/writeulaw.c b/tools/audiofile-0.3.6/test/writeulaw.c deleted file mode 100644 index e707aa15..00000000 --- a/tools/audiofile-0.3.6/test/writeulaw.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - Audio File Library - - Copyright (C) 2000, Michael Pruett - Copyright (C) 2001, Silicon Graphics, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - writeulaw.c - - The writeulaw program performs sanity testing on the Audio File - Library's G.711 u-law compression by writing and then reading - back known data to a file to make sure the two sets of data agree. - - This program writes a set of data which is invariant under G.711 - u-law compression to a file and then reads that set of data back. - - The data read from that file should match the data written - exactly. - - If this test fails, something in the Audio File Library is broken. -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef __USE_SGI_HEADERS__ -#include -#else -#include -#endif - -#include -#include -#include -#include -#include - -#include "TestUtilities.h" - -static char sTestFileName[PATH_MAX]; - -#define FRAME_COUNT 16 -#define SAMPLE_COUNT FRAME_COUNT - -void testulaw (int fileFormat); - -void cleanup (void) -{ -#ifndef DEBUG - unlink(sTestFileName); -#endif -} - -void ensure (int condition, const char *message) -{ - if (!condition) - { - printf("%s.\n", message); - cleanup(); - exit(EXIT_FAILURE); - } -} - -int main (int argc, char **argv) -{ - printf("writeulaw: testing NeXT .snd.\n"); - testulaw(AF_FILE_NEXTSND); - printf("writeulaw: testing AIFF-C.\n"); - testulaw(AF_FILE_AIFFC); - printf("writeulaw: testing WAVE.\n"); - testulaw(AF_FILE_WAVE); - printf("writeulaw: testing IRCAM.\n"); - testulaw(AF_FILE_IRCAM); - printf("writeulaw: testing VOC.\n"); - testulaw(AF_FILE_VOC); - printf("writeulaw: testing CAF.\n"); - testulaw(AF_FILE_CAF); - - printf("writeulaw test passed.\n"); - - exit(0); -} - -void testulaw (int fileFormat) -{ - AFfilehandle file; - AFfilesetup setup; - uint16_t samples[] = {8, 16, 80, 120, 180, 780, 924, 988, - 1116, 1436, 1884, 8828, 9852, 15996, 19836, 32124}; - uint16_t readsamples[SAMPLE_COUNT]; - AFframecount framesWritten, framesRead; - int i; - - setup = afNewFileSetup(); - - afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_G711_ULAW); - afInitFileFormat(setup, fileFormat); - afInitChannels(setup, AF_DEFAULT_TRACK, 1); - - ensure(createTemporaryFile("writeulaw", sTestFileName), - "could not create temporary file"); - file = afOpenFile(sTestFileName, "w", setup); - afFreeFileSetup(setup); - - ensure(afGetCompression(file, AF_DEFAULT_TRACK) == - AF_COMPRESSION_G711_ULAW, - "test file not created with G.711 u-law compression"); - - ensure(file != AF_NULL_FILEHANDLE, "unable to open file for writing"); - - framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, - FRAME_COUNT); - - ensure(framesWritten == FRAME_COUNT, - "number of frames requested does not match number of frames written"); - afCloseFile(file); - - /* Open the file for reading and verify the data. */ - file = afOpenFile(sTestFileName, "r", NULL); - ensure(file != AF_NULL_FILEHANDLE, "unable to open file for reading"); - - ensure(afGetFileFormat(file, NULL) == fileFormat, - "test file format incorrect"); - - ensure(afGetCompression(file, AF_DEFAULT_TRACK) == - AF_COMPRESSION_G711_ULAW, - "test file not opened with G.711 u-law compression"); - - framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readsamples, - FRAME_COUNT); - - ensure(framesRead == FRAME_COUNT, - "number of frames read does not match number of frames requested"); - -#ifdef DEBUG - for (i=0; i + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +*/ + +#define HAVE_UNISTD_H 1 +#if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +#endif +#include + +// file: Features.h +/* + Audio File Library + Copyright (C) 2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef Features_h +#define Features_h + +#define ENABLE(FEATURE) (defined ENABLE_##FEATURE && ENABLE_##FEATURE) + +#endif + +// file: Compiler.h +/* + Audio File Library + Copyright (C) 2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef COMPILER_H +#define COMPILER_H + +#if defined(__GNUC__) && !defined(__clang__) +#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#define GCC_VERSION_AT_LEAST(major, minor, patch) \ + (GCC_VERSION >= (major * 10000 + minor * 100 + patch)) +#if GCC_VERSION_AT_LEAST(4, 7, 0) && defined(__cplusplus) && __cplusplus >= 201103L +#define OVERRIDE override +#endif +#endif + +#if defined(__clang__) +#if __has_extension(cxx_override_control) +#define OVERRRIDE override +#endif +#endif + +#ifndef OVERRIDE +#define OVERRIDE +#endif + +#endif + +// file: error.h +/* + Audio File Library + Copyright (C) 1998, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef ERROR_H +#define ERROR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(__GNUC__) && !defined(__clang__) && !defined(__attribute__) +#define __attribute__(x) +#endif + +void _af_error (int errorCode, const char *fmt, ...) + __attribute__((format(printf, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif + +// file: extended.h +/* + Audio File Library + Copyright (C) 1998, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + extended.h + + This file defines interfaces to Apple's extended floating-point + conversion routines. +*/ + +#ifndef EXTENDED_H +#define EXTENDED_H + +#ifdef __cplusplus +extern "C" { +#endif + +void _af_convert_to_ieee_extended (double num, unsigned char *bytes); +double _af_convert_from_ieee_extended (const unsigned char *bytes); + +#ifdef __cplusplus +} +#endif + +#endif + +// file: compression.h +/* + Audio File Library + Copyright (C) 1999, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + compression.h +*/ + +#ifndef COMPRESSION_H +#define COMPRESSION_H + +struct CompressionUnit; + +const CompressionUnit *_af_compression_unit_from_id (int compressionid); + +#endif + +// file: aupvinternal.h +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + aupvinternal.h + + This file contains the private data structures for the parameter + value list data types. +*/ + +#ifndef AUPVINTERNAL_H +#define AUPVINTERNAL_H + +struct _AUpvitem +{ + int valid; + int type; + int parameter; + + union + { + long l; + double d; + void *v; + } + value; +}; + +struct _AUpvlist +{ + int valid; + size_t count; + struct _AUpvitem *items; +}; + +enum +{ + _AU_VALID_PVLIST = 30932, + _AU_VALID_PVITEM = 30933 +}; + +enum +{ + AU_BAD_PVLIST = -5, + AU_BAD_PVITEM = -6, + AU_BAD_PVTYPE = -7, + AU_BAD_ALLOC = -8 +}; + +enum +{ + _AU_FAIL = -1, + _AU_SUCCESS = 0 +}; + +#define _AU_NULL_PVITEM ((struct _AUpvitem *) NULL) + +#endif + +// file: aupvlist.h +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + aupvlist.h + + This file contains the interface to the parameter value list data + structures and routines. +*/ + +#ifndef AUPVLIST_H +#define AUPVLIST_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__) +#define AFAPI __attribute__((visibility("default"))) +#else +#define AFAPI +#endif + +enum +{ + AU_PVTYPE_LONG = 1, + AU_PVTYPE_DOUBLE = 2, + AU_PVTYPE_PTR = 3 +}; + +typedef struct _AUpvlist *AUpvlist; + +#define AU_NULL_PVLIST ((struct _AUpvlist *) 0) + +AFAPI AUpvlist AUpvnew (int maxItems); +AFAPI int AUpvgetmaxitems (AUpvlist); +AFAPI int AUpvfree (AUpvlist); +AFAPI int AUpvsetparam (AUpvlist, int item, int param); +AFAPI int AUpvsetvaltype (AUpvlist, int item, int type); +AFAPI int AUpvsetval (AUpvlist, int item, void *val); +AFAPI int AUpvgetparam (AUpvlist, int item, int *param); +AFAPI int AUpvgetvaltype (AUpvlist, int item, int *type); +AFAPI int AUpvgetval (AUpvlist, int item, void *val); + +#undef AFAPI + +#ifdef __cplusplus +} +#endif + +#endif /* AUPVLIST_H */ + +// file: audiofile.h +/* + Audio File Library + Copyright (C) 1998-2000, 2010-2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + audiofile.h + + This file contains the public interfaces to the Audio File Library. +*/ + +#ifndef AUDIOFILE_H +#define AUDIOFILE_H + +#include +#include +#include + +#define LIBAUDIOFILE_MAJOR_VERSION 0 +#define LIBAUDIOFILE_MINOR_VERSION 3 +#define LIBAUDIOFILE_MICRO_VERSION 6 + +#ifdef __cplusplus +extern "C" { +#endif + +#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__) +#define AFAPI __attribute__((visibility("default"))) +#else +#define AFAPI +#endif + +typedef struct _AFvirtualfile AFvirtualfile; + +typedef struct _AFfilesetup *AFfilesetup; +typedef struct _AFfilehandle *AFfilehandle; +typedef void (*AFerrfunc)(long, const char *); + +// Define AFframecount and AFfileoffset as 64-bit signed integers. +#if defined(__FreeBSD__) || \ + defined(__DragonFly__) || \ + defined(__NetBSD__) || \ + defined(__OpenBSD__) || \ + defined(__APPLE__) || \ + defined(__sgi) || \ + (defined(__linux__) && defined(__LP64__)) +// BSD and IRIX systems define off_t as a 64-bit signed integer. +// Linux defines off_t as a 64-bit signed integer in LP64 mode. +typedef off_t AFframecount; +typedef off_t AFfileoffset; +#else +// For all other systems, use int64_t. +typedef int64_t AFframecount; +typedef int64_t AFfileoffset; +#endif + +#define AF_NULL_FILESETUP ((struct _AFfilesetup *) 0) +#define AF_NULL_FILEHANDLE ((struct _AFfilehandle *) 0) + +#define AF_ERR_BASE 3000 + +enum +{ + AF_DEFAULT_TRACK = 1001 +}; + +enum +{ + AF_DEFAULT_INST = 2001 +}; + +enum +{ + AF_NUM_UNLIMITED = 99999 +}; + +enum +{ + AF_BYTEORDER_BIGENDIAN = 501, + AF_BYTEORDER_LITTLEENDIAN = 502 +}; + +enum +{ + AF_FILE_UNKNOWN = -1, + AF_FILE_RAWDATA = 0, + AF_FILE_AIFFC = 1, + AF_FILE_AIFF = 2, + AF_FILE_NEXTSND = 3, + AF_FILE_WAVE = 4, + AF_FILE_BICSF = 5, + AF_FILE_IRCAM = AF_FILE_BICSF, + AF_FILE_MPEG1BITSTREAM = 6, /* not implemented */ + AF_FILE_SOUNDDESIGNER1 = 7, /* not implemented */ + AF_FILE_SOUNDDESIGNER2 = 8, /* not implemented */ + AF_FILE_AVR = 9, + AF_FILE_IFF_8SVX = 10, + AF_FILE_SAMPLEVISION = 11, + AF_FILE_VOC = 12, + AF_FILE_NIST_SPHERE = 13, + AF_FILE_SOUNDFONT2 = 14, /* not implemented */ + AF_FILE_CAF = 15, + AF_FILE_FLAC = 16 +}; + +enum +{ + AF_LOOP_MODE_NOLOOP = 0, + AF_LOOP_MODE_FORW = 1, + AF_LOOP_MODE_FORWBAKW = 2 +}; + +enum +{ + AF_SAMPFMT_TWOSCOMP = 401, /* linear two's complement */ + AF_SAMPFMT_UNSIGNED = 402, /* unsigned integer */ + AF_SAMPFMT_FLOAT = 403, /* 32-bit IEEE floating-point */ + AF_SAMPFMT_DOUBLE = 404 /* 64-bit IEEE double-precision floating-point */ +}; + +enum +{ + AF_INST_LOOP_OFF = 0, /* no looping */ + AF_INST_LOOP_CONTINUOUS = 1, /* loop continuously through decay */ + AF_INST_LOOP_SUSTAIN = 3 /* loop during sustain, then continue */ +}; + +enum +{ + AF_INST_MIDI_BASENOTE = 301, + AF_INST_NUMCENTS_DETUNE = 302, + AF_INST_MIDI_LONOTE = 303, + AF_INST_MIDI_HINOTE = 304, + AF_INST_MIDI_LOVELOCITY = 305, + AF_INST_MIDI_HIVELOCITY = 306, + AF_INST_NUMDBS_GAIN = 307, + AF_INST_SUSLOOPID = 308, /* loop id for AIFF sustain loop */ + AF_INST_RELLOOPID = 309, /* loop id for AIFF release loop */ + AF_INST_SAMP_STARTFRAME = 310, /* start sample for this inst */ + AF_INST_SAMP_ENDFRAME = 311, /* end sample for this inst */ + AF_INST_SAMP_MODE = 312, /* looping mode for this inst */ + AF_INST_TRACKID = 313, + AF_INST_NAME = 314, /* name of this inst */ + AF_INST_SAMP_RATE = 315, /* sample rate of this inst's sample */ + AF_INST_PRESETID = 316, /* ID of preset containing this inst */ + AF_INST_PRESET_NAME = 317 /* name of preset containing this inst */ +}; + +enum +{ + AF_MISC_UNRECOGNIZED = 0, /* unrecognized data chunk */ + AF_MISC_COPY = 201, /* copyright string */ + AF_MISC_AUTH = 202, /* author string */ + AF_MISC_NAME = 203, /* name string */ + AF_MISC_ANNO = 204, /* annotation string */ + AF_MISC_APPL = 205, /* application-specific data */ + AF_MISC_MIDI = 206, /* MIDI exclusive data */ + AF_MISC_PCMMAP = 207, /* PCM mapping information (future use) */ + AF_MISC_NeXT = 208, /* misc binary data appended to NeXT header */ + AF_MISC_IRCAM_PEAKAMP = 209, /* peak amplitude information */ + AF_MISC_IRCAM_COMMENT = 210, /* BICSF text comment */ + AF_MISC_COMMENT = 210, /* general text comment */ + + AF_MISC_ICMT = AF_MISC_COMMENT, /* comments chunk (WAVE format) */ + AF_MISC_ICRD = 211, /* creation date (WAVE format) */ + AF_MISC_ISFT = 212 /* software name (WAVE format) */ +}; + +enum +{ + /* supported compression schemes */ + AF_COMPRESSION_UNKNOWN = -1, + AF_COMPRESSION_NONE = 0, + AF_COMPRESSION_G722 = 501, + AF_COMPRESSION_G711_ULAW = 502, + AF_COMPRESSION_G711_ALAW = 503, + + /* Apple proprietary AIFF-C compression schemes (not supported) */ + AF_COMPRESSION_APPLE_ACE2 = 504, + AF_COMPRESSION_APPLE_ACE8 = 505, + AF_COMPRESSION_APPLE_MAC3 = 506, + AF_COMPRESSION_APPLE_MAC6 = 507, + + AF_COMPRESSION_G726 = 517, + AF_COMPRESSION_G728 = 518, + AF_COMPRESSION_DVI_AUDIO = 519, + AF_COMPRESSION_IMA = AF_COMPRESSION_DVI_AUDIO, + AF_COMPRESSION_GSM = 520, + AF_COMPRESSION_FS1016 = 521, + AF_COMPRESSION_DV = 522, + AF_COMPRESSION_MS_ADPCM = 523, + + AF_COMPRESSION_FLAC = 530, + AF_COMPRESSION_ALAC = 540 +}; + +/* tokens for afQuery() -- see the man page for instructions */ +/* level 1 selectors */ +enum +{ + AF_QUERYTYPE_INSTPARAM = 500, + AF_QUERYTYPE_FILEFMT = 501, + AF_QUERYTYPE_COMPRESSION = 502, + AF_QUERYTYPE_COMPRESSIONPARAM = 503, + AF_QUERYTYPE_MISC = 504, + AF_QUERYTYPE_INST = 505, + AF_QUERYTYPE_MARK = 506, + AF_QUERYTYPE_LOOP = 507 +}; + +/* level 2 selectors */ +enum +{ + AF_QUERY_NAME = 600, /* get name (1-3 words) */ + AF_QUERY_DESC = 601, /* get description */ + AF_QUERY_LABEL = 602, /* get 4- or 5-char label */ + AF_QUERY_TYPE = 603, /* get type token */ + AF_QUERY_DEFAULT = 604, /* dflt. value for param */ + AF_QUERY_ID_COUNT = 605, /* get number of ids avail. */ + AF_QUERY_IDS = 606, /* get array of id tokens */ + AF_QUERY_IMPLEMENTED = 613, /* boolean */ + AF_QUERY_TYPE_COUNT = 607, /* get number of types av. */ + AF_QUERY_TYPES = 608, /* get array of types */ + AF_QUERY_NATIVE_SAMPFMT = 609, /* for compression */ + AF_QUERY_NATIVE_SAMPWIDTH = 610, + AF_QUERY_SQUISHFAC = 611, /* 1.0 means variable */ + AF_QUERY_MAX_NUMBER = 612, /* max allowed in file */ + AF_QUERY_SUPPORTED = 613 /* insts, loops, etc., supported? */ +}; + +/* level 2 selectors which have sub-selectors */ +enum +{ + AF_QUERY_TRACKS = 620, + AF_QUERY_CHANNELS = 621, + AF_QUERY_SAMPLE_SIZES = 622, + AF_QUERY_SAMPLE_FORMATS = 623, + AF_QUERY_COMPRESSION_TYPES = 624 +}; + +/* level 3 sub-selectors */ +enum +{ + AF_QUERY_VALUE_COUNT = 650, /* number of values of the above */ + AF_QUERY_VALUES = 651 /* array of those values */ +}; + + +/* + Old Audio File Library error codes. These are still returned by the + AFerrorhandler calls, but are not used by the new digital media library + error reporting routines. See the bottom of this file for the new error + tokens. +*/ + +enum +{ + AF_BAD_NOT_IMPLEMENTED = 0, /* not implemented yet */ + AF_BAD_FILEHANDLE = 1, /* tried to use invalid filehandle */ + AF_BAD_OPEN = 3, /* unix open failed */ + AF_BAD_CLOSE = 4, /* unix close failed */ + AF_BAD_READ = 5, /* unix read failed */ + AF_BAD_WRITE = 6, /* unix write failed */ + AF_BAD_LSEEK = 7, /* unix lseek failed */ + AF_BAD_NO_FILEHANDLE = 8, /* failed to allocate a filehandle struct */ + AF_BAD_ACCMODE = 10, /* unrecognized audio file access mode */ + AF_BAD_NOWRITEACC = 11, /* file not open for writing */ + AF_BAD_NOREADACC = 12, /* file not open for reading */ + AF_BAD_FILEFMT = 13, /* unrecognized audio file format */ + AF_BAD_RATE = 14, /* invalid sample rate */ + AF_BAD_CHANNELS = 15, /* invalid number of channels*/ + AF_BAD_SAMPCNT = 16, /* invalid sample count */ + AF_BAD_WIDTH = 17, /* invalid sample width */ + AF_BAD_SEEKMODE = 18, /* invalid seek mode */ + AF_BAD_NO_LOOPDATA = 19, /* failed to allocate loop struct */ + AF_BAD_MALLOC = 20, /* malloc failed somewhere */ + AF_BAD_LOOPID = 21, + AF_BAD_SAMPFMT = 22, /* bad sample format */ + AF_BAD_FILESETUP = 23, /* bad file setup structure*/ + AF_BAD_TRACKID = 24, /* no track corresponding to id */ + AF_BAD_NUMTRACKS = 25, /* wrong number of tracks for file format */ + AF_BAD_NO_FILESETUP = 26, /* failed to allocate a filesetup struct*/ + AF_BAD_LOOPMODE = 27, /* unrecognized loop mode value */ + AF_BAD_INSTID = 28, /* invalid instrument id */ + AF_BAD_NUMLOOPS = 29, /* bad number of loops */ + AF_BAD_NUMMARKS = 30, /* bad number of markers */ + AF_BAD_MARKID = 31, /* bad marker id */ + AF_BAD_MARKPOS = 32, /* invalid marker position value */ + AF_BAD_NUMINSTS = 33, /* invalid number of instruments */ + AF_BAD_NOAESDATA = 34, + AF_BAD_MISCID = 35, + AF_BAD_NUMMISC = 36, + AF_BAD_MISCSIZE = 37, + AF_BAD_MISCTYPE = 38, + AF_BAD_MISCSEEK = 39, + AF_BAD_STRLEN = 40, /* invalid string length */ + AF_BAD_RATECONV = 45, + AF_BAD_SYNCFILE = 46, + AF_BAD_CODEC_CONFIG = 47, /* improperly configured codec */ + AF_BAD_CODEC_STATE = 48, /* invalid codec state: can't recover */ + AF_BAD_CODEC_LICENSE = 49, /* no license available for codec */ + AF_BAD_CODEC_TYPE = 50, /* unsupported codec type */ + AF_BAD_COMPRESSION = AF_BAD_CODEC_CONFIG, /* for back compat */ + AF_BAD_COMPTYPE = AF_BAD_CODEC_TYPE, /* for back compat */ + + AF_BAD_INSTPTYPE = 51, /* invalid instrument parameter type */ + AF_BAD_INSTPID = 52, /* invalid instrument parameter id */ + AF_BAD_BYTEORDER = 53, + AF_BAD_FILEFMT_PARAM = 54, /* unrecognized file format parameter */ + AF_BAD_COMP_PARAM = 55, /* unrecognized compression parameter */ + AF_BAD_DATAOFFSET = 56, /* bad data offset */ + AF_BAD_FRAMECNT = 57, /* bad frame count */ + AF_BAD_QUERYTYPE = 58, /* bad query type */ + AF_BAD_QUERY = 59, /* bad argument to afQuery() */ + AF_WARNING_CODEC_RATE = 60, /* using 8k instead of codec rate 8012 */ + AF_WARNING_RATECVT = 61, /* warning about rate conversion used */ + + AF_BAD_HEADER = 62, /* failed to parse header */ + AF_BAD_FRAME = 63, /* bad frame number */ + AF_BAD_LOOPCOUNT = 64, /* bad loop count */ + AF_BAD_DMEDIA_CALL = 65, /* error in dmedia subsystem call */ + + /* AIFF/AIFF-C specific errors when parsing file header */ + AF_BAD_AIFF_HEADER = 108, /* failed to parse chunk header */ + AF_BAD_AIFF_FORM = 109, /* failed to parse FORM chunk */ + AF_BAD_AIFF_SSND = 110, /* failed to parse SSND chunk */ + AF_BAD_AIFF_CHUNKID = 111, /* unrecognized AIFF/AIFF-C chunk id */ + AF_BAD_AIFF_COMM = 112, /* failed to parse COMM chunk */ + AF_BAD_AIFF_INST = 113, /* failed to parse INST chunk */ + AF_BAD_AIFF_MARK = 114, /* failed to parse MARK chunk */ + AF_BAD_AIFF_SKIP = 115, /* failed to skip unsupported chunk */ + AF_BAD_AIFF_LOOPMODE = 116 /* unrecognized loop mode (forw, etc)*/ +}; + +/* new error codes which may be retrieved via dmGetError() */ +/* The old error tokens continue to be retrievable via the AFerrorhandler */ +/* AF_ERR_BASE is #defined in dmedia/dmedia.h */ + +enum +{ + AF_ERR_NOT_IMPLEMENTED = 0+AF_ERR_BASE, /* not implemented yet */ + AF_ERR_BAD_FILEHANDLE = 1+AF_ERR_BASE, /* invalid filehandle */ + AF_ERR_BAD_READ = 5+AF_ERR_BASE, /* unix read failed */ + AF_ERR_BAD_WRITE = 6+AF_ERR_BASE, /* unix write failed */ + AF_ERR_BAD_LSEEK = 7+AF_ERR_BASE, /* unix lseek failed */ + AF_ERR_BAD_ACCMODE = 10+AF_ERR_BASE, /* unrecognized audio file access mode */ + AF_ERR_NO_WRITEACC = 11+AF_ERR_BASE, /* file not open for writing */ + AF_ERR_NO_READACC = 12+AF_ERR_BASE, /* file not open for reading */ + AF_ERR_BAD_FILEFMT = 13+AF_ERR_BASE, /* unrecognized audio file format */ + AF_ERR_BAD_RATE = 14+AF_ERR_BASE, /* invalid sample rate */ + AF_ERR_BAD_CHANNELS = 15+AF_ERR_BASE, /* invalid # channels*/ + AF_ERR_BAD_SAMPCNT = 16+AF_ERR_BASE, /* invalid sample count */ + AF_ERR_BAD_WIDTH = 17+AF_ERR_BASE, /* invalid sample width */ + AF_ERR_BAD_SEEKMODE = 18+AF_ERR_BASE, /* invalid seek mode */ + AF_ERR_BAD_LOOPID = 21+AF_ERR_BASE, /* invalid loop id */ + AF_ERR_BAD_SAMPFMT = 22+AF_ERR_BASE, /* bad sample format */ + AF_ERR_BAD_FILESETUP = 23+AF_ERR_BASE, /* bad file setup structure*/ + AF_ERR_BAD_TRACKID = 24+AF_ERR_BASE, /* no track corresponding to id */ + AF_ERR_BAD_NUMTRACKS = 25+AF_ERR_BASE, /* wrong number of tracks for file format */ + AF_ERR_BAD_LOOPMODE = 27+AF_ERR_BASE, /* unrecognized loop mode symbol */ + AF_ERR_BAD_INSTID = 28+AF_ERR_BASE, /* invalid instrument id */ + AF_ERR_BAD_NUMLOOPS = 29+AF_ERR_BASE, /* bad number of loops */ + AF_ERR_BAD_NUMMARKS = 30+AF_ERR_BASE, /* bad number of markers */ + AF_ERR_BAD_MARKID = 31+AF_ERR_BASE, /* bad marker id */ + AF_ERR_BAD_MARKPOS = 32+AF_ERR_BASE, /* invalid marker position value */ + AF_ERR_BAD_NUMINSTS = 33+AF_ERR_BASE, /* invalid number of instruments */ + AF_ERR_BAD_NOAESDATA = 34+AF_ERR_BASE, + AF_ERR_BAD_MISCID = 35+AF_ERR_BASE, + AF_ERR_BAD_NUMMISC = 36+AF_ERR_BASE, + AF_ERR_BAD_MISCSIZE = 37+AF_ERR_BASE, + AF_ERR_BAD_MISCTYPE = 38+AF_ERR_BASE, + AF_ERR_BAD_MISCSEEK = 39+AF_ERR_BASE, + AF_ERR_BAD_STRLEN = 40+AF_ERR_BASE, /* invalid string length */ + AF_ERR_BAD_RATECONV = 45+AF_ERR_BASE, + AF_ERR_BAD_SYNCFILE = 46+AF_ERR_BASE, + AF_ERR_BAD_CODEC_CONFIG = 47+AF_ERR_BASE, /* improperly configured codec */ + AF_ERR_BAD_CODEC_TYPE = 50+AF_ERR_BASE, /* unsupported codec type */ + AF_ERR_BAD_INSTPTYPE = 51+AF_ERR_BASE, /* invalid instrument parameter type */ + AF_ERR_BAD_INSTPID = 52+AF_ERR_BASE, /* invalid instrument parameter id */ + + AF_ERR_BAD_BYTEORDER = 53+AF_ERR_BASE, + AF_ERR_BAD_FILEFMT_PARAM = 54+AF_ERR_BASE, /* unrecognized file format parameter */ + AF_ERR_BAD_COMP_PARAM = 55+AF_ERR_BASE, /* unrecognized compression parameter */ + AF_ERR_BAD_DATAOFFSET = 56+AF_ERR_BASE, /* bad data offset */ + AF_ERR_BAD_FRAMECNT = 57+AF_ERR_BASE, /* bad frame count */ + + AF_ERR_BAD_QUERYTYPE = 58+AF_ERR_BASE, /* bad query type */ + AF_ERR_BAD_QUERY = 59+AF_ERR_BASE, /* bad argument to afQuery() */ + AF_ERR_BAD_HEADER = 62+AF_ERR_BASE, /* failed to parse header */ + AF_ERR_BAD_FRAME = 63+AF_ERR_BASE, /* bad frame number */ + AF_ERR_BAD_LOOPCOUNT = 64+AF_ERR_BASE, /* bad loop count */ + + /* AIFF/AIFF-C specific errors when parsing file header */ + + AF_ERR_BAD_AIFF_HEADER = 66+AF_ERR_BASE, /* failed to parse chunk header */ + AF_ERR_BAD_AIFF_FORM = 67+AF_ERR_BASE, /* failed to parse FORM chunk */ + AF_ERR_BAD_AIFF_SSND = 68+AF_ERR_BASE, /* failed to parse SSND chunk */ + AF_ERR_BAD_AIFF_CHUNKID = 69+AF_ERR_BASE, /* unrecognized AIFF/AIFF-C chunk id */ + AF_ERR_BAD_AIFF_COMM = 70+AF_ERR_BASE, /* failed to parse COMM chunk */ + AF_ERR_BAD_AIFF_INST = 71+AF_ERR_BASE, /* failed to parse INST chunk */ + AF_ERR_BAD_AIFF_MARK = 72+AF_ERR_BASE, /* failed to parse MARK chunk */ + AF_ERR_BAD_AIFF_SKIP = 73+AF_ERR_BASE, /* failed to skip unsupported chunk */ + AF_ERR_BAD_AIFF_LOOPMODE = 74+AF_ERR_BASE /* unrecognized loop mode (forw, etc) */ +}; + + +/* global routines */ +AFAPI AFerrfunc afSetErrorHandler (AFerrfunc efunc); + +/* query routines */ +AFAPI AUpvlist afQuery (int querytype, int arg1, int arg2, int arg3, int arg4); +AFAPI long afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4); +AFAPI double afQueryDouble (int querytype, int arg1, int arg2, int arg3, int arg4); +AFAPI void *afQueryPointer (int querytype, int arg1, int arg2, int arg3, int arg4); + +/* basic operations on file handles and file setups */ +AFAPI AFfilesetup afNewFileSetup (void); +AFAPI void afFreeFileSetup (AFfilesetup); +AFAPI int afIdentifyFD (int); +AFAPI int afIdentifyNamedFD (int, const char *filename, int *implemented); + +AFAPI AFfilehandle afOpenFile (const char *filename, const char *mode, + AFfilesetup setup); +AFAPI AFfilehandle afOpenVirtualFile (AFvirtualfile *vfile, const char *mode, + AFfilesetup setup); +AFAPI AFfilehandle afOpenFD (int fd, const char *mode, AFfilesetup setup); +AFAPI AFfilehandle afOpenNamedFD (int fd, const char *mode, AFfilesetup setup, + const char *filename); + +AFAPI void afSaveFilePosition (AFfilehandle file); +AFAPI void afRestoreFilePosition (AFfilehandle file); +AFAPI int afSyncFile (AFfilehandle file); +AFAPI int afCloseFile (AFfilehandle file); + +AFAPI void afInitFileFormat (AFfilesetup, int format); +AFAPI int afGetFileFormat (AFfilehandle, int *version); + +/* track */ +AFAPI void afInitTrackIDs (AFfilesetup, const int *trackids, int trackCount); +AFAPI int afGetTrackIDs (AFfilehandle, int *trackids); + +/* track data: reading, writng, seeking, sizing frames */ +AFAPI int afReadFrames (AFfilehandle, int track, void *buffer, int frameCount); +AFAPI int afWriteFrames (AFfilehandle, int track, const void *buffer, int frameCount); +AFAPI AFframecount afSeekFrame (AFfilehandle, int track, AFframecount frameoffset); +AFAPI AFframecount afTellFrame (AFfilehandle, int track); +AFAPI AFfileoffset afGetTrackBytes (AFfilehandle, int track); +AFAPI float afGetFrameSize (AFfilehandle, int track, int expand3to4); +AFAPI float afGetVirtualFrameSize (AFfilehandle, int track, int expand3to4); + +/* track data: AES data */ +/* afInitAESChannelData is obsolete -- use afInitAESChannelDataTo() */ +AFAPI void afInitAESChannelData (AFfilesetup, int track); /* obsolete */ +AFAPI void afInitAESChannelDataTo (AFfilesetup, int track, int willBeData); +AFAPI int afGetAESChannelData (AFfilehandle, int track, unsigned char buf[24]); +AFAPI void afSetAESChannelData (AFfilehandle, int track, unsigned char buf[24]); + +/* track data: byte order */ +AFAPI void afInitByteOrder (AFfilesetup, int track, int byteOrder); +AFAPI int afGetByteOrder (AFfilehandle, int track); +AFAPI int afSetVirtualByteOrder (AFfilehandle, int track, int byteOrder); +AFAPI int afGetVirtualByteOrder (AFfilehandle, int track); + +/* track data: number of channels */ +AFAPI void afInitChannels (AFfilesetup, int track, int nchannels); +AFAPI int afGetChannels (AFfilehandle, int track); +AFAPI int afSetVirtualChannels (AFfilehandle, int track, int channelCount); +AFAPI int afGetVirtualChannels (AFfilehandle, int track); +AFAPI void afSetChannelMatrix (AFfilehandle, int track, double *matrix); + +/* track data: sample format and sample width */ +AFAPI void afInitSampleFormat (AFfilesetup, int track, int sampleFormat, + int sampleWidth); +AFAPI void afGetSampleFormat (AFfilehandle file, int track, int *sampleFormat, + int *sampleWidth); +AFAPI int afSetVirtualSampleFormat (AFfilehandle, int track, + int sampleFormat, int sampleWidth); +AFAPI void afGetVirtualSampleFormat (AFfilehandle, int track, + int *sampleFormat, int *sampleWidth); + +/* track data: sampling rate */ +AFAPI void afInitRate (AFfilesetup, int track, double rate); +AFAPI double afGetRate (AFfilehandle, int track); + +#if 0 +int afSetVirtualRate (AFfilehandle, int track, double rate); +double afGetVirtualRate (AFfilehandle, int track); +#endif + +/* track data: compression */ +AFAPI void afInitCompression (AFfilesetup, int track, int compression); +#if 0 +void afInitCompressionParams (AFfilesetup, int track, int compression + AUpvlist params, int parameterCount); +#endif + +AFAPI int afGetCompression (AFfilehandle, int track); +#if 0 +void afGetCompressionParams (AFfilehandle, int track, int *compression, + AUpvlist params, int parameterCount); + +int afSetVirtualCompression (AFfilesetup, int track, int compression); +void afSetVirtualCompressionParams (AFfilehandle, int track, int compression, + AUpvlist params, int parameterCount); + +int afGetVirtualCompression (AFfilesetup, int track, int compression); +void afGetVirtualCompressionParams (AFfilehandle, int track, int *compression, + AUpvlist params, int parameterCount); +#endif + +/* track data: pcm mapping */ +AFAPI void afInitPCMMapping (AFfilesetup filesetup, int track, + double slope, double intercept, double minClip, double maxClip); +AFAPI void afGetPCMMapping (AFfilehandle file, int track, + double *slope, double *intercept, double *minClip, double *maxClip); +/* NOTE: afSetTrackPCMMapping() is special--it does not set the virtual */ +/* format; it changes what the AF thinks the track format is! Be careful. */ +AFAPI int afSetTrackPCMMapping (AFfilehandle file, int track, + double slope, double intercept, double minClip, double maxClip); +/* NOTE: afSetVirtualPCMMapping() is different from afSetTrackPCMMapping(): */ +/* see comment for afSetTrackPCMMapping(). */ +AFAPI int afSetVirtualPCMMapping (AFfilehandle file, int track, + double slope, double intercept, double minClip, double maxClip); +AFAPI void afGetVirtualPCMMapping (AFfilehandle file, int track, + double *slope, double *intercept, double *minClip, double *maxClip); + +/* track data: data offset within the file */ +/* initialize for raw reading only */ +AFAPI void afInitDataOffset(AFfilesetup, int track, AFfileoffset offset); +AFAPI AFfileoffset afGetDataOffset (AFfilehandle, int track); + +/* track data: count of frames in file */ +AFAPI void afInitFrameCount (AFfilesetup, int track, AFframecount frameCount); +AFAPI AFframecount afGetFrameCount (AFfilehandle file, int track); + +/* loop operations */ +AFAPI void afInitLoopIDs (AFfilesetup, int instid, const int *ids, int nids); +AFAPI int afGetLoopIDs (AFfilehandle, int instid, int loopids[]); +AFAPI void afSetLoopMode (AFfilehandle, int instid, int loop, int mode); +AFAPI int afGetLoopMode (AFfilehandle, int instid, int loopid); +AFAPI int afSetLoopCount (AFfilehandle, int instid, int loop, int count); +AFAPI int afGetLoopCount (AFfilehandle, int instid, int loopid); +AFAPI void afSetLoopStart (AFfilehandle, int instid, int loopid, int markerid); +AFAPI int afGetLoopStart (AFfilehandle, int instid, int loopid); +AFAPI void afSetLoopEnd (AFfilehandle, int instid, int loopid, int markerid); +AFAPI int afGetLoopEnd (AFfilehandle, int instid, int loopid); + +AFAPI int afSetLoopStartFrame (AFfilehandle, int instid, int loop, + AFframecount startFrame); +AFAPI AFframecount afGetLoopStartFrame (AFfilehandle, int instid, int loop); +AFAPI int afSetLoopEndFrame (AFfilehandle, int instid, int loop, + AFframecount startFrame); +AFAPI AFframecount afGetLoopEndFrame (AFfilehandle, int instid, int loop); + +AFAPI void afSetLoopTrack (AFfilehandle, int instid, int loopid, int trackid); +AFAPI int afGetLoopTrack (AFfilehandle, int instid, int loopid); + +/* marker operations */ +AFAPI void afInitMarkIDs (AFfilesetup, int trackid, const int *ids, int nids); +AFAPI int afGetMarkIDs (AFfilehandle file, int trackid, int markids[]); +AFAPI void afSetMarkPosition (AFfilehandle file, int trackid, int markid, + AFframecount markpos); +AFAPI AFframecount afGetMarkPosition (AFfilehandle file, int trackid, int markid); +AFAPI void afInitMarkName (AFfilesetup, int trackid, int marker, const char *name); +AFAPI void afInitMarkComment (AFfilesetup, int trackid, int marker, + const char *comment); +AFAPI char *afGetMarkName (AFfilehandle file, int trackid, int markid); +AFAPI char *afGetMarkComment (AFfilehandle file, int trackid, int markid); + +/* instrument operations */ +AFAPI void afInitInstIDs (AFfilesetup, const int *ids, int nids); +AFAPI int afGetInstIDs (AFfilehandle file, int *instids); +AFAPI void afGetInstParams (AFfilehandle file, int instid, AUpvlist pvlist, + int nparams); +AFAPI void afSetInstParams (AFfilehandle file, int instid, AUpvlist pvlist, + int nparams); +AFAPI long afGetInstParamLong (AFfilehandle file, int instid, int param); +AFAPI void afSetInstParamLong (AFfilehandle file, int instid, int param, long value); + +/* miscellaneous data operations */ +AFAPI void afInitMiscIDs (AFfilesetup, const int *ids, int nids); +AFAPI int afGetMiscIDs (AFfilehandle, int *ids); +AFAPI void afInitMiscType (AFfilesetup, int miscellaneousid, int type); +AFAPI int afGetMiscType (AFfilehandle, int miscellaneousid); +AFAPI void afInitMiscSize (AFfilesetup, int miscellaneousid, int size); +AFAPI int afGetMiscSize (AFfilehandle, int miscellaneousid); +AFAPI int afWriteMisc (AFfilehandle, int miscellaneousid, const void *buf, int bytes); +AFAPI int afReadMisc (AFfilehandle, int miscellaneousid, void *buf, int bytes); +AFAPI int afSeekMisc (AFfilehandle, int miscellaneousid, int offset); + +#undef AFAPI + +#ifdef __cplusplus +} +#endif + +#endif /* AUDIOFILE_H */ + +// file: afinternal.h +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + afinternal.h + + This file defines the internal structures for the Audio File Library. +*/ + +#ifndef AFINTERNAL_H +#define AFINTERNAL_H + +#include + +enum status +{ + AF_SUCCEED = 0, + AF_FAIL = -1 +}; + +union AFPVu +{ + long l; + double d; + void *v; +}; + +struct InstParamInfo +{ + int id; + int type; + const char *name; + AFPVu defaultValue; +}; + +struct Loop +{ + int id; + int mode; /* AF_LOOP_MODE_... */ + int count; /* how many times the loop is played */ + int beginMarker, endMarker; + int trackid; +}; + +struct LoopSetup +{ + int id; +}; + +struct Miscellaneous +{ + int id; + int type; + int size; + + void *buffer; + + int position; // offset within the miscellaneous chunk +}; + +struct MiscellaneousSetup +{ + int id; + int type; + int size; +}; + +struct TrackSetup; + +class File; +struct Track; + +enum +{ + _AF_VALID_FILEHANDLE = 38212, + _AF_VALID_FILESETUP = 38213 +}; + +enum +{ + _AF_READ_ACCESS = 1, + _AF_WRITE_ACCESS = 2 +}; + +// The following are tokens for compression parameters in PV lists. +enum +{ + _AF_MS_ADPCM_NUM_COEFFICIENTS = 800, /* type: long */ + _AF_MS_ADPCM_COEFFICIENTS = 801, /* type: array of int16_t[2] */ + _AF_IMA_ADPCM_TYPE = 810, + _AF_IMA_ADPCM_TYPE_WAVE = 1, + _AF_IMA_ADPCM_TYPE_QT = 2, + _AF_CODEC_DATA = 900, // type: pointer + _AF_CODEC_DATA_SIZE = 901 // type: long +}; + +/* NeXT/Sun sampling rate */ +#define _AF_SRATE_CODEC (8012.8210513) + +#endif + +// file: byteorder.h +/* + Audio File Library + Copyright (C) 1998-1999, 2010-2011, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef BYTEORDER_H +#define BYTEORDER_H + + +#include + +#if WORDS_BIGENDIAN + #define _AF_BYTEORDER_NATIVE (AF_BYTEORDER_BIGENDIAN) +#else + #define _AF_BYTEORDER_NATIVE (AF_BYTEORDER_LITTLEENDIAN) +#endif + +inline uint16_t _af_byteswap_int16 (uint16_t x) +{ + return (x >> 8) | (x << 8); +} + +inline uint32_t _af_byteswap_int32 (uint32_t x) +{ + return ((x & 0x000000ffU) << 24) | + ((x & 0x0000ff00U) << 8) | + ((x & 0x00ff0000U) >> 8) | + ((x & 0xff000000U) >> 24); +} + +inline uint64_t _af_byteswap_int64 (uint64_t x) +{ + return ((x & 0x00000000000000ffULL) << 56) | + ((x & 0x000000000000ff00ULL) << 40) | + ((x & 0x0000000000ff0000ULL) << 24) | + ((x & 0x00000000ff000000ULL) << 8) | + ((x & 0x000000ff00000000ULL) >> 8) | + ((x & 0x0000ff0000000000ULL) >> 24) | + ((x & 0x00ff000000000000ULL) >> 40) | + ((x & 0xff00000000000000ULL) >> 56); +} + +inline float _af_byteswap_float32 (float x) +{ + union + { + uint32_t i; + float f; + } u; + u.f = x; + u.i = _af_byteswap_int32(u.i); + return u.f; +} + +inline double _af_byteswap_float64 (double x) +{ + union + { + uint64_t i; + double f; + } u; + u.f = x; + u.i = _af_byteswap_int64(u.i); + return u.f; +} + +inline uint64_t byteswap(uint64_t value) { return _af_byteswap_int64(value); } +inline int64_t byteswap(int64_t value) { return _af_byteswap_int64(value); } +inline uint32_t byteswap(uint32_t value) { return _af_byteswap_int32(value); } +inline int32_t byteswap(int32_t value) { return _af_byteswap_int32(value); } +inline uint16_t byteswap(uint16_t value) { return _af_byteswap_int16(value); } +inline int16_t byteswap(int16_t value) { return _af_byteswap_int16(value); } + +inline double byteswap(double value) { return _af_byteswap_float64(value); } +inline float byteswap(float value) { return _af_byteswap_float32(value); } + +template +T bigToHost(T value) +{ + return _AF_BYTEORDER_NATIVE == AF_BYTEORDER_BIGENDIAN ? value : byteswap(value); +} + +template +T littleToHost(T value) +{ + return _AF_BYTEORDER_NATIVE == AF_BYTEORDER_LITTLEENDIAN ? value : byteswap(value); +} + +template +T hostToBig(T value) +{ + return _AF_BYTEORDER_NATIVE == AF_BYTEORDER_BIGENDIAN ? value : byteswap(value); +} + +template +T hostToLittle(T value) +{ + return _AF_BYTEORDER_NATIVE == AF_BYTEORDER_LITTLEENDIAN ? value : byteswap(value); +} + +#endif + +// file: AudioFormat.h +/* + Audio File Library + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef AUDIOFORMAT_H +#define AUDIOFORMAT_H + + +#include +#include + +struct PCMInfo +{ + double slope, intercept, minClip, maxClip; +}; + +struct AudioFormat +{ + double sampleRate; /* sampling rate in Hz */ + int sampleFormat; /* AF_SAMPFMT_... */ + int sampleWidth; /* sample width in bits */ + int byteOrder; /* AF_BYTEORDER_... */ + + PCMInfo pcm; /* parameters of PCM data */ + + int channelCount; /* number of channels */ + + int compressionType; /* AF_COMPRESSION_... */ + AUpvlist compressionParams; /* NULL if no compression */ + + bool packed : 1; + + size_t framesPerPacket; + size_t bytesPerPacket; + + size_t bytesPerSample(bool stretch3to4) const; + size_t bytesPerFrame(bool stretch3to4) const; + size_t bytesPerSample() const; + size_t bytesPerFrame() const; + bool isInteger() const; + bool isSigned() const; + bool isUnsigned() const; + bool isFloat() const; + bool isCompressed() const; + bool isUncompressed() const; + bool isPacked() const { return packed; } + bool isByteOrderSignificant() const { return sampleWidth > 8; } + + void computeBytesPerPacketPCM(); + + std::string description() const; +}; + +#endif + +// file: debug.h +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + debug.h + + This header file declares debugging functions for the Audio + File Library. +*/ + +#ifndef DEBUG_H +#define DEBUG_H + +#include + +void _af_print_filehandle (AFfilehandle filehandle); +void _af_print_tracks (AFfilehandle filehandle); +void _af_print_channel_matrix (double *matrix, int fchans, int vchans); +void _af_print_pvlist (AUpvlist list); + +void _af_print_audioformat (AudioFormat *format); +void _af_print_frame (AFframecount frameno, double *frame, int nchannels, + char *formatstring, int numberwidth, + double slope, double intercept, double minclip, double maxclip); + +#endif + +// file: util.h +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + util.h + + This file contains some general utility functions for the Audio + File Library. +*/ + +#ifndef UTIL_H +#define UTIL_H + +#include +#include + + +struct AudioFormat; + +bool _af_filesetup_ok (AFfilesetup setup); +bool _af_filehandle_ok (AFfilehandle file); + +void *_af_malloc (size_t size); +void *_af_realloc (void *ptr, size_t size); +void *_af_calloc (size_t nmemb, size_t size); +char *_af_strdup (const char *s); + +AUpvlist _af_pv_long (long val); +AUpvlist _af_pv_double (double val); +AUpvlist _af_pv_pointer (void *val); + +bool _af_pv_getlong (AUpvlist pvlist, int param, long *l); +bool _af_pv_getdouble (AUpvlist pvlist, int param, double *d); +bool _af_pv_getptr (AUpvlist pvlist, int param, void **v); + +bool _af_unique_ids (const int *ids, int nids, const char *idname, int iderr); + +float _af_format_frame_size (const AudioFormat *format, bool stretch3to4); +int _af_format_frame_size_uncompressed (const AudioFormat *format, bool stretch3to4); +float _af_format_sample_size (const AudioFormat *format, bool stretch3to4); +int _af_format_sample_size_uncompressed (const AudioFormat *format, bool stretch3to4); + +status _af_set_sample_format (AudioFormat *f, int sampleFormat, int sampleWidth); + +#endif + +// file: units.h +/* + Audio File Library + Copyright (C) 2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + units.h + + This file defines the internal Unit and CompressionUnit + structures for the Audio File Library. +*/ + +#ifndef UNIT_H +#define UNIT_H + + +struct AudioFormat; +class FileModule; + +struct Unit +{ + int fileFormat; /* AF_FILEFMT_... */ + const char *name; /* a 2-3 word name of the file format */ + const char *description; /* a more descriptive name for the format */ + const char *label; /* a 4-character label for the format */ + bool implemented; /* if implemented */ + + AFfilesetup (*completesetup) (AFfilesetup setup); + bool (*recognize) (File *fh); + + int defaultSampleFormat; + int defaultSampleWidth; + + int compressionTypeCount; + const int *compressionTypes; + + int markerCount; + + int instrumentCount; + int loopPerInstrumentCount; + + int instrumentParameterCount; + const InstParamInfo *instrumentParameters; +}; + +struct CompressionUnit +{ + int compressionID; /* AF_COMPRESSION_... */ + bool implemented; + const char *label; /* 4-character (approximately) label */ + const char *shortname; /* short name in English */ + const char *name; /* long name in English */ + double squishFactor; /* compression ratio */ + int nativeSampleFormat; /* AF_SAMPFMT_... */ + int nativeSampleWidth; /* sample width in bits */ + bool needsRebuffer; /* if there are chunk boundary requirements */ + bool multiple_of; /* can accept any multiple of chunksize */ + bool (*fmtok) (AudioFormat *format); + + FileModule *(*initcompress) (Track *track, File *fh, + bool seekok, bool headerless, AFframecount *chunkframes); + FileModule *(*initdecompress) (Track *track, File *fh, + bool seekok, bool headerless, AFframecount *chunkframes); +}; + +#define _AF_NUM_UNITS 17 +#define _AF_NUM_COMPRESSION 7 + +extern const Unit _af_units[_AF_NUM_UNITS]; +extern const CompressionUnit _af_compression[_AF_NUM_COMPRESSION]; + +#endif /* UNIT_H */ + +// file: UUID.h +/* + Copyright (C) 2011, Michael Pruett. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef UUID_H +#define UUID_H + +#include +#include + +struct UUID +{ + uint8_t data[16]; + + bool operator==(const UUID &) const; + bool operator!=(const UUID &) const; + std::string name() const; +}; + +#endif + +// file: Shared.h +/* + Copyright (C) 2010, Michael Pruett. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef SHARED_H +#define SHARED_H + +template +class Shared +{ +public: + Shared() : m_refCount(0) + { + } + void retain() { m_refCount++; } + void release() { if (--m_refCount == 0) delete static_cast(this); } + +protected: + ~Shared() + { + } + +private: + int m_refCount; + + Shared(const Shared &); + Shared &operator =(const Shared &); +}; + +template +class SharedPtr +{ +public: + SharedPtr() : m_ptr(0) + { + } + SharedPtr(T *ptr) : m_ptr(ptr) + { + if (m_ptr) m_ptr->retain(); + } + SharedPtr(const SharedPtr &p) : m_ptr(p.m_ptr) + { + if (m_ptr) m_ptr->retain(); + } + ~SharedPtr() + { + if (T *p = m_ptr) p->release(); + } + + SharedPtr &operator =(T *ptr) + { + if (m_ptr != ptr) + { + if (ptr) ptr->retain(); + if (m_ptr) m_ptr->release(); + m_ptr = ptr; + } + return *this; + } + SharedPtr &operator =(const SharedPtr &p) + { + if (m_ptr != p.m_ptr) + { + if (p.m_ptr) p.m_ptr->retain(); + if (m_ptr) m_ptr->release(); + m_ptr = p.m_ptr; + } + return *this; + } + + T *get() const { return m_ptr; } + T &operator *() const { return *m_ptr; } + T *operator ->() const { return m_ptr; } + + typedef T *SharedPtr::*UnspecifiedBoolType; + operator UnspecifiedBoolType() const { return m_ptr ? &SharedPtr::m_ptr : 0; } + + bool operator !() const { return !m_ptr; } + +private: + T *m_ptr; +}; + +#endif + +// file: Buffer.h +/* + Audio File Library + Copyright (C) 2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef Buffer_h +#define Buffer_h + + +#include + +class Buffer : public Shared +{ +public: + Buffer(); + Buffer(size_t size); + Buffer(const void *data, size_t size); + ~Buffer(); + + void *data() { return m_data; } + const void *data() const { return m_data; } + + size_t size() const { return m_size; } + +private: + void *m_data; + size_t m_size; +}; + +#endif + +// file: File.h +/* + Copyright (C) 2010, Michael Pruett. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef FILE_H +#define FILE_H + +#include + +typedef struct _AFvirtualfile AFvirtualfile; + +class File : public Shared +{ +public: + enum AccessMode + { + ReadAccess, + WriteAccess + }; + + enum SeekOrigin + { + SeekFromBeginning, + SeekFromCurrent, + SeekFromEnd + }; + + static File *open(const char *path, AccessMode mode); + static File *create(int fd, AccessMode mode); + static File *create(AFvirtualfile *vf, AccessMode mode); + + virtual ~File(); + virtual int close() = 0; + virtual ssize_t read(void *data, size_t nbytes) = 0; + virtual ssize_t write(const void *data, size_t nbytes) = 0; + virtual off_t length() = 0; + virtual off_t seek(off_t offset, SeekOrigin origin) = 0; + virtual off_t tell() = 0; + + bool canSeek(); + + AccessMode accessMode() const { return m_accessMode; } + +private: + AccessMode m_accessMode; + +protected: + File(AccessMode mode) : m_accessMode(mode) { } +}; + +#endif // FILE_H + +// file: FileHandle.h +/* + Audio File Library + Copyright (C) 2010-2011, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef FILEHANDLE_H +#define FILEHANDLE_H + +#include + +class File; +class Tag; +struct Instrument; +struct Miscellaneous; +struct Track; + +struct _AFfilehandle +{ + static _AFfilehandle *create(int fileFormat); + + int m_valid; // _AF_VALID_FILEHANDLE + int m_access; // _AF_READ_ACCESS or _AF_WRITE_ACCESS + + bool m_seekok; + + File *m_fh; + + char *m_fileName; + + int m_fileFormat; + + int m_trackCount; + Track *m_tracks; + + int m_instrumentCount; + Instrument *m_instruments; + + int m_miscellaneousCount; + Miscellaneous *m_miscellaneous; + +private: + int m_formatByteOrder; + + status copyTracksFromSetup(AFfilesetup setup); + status copyInstrumentsFromSetup(AFfilesetup setup); + status copyMiscellaneousFromSetup(AFfilesetup setup); + +public: + virtual ~_AFfilehandle(); + + virtual int getVersion() { return 0; } + virtual status readInit(AFfilesetup) = 0; + virtual status writeInit(AFfilesetup) = 0; + virtual status update() = 0; + virtual bool isInstrumentParameterValid(AUpvlist, int) { return false; } + + bool checkCanRead(); + bool checkCanWrite(); + + Track *allocateTrack(); + Track *getTrack(int trackID = AF_DEFAULT_TRACK); + Instrument *getInstrument(int instrumentID); + Miscellaneous *getMiscellaneous(int miscellaneousID); + +protected: + _AFfilehandle(); + + status initFromSetup(AFfilesetup setup); + + void setFormatByteOrder(int byteOrder) { m_formatByteOrder = byteOrder; } + + bool readU8(uint8_t *); + bool readS8(int8_t *); + bool readU16(uint16_t *); + bool readS16(int16_t *); + bool readU32(uint32_t *); + bool readS32(int32_t *); + bool readU64(uint64_t *); + bool readS64(int64_t *); + bool readFloat(float *); + bool readDouble(double *); + + bool writeU8(const uint8_t *); + bool writeS8(const int8_t *); + bool writeU16(const uint16_t *); + bool writeS16(const int16_t *); + bool writeU32(const uint32_t *); + bool writeS32(const int32_t *); + bool writeU64(const uint64_t *); + bool writeS64(const int64_t *); + bool writeFloat(const float *); + bool writeDouble(const double *); + + bool readTag(Tag *t); + bool writeTag(const Tag *t); +}; + +#endif + +// file: Instrument.h +/* + Audio File Library + Copyright (C) 2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + Instrument.h + + This file declares routines for dealing with instruments. +*/ + +#ifndef INSTRUMENT_H +#define INSTRUMENT_H + + +struct LoopSetup; +struct Loop; + +struct InstrumentSetup +{ + int id; + + int loopCount; + LoopSetup *loops; + + bool loopSet; + + bool allocateLoops(int count); + void freeLoops(); +}; + +struct Instrument +{ + int id; + + int loopCount; + Loop *loops; + + AFPVu *values; + + Loop *getLoop(int loopID); +}; + +void _af_instparam_get (AFfilehandle file, int instid, AUpvlist pvlist, + int npv, bool forceLong); + +void _af_instparam_set (AFfilehandle file, int instid, AUpvlist pvlist, + int npv); + +int _af_instparam_index_from_id (int fileFormat, int id); + +#endif /* INSTRUMENT_H */ + +// file: Track.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + track.h +*/ + +#ifndef TRACK_H +#define TRACK_H + + +class ModuleState; +class PacketTable; +struct Marker; +struct MarkerSetup; + +struct TrackSetup +{ + int id; + + AudioFormat f; + + bool rateSet, sampleFormatSet, sampleWidthSet, byteOrderSet, + channelCountSet, compressionSet, aesDataSet, markersSet, + dataOffsetSet, frameCountSet; + + int markerCount; + MarkerSetup *markers; + + AFfileoffset dataOffset; + AFframecount frameCount; +}; + +struct Track +{ + Track(); + ~Track(); + + int id; /* usually AF_DEFAULT_TRACKID */ + + AudioFormat f, v; /* file and virtual audio formats */ + + SharedPtr m_packetTable; + + double *channelMatrix; + + int markerCount; + Marker *markers; + + bool hasAESData; /* Is AES nonaudio data present? */ + unsigned char aesData[24]; /* AES nonaudio data */ + + AFframecount totalfframes; /* frameCount */ + AFframecount nextfframe; /* currentFrame */ + AFframecount frames2ignore; + AFfileoffset fpos_first_frame; /* dataStart */ + AFfileoffset fpos_next_frame; + AFfileoffset fpos_after_data; + AFframecount totalvframes; + AFframecount nextvframe; + AFfileoffset data_size; /* trackBytes */ + + SharedPtr ms; + + double taper, dynamic_range; + bool ratecvt_filter_params_set; + + bool filemodhappy; + + void print(); + + Marker *getMarker(int markerID); + status copyMarkers(TrackSetup *setup); + + void computeTotalFileFrames(); +}; + +#endif + +// file: Marker.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef MARKER_H +#define MARKER_H + +struct MarkerSetup +{ + int id; + char *name, *comment; +}; + +struct Marker +{ + short id; + unsigned long position; + char *name; + char *comment; +}; + +struct Track; + +Marker *_af_marker_new (int count); +Marker *_af_marker_find_by_id (Track *track, int id); + +#endif /* MARKER_H */ + +// file: Setup.h +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef SETUP_H +#define SETUP_H + + +struct InstrumentSetup; +struct MiscellaneousSetup; +struct TrackSetup; + +struct _AFfilesetup +{ + int valid; + + int fileFormat; + + bool trackSet, instrumentSet, miscellaneousSet; + + int trackCount; + TrackSetup *tracks; + + int instrumentCount; + InstrumentSetup *instruments; + + int miscellaneousCount; + MiscellaneousSetup *miscellaneous; + + TrackSetup *getTrack(int trackID = AF_DEFAULT_TRACK); + InstrumentSetup *getInstrument(int instrumentID); + MiscellaneousSetup *getMiscellaneous(int miscellaneousID); +}; + +void _af_setup_free_markers (AFfilesetup setup, int trackno); +void _af_setup_free_tracks (AFfilesetup setup); +void _af_setup_free_instruments (AFfilesetup setup); + +AFfilesetup _af_filesetup_copy (const _AFfilesetup *setup, + const _AFfilesetup *defaultSetup, bool copyMarks); + +InstrumentSetup *_af_instsetup_new (int count); + +#endif + +// file: Tag.h +/* + Audio File Library + Copyright (C) 2011, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef TAG_H +#define TAG_H + +#include +#include +#include +#include + +class Tag +{ +public: + Tag() : m_value(0) { } + Tag(uint32_t value) : m_value(value) { } + Tag(const char *s) + { + assert(strlen(s) == 4); + memcpy(&m_value, s, 4); + } + + uint32_t value() const { return m_value; } + + bool operator==(const Tag &t) const { return m_value == t.m_value; } + bool operator!=(const Tag &t) const { return m_value != t.m_value; } + + std::string name() const + { + char s[5]; + memcpy(s, &m_value, 4); + s[4] = '\0'; + return std::string(s); + } + +private: + uint32_t m_value; +}; + +#endif + +// file: PacketTable.h +/* + Audio File Library + Copyright (C) 2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef PacketTable_h +#define PacketTable_h + + +#include + +#include +#include +#include + +class PacketTable : public Shared +{ +public: + PacketTable(); + PacketTable(int64_t numValidFrames, + int32_t primingFrames, + int32_t remainderFrames); + ~PacketTable(); + + size_t numPackets() const { return m_bytesPerPacket.size(); } + int64_t numValidFrames() const { return m_numValidFrames; } + void setNumValidFrames(int64_t numValidFrames); + int32_t primingFrames() const { return m_primingFrames; } + void setPrimingFrames(int32_t primingFrames); + int32_t remainderFrames() const { return m_remainderFrames; } + void setRemainderFrames(int32_t remainderFrames); + + void append(size_t bytesPerPacket); + size_t bytesPerPacket(size_t packet) const { return m_bytesPerPacket[packet]; } + AFfileoffset startOfPacket(size_t packet) const; + +private: + int64_t m_numValidFrames; + int32_t m_primingFrames; + int32_t m_remainderFrames; + + std::vector m_bytesPerPacket; +}; + +#endif + +// file: pcm.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + pcm.h + + This file defines various constants for PCM mapping. +*/ + +#ifndef PCM_H +#define PCM_H + +/* + SLOPE_INTN = 2^(N-1) +*/ +#define SLOPE_INT8 (128.0) +#define SLOPE_INT16 (32768.0) +#define SLOPE_INT24 (8388608.0) +#define SLOPE_INT32 (2147483648.0) + +/* + INTERCEPT_U_INTN = 2^(N-1) +*/ +#define INTERCEPT_U_INT8 (128.0) +#define INTERCEPT_U_INT16 (32768.0) +#define INTERCEPT_U_INT24 (8388608.0) +#define INTERCEPT_U_INT32 (2147483648.0) + +/* + MIN_INTN = -(2^(N-1)) +*/ +#define MIN_INT8 (-128.0) +#define MIN_INT16 (-32768.0) +#define MIN_INT24 (-8388608.0) +#define MIN_INT32 (-2147483648.0) + +/* + MAX_INTN = 2^(N-1) - 1 +*/ +#define MAX_INT8 127.0 +#define MAX_INT16 32767.0 +#define MAX_INT24 8388607.0 +#define MAX_INT32 2147483647.0 + +/* + MAX_U_INTN = 2^N - 1 +*/ +#define MAX_U_INT8 255.0 +#define MAX_U_INT16 65535.0 +#define MAX_U_INT24 16777215.0 +#define MAX_U_INT32 4294967295.0 + +extern const PCMInfo _af_default_signed_integer_pcm_mappings[]; +extern const PCMInfo _af_default_unsigned_integer_pcm_mappings[]; +extern const PCMInfo _af_default_float_pcm_mapping; +extern const PCMInfo _af_default_double_pcm_mapping; + +#endif + +// file: g711.h +/* + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use. Users may copy or modify this source code without + * charge. + * + * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING + * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * g711.h + * + * u-law, A-law and linear PCM conversions. + */ + +#ifndef G711_H +#define G711_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law + * + * linear2alaw() accepts an 16-bit integer and encodes it as A-law data. + * + * Linear Input Code Compressed Code + * ------------------------ --------------- + * 0000000wxyza 000wxyz + * 0000001wxyza 001wxyz + * 000001wxyzab 010wxyz + * 00001wxyzabc 011wxyz + * 0001wxyzabcd 100wxyz + * 001wxyzabcde 101wxyz + * 01wxyzabcdef 110wxyz + * 1wxyzabcdefg 111wxyz + * + * For further information see John C. Bellamy's Digital Telephony, 1982, + * John Wiley & Sons, pps 98-111 and 472-476. + */ + +/* pcm_val is 2's complement (16-bit range) */ +unsigned char _af_linear2alaw (int pcm_val); + +/* + * alaw2linear() - Convert an A-law value to 16-bit linear PCM + * + */ + +int _af_alaw2linear (unsigned char a_val); + +/* + * linear2ulaw() - Convert a linear PCM value to u-law + * + * In order to simplify the encoding process, the original linear magnitude + * is biased by adding 33 which shifts the encoding range from (0 - 8158) to + * (33 - 8191). The result can be seen in the following encoding table: + * + * Biased Linear Input Code Compressed Code + * ------------------------ --------------- + * 00000001wxyza 000wxyz + * 0000001wxyzab 001wxyz + * 000001wxyzabc 010wxyz + * 00001wxyzabcd 011wxyz + * 0001wxyzabcde 100wxyz + * 001wxyzabcdef 101wxyz + * 01wxyzabcdefg 110wxyz + * 1wxyzabcdefgh 111wxyz + * + * Each biased linear code has a leading 1 which identifies the segment + * number. The value of the segment number is equal to 7 minus the number + * of leading 0's. The quantization interval is directly available as the + * four bits wxyz. * The trailing bits (a - h) are ignored. + * + * Ordinarily the complement of the resulting code word is used for + * transmission, and so the code word is complemented before it is returned. + * + * For further information see John C. Bellamy's Digital Telephony, 1982, + * John Wiley & Sons, pps 98-111 and 472-476. + */ + +/* pcm_val is 2's complement (16-bit range) */ +unsigned char _af_linear2ulaw (int pcm_val); + +/* + * ulaw2linear() - Convert a u-law value to 16-bit linear PCM + * + * First, a biased linear code is derived from the code word. An unbiased + * output can then be obtained by subtracting 33 from the biased code. + * + * Note that this function expects to be passed the complement of the + * original code word. This is in keeping with ISDN conventions. + */ + +int _af_ulaw2linear (unsigned char u_val); + +#ifdef __cplusplus +} +#endif + +#endif /* G711_H */ + +// file: af_vfs.h +/* + Audio File Library + Copyright (C) 1999, Elliot Lee + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + af_vfs.h + + Virtual file operations for the Audio File Library. +*/ + +#ifndef AUDIOFILE_VFS_H +#define AUDIOFILE_VFS_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__) +#define AFAPI __attribute__((visibility("default"))) +#else +#define AFAPI +#endif + +struct _AFvirtualfile +{ + ssize_t (*read) (AFvirtualfile *vfile, void *data, size_t nbytes); + AFfileoffset (*length) (AFvirtualfile *vfile); + ssize_t (*write) (AFvirtualfile *vfile, const void *data, size_t nbytes); + void (*destroy) (AFvirtualfile *vfile); + AFfileoffset (*seek) (AFvirtualfile *vfile, AFfileoffset offset, int is_relative); + AFfileoffset (*tell) (AFvirtualfile *vfile); + + void *closure; +}; + +AFAPI AFvirtualfile *af_virtual_file_new (void); +AFAPI void af_virtual_file_destroy (AFvirtualfile *vfile); + +#undef AFAPI + +#ifdef __cplusplus +} +#endif + +#endif + +// file: Raw.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + Raw.h +*/ + +#ifndef RAW_H +#define RAW_H + + +#define _AF_RAW_NUM_COMPTYPES 2 +extern const int _af_raw_compression_types[_AF_RAW_NUM_COMPTYPES]; + +class RawFile : public _AFfilehandle +{ +public: + static bool recognize(File *fh); + static AFfilesetup completeSetup(AFfilesetup); + + status readInit(AFfilesetup setup) OVERRIDE; + status writeInit(AFfilesetup setup) OVERRIDE; + status update() OVERRIDE; +}; + +#endif + +// file: WAVE.h +/* + Audio File Library + Copyright (C) 1998-2000, 2003, 2010-2012, Michael Pruett + Copyright (C) 2002-2003, Davy Durham + Copyright (C) 2000-2001, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + WAVE.h + + This file contains structures and constants related to the RIFF + WAVE sound file format. +*/ + +#ifndef WAVE_H +#define WAVE_H + +#include + +#define _AF_WAVE_NUM_INSTPARAMS 7 +extern const InstParamInfo _af_wave_inst_params[_AF_WAVE_NUM_INSTPARAMS]; +#define _AF_WAVE_NUM_COMPTYPES 4 +extern const int _af_wave_compression_types[_AF_WAVE_NUM_COMPTYPES]; + +struct UUID; + +class WAVEFile : public _AFfilehandle +{ +public: + static bool recognize(File *fh); + static AFfilesetup completeSetup(AFfilesetup); + + WAVEFile(); + + status readInit(AFfilesetup) OVERRIDE; + status writeInit(AFfilesetup) OVERRIDE; + + status update() OVERRIDE; + + bool isInstrumentParameterValid(AUpvlist, int) OVERRIDE; + +private: + AFfileoffset m_factOffset; // start of fact (frame count) chunk + AFfileoffset m_miscellaneousOffset; + AFfileoffset m_markOffset; + AFfileoffset m_dataSizeOffset; + + /* + The index into the coefficient array is of type + uint8_t, so we can safely limit msadpcmCoefficients to + be 256 coefficient pairs. + */ + int m_msadpcmNumCoefficients; + int16_t m_msadpcmCoefficients[256][2]; + + status parseFrameCount(const Tag &type, uint32_t size); + status parseFormat(const Tag &type, uint32_t size); + status parseData(const Tag &type, uint32_t size); + status parsePlayList(const Tag &type, uint32_t size); + status parseCues(const Tag &type, uint32_t size); + status parseADTLSubChunk(const Tag &type, uint32_t size); + status parseINFOSubChunk(const Tag &type, uint32_t size); + status parseList(const Tag &type, uint32_t size); + status parseInstrument(const Tag &type, uint32_t size); + + status writeFormat(); + status writeFrameCount(); + status writeMiscellaneous(); + status writeCues(); + status writeData(); + + bool readUUID(UUID *g); + bool writeUUID(const UUID *g); + + bool writeZString(const char *); + size_t zStringLength(const char *); + + void initCompressionParams(); + void initIMACompressionParams(); + void initMSADPCMCompressionParams(); +}; + +#endif + +// file: SampleVision.h +/* + Audio File Library + Copyright (C) 2012, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef SAMPLE_VISION_H +#define SAMPLE_VISION_H + + +class SampleVisionFile : public _AFfilehandle +{ +public: + SampleVisionFile(); + virtual ~SampleVisionFile(); + + static bool recognize(File *fh); + + static AFfilesetup completeSetup(AFfilesetup); + + status readInit(AFfilesetup) OVERRIDE; + status writeInit(AFfilesetup) OVERRIDE; + + status update() OVERRIDE; + +private: + AFfileoffset m_frameCountOffset; + + status parseLoops(); + status parseMarkers(); + status writeTrailer(); + status writeLoops(); + status writeMarkers(); + + void addMiscellaneous(int type, const char *data); +}; + +#endif + +// file: modules/Module.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef MODULE_H +#define MODULE_H + + +#include + +enum FormatCode +{ + kUndefined = -1, + kInt8, + kInt16, + kInt24, + kInt32, + kFloat, + kDouble, +}; + +class Chunk : public Shared +{ +public: + void *buffer; + size_t frameCount; + AudioFormat f; + bool ownsMemory; + + Chunk() : buffer(NULL), frameCount(0), ownsMemory(false) { } + ~Chunk() + { + deallocate(); + } + void allocate(size_t capacity) + { + deallocate(); + ownsMemory = true; + buffer = ::operator new(capacity); + } + void deallocate() + { + if (ownsMemory) + ::operator delete(buffer); + ownsMemory = false; + buffer = NULL; + } +}; + +class Module : public Shared +{ +public: + Module(); + virtual ~Module(); + + void setSink(Module *); + void setSource(Module *); + Chunk *inChunk() const { return m_inChunk.get(); } + void setInChunk(Chunk *chunk) { m_inChunk = chunk; } + Chunk *outChunk() const { return m_outChunk.get(); } + void setOutChunk(Chunk *chunk) { m_outChunk = chunk; } + + virtual const char *name() const; + /* + Set format of m_outChunk based on how this module transforms m_inChunk. + */ + virtual void describe(); + /* + Set frame count of m_inChunk to the maximum number of frames needed to + produce frame count of m_outChunk. + */ + virtual void maxPull(); + /* + Set frame count of m_outChunk to the maximum number of frames needed to + produce frame count of m_inChunk. + */ + virtual void maxPush(); + virtual void runPull(); + virtual void reset1() { } + virtual void reset2() { } + virtual void runPush(); + virtual void sync1() { } + virtual void sync2() { } + +protected: + SharedPtr m_inChunk, m_outChunk; + union + { + Module *m_sink; + Module *m_source; + }; + + void pull(size_t frames); + void push(size_t frames); +}; + +/* + _AF_ATOMIC_NVFRAMES is NOT the maximum number of frames a module + can be requested to produce. + + This IS the maximum number of virtual (user) frames that will + be produced or processed per run of the modules. + + Modules can be requested more frames than this because of rate + conversion and rebuffering. +*/ + +#define _AF_ATOMIC_NVFRAMES 1024 + +#endif // MODULE_H + +// file: modules/ModuleState.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef MODULESTATE_H +#define MODULESTATE_H + +#include + +class FileModule; +class Module; + +class ModuleState : public Shared +{ +public: + ModuleState(); + virtual ~ModuleState(); + + bool isDirty() const { return m_isDirty; } + void setDirty() { m_isDirty = true; } + status init(AFfilehandle file, Track *track); + status setup(AFfilehandle file, Track *track); + status reset(AFfilehandle file, Track *track); + status sync(AFfilehandle file, Track *track); + + int numModules() const { return m_modules.size(); } + const std::vector > &modules() const; + const std::vector > &chunks() const; + + bool mustUseAtomicNVFrames() const { return true; } + + void print(); + + bool fileModuleHandlesSeeking() const; + +private: + std::vector > m_modules; + std::vector > m_chunks; + bool m_isDirty; + + SharedPtr m_fileModule; + SharedPtr m_fileRebufferModule; + + status initFileModule(AFfilehandle file, Track *track); + + status arrange(AFfilehandle file, Track *track); + + void addModule(Module *module); + + void addConvertIntToInt(FormatCode input, FormatCode output); + void addConvertIntToFloat(FormatCode input, FormatCode output); + void addConvertFloatToInt(FormatCode input, FormatCode output, + const PCMInfo &inputMapping, const PCMInfo &outputMapping); + void addConvertFloatToFloat(FormatCode input, FormatCode output); +}; + +#endif + +// file: modules/SimpleModule.h +/* + Audio File Library + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef SIMPLE_MODULE_H +#define SIMPLE_MODULE_H + + + +#include +#include +#include +#include + +class SimpleModule : public Module +{ +public: + virtual void runPull() OVERRIDE; + virtual void runPush() OVERRIDE; + virtual void run(Chunk &inChunk, Chunk &outChunk) = 0; +}; + +struct SwapModule : public SimpleModule +{ +public: + virtual const char *name() const OVERRIDE { return "swap"; } + virtual void describe() OVERRIDE + { + m_outChunk->f.byteOrder = m_inChunk->f.byteOrder == AF_BYTEORDER_BIGENDIAN ? + AF_BYTEORDER_LITTLEENDIAN : AF_BYTEORDER_BIGENDIAN; + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + switch (m_inChunk->f.bytesPerSample(false)) + { + case 2: + run<2, int16_t>(inChunk, outChunk); break; + case 3: + run<3, char>(inChunk, outChunk); break; + case 4: + run<4, int32_t>(inChunk, outChunk); break; + case 8: + run<8, int64_t>(inChunk, outChunk); break; + default: + assert(false); break; + } + } + +private: + template + void run(Chunk &inChunk, Chunk &outChunk) + { + int sampleCount = inChunk.f.channelCount * inChunk.frameCount; + runSwap(reinterpret_cast(inChunk.buffer), + reinterpret_cast(outChunk.buffer), + sampleCount); + } + template + void runSwap(const T *input, T *output, int sampleCount) + { + for (int i=0; i +inline void SwapModule::runSwap<3, char>(const char *input, char *output, int count) +{ + for (int i=0; i +void transform(const void *srcData, void *dstData, size_t count) +{ + typedef typename UnaryFunction::argument_type InputType; + typedef typename UnaryFunction::result_type OutputType; + const InputType *src = reinterpret_cast(srcData); + OutputType *dst = reinterpret_cast(dstData); + std::transform(src, src + count, dst, UnaryFunction()); +} + +template +struct IntTypes; + +template <> +struct IntTypes { typedef int8_t SignedType; typedef uint8_t UnsignedType; }; +template <> +struct IntTypes { typedef int16_t SignedType; typedef uint16_t UnsignedType; }; +template <> +struct IntTypes { typedef int32_t SignedType; typedef uint32_t UnsignedType; }; +template <> +struct IntTypes { typedef int32_t SignedType; typedef uint32_t UnsignedType; }; + +template +struct signConverter +{ + typedef typename IntTypes::SignedType SignedType; + typedef typename IntTypes::UnsignedType UnsignedType; + + static const int kScaleBits = (Format + 1) * CHAR_BIT - 1; + static const int kMaxSignedValue = (((1 << (kScaleBits - 1)) - 1) << 1) + 1; + static const int kMinSignedValue = -kMaxSignedValue - 1; + + struct signedToUnsigned : public std::unary_function + { + UnsignedType operator()(SignedType x) { return x - kMinSignedValue; } + }; + + struct unsignedToSigned : public std::unary_function + { + SignedType operator()(UnsignedType x) { return x + kMinSignedValue; } + }; +}; + +class ConvertSign : public SimpleModule +{ +public: + ConvertSign(FormatCode format, bool fromSigned) : + m_format(format), + m_fromSigned(fromSigned) + { + } + virtual const char *name() const OVERRIDE { return "sign"; } + virtual void describe() OVERRIDE + { + const int scaleBits = m_inChunk->f.bytesPerSample(false) * CHAR_BIT; + m_outChunk->f.sampleFormat = + m_fromSigned ? AF_SAMPFMT_UNSIGNED : AF_SAMPFMT_TWOSCOMP; + double shift = -(1 << (scaleBits - 1)); + if (m_fromSigned) + shift = -shift; + m_outChunk->f.pcm.intercept += shift; + m_outChunk->f.pcm.minClip += shift; + m_outChunk->f.pcm.maxClip += shift; + } + virtual void run(Chunk &input, Chunk &output) OVERRIDE + { + size_t count = input.frameCount * m_inChunk->f.channelCount; + if (m_fromSigned) + convertSignedToUnsigned(input.buffer, output.buffer, count); + else + convertUnsignedToSigned(input.buffer, output.buffer, count); + } + +private: + FormatCode m_format; + bool m_fromSigned; + + template + static void convertSignedToUnsigned(const void *src, void *dst, size_t count) + { + transform::signedToUnsigned>(src, dst, count); + } + void convertSignedToUnsigned(const void *src, void *dst, size_t count) + { + switch (m_format) + { + case kInt8: + convertSignedToUnsigned(src, dst, count); + break; + case kInt16: + convertSignedToUnsigned(src, dst, count); + break; + case kInt24: + convertSignedToUnsigned(src, dst, count); + break; + case kInt32: + convertSignedToUnsigned(src, dst, count); + break; + default: + assert(false); + } + } + + template + static void convertUnsignedToSigned(const void *src, void *dst, size_t count) + { + transform::unsignedToSigned>(src, dst, count); + } + void convertUnsignedToSigned(const void *src, void *dst, size_t count) + { + switch (m_format) + { + case kInt8: + convertUnsignedToSigned(src, dst, count); + break; + case kInt16: + convertUnsignedToSigned(src, dst, count); + break; + case kInt24: + convertUnsignedToSigned(src, dst, count); + break; + case kInt32: + convertUnsignedToSigned(src, dst, count); + break; + default: + assert(false); + } + } +}; + +struct Expand3To4Module : public SimpleModule +{ +public: + Expand3To4Module(bool isSigned) : m_isSigned(isSigned) + { + } + virtual const char *name() const OVERRIDE { return "expand3to4"; } + virtual void describe() OVERRIDE + { + m_outChunk->f.packed = false; + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + int count = inChunk.f.channelCount * inChunk.frameCount; + if (m_isSigned) + run(reinterpret_cast(inChunk.buffer), + reinterpret_cast(outChunk.buffer), + count); + else + run(reinterpret_cast(inChunk.buffer), + reinterpret_cast(outChunk.buffer), + count); + } + +private: + bool m_isSigned; + + template + void run(const uint8_t *input, T *output, int sampleCount) + { + for (int i=0; i> 8; + } + } +}; + +struct Compress4To3Module : public SimpleModule +{ +public: + Compress4To3Module(bool isSigned) : m_isSigned(isSigned) + { + } + virtual const char *name() const OVERRIDE { return "compress4to3"; } + virtual void describe() OVERRIDE + { + m_outChunk->f.packed = true; + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + int count = inChunk.f.channelCount * inChunk.frameCount; + if (m_isSigned) + run(inChunk.buffer, outChunk.buffer, count); + else + run(inChunk.buffer, outChunk.buffer, count); + } + +private: + bool m_isSigned; + + template + void run(const void *input, void *output, int count) + { + const T *in = reinterpret_cast(input); + uint8_t *out = reinterpret_cast(output); + for (int i=0; i + void extract3(T in, uint8_t &c0, uint8_t &c1, uint8_t &c2) + { +#ifdef WORDS_BIGENDIAN + c0 = (in >> 16) & 0xff; + c1 = (in >> 8) & 0xff; + c2 = in & 0xff; +#else + c2 = (in >> 16) & 0xff; + c1 = (in >> 8) & 0xff; + c0 = in & 0xff; +#endif + } +}; + +template +struct intToFloat : public std::unary_function +{ + Result operator()(Arg x) const { return x; } +}; + +struct ConvertIntToFloat : public SimpleModule +{ + ConvertIntToFloat(FormatCode inFormat, FormatCode outFormat) : + m_inFormat(inFormat), m_outFormat(outFormat) + { + } + virtual const char *name() const OVERRIDE { return "intToFloat"; } + virtual void describe() OVERRIDE + { + m_outChunk->f.sampleFormat = m_outFormat == kDouble ? + AF_SAMPFMT_DOUBLE : AF_SAMPFMT_FLOAT; + m_outChunk->f.sampleWidth = m_outFormat == kDouble ? 64 : 32; + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + const void *src = inChunk.buffer; + void *dst = outChunk.buffer; + int count = inChunk.frameCount * inChunk.f.channelCount; + if (m_outFormat == kFloat) + { + switch (m_inFormat) + { + case kInt8: + run(src, dst, count); break; + case kInt16: + run(src, dst, count); break; + case kInt24: + case kInt32: + run(src, dst, count); break; + default: + assert(false); + } + } + else if (m_outFormat == kDouble) + { + switch (m_inFormat) + { + case kInt8: + run(src, dst, count); break; + case kInt16: + run(src, dst, count); break; + case kInt24: + case kInt32: + run(src, dst, count); break; + default: + assert(false); + } + } + } + +private: + FormatCode m_inFormat, m_outFormat; + + template + static void run(const void *src, void *dst, int count) + { + transform >(src, dst, count); + } +}; + +template +struct lshift : public std::unary_function +{ + Result operator()(const Arg &x) const { return x << shift; } +}; + +template +struct rshift : public std::unary_function +{ + Result operator()(const Arg &x) const { return x >> shift; } +}; + +struct ConvertInt : public SimpleModule +{ + ConvertInt(FormatCode inFormat, FormatCode outFormat) : + m_inFormat(inFormat), + m_outFormat(outFormat) + { + assert(isInteger(m_inFormat)); + assert(isInteger(m_outFormat)); + } + virtual const char *name() const OVERRIDE { return "convertInt"; } + virtual void describe() OVERRIDE + { + getDefaultPCMMapping(m_outChunk->f.sampleWidth, + m_outChunk->f.pcm.slope, + m_outChunk->f.pcm.intercept, + m_outChunk->f.pcm.minClip, + m_outChunk->f.pcm.maxClip); + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + const void *src = inChunk.buffer; + void *dst = outChunk.buffer; + size_t count = inChunk.frameCount * inChunk.f.channelCount; + +#define MASK(N, M) (((N)<<3) | (M)) +#define HANDLE(N, M) \ + case MASK(N, M): convertInt(src, dst, count); break; + switch (MASK(m_inFormat, m_outFormat)) + { + HANDLE(kInt8, kInt16) + HANDLE(kInt8, kInt24) + HANDLE(kInt8, kInt32) + HANDLE(kInt16, kInt8) + HANDLE(kInt16, kInt24) + HANDLE(kInt16, kInt32) + HANDLE(kInt24, kInt8) + HANDLE(kInt24, kInt16) + HANDLE(kInt24, kInt32) + HANDLE(kInt32, kInt8) + HANDLE(kInt32, kInt16) + HANDLE(kInt32, kInt24) + } +#undef MASK +#undef HANDLE + } + +private: + FormatCode m_inFormat, m_outFormat; + + void getDefaultPCMMapping(int &bits, double &slope, double &intercept, + double &minClip, double &maxClip) + { + bits = (m_outFormat + 1) * CHAR_BIT; + slope = (1LL << (bits - 1)); + intercept = 0; + minClip = -(1 << (bits - 1)); + maxClip = (1LL << (bits - 1)) - 1; + } + + static bool isInteger(FormatCode code) + { + return code >= kInt8 && code <= kInt32; + } + + template Output)> + struct shift; + + template + struct shift : + public rshift::SignedType, + typename IntTypes::SignedType, + (Input - Output) * CHAR_BIT> + { + }; + + template + struct shift : + public lshift::SignedType, + typename IntTypes::SignedType, + (Output - Input) * CHAR_BIT> + { + }; + + template + static void convertInt(const void *src, void *dst, int count) + { + transform >(src, dst, count); + } +}; + +template +struct floatToFloat : public std::unary_function +{ + Result operator()(Arg x) const { return x; } +}; + +struct ConvertFloat : public SimpleModule +{ + ConvertFloat(FormatCode inFormat, FormatCode outFormat) : + m_inFormat(inFormat), m_outFormat(outFormat) + { + assert((m_inFormat == kFloat && m_outFormat == kDouble) || + (m_inFormat == kDouble && m_outFormat == kFloat)); + } + virtual const char *name() const OVERRIDE { return "convertFloat"; } + virtual void describe() OVERRIDE + { + switch (m_outFormat) + { + case kFloat: + m_outChunk->f.sampleFormat = AF_SAMPFMT_FLOAT; + m_outChunk->f.sampleWidth = 32; + break; + case kDouble: + m_outChunk->f.sampleFormat = AF_SAMPFMT_DOUBLE; + m_outChunk->f.sampleWidth = 64; + break; + default: + assert(false); + } + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + const void *src = inChunk.buffer; + void *dst = outChunk.buffer; + size_t count = inChunk.frameCount * inChunk.f.channelCount; + + switch (m_outFormat) + { + case kFloat: + transform >(src, dst, count); + break; + case kDouble: + transform >(src, dst, count); + break; + default: + assert(false); + } + } + +private: + FormatCode m_inFormat, m_outFormat; +}; + +struct Clip : public SimpleModule +{ + Clip(FormatCode format, const PCMInfo &outputMapping) : + m_format(format), + m_outputMapping(outputMapping) + { + } + virtual const char *name() const OVERRIDE { return "clip"; } + virtual void describe() OVERRIDE + { + m_outChunk->f.pcm = m_outputMapping; + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + const void *src = inChunk.buffer; + void *dst = outChunk.buffer; + int count = inChunk.frameCount * inChunk.f.channelCount; + + switch (m_format) + { + case kInt8: + run(src, dst, count); break; + case kInt16: + run(src, dst, count); break; + case kInt24: + case kInt32: + run(src, dst, count); break; + case kFloat: + run(src, dst, count); break; + case kDouble: + run(src, dst, count); break; + default: + assert(false); + } + } + +private: + FormatCode m_format; + PCMInfo m_outputMapping; + + template + void run(const void *srcData, void *dstData, int count) + { + const T minValue = m_outputMapping.minClip; + const T maxValue = m_outputMapping.maxClip; + + const T *src = reinterpret_cast(srcData); + T *dst = reinterpret_cast(dstData); + + for (int i=0; if.sampleFormat = AF_SAMPFMT_TWOSCOMP; + m_outChunk->f.sampleWidth = (m_outputFormat + 1) * CHAR_BIT; + m_outChunk->f.pcm = m_outputMapping; + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + const void *src = inChunk.buffer; + void *dst = outChunk.buffer; + int count = inChunk.frameCount * inChunk.f.channelCount; + + if (m_inputFormat == kFloat) + { + switch (m_outputFormat) + { + case kInt8: + run(src, dst, count); break; + case kInt16: + run(src, dst, count); break; + case kInt24: + case kInt32: + run(src, dst, count); break; + default: + assert(false); + } + } + else if (m_inputFormat == kDouble) + { + switch (m_outputFormat) + { + case kInt8: + run(src, dst, count); break; + case kInt16: + run(src, dst, count); break; + case kInt24: + case kInt32: + run(src, dst, count); break; + default: + assert(false); + } + } + } + +private: + FormatCode m_inputFormat, m_outputFormat; + PCMInfo m_inputMapping, m_outputMapping; + + template + void run(const void *srcData, void *dstData, int count) + { + const Input *src = reinterpret_cast(srcData); + Output *dst = reinterpret_cast(dstData); + + double m = m_outputMapping.slope / m_inputMapping.slope; + double b = m_outputMapping.intercept - m * m_inputMapping.intercept; + double minValue = m_outputMapping.minClip; + double maxValue = m_outputMapping.maxClip; + + for (int i=0; i(t); + } + } +}; + +struct ApplyChannelMatrix : public SimpleModule +{ +public: + ApplyChannelMatrix(FormatCode format, bool isReading, + int inChannels, int outChannels, + double minClip, double maxClip, const double *matrix); + virtual ~ApplyChannelMatrix(); + virtual const char *name() const OVERRIDE; + virtual void describe() OVERRIDE; + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE; + +private: + FormatCode m_format; + int m_inChannels, m_outChannels; + double m_minClip, m_maxClip; + double *m_matrix; + + void initDefaultMatrix(); + template + void run(const void *input, void *output, int frameCount); +}; + +struct Transform : public SimpleModule +{ +public: + Transform(FormatCode format, + const PCMInfo &inputMapping, + const PCMInfo &outputMapping) : + m_format(format), + m_inputMapping(inputMapping), + m_outputMapping(outputMapping) + { + assert(m_format == kFloat || m_format == kDouble); + } + virtual const char *name() const OVERRIDE { return "transform"; } + virtual void describe() OVERRIDE + { + m_outChunk->f.pcm = m_outputMapping; + } + virtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE + { + int count = inChunk.frameCount * inChunk.f.channelCount; + if (m_format == kFloat) + run(inChunk.buffer, outChunk.buffer, count); + else if (m_format == kDouble) + run(inChunk.buffer, outChunk.buffer, count); + else + assert(false); + } + +private: + FormatCode m_format; + PCMInfo m_inputMapping, m_outputMapping; + + template + void run(const void *srcData, void *dstData, int count) + { + const T *src = reinterpret_cast(srcData); + T *dst = reinterpret_cast(dstData); + + double m = m_outputMapping.slope / m_inputMapping.slope; + double b = m_outputMapping.intercept - m * m_inputMapping.intercept; + + for (int i=0; i + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef FILE_MODULE_H +#define FILE_MODULE_H + + +class FileModule : public Module +{ +public: + virtual bool handlesSeeking() const { return false; } + + virtual int bufferSize() const; + +protected: + enum Mode { Compress, Decompress }; + FileModule(Mode, Track *, File *fh, bool canSeek); + + Mode mode() const { return m_mode; } + bool canSeek() const { return m_canSeek; } + + ssize_t read(void *data, size_t nbytes); + ssize_t write(const void *data, size_t nbytes); + off_t seek(off_t offset); + off_t tell(); + off_t length(); + +private: + Mode m_mode; + +protected: + Track *m_track; + + void reportReadError(AFframecount framesRead, AFframecount framesRequested); + void reportWriteError(AFframecount framesWritten, AFframecount framesRequested); + +private: + File *m_fh; + bool m_canSeek; +}; + +#endif // FILE_MODULE_H + +// file: modules/RebufferModule.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +#ifndef REBUFFER_MODULE_H +#define REBUFFER_MODULE_H + + +class RebufferModule : public Module +{ +public: + enum Direction + { + FixedToVariable, + VariableToFixed + }; + + RebufferModule(Direction, int bytesPerFrame, int numFrames, bool multipleOf); + virtual ~RebufferModule(); + + virtual const char *name() const OVERRIDE { return "rebuffer"; } + + virtual void maxPull() OVERRIDE; + virtual void maxPush() OVERRIDE; + + virtual void runPull() OVERRIDE; + virtual void reset1() OVERRIDE; + virtual void reset2() OVERRIDE; + virtual void runPush() OVERRIDE; + virtual void sync1() OVERRIDE; + virtual void sync2() OVERRIDE; + +private: + Direction m_direction; + int m_bytesPerFrame; + int m_numFrames; + bool m_multipleOf; // buffer to multiple of m_numFrames + bool m_eof; // end of input stream reached + bool m_sentShortChunk; // end of input stream indicated + char *m_buffer; + int m_offset; + char *m_savedBuffer; + int m_savedOffset; + + void initFixedToVariable(); + void initVariableToFixed(); +}; + +#endif // REBUFFER_MODULE_H + +// file: modules/BlockCodec.h +/* + Audio File Library + Copyright (C) 2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +// BlockCodec is a base class for codecs with fixed-size packets. + +#ifndef BlockCodec_h +#define BlockCodec_h + + +class BlockCodec : public FileModule +{ +public: + virtual void runPull() OVERRIDE; + virtual void reset1() OVERRIDE; + virtual void reset2() OVERRIDE; + virtual void runPush() OVERRIDE; + virtual void sync1() OVERRIDE; + virtual void sync2() OVERRIDE; + +protected: + int m_bytesPerPacket, m_framesPerPacket; + AFframecount m_framesToIgnore; + AFfileoffset m_savedPositionNextFrame; + AFframecount m_savedNextFrame; + + BlockCodec(Mode, Track *, File *, bool canSeek); + + virtual int decodeBlock(const uint8_t *encoded, int16_t *decoded) = 0; + virtual int encodeBlock(const int16_t *decoded, uint8_t *encoded) = 0; +}; + +#endif + +// file: modules/BlockCodec.cpp +/* + Audio File Library + Copyright (C) 2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + + +#include + +BlockCodec::BlockCodec(Mode mode, Track *track, File *fh, bool canSeek) : + FileModule(mode, track, fh, canSeek), + m_bytesPerPacket(-1), + m_framesPerPacket(-1), + m_framesToIgnore(-1), + m_savedPositionNextFrame(-1), + m_savedNextFrame(-1) +{ + m_framesPerPacket = track->f.framesPerPacket; + m_bytesPerPacket = track->f.bytesPerPacket; +} + +void BlockCodec::runPull() +{ + AFframecount framesToRead = m_outChunk->frameCount; + AFframecount framesRead = 0; + + assert(framesToRead % m_framesPerPacket == 0); + int blockCount = framesToRead / m_framesPerPacket; + + // Read the compressed data. + ssize_t bytesRead = read(m_inChunk->buffer, m_bytesPerPacket * blockCount); + int blocksRead = bytesRead >= 0 ? bytesRead / m_bytesPerPacket : 0; + + // Decompress into m_outChunk. + for (int i=0; i(m_inChunk->buffer) + i * m_bytesPerPacket, + static_cast(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount); + + framesRead += m_framesPerPacket; + } + + m_track->nextfframe += framesRead; + + assert(tell() == m_track->fpos_next_frame); + + if (framesRead < framesToRead) + reportReadError(framesRead, framesToRead); + + m_outChunk->frameCount = framesRead; +} + +void BlockCodec::reset1() +{ + AFframecount nextTrackFrame = m_track->nextfframe; + m_track->nextfframe = (nextTrackFrame / m_framesPerPacket) * + m_framesPerPacket; + + m_framesToIgnore = nextTrackFrame - m_track->nextfframe; +} + +void BlockCodec::reset2() +{ + m_track->fpos_next_frame = m_track->fpos_first_frame + + m_bytesPerPacket * (m_track->nextfframe / m_framesPerPacket); + m_track->frames2ignore += m_framesToIgnore; + + assert(m_track->nextfframe % m_framesPerPacket == 0); +} + +void BlockCodec::runPush() +{ + AFframecount framesToWrite = m_inChunk->frameCount; + int channelCount = m_inChunk->f.channelCount; + + int blockCount = (framesToWrite + m_framesPerPacket - 1) / m_framesPerPacket; + for (int i=0; i(m_inChunk->buffer) + i * m_framesPerPacket * channelCount, + static_cast(m_outChunk->buffer) + i * m_bytesPerPacket); + } + + ssize_t bytesWritten = write(m_outChunk->buffer, m_bytesPerPacket * blockCount); + ssize_t blocksWritten = bytesWritten >= 0 ? bytesWritten / m_bytesPerPacket : 0; + AFframecount framesWritten = std::min((AFframecount) blocksWritten * m_framesPerPacket, framesToWrite); + + m_track->nextfframe += framesWritten; + m_track->totalfframes = m_track->nextfframe; + + assert(tell() == m_track->fpos_next_frame); + + if (framesWritten < framesToWrite) + reportWriteError(framesWritten, framesToWrite); +} + +void BlockCodec::sync1() +{ + m_savedPositionNextFrame = m_track->fpos_next_frame; + m_savedNextFrame = m_track->nextfframe; +} + +void BlockCodec::sync2() +{ + assert(tell() == m_track->fpos_next_frame); + m_track->fpos_after_data = tell(); + m_track->fpos_next_frame = m_savedPositionNextFrame; + m_track->nextfframe = m_savedNextFrame; +} + +// file: modules/FileModule.cpp +/* + Audio File Library + Copyright (C) 2010-2012, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + + +#include +#include + +FileModule::FileModule(Mode mode, Track *track, File *fh, bool canSeek) : + m_mode(mode), + m_track(track), + m_fh(fh), + m_canSeek(canSeek) +{ + track->fpos_next_frame = track->fpos_first_frame; + track->frames2ignore = 0; +} + +ssize_t FileModule::read(void *data, size_t nbytes) +{ + ssize_t bytesRead = m_fh->read(data, nbytes); + if (bytesRead > 0) + { + m_track->fpos_next_frame += bytesRead; + } + return bytesRead; +} + +ssize_t FileModule::write(const void *data, size_t nbytes) +{ + ssize_t bytesWritten = m_fh->write(data, nbytes); + if (bytesWritten > 0) + { + m_track->fpos_next_frame += bytesWritten; + m_track->data_size += bytesWritten; + } + return bytesWritten; +} + +off_t FileModule::seek(off_t offset) +{ + return m_fh->seek(offset, File::SeekFromBeginning); +} + +off_t FileModule::tell() +{ + return m_fh->tell(); +} + +off_t FileModule::length() +{ + return m_fh->length(); +} + +void FileModule::reportReadError(AFframecount framesRead, + AFframecount framesToRead) +{ + // Report error if we haven't already. + if (!m_track->filemodhappy) + return; + + _af_error(AF_BAD_READ, + "file missing data -- read %jd frames, should be %jd", + static_cast(m_track->nextfframe), + static_cast(m_track->totalfframes)); + m_track->filemodhappy = false; +} + +void FileModule::reportWriteError(AFframecount framesWritten, + AFframecount framesToWrite) +{ + // Report error if we haven't already. + if (!m_track->filemodhappy) + return; + + if (framesWritten < 0) + { + // Signal I/O error. + _af_error(AF_BAD_WRITE, + "unable to write data (%s) -- wrote %jd out of %jd frames", + strerror(errno), + static_cast(m_track->nextfframe), + static_cast(m_track->nextfframe + framesToWrite)); + } + else + { + // Signal disk full error. + _af_error(AF_BAD_WRITE, + "unable to write data (disk full) -- " + "wrote %jd out of %jd frames", + static_cast(m_track->nextfframe + framesWritten), + static_cast(m_track->nextfframe + framesToWrite)); + } + + m_track->filemodhappy = false; +} + +int FileModule::bufferSize() const +{ + if (mode() == Compress) + return outChunk()->frameCount * inChunk()->f.bytesPerFrame(true); + else + return inChunk()->frameCount * outChunk()->f.bytesPerFrame(true); +} + +// file: modules/G711.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + g711.h +*/ + +#ifndef MODULES_G711_H +#define MODULES_G711_H + + +class File; +class FileModule; +struct AudioFormat; +struct Track; + +bool _af_g711_format_ok (AudioFormat *f); + +FileModule *_AFg711initcompress (Track *, File *, bool canSeek, + bool headerless, AFframecount *chunkframes); + +FileModule *_AFg711initdecompress (Track *, File *, bool canSeek, + bool headerless, AFframecount *chunkframes); + +#endif /* MODULES_G711_H */ + +// file: modules/G711.cpp +/* + Audio File Library + Copyright (C) 2000-2001, Silicon Graphics, Inc. + Copyright (C) 2010-2013, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + +#include + + + +static void ulaw2linear_buf (const uint8_t *ulaw, int16_t *linear, int nsamples) +{ + for (int i=0; i < nsamples; i++) + linear[i] = _af_ulaw2linear(ulaw[i]); +} + +static void linear2ulaw_buf (const int16_t *linear, uint8_t *ulaw, int nsamples) +{ + for (int i=0; i < nsamples; i++) + ulaw[i] = _af_linear2ulaw(linear[i]); +} + +static void alaw2linear_buf (const uint8_t *alaw, int16_t *linear, int nsamples) +{ + for (int i=0; i < nsamples; i++) + linear[i] = _af_alaw2linear(alaw[i]); +} + +static void linear2alaw_buf (const int16_t *linear, uint8_t *alaw, int nsamples) +{ + for (int i=0; i < nsamples; i++) + alaw[i] = _af_linear2alaw(linear[i]); +} + +bool _af_g711_format_ok (AudioFormat *f) +{ + if (f->sampleFormat != AF_SAMPFMT_TWOSCOMP || f->sampleWidth != 16) + { + _af_error(AF_BAD_COMPRESSION, + "G.711 compression requires 16-bit signed integer format"); + return false; + } + + if (f->byteOrder != _AF_BYTEORDER_NATIVE) + { + _af_error(AF_BAD_COMPRESSION, + "G.711 compression requires native byte order"); + return false; + } + + return true; +} + +class G711 : public FileModule +{ +public: + static G711 *createCompress(Track *trk, File *fh, bool canSeek, + bool headerless, AFframecount *chunkframes); + static G711 *createDecompress(Track *trk, File *fh, bool canSeek, + bool headerless, AFframecount *chunkframes); + + virtual const char *name() const OVERRIDE + { + return mode() == Compress ? "g711compress" : "g711decompress"; + } + virtual void describe() OVERRIDE; + virtual void runPull() OVERRIDE; + virtual void reset2() OVERRIDE; + virtual void runPush() OVERRIDE; + virtual void sync1() OVERRIDE; + virtual void sync2() OVERRIDE; + +private: + G711(Mode mode, Track *track, File *fh, bool canSeek); + + AFfileoffset m_savedPositionNextFrame; + AFframecount m_savedNextFrame; +}; + +G711::G711(Mode mode, Track *track, File *fh, bool canSeek) : + FileModule(mode, track, fh, canSeek), + m_savedPositionNextFrame(-1), + m_savedNextFrame(-1) +{ + if (mode == Decompress) + track->f.compressionParams = AU_NULL_PVLIST; +} + +G711 *G711::createCompress(Track *track, File *fh, + bool canSeek, bool headerless, AFframecount *chunkframes) +{ + return new G711(Compress, track, fh, canSeek); +} + +void G711::runPush() +{ + AFframecount framesToWrite = m_inChunk->frameCount; + AFframecount samplesToWrite = m_inChunk->frameCount * m_inChunk->f.channelCount; + int framesize = m_inChunk->f.channelCount; + + assert(m_track->f.compressionType == AF_COMPRESSION_G711_ULAW || + m_track->f.compressionType == AF_COMPRESSION_G711_ALAW); + + /* Compress frames into i->outc. */ + + if (m_track->f.compressionType == AF_COMPRESSION_G711_ULAW) + linear2ulaw_buf(static_cast(m_inChunk->buffer), + static_cast(m_outChunk->buffer), samplesToWrite); + else + linear2alaw_buf(static_cast(m_inChunk->buffer), + static_cast(m_outChunk->buffer), samplesToWrite); + + /* Write the compressed data. */ + + ssize_t bytesWritten = write(m_outChunk->buffer, framesize * framesToWrite); + AFframecount framesWritten = bytesWritten >= 0 ? bytesWritten / framesize : 0; + + if (framesWritten != framesToWrite) + reportWriteError(framesWritten, framesToWrite); + + m_track->nextfframe += framesWritten; + m_track->totalfframes = m_track->nextfframe; + + assert(!canSeek() || (tell() == m_track->fpos_next_frame)); +} + +void G711::sync1() +{ + m_savedPositionNextFrame = m_track->fpos_next_frame; + m_savedNextFrame = m_track->nextfframe; +} + +void G711::sync2() +{ + /* sanity check. */ + assert(!canSeek() || (tell() == m_track->fpos_next_frame)); + + /* We can afford to do an lseek just in case because sync2 is rare. */ + m_track->fpos_after_data = tell(); + + m_track->fpos_next_frame = m_savedPositionNextFrame; + m_track->nextfframe = m_savedNextFrame; +} + +void G711::describe() +{ + if (mode() == Compress) + { + m_outChunk->f.compressionType = m_track->f.compressionType; + } + else + { + m_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE; + m_outChunk->f.compressionType = AF_COMPRESSION_NONE; + } +} + +G711 *G711::createDecompress(Track *track, File *fh, + bool canSeek, bool headerless, AFframecount *chunkframes) +{ + return new G711(Decompress, track, fh, canSeek); +} + +void G711::runPull() +{ + AFframecount framesToRead = m_outChunk->frameCount; + AFframecount samplesToRead = m_outChunk->frameCount * m_outChunk->f.channelCount; + int framesize = m_outChunk->f.channelCount; + + /* Read the compressed frames. */ + + ssize_t bytesRead = read(m_inChunk->buffer, framesize * framesToRead); + AFframecount framesRead = bytesRead >= 0 ? bytesRead / framesize : 0; + + /* Decompress into i->outc. */ + + if (m_track->f.compressionType == AF_COMPRESSION_G711_ULAW) + ulaw2linear_buf(static_cast(m_inChunk->buffer), + static_cast(m_outChunk->buffer), samplesToRead); + else + alaw2linear_buf(static_cast(m_inChunk->buffer), + static_cast(m_outChunk->buffer), samplesToRead); + + m_track->nextfframe += framesRead; + assert(!canSeek() || (tell() == m_track->fpos_next_frame)); + + /* + If we got EOF from read, then we return the actual amount read. + + Complain only if there should have been more frames in the file. + */ + + if (m_track->totalfframes != -1 && framesRead != framesToRead) + reportReadError(framesRead, framesToRead); + + m_outChunk->frameCount = framesRead; +} + +void G711::reset2() +{ + int framesize = m_inChunk->f.channelCount; + + m_track->fpos_next_frame = m_track->fpos_first_frame + + framesize * m_track->nextfframe; + + m_track->frames2ignore = 0; +} + +FileModule *_AFg711initcompress(Track *track, File *fh, bool canSeek, + bool headerless, AFframecount *chunkFrames) +{ + return G711::createCompress(track, fh, canSeek, headerless, chunkFrames); +} + +FileModule *_AFg711initdecompress(Track *track, File *fh, bool canSeek, + bool headerless, AFframecount *chunkFrames) +{ + return G711::createDecompress(track, fh, canSeek, headerless, chunkFrames); +} + +// file: modules/Module.cpp +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + + +Module::Module() : + m_sink(NULL) +{ +} + +Module::~Module() +{ +} + +void Module::setSink(Module *module) { m_sink = module; } +void Module::setSource(Module *module) { m_source = module; } + +const char *Module::name() const { return ""; } + +void Module::describe() +{ +} + +void Module::maxPull() +{ + m_inChunk->frameCount = m_outChunk->frameCount; +} + +void Module::maxPush() +{ + m_outChunk->frameCount = m_inChunk->frameCount; +} + +void Module::runPull() +{ +} + +void Module::runPush() +{ +} + +void Module::pull(size_t frames) +{ + m_inChunk->frameCount = frames; + m_source->runPull(); +} + +void Module::push(size_t frames) +{ + m_outChunk->frameCount = frames; + m_sink->runPush(); +} + +// file: modules/ModuleState.cpp +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + Copyright (C) 2010-2013, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + + +#include +#include +#include +#include +#include + +ModuleState::ModuleState() : + m_isDirty(true) +{ +} + +ModuleState::~ModuleState() +{ +} + +status ModuleState::initFileModule(AFfilehandle file, Track *track) +{ + const CompressionUnit *unit = _af_compression_unit_from_id(track->f.compressionType); + if (!unit) + return AF_FAIL; + + // Validate compression format and parameters. + if (!unit->fmtok(&track->f)) + return AF_FAIL; + + if (file->m_seekok && + file->m_fh->seek(track->fpos_first_frame, File::SeekFromBeginning) != + track->fpos_first_frame) + { + _af_error(AF_BAD_LSEEK, "unable to position file handle at beginning of sound data"); + return AF_FAIL; + } + + AFframecount chunkFrames; + if (file->m_access == _AF_READ_ACCESS) + m_fileModule = unit->initdecompress(track, file->m_fh, file->m_seekok, + file->m_fileFormat == AF_FILE_RAWDATA, &chunkFrames); + else + m_fileModule = unit->initcompress(track, file->m_fh, file->m_seekok, + file->m_fileFormat == AF_FILE_RAWDATA, &chunkFrames); + + if (unit->needsRebuffer) + { + assert(unit->nativeSampleFormat == AF_SAMPFMT_TWOSCOMP); + + RebufferModule::Direction direction = + file->m_access == _AF_WRITE_ACCESS ? + RebufferModule::VariableToFixed : RebufferModule::FixedToVariable; + + m_fileRebufferModule = new RebufferModule(direction, + track->f.bytesPerFrame(false), chunkFrames, + unit->multiple_of); + } + + track->filemodhappy = true; + + return AF_SUCCEED; +} + +status ModuleState::init(AFfilehandle file, Track *track) +{ + if (initFileModule(file, track) == AF_FAIL) + return AF_FAIL; + + return AF_SUCCEED; +} + +bool ModuleState::fileModuleHandlesSeeking() const +{ + return m_fileModule->handlesSeeking(); +} + +status ModuleState::setup(AFfilehandle file, Track *track) +{ + AFframecount fframepos = llrint(track->nextvframe * track->f.sampleRate / track->v.sampleRate); + bool isReading = file->m_access == _AF_READ_ACCESS; + + if (!track->v.isUncompressed()) + { + _af_error(AF_BAD_NOT_IMPLEMENTED, + "library does not support compression in virtual format yet"); + return AF_FAIL; + } + + if (arrange(file, track) == AF_FAIL) + return AF_FAIL; + + track->filemodhappy = true; + int maxbufsize = 0; + if (isReading) + { + m_chunks.back()->frameCount = _AF_ATOMIC_NVFRAMES; + for (int i=m_modules.size() - 1; i >= 0; i--) + { + SharedPtr inChunk = m_chunks[i]; + SharedPtr outChunk = m_chunks[i+1]; + int bufsize = outChunk->frameCount * outChunk->f.bytesPerFrame(true); + if (bufsize > maxbufsize) + maxbufsize = bufsize; + if (i != 0) + m_modules[i]->setSource(m_modules[i-1].get()); + m_modules[i]->maxPull(); + } + + if (!track->filemodhappy) + return AF_FAIL; + int bufsize = m_fileModule->bufferSize(); + if (bufsize > maxbufsize) + maxbufsize = bufsize; + } + else + { + m_chunks.front()->frameCount = _AF_ATOMIC_NVFRAMES; + for (size_t i=0; i inChunk = m_chunks[i]; + SharedPtr outChunk = m_chunks[i+1]; + int bufsize = inChunk->frameCount * inChunk->f.bytesPerFrame(true); + if (bufsize > maxbufsize) + maxbufsize = bufsize; + if (i != m_modules.size() - 1) + m_modules[i]->setSink(m_modules[i+1].get()); + m_modules[i]->maxPush(); + } + + if (!track->filemodhappy) + return AF_FAIL; + + int bufsize = m_fileModule->bufferSize(); + if (bufsize > maxbufsize) + maxbufsize = bufsize; + } + + for (size_t i=0; iallocate(maxbufsize); + } + + if (isReading) + { + if (track->totalfframes == -1) + track->totalvframes = -1; + else + track->totalvframes = llrint(track->totalfframes * + (track->v.sampleRate / track->f.sampleRate)); + + track->nextfframe = fframepos; + track->nextvframe = llrint(fframepos * track->v.sampleRate / track->f.sampleRate); + + m_isDirty = false; + + if (reset(file, track) == AF_FAIL) + return AF_FAIL; + } + else + { + track->nextvframe = track->totalvframes = + (AFframecount) (fframepos * track->v.sampleRate / track->f.sampleRate); + m_isDirty = false; + } + + return AF_SUCCEED; +} + +const std::vector > &ModuleState::modules() const +{ + return m_modules; +} + +const std::vector > &ModuleState::chunks() const +{ + return m_chunks; +} + +status ModuleState::reset(AFfilehandle file, Track *track) +{ + track->filemodhappy = true; + for (std::vector >::reverse_iterator i=m_modules.rbegin(); + i != m_modules.rend(); ++i) + (*i)->reset1(); + track->frames2ignore = 0; + if (!track->filemodhappy) + return AF_FAIL; + for (std::vector >::iterator i=m_modules.begin(); + i != m_modules.end(); ++i) + (*i)->reset2(); + if (!track->filemodhappy) + return AF_FAIL; + return AF_SUCCEED; +} + +status ModuleState::sync(AFfilehandle file, Track *track) +{ + track->filemodhappy = true; + for (std::vector >::reverse_iterator i=m_modules.rbegin(); + i != m_modules.rend(); ++i) + (*i)->sync1(); + if (!track->filemodhappy) + return AF_FAIL; + for (std::vector >::iterator i=m_modules.begin(); + i != m_modules.end(); ++i) + (*i)->sync2(); + return AF_SUCCEED; +} + +static const PCMInfo * const intmappings[6] = +{ + &_af_default_signed_integer_pcm_mappings[1], + &_af_default_signed_integer_pcm_mappings[2], + &_af_default_signed_integer_pcm_mappings[3], + &_af_default_signed_integer_pcm_mappings[4], + NULL, + NULL +}; + +static FormatCode getFormatCode(const AudioFormat &format) +{ + if (format.sampleFormat == AF_SAMPFMT_FLOAT) + return kFloat; + if (format.sampleFormat == AF_SAMPFMT_DOUBLE) + return kDouble; + if (format.isInteger()) + { + switch (format.bytesPerSample(false)) + { + case 1: return kInt8; + case 2: return kInt16; + case 3: return kInt24; + case 4: return kInt32; + } + } + + /* NOTREACHED */ + assert(false); + return kUndefined; +} + +static bool isInteger(FormatCode code) { return code >= kInt8 && code <= kInt32; } +static bool isFloat(FormatCode code) { return code >= kFloat && code <= kDouble; } + +static bool isTrivialIntMapping(const AudioFormat &format, FormatCode code) +{ + return intmappings[code] != NULL && + format.pcm.slope == intmappings[code]->slope && + format.pcm.intercept == intmappings[code]->intercept; +} + +static bool isTrivialIntClip(const AudioFormat &format, FormatCode code) +{ + return intmappings[code] != NULL && + format.pcm.minClip == intmappings[code]->minClip && + format.pcm.maxClip == intmappings[code]->maxClip; +} + +status ModuleState::arrange(AFfilehandle file, Track *track) +{ + bool isReading = file->m_access == _AF_READ_ACCESS; + AudioFormat in, out; + if (isReading) + { + in = track->f; + out = track->v; + } + else + { + in = track->v; + out = track->f; + } + + FormatCode infc = getFormatCode(in); + FormatCode outfc = getFormatCode(out); + if (infc == kUndefined || outfc == kUndefined) + return AF_FAIL; + + m_chunks.clear(); + m_chunks.push_back(new Chunk()); + m_chunks.back()->f = in; + + m_modules.clear(); + + if (isReading) + { + addModule(m_fileModule.get()); + addModule(m_fileRebufferModule.get()); + } + + // Convert to native byte order. + if (in.byteOrder != _AF_BYTEORDER_NATIVE) + { + size_t bytesPerSample = in.bytesPerSample(!isReading); + if (bytesPerSample > 1 && in.compressionType == AF_COMPRESSION_NONE) + addModule(new SwapModule()); + else + in.byteOrder = _AF_BYTEORDER_NATIVE; + } + + // Handle 24-bit integer input format. + if (in.isInteger() && in.bytesPerSample(false) == 3) + { + if (isReading || in.compressionType != AF_COMPRESSION_NONE) + addModule(new Expand3To4Module(in.isSigned())); + } + + // Make data signed. + if (in.isUnsigned()) + addModule(new ConvertSign(infc, false)); + + in.pcm = m_chunks.back()->f.pcm; + + // Reverse the unsigned shift for output. + if (out.isUnsigned()) + { + const double shift = intmappings[outfc]->minClip; + out.pcm.intercept += shift; + out.pcm.minClip += shift; + out.pcm.maxClip += shift; + } + + // Clip input samples if necessary. + if (in.pcm.minClip < in.pcm.maxClip && !isTrivialIntClip(in, infc)) + addModule(new Clip(infc, in.pcm)); + + bool alreadyClippedOutput = false; + bool alreadyTransformedOutput = false; + // Perform range transformation if input and output PCM mappings differ. + bool transforming = (in.pcm.slope != out.pcm.slope || + in.pcm.intercept != out.pcm.intercept) && + !(isTrivialIntMapping(in, infc) && + isTrivialIntMapping(out, outfc)); + + // Range transformation requires input to be floating-point. + if (isInteger(infc) && transforming) + { + if (infc == kInt32 || outfc == kDouble || outfc == kInt32) + { + addConvertIntToFloat(infc, kDouble); + infc = kDouble; + } + else + { + addConvertIntToFloat(infc, kFloat); + infc = kFloat; + } + } + + if (transforming && infc == kDouble && isFloat(outfc)) + addModule(new Transform(infc, in.pcm, out.pcm)); + + // Add format conversion if needed. + if (isInteger(infc) && isInteger(outfc)) + addConvertIntToInt(infc, outfc); + else if (isInteger(infc) && isFloat(outfc)) + addConvertIntToFloat(infc, outfc); + else if (isFloat(infc) && isInteger(outfc)) + { + addConvertFloatToInt(infc, outfc, in.pcm, out.pcm); + alreadyClippedOutput = true; + alreadyTransformedOutput = true; + } + else if (isFloat(infc) && isFloat(outfc)) + addConvertFloatToFloat(infc, outfc); + + if (transforming && !alreadyTransformedOutput && infc != kDouble) + addModule(new Transform(outfc, in.pcm, out.pcm)); + + if (in.channelCount != out.channelCount) + addModule(new ApplyChannelMatrix(outfc, isReading, + in.channelCount, out.channelCount, + in.pcm.minClip, in.pcm.maxClip, + track->channelMatrix)); + + // Perform clipping if necessary. + if (!alreadyClippedOutput) + { + if (out.pcm.minClip < out.pcm.maxClip && !isTrivialIntClip(out, outfc)) + addModule(new Clip(outfc, out.pcm)); + } + + // Make data unsigned if necessary. + if (out.isUnsigned()) + addModule(new ConvertSign(outfc, true)); + + // Handle 24-bit integer output format. + if (out.isInteger() && out.bytesPerSample(false) == 3) + { + if (!isReading || out.compressionType != AF_COMPRESSION_NONE) + addModule(new Compress4To3Module(out.isSigned())); + } + + if (out.byteOrder != _AF_BYTEORDER_NATIVE) + { + size_t bytesPerSample = out.bytesPerSample(isReading); + if (bytesPerSample > 1 && out.compressionType == AF_COMPRESSION_NONE) + addModule(new SwapModule()); + else + out.byteOrder = _AF_BYTEORDER_NATIVE; + } + + if (!isReading) + { + addModule(m_fileRebufferModule.get()); + addModule(m_fileModule.get()); + } + + return AF_SUCCEED; +} + +void ModuleState::addModule(Module *module) +{ + if (!module) + return; + + m_modules.push_back(module); + module->setInChunk(m_chunks.back().get()); + Chunk *chunk = new Chunk(); + chunk->f = m_chunks.back()->f; + m_chunks.push_back(chunk); + module->setOutChunk(chunk); + module->describe(); +} + +void ModuleState::addConvertIntToInt(FormatCode input, FormatCode output) +{ + if (input == output) + return; + + assert(isInteger(input)); + assert(isInteger(output)); + addModule(new ConvertInt(input, output)); +} + +void ModuleState::addConvertIntToFloat(FormatCode input, FormatCode output) +{ + addModule(new ConvertIntToFloat(input, output)); +} + +void ModuleState::addConvertFloatToInt(FormatCode input, FormatCode output, + const PCMInfo &inputMapping, const PCMInfo &outputMapping) +{ + addModule(new ConvertFloatToIntClip(input, output, inputMapping, outputMapping)); +} + +void ModuleState::addConvertFloatToFloat(FormatCode input, FormatCode output) +{ + if (input == output) + return; + + assert((input == kFloat && output == kDouble) || + (input == kDouble && output == kFloat)); + addModule(new ConvertFloat(input, output)); +} + +void ModuleState::print() +{ + fprintf(stderr, "modules:\n"); + for (size_t i=0; iname(), m_modules[i].get(), + m_modules[i]->inChunk(), + m_modules[i]->outChunk()); + fprintf(stderr, "chunks:\n"); + for (size_t i=0; if.description().c_str()); +} + +// file: modules/MSADPCM.h +/* + Audio File Library + Copyright (C) 2001, Silicon Graphics, Inc. + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + msadpcm.h + + This module declares the interface for the Microsoft ADPCM + compression module. +*/ + +#ifndef MSADPCM_H +#define MSADPCM_H + + +class File; +class FileModule; +struct AudioFormat; +struct Track; + +bool _af_ms_adpcm_format_ok (AudioFormat *f); + +FileModule *_af_ms_adpcm_init_decompress(Track *, File *, + bool canSeek, bool headerless, AFframecount *chunkframes); + +FileModule *_af_ms_adpcm_init_compress(Track *, File *, + bool canSeek, bool headerless, AFframecount *chunkframes); + +#endif + +// file: modules/MSADPCM.cpp +/* + Audio File Library + Copyright (C) 2010-2013, Michael Pruett + Copyright (C) 2001, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + This module implements Microsoft ADPCM compression. +*/ + + +#include +#include +#include +#include + + +struct ms_adpcm_state +{ + uint8_t predictorIndex; + int delta; + int16_t sample1, sample2; + + ms_adpcm_state() + { + predictorIndex = 0; + delta = 16; + sample1 = 0; + sample2 = 0; + } +}; + +class MSADPCM : public BlockCodec +{ +public: + static MSADPCM *createDecompress(Track *, File *, bool canSeek, + bool headerless, AFframecount *chunkFrames); + static MSADPCM *createCompress(Track *, File *, bool canSeek, + bool headerless, AFframecount *chunkFrames); + + virtual ~MSADPCM(); + + bool initializeCoefficients(); + + virtual const char *name() const OVERRIDE + { + return mode() == Compress ? "ms_adpcm_compress" : "ms_adpcm_decompress"; + } + virtual void describe() OVERRIDE; + +private: + // m_coefficients is an array of m_numCoefficients ADPCM coefficient pairs. + int m_numCoefficients; + int16_t m_coefficients[256][2]; + + ms_adpcm_state *m_state; + + MSADPCM(Mode mode, Track *track, File *fh, bool canSeek); + + int decodeBlock(const uint8_t *encoded, int16_t *decoded) OVERRIDE; + int encodeBlock(const int16_t *decoded, uint8_t *encoded) OVERRIDE; + void choosePredictorForBlock(const int16_t *decoded); +}; + +static inline int clamp(int x, int low, int high) +{ + if (x < low) return low; + if (x > high) return high; + return x; +} + +static const int16_t adaptationTable[] = +{ + 230, 230, 230, 230, 307, 409, 512, 614, + 768, 614, 512, 409, 307, 230, 230, 230 +}; + +// Compute a linear PCM value from the given differential coded value. +static int16_t decodeSample(ms_adpcm_state &state, + uint8_t code, const int16_t *coefficient) +{ + int linearSample = (state.sample1 * coefficient[0] + + state.sample2 * coefficient[1]) >> 8; + + linearSample += ((code & 0x08) ? (code - 0x10) : code) * state.delta; + + linearSample = clamp(linearSample, MIN_INT16, MAX_INT16); + + int delta = (state.delta * adaptationTable[code]) >> 8; + if (delta < 16) + delta = 16; + + state.delta = delta; + state.sample2 = state.sample1; + state.sample1 = linearSample; + + return static_cast(linearSample); +} + +// Compute a differential coded value from the given linear PCM sample. +static uint8_t encodeSample(ms_adpcm_state &state, int16_t sample, + const int16_t *coefficient) +{ + int predictor = (state.sample1 * coefficient[0] + + state.sample2 * coefficient[1]) >> 8; + int code = sample - predictor; + int bias = state.delta / 2; + if (code < 0) + bias = -bias; + code = (code + bias) / state.delta; + code = clamp(code, -8, 7) & 0xf; + + predictor += ((code & 0x8) ? (code - 0x10) : code) * state.delta; + + state.sample2 = state.sample1; + state.sample1 = clamp(predictor, MIN_INT16, MAX_INT16); + state.delta = (adaptationTable[code] * state.delta) >> 8; + if (state.delta < 16) + state.delta = 16; + return code; +} + +// Decode one block of MS ADPCM data. +int MSADPCM::decodeBlock(const uint8_t *encoded, int16_t *decoded) +{ + ms_adpcm_state decoderState[2]; + ms_adpcm_state *state[2]; + + int channelCount = m_track->f.channelCount; + + // Calculate the number of bytes needed for decoded data. + int outputLength = m_framesPerPacket * sizeof (int16_t) * channelCount; + + state[0] = &decoderState[0]; + if (channelCount == 2) + state[1] = &decoderState[1]; + else + state[1] = &decoderState[0]; + + // Initialize block predictor. + for (int i=0; ipredictorIndex = *encoded++; + assert(state[i]->predictorIndex < m_numCoefficients); + } + + // Initialize delta. + for (int i=0; idelta = (encoded[1]<<8) | encoded[0]; + encoded += sizeof (uint16_t); + } + + // Initialize first two samples. + for (int i=0; isample1 = (encoded[1]<<8) | encoded[0]; + encoded += sizeof (uint16_t); + } + + for (int i=0; isample2 = (encoded[1]<<8) | encoded[0]; + encoded += sizeof (uint16_t); + } + + const int16_t *coefficient[2] = + { + m_coefficients[state[0]->predictorIndex], + m_coefficients[state[1]->predictorIndex] + }; + + for (int i=0; isample2; + + for (int i=0; isample1; + + /* + The first two samples have already been 'decoded' in + the block header. + */ + int samplesRemaining = (m_framesPerPacket - 2) * m_track->f.channelCount; + + while (samplesRemaining > 0) + { + uint8_t code; + int16_t newSample; + + code = *encoded >> 4; + newSample = decodeSample(*state[0], code, coefficient[0]); + *decoded++ = newSample; + + code = *encoded & 0x0f; + newSample = decodeSample(*state[1], code, coefficient[1]); + *decoded++ = newSample; + + encoded++; + samplesRemaining -= 2; + } + + return outputLength; +} + +int MSADPCM::encodeBlock(const int16_t *decoded, uint8_t *encoded) +{ + choosePredictorForBlock(decoded); + + int channelCount = m_track->f.channelCount; + + // Encode predictor. + for (int c=0; c> 8; + } + + // Enccode first two samples. + for (int c=0; c> 8; + } + + for (int c=0; c> 8; + } + + ms_adpcm_state *state[2] = { &m_state[0], &m_state[channelCount - 1] }; + const int16_t *coefficient[2] = + { + m_coefficients[state[0]->predictorIndex], + m_coefficients[state[1]->predictorIndex] + }; + + int samplesRemaining = (m_framesPerPacket - 2) * m_track->f.channelCount; + while (samplesRemaining > 0) + { + uint8_t code1 = encodeSample(*state[0], *decoded++, coefficient[0]); + uint8_t code2 = encodeSample(*state[1], *decoded++, coefficient[1]); + + *encoded++ = (code1 << 4) | code2; + samplesRemaining -= 2; + } + + return m_bytesPerPacket; +} + +void MSADPCM::choosePredictorForBlock(const int16_t *decoded) +{ + const int kPredictorSampleLength = 3; + + int channelCount = m_track->f.channelCount; + + for (int c=0; c::max(); + for (int k=0; k> 8)); + currentPredictorError += error; + } + + currentPredictorError /= 4 * kPredictorSampleLength; + + if (currentPredictorError < bestPredictorError) + { + bestPredictorError = currentPredictorError; + bestPredictorIndex = k; + } + + if (!currentPredictorError) + break; + } + + if (bestPredictorError < 16) + bestPredictorError = 16; + + m_state[c].predictorIndex = bestPredictorIndex; + m_state[c].delta = bestPredictorError; + } +} + +void MSADPCM::describe() +{ + m_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE; + m_outChunk->f.compressionType = AF_COMPRESSION_NONE; + m_outChunk->f.compressionParams = AU_NULL_PVLIST; +} + +MSADPCM::MSADPCM(Mode mode, Track *track, File *fh, bool canSeek) : + BlockCodec(mode, track, fh, canSeek), + m_numCoefficients(0), + m_state(NULL) +{ + m_state = new ms_adpcm_state[m_track->f.channelCount]; +} + +MSADPCM::~MSADPCM() +{ + delete [] m_state; +} + +bool MSADPCM::initializeCoefficients() +{ + AUpvlist pv = m_track->f.compressionParams; + + long l; + if (_af_pv_getlong(pv, _AF_MS_ADPCM_NUM_COEFFICIENTS, &l)) + { + m_numCoefficients = l; + } + else + { + _af_error(AF_BAD_CODEC_CONFIG, "number of coefficients not set"); + return false; + } + + void *v; + if (_af_pv_getptr(pv, _AF_MS_ADPCM_COEFFICIENTS, &v)) + { + memcpy(m_coefficients, v, m_numCoefficients * 2 * sizeof (int16_t)); + } + else + { + _af_error(AF_BAD_CODEC_CONFIG, "coefficient array not set"); + return false; + } + + return true; +} + +MSADPCM *MSADPCM::createDecompress(Track *track, File *fh, + bool canSeek, bool headerless, AFframecount *chunkFrames) +{ + assert(fh->tell() == track->fpos_first_frame); + + MSADPCM *msadpcm = new MSADPCM(Decompress, track, fh, canSeek); + + if (!msadpcm->initializeCoefficients()) + { + delete msadpcm; + return NULL; + } + + *chunkFrames = msadpcm->m_framesPerPacket; + + return msadpcm; +} + +MSADPCM *MSADPCM::createCompress(Track *track, File *fh, + bool canSeek, bool headerless, AFframecount *chunkFrames) +{ + assert(fh->tell() == track->fpos_first_frame); + + MSADPCM *msadpcm = new MSADPCM(Compress, track, fh, canSeek); + + if (!msadpcm->initializeCoefficients()) + { + delete msadpcm; + return NULL; + } + + *chunkFrames = msadpcm->m_framesPerPacket; + + return msadpcm; +} + +bool _af_ms_adpcm_format_ok (AudioFormat *f) +{ + if (f->channelCount != 1 && f->channelCount != 2) + { + _af_error(AF_BAD_COMPRESSION, + "MS ADPCM compression requires 1 or 2 channels"); + return false; + } + + if (f->sampleFormat != AF_SAMPFMT_TWOSCOMP || f->sampleWidth != 16) + { + _af_error(AF_BAD_COMPRESSION, + "MS ADPCM compression requires 16-bit signed integer format"); + return false; + } + + if (f->byteOrder != _AF_BYTEORDER_NATIVE) + { + _af_error(AF_BAD_COMPRESSION, + "MS ADPCM compression requires native byte order"); + return false; + } + + return true; +} + +FileModule *_af_ms_adpcm_init_decompress (Track *track, File *fh, + bool canSeek, bool headerless, AFframecount *chunkFrames) +{ + return MSADPCM::createDecompress(track, fh, canSeek, headerless, chunkFrames); +} + +FileModule *_af_ms_adpcm_init_compress (Track *track, File *fh, + bool canSeek, bool headerless, AFframecount *chunkFrames) +{ + return MSADPCM::createCompress(track, fh, canSeek, headerless, chunkFrames); +} + +// file: modules/PCM.h +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + PCM.h +*/ + +#ifndef MODULES_PCM_H +#define MODULES_PCM_H + + +class File; +class FileModule; +struct AudioFormat; +struct Track; + +bool _af_pcm_format_ok (AudioFormat *f); + +FileModule *_AFpcminitcompress(Track *, File *, bool seekok, + bool headerless, AFframecount *chunkframes); + +FileModule *_AFpcminitdecompress(Track *, File *, bool seekok, + bool headerless, AFframecount *chunkframes); + +#endif /* MODULES_PCM_H */ + +// file: modules/PCM.cpp +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + PCM.cpp - read and file write module for uncompressed data +*/ + + +#include +#include + + +bool _af_pcm_format_ok (AudioFormat *f) +{ + assert(!isnan(f->pcm.slope)); + assert(!isnan(f->pcm.intercept)); + assert(!isnan(f->pcm.minClip)); + assert(!isnan(f->pcm.maxClip)); + + return true; +} + +class PCM : public FileModule +{ +public: + static PCM *createCompress(Track *track, File *fh, bool canSeek, + bool headerless, AFframecount *chunkFrames); + static PCM *createDecompress(Track *track, File *fh, bool canSeek, + bool headerless, AFframecount *chunkFrames); + + virtual const char *name() const OVERRIDE { return "pcm"; } + virtual void runPull() OVERRIDE; + virtual void reset2() OVERRIDE; + virtual void runPush() OVERRIDE; + virtual void sync1() OVERRIDE; + virtual void sync2() OVERRIDE; + +private: + int m_bytesPerFrame; + + /* saved_fpos_next_frame and saved_nextfframe apply only to writing. */ + int m_saved_fpos_next_frame; + int m_saved_nextfframe; + + PCM(Mode, Track *, File *, bool canSeek); +}; + +PCM::PCM(Mode mode, Track *track, File *fh, bool canSeek) : + FileModule(mode, track, fh, canSeek), + m_bytesPerFrame(track->f.bytesPerFrame(false)), + m_saved_fpos_next_frame(-1), + m_saved_nextfframe(-1) +{ + if (mode == Decompress) + track->f.compressionParams = AU_NULL_PVLIST; +} + +PCM *PCM::createCompress(Track *track, File *fh, bool canSeek, + bool headerless, AFframecount *chunkframes) +{ + return new PCM(Compress, track, fh, canSeek); +} + +void PCM::runPush() +{ + AFframecount frames2write = m_inChunk->frameCount; + AFframecount n; + + /* + WARNING: due to the optimization explained at the end + of arrangemodules(), the pcm file module cannot depend + on the presence of the intermediate working buffer + which _AFsetupmodules usually allocates for file + modules in their input or output chunk (for reading or + writing, respectively). + + Fortunately, the pcm module has no need for such a buffer. + */ + + ssize_t bytesWritten = write(m_inChunk->buffer, m_bytesPerFrame * frames2write); + n = bytesWritten >= 0 ? bytesWritten / m_bytesPerFrame : 0; + + if (n != frames2write) + reportWriteError(n, frames2write); + + m_track->nextfframe += n; + m_track->totalfframes = m_track->nextfframe; + assert(!canSeek() || (tell() == m_track->fpos_next_frame)); +} + +void PCM::sync1() +{ + m_saved_fpos_next_frame = m_track->fpos_next_frame; + m_saved_nextfframe = m_track->nextfframe; +} + +void PCM::sync2() +{ + assert(!canSeek() || (tell() == m_track->fpos_next_frame)); + + /* We can afford to seek because sync2 is rare. */ + m_track->fpos_after_data = tell(); + + m_track->fpos_next_frame = m_saved_fpos_next_frame; + m_track->nextfframe = m_saved_nextfframe; +} + +PCM *PCM::createDecompress(Track *track, File *fh, bool canSeek, + bool headerless, AFframecount *chunkframes) +{ + return new PCM(Decompress, track, fh, canSeek); +} + +void PCM::runPull() +{ + AFframecount framesToRead = m_outChunk->frameCount; + + /* + WARNING: Due to the optimization explained at the end of + arrangemodules(), the pcm file module cannot depend on + the presence of the intermediate working buffer which + _AFsetupmodules usually allocates for file modules in + their input or output chunk (for reading or writing, + respectively). + + Fortunately, the pcm module has no need for such a buffer. + */ + + /* + Limit the number of frames to be read to the number of + frames left in the track. + */ + if (m_track->totalfframes != -1 && + m_track->nextfframe + framesToRead > m_track->totalfframes) + { + framesToRead = m_track->totalfframes - m_track->nextfframe; + } + + ssize_t bytesRead = read(m_outChunk->buffer, m_bytesPerFrame * framesToRead); + AFframecount framesRead = bytesRead >= 0 ? bytesRead / m_bytesPerFrame : 0; + + m_track->nextfframe += framesRead; + assert(!canSeek() || (tell() == m_track->fpos_next_frame)); + + /* + If we got EOF from read, then we return the actual amount read. + + Complain only if there should have been more frames in the file. + */ + + if (framesRead != framesToRead && m_track->totalfframes != -1) + reportReadError(framesRead, framesToRead); + + m_outChunk->frameCount = framesRead; +} + +void PCM::reset2() +{ + m_track->fpos_next_frame = m_track->fpos_first_frame + + m_bytesPerFrame * m_track->nextfframe; + + m_track->frames2ignore = 0; +} + +FileModule *_AFpcminitcompress (Track *track, File *fh, bool canSeek, + bool headerless, AFframecount *chunkFrames) +{ + return PCM::createCompress(track, fh, canSeek, headerless, chunkFrames); +} + +FileModule *_AFpcminitdecompress (Track *track, File *fh, bool canSeek, + bool headerless, AFframecount *chunkFrames) +{ + return PCM::createDecompress(track, fh, canSeek, headerless, chunkFrames); +} + +// file: modules/SimpleModule.cpp +/* + Audio File Library + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + +#include + +void SimpleModule::runPull() +{ + pull(m_outChunk->frameCount); + run(*m_inChunk, *m_outChunk); +} + +void SimpleModule::runPush() +{ + m_outChunk->frameCount = m_inChunk->frameCount; + run(*m_inChunk, *m_outChunk); + push(m_outChunk->frameCount); +} + +ApplyChannelMatrix::ApplyChannelMatrix(FormatCode format, bool isReading, + int inChannels, int outChannels, + double minClip, double maxClip, const double *matrix) : + m_format(format), + m_inChannels(inChannels), + m_outChannels(outChannels), + m_minClip(minClip), + m_maxClip(maxClip), + m_matrix(NULL) +{ + m_matrix = new double[m_inChannels * m_outChannels]; + if (matrix) + { + if (isReading) + { + // Copy channel matrix for reading. + std::copy(matrix, matrix + m_inChannels * m_outChannels, m_matrix); + } + else + { + // Transpose channel matrix for writing. + for (int i=0; i < inChannels; i++) + for (int j=0; j < outChannels; j++) + m_matrix[j*inChannels + i] = matrix[i*outChannels + j]; + } + } + else + { + initDefaultMatrix(); + } +} + +ApplyChannelMatrix::~ApplyChannelMatrix() +{ + delete [] m_matrix; +} + +const char *ApplyChannelMatrix::name() const { return "channelMatrix"; } + +void ApplyChannelMatrix::describe() +{ + m_outChunk->f.channelCount = m_outChannels; + m_outChunk->f.pcm.minClip = m_minClip; + m_outChunk->f.pcm.maxClip = m_maxClip; +} + +void ApplyChannelMatrix::run(Chunk &inChunk, Chunk &outChunk) +{ + switch (m_format) + { + case kInt8: + run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); + break; + case kInt16: + run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); + break; + case kInt24: + case kInt32: + run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); + break; + case kFloat: + run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); + break; + case kDouble: + run(inChunk.buffer, outChunk.buffer, inChunk.frameCount); + break; + default: + assert(false); + } +} + +template +void ApplyChannelMatrix::run(const void *inputData, void *outputData, int frameCount) +{ + const T *input = reinterpret_cast(inputData); + T *output = reinterpret_cast(outputData); + for (int frame=0; frame + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + +#include +#include +#include + +RebufferModule::RebufferModule(Direction direction, int bytesPerFrame, + int numFrames, bool multipleOf) : + m_direction(direction), + m_bytesPerFrame(bytesPerFrame), + m_numFrames(numFrames), + m_multipleOf(multipleOf), + m_eof(false), + m_sentShortChunk(false), + m_buffer(NULL), + m_offset(-1), + m_savedBuffer(NULL), + m_savedOffset(-1) +{ + if (m_direction == FixedToVariable) + initFixedToVariable(); + else + initVariableToFixed(); +} + +RebufferModule::~RebufferModule() +{ + delete [] m_buffer; + delete [] m_savedBuffer; +} + +void RebufferModule::initFixedToVariable() +{ + m_offset = m_numFrames; + m_buffer = new char[m_numFrames * m_bytesPerFrame]; +} + +void RebufferModule::initVariableToFixed() +{ + m_offset = 0; + m_buffer = new char[m_numFrames * m_bytesPerFrame]; + m_savedBuffer = new char[m_numFrames * m_bytesPerFrame]; +} + +void RebufferModule::maxPull() +{ + assert(m_direction == FixedToVariable); + if (m_multipleOf) + m_inChunk->frameCount = m_outChunk->frameCount + m_numFrames; + else + m_inChunk->frameCount = m_numFrames; +} + +void RebufferModule::maxPush() +{ + assert(m_direction == VariableToFixed); + if (m_multipleOf) + m_outChunk->frameCount = m_inChunk->frameCount + m_numFrames; + else + m_outChunk->frameCount = m_numFrames; +} + +void RebufferModule::runPull() +{ + int framesToPull = m_outChunk->frameCount; + const char *inBuffer = static_cast(m_inChunk->buffer); + char *outBuffer = static_cast(m_outChunk->buffer); + + assert(m_offset > 0 && m_offset <= m_numFrames); + + /* + A module should not pull more frames from its input + after receiving a short chunk. + */ + assert(!m_sentShortChunk); + + if (m_offset < m_numFrames) + { + int buffered = m_numFrames - m_offset; + int n = std::min(framesToPull, buffered); + memcpy(outBuffer, m_buffer + m_offset * m_bytesPerFrame, + n * m_bytesPerFrame); + outBuffer += buffered * m_bytesPerFrame; + framesToPull -= buffered; + m_offset += n; + } + + // Try to pull more frames from the source. + while (!m_eof && framesToPull > 0) + { + int framesRequested; + if (m_multipleOf) + // Round framesToPull up to nearest multiple of m_numFrames. + framesRequested = ((framesToPull - 1) / m_numFrames + 1) * m_numFrames; + else + framesRequested = m_numFrames; + + assert(framesRequested > 0); + + pull(framesRequested); + + int framesReceived = m_inChunk->frameCount; + + if (framesReceived != framesRequested) + m_eof = true; + + memcpy(outBuffer, inBuffer, + std::min(framesToPull, framesReceived) * m_bytesPerFrame); + + outBuffer += framesReceived * m_bytesPerFrame; + framesToPull -= framesReceived; + + if (m_multipleOf) + assert(m_eof || framesToPull <= 0); + + if (framesToPull < 0) + { + assert(m_offset == m_numFrames); + + m_offset = m_numFrames + framesToPull; + + assert(m_offset > 0 && m_offset <= m_numFrames); + + memcpy(m_buffer + m_offset * m_bytesPerFrame, + inBuffer + (framesReceived + framesToPull) * m_bytesPerFrame, + (m_numFrames - m_offset) * m_bytesPerFrame); + } + else + { + assert(m_offset == m_numFrames); + } + } + + if (m_eof && framesToPull > 0) + { + // Output short chunk. + m_outChunk->frameCount -= framesToPull; + m_sentShortChunk = true; + assert(m_offset == m_numFrames); + } + else + { + assert(framesToPull <= 0); + assert(m_offset == m_numFrames + framesToPull); + } + assert(m_offset > 0 && m_offset <= m_numFrames); +} + +void RebufferModule::reset1() +{ + m_offset = m_numFrames; + m_eof = false; + m_sentShortChunk = false; + assert(m_offset > 0 && m_offset <= m_numFrames); +} + +void RebufferModule::reset2() +{ + assert(m_offset > 0 && m_offset <= m_numFrames); +} + +void RebufferModule::runPush() +{ + int framesToPush = m_inChunk->frameCount; + const char *inBuffer = static_cast(m_inChunk->buffer); + char *outBuffer = static_cast(m_outChunk->buffer); + + assert(m_offset >= 0 && m_offset < m_numFrames); + + // Check that we will be able to push even one block. + if (m_offset + framesToPush >= m_numFrames) + { + if (m_offset > 0) + memcpy(m_outChunk->buffer, m_buffer, m_offset * m_bytesPerFrame); + + if (m_multipleOf) + { + // Round down to nearest multiple of m_numFrames. + int n = ((m_offset + framesToPush) / m_numFrames) * m_numFrames; + + assert(n > m_offset); + memcpy(outBuffer + m_offset * m_bytesPerFrame, + inBuffer, + (n - m_offset) * m_bytesPerFrame); + + push(n); + + inBuffer += (n - m_offset) * m_bytesPerFrame; + framesToPush -= n - m_offset; + assert(framesToPush >= 0); + m_offset = 0; + } + else + { + while (m_offset + framesToPush >= m_numFrames) + { + int n = m_numFrames - m_offset; + memcpy(outBuffer + m_offset * m_bytesPerFrame, + inBuffer, + n * m_bytesPerFrame); + + push(m_numFrames); + + inBuffer += n * m_bytesPerFrame; + framesToPush -= n; + assert(framesToPush >= 0); + m_offset = 0; + } + } + + assert(m_offset == 0); + } + + assert(m_offset + framesToPush < m_numFrames); + + // Save remaining samples in buffer. + if (framesToPush > 0) + { + memcpy(m_buffer + m_offset * m_bytesPerFrame, + inBuffer, + framesToPush * m_bytesPerFrame); + m_offset += framesToPush; + } + + assert(m_offset >= 0 && m_offset < m_numFrames); +} + +void RebufferModule::sync1() +{ + assert(m_offset >= 0 && m_offset < m_numFrames); + + // Save all the frames and the offset so we can restore our state later. + memcpy(m_savedBuffer, m_buffer, m_numFrames * m_bytesPerFrame); + m_savedOffset = m_offset; +} + +void RebufferModule::sync2() +{ + assert(m_offset >= 0 && m_offset < m_numFrames); + + memcpy(m_outChunk->buffer, m_buffer, m_offset * m_bytesPerFrame); + + push(m_offset); + + memcpy(m_buffer, m_savedBuffer, m_numFrames * m_bytesPerFrame); + m_offset = m_savedOffset; + + assert(m_offset >= 0 && m_offset < m_numFrames); +} + +// file: AIFF.h +/* + Audio File Library + Copyright (C) 1998-2000, 2003-2004, 2010-2012, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + AIFF.h + + This file contains structures and constants related to the AIFF + and AIFF-C formats. +*/ + +#ifndef AIFF_H +#define AIFF_H + + +#define _AF_AIFF_NUM_INSTPARAMS 9 +extern const InstParamInfo _af_aiff_inst_params[_AF_AIFF_NUM_INSTPARAMS]; +#define _AF_AIFFC_NUM_COMPTYPES 3 +extern const int _af_aiffc_compression_types[_AF_AIFFC_NUM_COMPTYPES]; + +class AIFFFile : public _AFfilehandle +{ +public: + AIFFFile(); + + static bool recognizeAIFF(File *fh); + static bool recognizeAIFFC(File *fh); + + static AFfilesetup completeSetup(AFfilesetup); + + int getVersion() OVERRIDE; + + status readInit(AFfilesetup) OVERRIDE; + status writeInit(AFfilesetup) OVERRIDE; + + status update() OVERRIDE; + + bool isInstrumentParameterValid(AUpvlist, int) OVERRIDE; + +private: + AFfileoffset m_miscellaneousPosition; + AFfileoffset m_FVER_offset; + AFfileoffset m_COMM_offset; + AFfileoffset m_MARK_offset; + AFfileoffset m_INST_offset; + AFfileoffset m_AESD_offset; + AFfileoffset m_SSND_offset; + + status parseFVER(const Tag &type, size_t size); + status parseAESD(const Tag &type, size_t size); + status parseMiscellaneous(const Tag &type, size_t size); + status parseINST(const Tag &type, size_t size); + status parseMARK(const Tag &type, size_t size); + status parseCOMM(const Tag &type, size_t size); + status parseSSND(const Tag &type, size_t size); + + status writeCOMM(); + status writeSSND(); + status writeMARK(); + status writeINST(); + status writeFVER(); + status writeAESD(); + status writeMiscellaneous(); + + void initCompressionParams(); + void initIMACompressionParams(); + + bool isAIFFC() const { return m_fileFormat == AF_FILE_AIFFC; } + + bool readPString(char s[256]); + bool writePString(const char *); +}; + +#endif + +// file: AIFF.cpp +/* + Audio File Library + Copyright (C) 1998-2000, 2003-2004, 2010-2013, Michael Pruett + Copyright (C) 2000-2001, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + AIFF.cpp + + This file contains routines for reading and writing AIFF and + AIFF-C sound files. +*/ + + +#include +#include +#include +#include + + +const InstParamInfo _af_aiff_inst_params[_AF_AIFF_NUM_INSTPARAMS] = +{ + { AF_INST_MIDI_BASENOTE, AU_PVTYPE_LONG, "MIDI base note", {60} }, + { AF_INST_NUMCENTS_DETUNE, AU_PVTYPE_LONG, "Detune in cents", {0} }, + { AF_INST_MIDI_LOVELOCITY, AU_PVTYPE_LONG, "Low velocity", {1} }, + { AF_INST_MIDI_HIVELOCITY, AU_PVTYPE_LONG, "High velocity", {127} }, + { AF_INST_MIDI_LONOTE, AU_PVTYPE_LONG, "Low note", {0} }, + { AF_INST_MIDI_HINOTE, AU_PVTYPE_LONG, "High note", {127} }, + { AF_INST_NUMDBS_GAIN, AU_PVTYPE_LONG, "Gain in dB", {0} }, + { AF_INST_SUSLOOPID, AU_PVTYPE_LONG, "Sustain loop id", {0} }, + { AF_INST_RELLOOPID, AU_PVTYPE_LONG, "Release loop id", {0} } +}; + +const int _af_aiffc_compression_types[_AF_AIFFC_NUM_COMPTYPES] = +{ + AF_COMPRESSION_G711_ULAW, + AF_COMPRESSION_G711_ALAW, + AF_COMPRESSION_IMA +}; + +static const _AFfilesetup aiffDefaultFileSetup = +{ + _AF_VALID_FILESETUP, /* valid */ + AF_FILE_AIFF, /* fileFormat */ + true, /* trackSet */ + true, /* instrumentSet */ + true, /* miscellaneousSet */ + 1, /* trackCount */ + NULL, /* tracks */ + 1, /* instrumentCount */ + NULL, /* instruments */ + 0, /* miscellaneousCount */ + NULL /* miscellaneous */ +}; + +#define AIFC_VERSION_1 0xa2805140 + +struct _INST +{ + uint8_t baseNote; + int8_t detune; + uint8_t lowNote, highNote; + uint8_t lowVelocity, highVelocity; + int16_t gain; + + uint16_t sustainLoopPlayMode; + uint16_t sustainLoopBegin; + uint16_t sustainLoopEnd; + + uint16_t releaseLoopPlayMode; + uint16_t releaseLoopBegin; + uint16_t releaseLoopEnd; +}; + +AIFFFile::AIFFFile() +{ + setFormatByteOrder(AF_BYTEORDER_BIGENDIAN); + + m_miscellaneousPosition = 0; + m_FVER_offset = 0; + m_COMM_offset = 0; + m_MARK_offset = 0; + m_INST_offset = 0; + m_AESD_offset = 0; + m_SSND_offset = 0; +} + +/* + FVER chunks are only present in AIFF-C files. +*/ +status AIFFFile::parseFVER(const Tag &type, size_t size) +{ + assert(type == "FVER"); + + uint32_t timestamp; + readU32(×tamp); + /* timestamp holds the number of seconds since January 1, 1904. */ + + return AF_SUCCEED; +} + +/* + Parse AES recording data. +*/ +status AIFFFile::parseAESD(const Tag &type, size_t size) +{ + unsigned char aesChannelStatusData[24]; + + assert(type == "AESD"); + assert(size == 24); + + Track *track = getTrack(); + + track->hasAESData = true; + + /* + Try to read 24 bytes of AES nonaudio data from the file. + Fail if the file disappoints. + */ + if (m_fh->read(aesChannelStatusData, 24) != 24) + return AF_FAIL; + + memcpy(track->aesData, aesChannelStatusData, 24); + + return AF_SUCCEED; +} + +/* + Parse miscellaneous data chunks such as name, author, copyright, + and annotation chunks. +*/ +status AIFFFile::parseMiscellaneous(const Tag &type, size_t size) +{ + int misctype = AF_MISC_UNRECOGNIZED; + + assert(type == "NAME" || + type == "AUTH" || + type == "(c) " || + type == "ANNO" || + type == "APPL" || + type == "MIDI"); + + /* Skip zero-length miscellaneous chunks. */ + if (size == 0) + return AF_FAIL; + + m_miscellaneousCount++; + m_miscellaneous = (Miscellaneous *) _af_realloc(m_miscellaneous, + m_miscellaneousCount * sizeof (Miscellaneous)); + + if (type == "NAME") + misctype = AF_MISC_NAME; + else if (type == "AUTH") + misctype = AF_MISC_AUTH; + else if (type == "(c) ") + misctype = AF_MISC_COPY; + else if (type == "ANNO") + misctype = AF_MISC_ANNO; + else if (type == "APPL") + misctype = AF_MISC_APPL; + else if (type == "MIDI") + misctype = AF_MISC_MIDI; + + m_miscellaneous[m_miscellaneousCount - 1].id = m_miscellaneousCount; + m_miscellaneous[m_miscellaneousCount - 1].type = misctype; + m_miscellaneous[m_miscellaneousCount - 1].size = size; + m_miscellaneous[m_miscellaneousCount - 1].position = 0; + m_miscellaneous[m_miscellaneousCount - 1].buffer = _af_malloc(size); + m_fh->read(m_miscellaneous[m_miscellaneousCount - 1].buffer, size); + + return AF_SUCCEED; +} + +/* + Parse instrument chunks, which contain information about using + sound data as a sampled instrument. +*/ +status AIFFFile::parseINST(const Tag &type, size_t size) +{ + uint8_t baseNote; + int8_t detune; + uint8_t lowNote, highNote, lowVelocity, highVelocity; + int16_t gain; + + uint16_t sustainLoopPlayMode, sustainLoopBegin, sustainLoopEnd; + uint16_t releaseLoopPlayMode, releaseLoopBegin, releaseLoopEnd; + + Instrument *instrument = (Instrument *) _af_calloc(1, sizeof (Instrument)); + instrument->id = AF_DEFAULT_INST; + instrument->values = (AFPVu *) _af_calloc(_AF_AIFF_NUM_INSTPARAMS, sizeof (AFPVu)); + instrument->loopCount = 2; + instrument->loops = (Loop *) _af_calloc(2, sizeof (Loop)); + + m_instrumentCount = 1; + m_instruments = instrument; + + readU8(&baseNote); + readS8(&detune); + readU8(&lowNote); + readU8(&highNote); + readU8(&lowVelocity); + readU8(&highVelocity); + readS16(&gain); + + instrument->values[0].l = baseNote; + instrument->values[1].l = detune; + instrument->values[2].l = lowVelocity; + instrument->values[3].l = highVelocity; + instrument->values[4].l = lowNote; + instrument->values[5].l = highNote; + instrument->values[6].l = gain; + + instrument->values[7].l = 1; /* sustain loop id */ + instrument->values[8].l = 2; /* release loop id */ + + readU16(&sustainLoopPlayMode); + readU16(&sustainLoopBegin); + readU16(&sustainLoopEnd); + + readU16(&releaseLoopPlayMode); + readU16(&releaseLoopBegin); + readU16(&releaseLoopEnd); + + instrument->loops[0].id = 1; + instrument->loops[0].mode = sustainLoopPlayMode; + instrument->loops[0].beginMarker = sustainLoopBegin; + instrument->loops[0].endMarker = sustainLoopEnd; + instrument->loops[0].trackid = AF_DEFAULT_TRACK; + + instrument->loops[1].id = 2; + instrument->loops[1].mode = releaseLoopPlayMode; + instrument->loops[1].beginMarker = releaseLoopBegin; + instrument->loops[1].endMarker = releaseLoopEnd; + instrument->loops[1].trackid = AF_DEFAULT_TRACK; + + return AF_SUCCEED; +} + +/* + Parse marker chunks, which contain the positions and names of loop markers. +*/ +status AIFFFile::parseMARK(const Tag &type, size_t size) +{ + assert(type == "MARK"); + + Track *track = getTrack(); + + uint16_t numMarkers; + readU16(&numMarkers); + + track->markerCount = numMarkers; + if (numMarkers) + track->markers = _af_marker_new(numMarkers); + + for (unsigned i=0; iread(&sizeByte, 1); + markerName = (char *) _af_malloc(sizeByte + 1); + m_fh->read(markerName, sizeByte); + + markerName[sizeByte] = '\0'; + + /* + If sizeByte is even, then 1+sizeByte (the length + of the string) is odd. Skip an extra byte to + make it even. + */ + + if ((sizeByte % 2) == 0) + m_fh->seek(1, File::SeekFromCurrent); + + track->markers[i].id = markerID; + track->markers[i].position = markerPosition; + track->markers[i].name = markerName; + track->markers[i].comment = _af_strdup(""); + } + + return AF_SUCCEED; +} + +/* + Parse common data chunks, which contain information regarding the + sampling rate, the number of sample frames, and the number of + sound channels. +*/ +status AIFFFile::parseCOMM(const Tag &type, size_t size) +{ + assert(type == "COMM"); + + Track *track = getTrack(); + + uint16_t numChannels; + uint32_t numSampleFrames; + uint16_t sampleSize; + unsigned char sampleRate[10]; + + readU16(&numChannels); + track->f.channelCount = numChannels; + + if (!numChannels) + { + _af_error(AF_BAD_CHANNELS, "invalid file with 0 channels"); + return AF_FAIL; + } + + readU32(&numSampleFrames); + track->totalfframes = numSampleFrames; + + readU16(&sampleSize); + track->f.sampleWidth = sampleSize; + + m_fh->read(sampleRate, 10); + track->f.sampleRate = _af_convert_from_ieee_extended(sampleRate); + + track->f.compressionType = AF_COMPRESSION_NONE; + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; + + track->f.framesPerPacket = 1; + + if (isAIFFC()) + { + Tag compressionID; + // Pascal strings are at most 255 bytes long. + char compressionName[256]; + + readTag(&compressionID); + + // Read the Pascal-style string containing the name. + readPString(compressionName); + + if (compressionID == "NONE" || compressionID == "twos") + { + track->f.compressionType = AF_COMPRESSION_NONE; + } + else if (compressionID == "in24") + { + track->f.compressionType = AF_COMPRESSION_NONE; + track->f.sampleWidth = 24; + } + else if (compressionID == "in32") + { + track->f.compressionType = AF_COMPRESSION_NONE; + track->f.sampleWidth = 32; + } + else if (compressionID == "ACE2" || + compressionID == "ACE8" || + compressionID == "MAC3" || + compressionID == "MAC6") + { + _af_error(AF_BAD_NOT_IMPLEMENTED, "AIFF-C format does not support Apple's proprietary %s compression format", compressionName); + return AF_FAIL; + } + else if (compressionID == "ulaw" || compressionID == "ULAW") + { + track->f.compressionType = AF_COMPRESSION_G711_ULAW; + track->f.byteOrder = _AF_BYTEORDER_NATIVE; + track->f.sampleWidth = 16; + track->f.bytesPerPacket = track->f.channelCount; + } + else if (compressionID == "alaw" || compressionID == "ALAW") + { + track->f.compressionType = AF_COMPRESSION_G711_ALAW; + track->f.byteOrder = _AF_BYTEORDER_NATIVE; + track->f.sampleWidth = 16; + track->f.bytesPerPacket = track->f.channelCount; + } + else if (compressionID == "fl32" || compressionID == "FL32") + { + track->f.sampleFormat = AF_SAMPFMT_FLOAT; + track->f.sampleWidth = 32; + track->f.compressionType = AF_COMPRESSION_NONE; + } + else if (compressionID == "fl64" || compressionID == "FL64") + { + track->f.sampleFormat = AF_SAMPFMT_DOUBLE; + track->f.sampleWidth = 64; + track->f.compressionType = AF_COMPRESSION_NONE; + } + else if (compressionID == "sowt") + { + track->f.compressionType = AF_COMPRESSION_NONE; + track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; + } + else if (compressionID == "ima4") + { + track->f.sampleWidth = 16; + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + track->f.compressionType = AF_COMPRESSION_IMA; + track->f.byteOrder = _AF_BYTEORDER_NATIVE; + + initIMACompressionParams(); + + track->totalfframes *= 64; + } + else + { + _af_error(AF_BAD_NOT_IMPLEMENTED, "AIFF-C compression type '%s' not currently supported", + compressionID.name().c_str()); + return AF_FAIL; + } + } + + if (track->f.isUncompressed()) + track->f.computeBytesPerPacketPCM(); + + if (_af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth) == AF_FAIL) + return AF_FAIL; + + return AF_SUCCEED; +} + +/* + Parse the stored sound chunk, which usually contains little more + than the sound data. +*/ +status AIFFFile::parseSSND(const Tag &type, size_t size) +{ + assert(type == "SSND"); + + Track *track = getTrack(); + + uint32_t offset, blockSize; + readU32(&offset); + readU32(&blockSize); + + track->data_size = size - 8 - offset; + + track->fpos_first_frame = m_fh->tell() + offset; + + return AF_SUCCEED; +} + +status AIFFFile::readInit(AFfilesetup setup) +{ + uint32_t type, size, formtype; + + bool hasCOMM = false; + bool hasFVER = false; + bool hasSSND = false; + + m_fh->seek(0, File::SeekFromBeginning); + + m_fh->read(&type, 4); + readU32(&size); + m_fh->read(&formtype, 4); + + if (memcmp(&type, "FORM", 4) != 0 || + (memcmp(&formtype, "AIFF", 4) && memcmp(&formtype, "AIFC", 4))) + return AF_FAIL; + + if (!allocateTrack()) + return AF_FAIL; + + /* Include the offset of the form type. */ + size_t index = 4; + while (index < size) + { + Tag chunkid; + uint32_t chunksize = 0; + status result = AF_SUCCEED; + + readTag(&chunkid); + readU32(&chunksize); + + if (chunkid == "COMM") + { + hasCOMM = true; + result = parseCOMM(chunkid, chunksize); + } + else if (chunkid == "FVER") + { + hasFVER = true; + parseFVER(chunkid, chunksize); + } + else if (chunkid == "INST") + { + parseINST(chunkid, chunksize); + } + else if (chunkid == "MARK") + { + parseMARK(chunkid, chunksize); + } + else if (chunkid == "AESD") + { + parseAESD(chunkid, chunksize); + } + else if (chunkid == "NAME" || + chunkid == "AUTH" || + chunkid == "(c) " || + chunkid == "ANNO" || + chunkid == "APPL" || + chunkid == "MIDI") + { + parseMiscellaneous(chunkid, chunksize); + } + /* + The sound data chunk is required if there are more than + zero sample frames. + */ + else if (chunkid == "SSND") + { + if (hasSSND) + { + _af_error(AF_BAD_AIFF_SSND, "AIFF file has more than one SSND chunk"); + return AF_FAIL; + } + hasSSND = true; + result = parseSSND(chunkid, chunksize); + } + + if (result == AF_FAIL) + return AF_FAIL; + + index += chunksize + 8; + + /* all chunks must be aligned on an even number of bytes */ + if ((index % 2) != 0) + index++; + + m_fh->seek(index + 8, File::SeekFromBeginning); + } + + if (!hasCOMM) + { + _af_error(AF_BAD_AIFF_COMM, "bad AIFF COMM chunk"); + } + + if (isAIFFC() && !hasFVER) + { + _af_error(AF_BAD_HEADER, "FVER chunk is required in AIFF-C"); + } + + /* The file has been successfully parsed. */ + return AF_SUCCEED; +} + +bool AIFFFile::recognizeAIFF(File *fh) +{ + uint8_t buffer[8]; + + fh->seek(0, File::SeekFromBeginning); + + if (fh->read(buffer, 8) != 8 || memcmp(buffer, "FORM", 4) != 0) + return false; + if (fh->read(buffer, 4) != 4 || memcmp(buffer, "AIFF", 4) != 0) + return false; + + return true; +} + +bool AIFFFile::recognizeAIFFC(File *fh) +{ + uint8_t buffer[8]; + + fh->seek(0, File::SeekFromBeginning); + + if (fh->read(buffer, 8) != 8 || memcmp(buffer, "FORM", 4) != 0) + return false; + if (fh->read(buffer, 4) != 4 || memcmp(buffer, "AIFC", 4) != 0) + return false; + + return true; +} + +AFfilesetup AIFFFile::completeSetup(AFfilesetup setup) +{ + bool isAIFF = setup->fileFormat == AF_FILE_AIFF; + + if (setup->trackSet && setup->trackCount != 1) + { + _af_error(AF_BAD_NUMTRACKS, "AIFF/AIFF-C file must have 1 track"); + return AF_NULL_FILESETUP; + } + + TrackSetup *track = setup->getTrack(); + if (!track) + return AF_NULL_FILESETUP; + + if (track->sampleFormatSet) + { + if (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) + { + _af_error(AF_BAD_FILEFMT, "AIFF/AIFF-C format does not support unsigned data"); + return AF_NULL_FILESETUP; + } + else if (isAIFF && track->f.sampleFormat != AF_SAMPFMT_TWOSCOMP) + { + _af_error(AF_BAD_FILEFMT, "AIFF format supports only two's complement integer data"); + return AF_NULL_FILESETUP; + } + } + else + _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, + track->f.sampleWidth); + + /* Check sample width if writing two's complement. Otherwise ignore. */ + if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP && + (track->f.sampleWidth < 1 || track->f.sampleWidth > 32)) + { + _af_error(AF_BAD_WIDTH, + "invalid sample width %d for AIFF/AIFF-C file " + "(must be 1-32)", track->f.sampleWidth); + return AF_NULL_FILESETUP; + } + + if (isAIFF && track->f.compressionType != AF_COMPRESSION_NONE) + { + _af_error(AF_BAD_FILESETUP, + "AIFF does not support compression; use AIFF-C"); + return AF_NULL_FILESETUP; + } + + if (track->f.compressionType != AF_COMPRESSION_NONE && + track->f.compressionType != AF_COMPRESSION_G711_ULAW && + track->f.compressionType != AF_COMPRESSION_G711_ALAW && + track->f.compressionType != AF_COMPRESSION_IMA) + { + _af_error(AF_BAD_NOT_IMPLEMENTED, "compression format not supported in AIFF-C"); + return AF_NULL_FILESETUP; + } + + if (track->f.isUncompressed() && + track->byteOrderSet && + track->f.byteOrder != AF_BYTEORDER_BIGENDIAN && + track->f.isByteOrderSignificant()) + { + _af_error(AF_BAD_BYTEORDER, + "AIFF/AIFF-C format supports only big-endian data"); + return AF_NULL_FILESETUP; + } + + if (track->f.isUncompressed()) + track->f.byteOrder = AF_BYTEORDER_BIGENDIAN; + + if (setup->instrumentSet) + { + if (setup->instrumentCount != 0 && setup->instrumentCount != 1) + { + _af_error(AF_BAD_NUMINSTS, "AIFF/AIFF-C file must have 0 or 1 instrument chunk"); + return AF_NULL_FILESETUP; + } + if (setup->instruments != 0 && + setup->instruments[0].loopCount != 2) + { + _af_error(AF_BAD_NUMLOOPS, "AIFF/AIFF-C file with instrument must also have 2 loops"); + return AF_NULL_FILESETUP; + } + } + + if (setup->miscellaneousSet) + { + for (int i=0; imiscellaneousCount; i++) + { + switch (setup->miscellaneous[i].type) + { + case AF_MISC_COPY: + case AF_MISC_AUTH: + case AF_MISC_NAME: + case AF_MISC_ANNO: + case AF_MISC_APPL: + case AF_MISC_MIDI: + break; + + default: + _af_error(AF_BAD_MISCTYPE, "invalid miscellaneous type %d for AIFF/AIFF-C file", setup->miscellaneous[i].type); + return AF_NULL_FILESETUP; + } + } + } + + return _af_filesetup_copy(setup, &aiffDefaultFileSetup, true); +} + +bool AIFFFile::isInstrumentParameterValid(AUpvlist list, int i) +{ + int param, type; + + AUpvgetparam(list, i, ¶m); + AUpvgetvaltype(list, i, &type); + if (type != AU_PVTYPE_LONG) + return false; + + long lval; + AUpvgetval(list, i, &lval); + + switch (param) + { + case AF_INST_MIDI_BASENOTE: + return ((lval >= 0) && (lval <= 127)); + + case AF_INST_NUMCENTS_DETUNE: + return ((lval >= -50) && (lval <= 50)); + + case AF_INST_MIDI_LOVELOCITY: + return ((lval >= 1) && (lval <= 127)); + + case AF_INST_MIDI_HIVELOCITY: + return ((lval >= 1) && (lval <= 127)); + + case AF_INST_MIDI_LONOTE: + return ((lval >= 0) && (lval <= 127)); + + case AF_INST_MIDI_HINOTE: + return ((lval >= 0) && (lval <= 127)); + + case AF_INST_NUMDBS_GAIN: + case AF_INST_SUSLOOPID: + case AF_INST_RELLOOPID: + return true; + + default: + return false; + break; + } + + return true; +} + +int AIFFFile::getVersion() +{ + if (isAIFFC()) + return AIFC_VERSION_1; + return 0; +} + +status AIFFFile::writeInit(AFfilesetup setup) +{ + if (initFromSetup(setup) == AF_FAIL) + return AF_FAIL; + + initCompressionParams(); + + uint32_t fileSize = 0; + m_fh->write("FORM", 4); + writeU32(&fileSize); + + if (isAIFFC()) + m_fh->write("AIFC", 4); + else + m_fh->write("AIFF", 4); + + if (isAIFFC()) + writeFVER(); + + writeCOMM(); + writeMARK(); + writeINST(); + writeAESD(); + writeMiscellaneous(); + writeSSND(); + + return AF_SUCCEED; +} + +status AIFFFile::update() +{ + /* Get the length of the file. */ + uint32_t length = m_fh->length(); + length -= 8; + + /* Set the length of the FORM chunk. */ + m_fh->seek(4, File::SeekFromBeginning); + writeU32(&length); + + if (isAIFFC()) + writeFVER(); + + writeCOMM(); + writeMARK(); + writeINST(); + writeAESD(); + writeMiscellaneous(); + writeSSND(); + + return AF_SUCCEED; +} + +status AIFFFile::writeCOMM() +{ + /* + If COMM_offset hasn't been set yet, set it to the + current offset. + */ + if (m_COMM_offset == 0) + m_COMM_offset = m_fh->tell(); + else + m_fh->seek(m_COMM_offset, File::SeekFromBeginning); + + Track *track = getTrack(); + + Tag compressionTag; + /* Pascal strings can occupy only 255 bytes (+ a size byte). */ + char compressionName[256]; + + if (isAIFFC()) + { + if (track->f.compressionType == AF_COMPRESSION_NONE) + { + if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP) + { + compressionTag = "NONE"; + strcpy(compressionName, "not compressed"); + } + else if (track->f.sampleFormat == AF_SAMPFMT_FLOAT) + { + compressionTag = "fl32"; + strcpy(compressionName, "32-bit Floating Point"); + } + else if (track->f.sampleFormat == AF_SAMPFMT_DOUBLE) + { + compressionTag = "fl64"; + strcpy(compressionName, "64-bit Floating Point"); + } + /* + We disallow unsigned sample data for + AIFF files in _af_aiff_complete_setup, + so the next condition should never be + satisfied. + */ + else if (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) + { + _af_error(AF_BAD_SAMPFMT, + "AIFF/AIFF-C format does not support unsigned data"); + assert(0); + return AF_FAIL; + } + } + else if (track->f.compressionType == AF_COMPRESSION_G711_ULAW) + { + compressionTag = "ulaw"; + strcpy(compressionName, "CCITT G.711 u-law"); + } + else if (track->f.compressionType == AF_COMPRESSION_G711_ALAW) + { + compressionTag = "alaw"; + strcpy(compressionName, "CCITT G.711 A-law"); + } + else if (track->f.compressionType == AF_COMPRESSION_IMA) + { + compressionTag = "ima4"; + strcpy(compressionName, "IMA 4:1 compression"); + } + } + + m_fh->write("COMM", 4); + + /* + For AIFF-C files, the length of the COMM chunk is 22 + plus the length of the compression name plus the size + byte. If the length of the data is an odd number of + bytes, add a zero pad byte at the end, but don't + include the pad byte in the chunk's size. + */ + uint32_t chunkSize; + if (isAIFFC()) + chunkSize = 22 + strlen(compressionName) + 1; + else + chunkSize = 18; + writeU32(&chunkSize); + + /* number of channels, 2 bytes */ + uint16_t channelCount = track->f.channelCount; + writeU16(&channelCount); + + /* number of sample frames, 4 bytes */ + uint32_t frameCount = track->totalfframes; + if (track->f.compressionType == AF_COMPRESSION_IMA) + frameCount = track->totalfframes / track->f.framesPerPacket; + writeU32(&frameCount); + + /* sample size, 2 bytes */ + uint16_t sampleSize = track->f.sampleWidth; + writeU16(&sampleSize); + + /* sample rate, 10 bytes */ + uint8_t sampleRate[10]; + _af_convert_to_ieee_extended(track->f.sampleRate, sampleRate); + m_fh->write(sampleRate, 10); + + if (isAIFFC()) + { + writeTag(&compressionTag); + writePString(compressionName); + } + + return AF_SUCCEED; +} + +/* + The AESD chunk contains information pertinent to audio recording + devices. +*/ +status AIFFFile::writeAESD() +{ + Track *track = getTrack(); + + if (!track->hasAESData) + return AF_SUCCEED; + + if (m_AESD_offset == 0) + m_AESD_offset = m_fh->tell(); + else + m_fh->seek(m_AESD_offset, File::SeekFromBeginning); + + if (m_fh->write("AESD", 4) < 4) + return AF_FAIL; + + uint32_t size = 24; + if (!writeU32(&size)) + return AF_FAIL; + + if (m_fh->write(track->aesData, 24) < 24) + return AF_FAIL; + + return AF_SUCCEED; +} + +status AIFFFile::writeSSND() +{ + Track *track = getTrack(); + + if (m_SSND_offset == 0) + m_SSND_offset = m_fh->tell(); + else + m_fh->seek(m_SSND_offset, File::SeekFromBeginning); + + m_fh->write("SSND", 4); + + uint32_t chunkSize = track->data_size + 8; + writeU32(&chunkSize); + + uint32_t zero = 0; + /* data offset */ + writeU32(&zero); + /* block size */ + writeU32(&zero); + + if (track->fpos_first_frame == 0) + track->fpos_first_frame = m_fh->tell(); + + return AF_SUCCEED; +} + +status AIFFFile::writeINST() +{ + uint32_t length = 20; + + struct _INST instrumentdata; + + instrumentdata.sustainLoopPlayMode = + afGetLoopMode(this, AF_DEFAULT_INST, 1); + instrumentdata.sustainLoopBegin = + afGetLoopStart(this, AF_DEFAULT_INST, 1); + instrumentdata.sustainLoopEnd = + afGetLoopEnd(this, AF_DEFAULT_INST, 1); + + instrumentdata.releaseLoopPlayMode = + afGetLoopMode(this, AF_DEFAULT_INST, 2); + instrumentdata.releaseLoopBegin = + afGetLoopStart(this, AF_DEFAULT_INST, 2); + instrumentdata.releaseLoopEnd = + afGetLoopEnd(this, AF_DEFAULT_INST, 2); + + m_fh->write("INST", 4); + writeU32(&length); + + instrumentdata.baseNote = + afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE); + writeU8(&instrumentdata.baseNote); + instrumentdata.detune = + afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE); + writeS8(&instrumentdata.detune); + instrumentdata.lowNote = + afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_LONOTE); + writeU8(&instrumentdata.lowNote); + instrumentdata.highNote = + afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_HINOTE); + writeU8(&instrumentdata.highNote); + instrumentdata.lowVelocity = + afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_LOVELOCITY); + writeU8(&instrumentdata.lowVelocity); + instrumentdata.highVelocity = + afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_HIVELOCITY); + writeU8(&instrumentdata.highVelocity); + + instrumentdata.gain = + afGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_NUMDBS_GAIN); + writeS16(&instrumentdata.gain); + + writeU16(&instrumentdata.sustainLoopPlayMode); + writeU16(&instrumentdata.sustainLoopBegin); + writeU16(&instrumentdata.sustainLoopEnd); + + writeU16(&instrumentdata.releaseLoopPlayMode); + writeU16(&instrumentdata.releaseLoopBegin); + writeU16(&instrumentdata.releaseLoopEnd); + + return AF_SUCCEED; +} + +status AIFFFile::writeMARK() +{ + Track *track = getTrack(); + if (!track->markerCount) + return AF_SUCCEED; + + if (m_MARK_offset == 0) + m_MARK_offset = m_fh->tell(); + else + m_fh->seek(m_MARK_offset, File::SeekFromBeginning); + + Tag markTag("MARK"); + uint32_t length = 0; + + writeTag(&markTag); + writeU32(&length); + + AFfileoffset chunkStartPosition = m_fh->tell(); + + uint16_t numMarkers = track->markerCount; + writeU16(&numMarkers); + + for (unsigned i=0; imarkers[i].id; + writeU16(&id); + + uint32_t position = track->markers[i].position; + writeU32(&position); + + const char *name = track->markers[i].name; + assert(name); + + // Write the name as a Pascal-style string. + writePString(name); + } + + AFfileoffset chunkEndPosition = m_fh->tell(); + length = chunkEndPosition - chunkStartPosition; + + m_fh->seek(chunkStartPosition - 4, File::SeekFromBeginning); + + writeU32(&length); + m_fh->seek(chunkEndPosition, File::SeekFromBeginning); + + return AF_SUCCEED; +} + +/* + The FVER chunk, if present, is always the first chunk in the file. +*/ +status AIFFFile::writeFVER() +{ + uint32_t chunkSize, timeStamp; + + assert(isAIFFC()); + + if (m_FVER_offset == 0) + m_FVER_offset = m_fh->tell(); + else + m_fh->seek(m_FVER_offset, File::SeekFromBeginning); + + m_fh->write("FVER", 4); + + chunkSize = 4; + writeU32(&chunkSize); + + timeStamp = AIFC_VERSION_1; + writeU32(&timeStamp); + + return AF_SUCCEED; +} + +/* + WriteMiscellaneous writes all the miscellaneous data chunks in a + file handle structure to an AIFF or AIFF-C file. +*/ +status AIFFFile::writeMiscellaneous() +{ + if (m_miscellaneousPosition == 0) + m_miscellaneousPosition = m_fh->tell(); + else + m_fh->seek(m_miscellaneousPosition, File::SeekFromBeginning); + + for (int i=0; itype) + { + case AF_MISC_NAME: + chunkType = "NAME"; break; + case AF_MISC_AUTH: + chunkType = "AUTH"; break; + case AF_MISC_COPY: + chunkType = "(c) "; break; + case AF_MISC_ANNO: + chunkType = "ANNO"; break; + case AF_MISC_MIDI: + chunkType = "MIDI"; break; + case AF_MISC_APPL: + chunkType = "APPL"; break; + } + + writeTag(&chunkType); + + chunkSize = misc->size; + writeU32(&chunkSize); + /* + Write the miscellaneous buffer and then a pad byte + if necessary. If the buffer is null, skip the space + for now. + */ + if (misc->buffer != NULL) + m_fh->write(misc->buffer, misc->size); + else + m_fh->seek(misc->size, File::SeekFromCurrent); + + if (misc->size % 2 != 0) + writeU8(&padByte); + } + + return AF_SUCCEED; +} + +void AIFFFile::initCompressionParams() +{ + Track *track = getTrack(); + if (track->f.compressionType == AF_COMPRESSION_IMA) + initIMACompressionParams(); +} + +void AIFFFile::initIMACompressionParams() +{ + Track *track = getTrack(); + + track->f.bytesPerPacket = 34 * track->f.channelCount; + track->f.framesPerPacket = 64; + + AUpvlist pv = AUpvnew(1); + AUpvsetparam(pv, 0, _AF_IMA_ADPCM_TYPE); + AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); + long l = _AF_IMA_ADPCM_TYPE_QT; + AUpvsetval(pv, 0, &l); + + track->f.compressionParams = pv; +} + +// Read a Pascal-style string. +bool AIFFFile::readPString(char s[256]) +{ + uint8_t length; + if (m_fh->read(&length, 1) != 1) + return false; + if (m_fh->read(s, length) != static_cast(length)) + return false; + s[length] = '\0'; + return true; +} + +// Write a Pascal-style string. +bool AIFFFile::writePString(const char *s) +{ + size_t length = strlen(s); + if (length > 255) + return false; + uint8_t sizeByte = static_cast(length); + if (m_fh->write(&sizeByte, 1) != 1) + return false; + if (m_fh->write(s, length) != (ssize_t) length) + return false; + /* + Add a pad byte if the length of the Pascal-style string + (including the size byte) is odd. + */ + if ((length % 2) == 0) + { + uint8_t zero = 0; + if (m_fh->write(&zero, 1) != 1) + return false; + } + return true; +} + +// file: AudioFormat.cpp +/* + Audio File Library + Copyright (C) 2010, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + +#include +#include + +size_t AudioFormat::bytesPerSample(bool stretch3to4) const +{ + switch (sampleFormat) + { + case AF_SAMPFMT_FLOAT: + return sizeof (float); + case AF_SAMPFMT_DOUBLE: + return sizeof (double); + default: + { + int size = (sampleWidth + 7) / 8; + if (compressionType == AF_COMPRESSION_NONE && + size == 3 && stretch3to4) + size = 4; + return size; + } + } +} + +size_t AudioFormat::bytesPerFrame(bool stretch3to4) const +{ + return bytesPerSample(stretch3to4) * channelCount; +} + +size_t AudioFormat::bytesPerSample() const +{ + return bytesPerSample(!isPacked()); +} + +size_t AudioFormat::bytesPerFrame() const +{ + return bytesPerFrame(!isPacked()); +} + +bool AudioFormat::isInteger() const +{ + return sampleFormat == AF_SAMPFMT_TWOSCOMP || + sampleFormat == AF_SAMPFMT_UNSIGNED; +} + +bool AudioFormat::isSigned() const +{ + return sampleFormat == AF_SAMPFMT_TWOSCOMP; +} + +bool AudioFormat::isUnsigned() const +{ + return sampleFormat == AF_SAMPFMT_UNSIGNED; +} + +bool AudioFormat::isFloat() const +{ + return sampleFormat == AF_SAMPFMT_FLOAT || + sampleFormat == AF_SAMPFMT_DOUBLE; +} + +bool AudioFormat::isCompressed() const +{ + return compressionType != AF_COMPRESSION_NONE; +} + +bool AudioFormat::isUncompressed() const +{ + return compressionType == AF_COMPRESSION_NONE; +} + +void AudioFormat::computeBytesPerPacketPCM() +{ + assert(isUncompressed()); + int bytesPerSample = (sampleWidth + 7) / 8; + bytesPerPacket = bytesPerSample * channelCount; +} + +std::string AudioFormat::description() const +{ + std::string d; + char s[1024]; + /* sampleRate, channelCount */ + sprintf(s, "{ %7.2f Hz %d ch ", sampleRate, channelCount); + d += s; + + /* sampleFormat, sampleWidth */ + switch (sampleFormat) + { + case AF_SAMPFMT_TWOSCOMP: + sprintf(s, "%db 2 ", sampleWidth); + break; + case AF_SAMPFMT_UNSIGNED: + sprintf(s, "%db u ", sampleWidth); + break; + case AF_SAMPFMT_FLOAT: + sprintf(s, "flt "); + break; + case AF_SAMPFMT_DOUBLE: + sprintf(s, "dbl "); + break; + default: + assert(false); + break; + } + + d += s; + + /* pcm */ + sprintf(s, "(%.30g+-%.30g [%.30g,%.30g]) ", + pcm.intercept, pcm.slope, + pcm.minClip, pcm.maxClip); + d += s; + + /* byteOrder */ + switch (byteOrder) + { + case AF_BYTEORDER_BIGENDIAN: + d += "big "; + break; + case AF_BYTEORDER_LITTLEENDIAN: + d += "little "; + break; + default: + assert(false); + break; + } + + if (isCompressed()) + { + const CompressionUnit *unit = _af_compression_unit_from_id(compressionType); + assert(unit); + d += "compression: "; + d += unit->label; + } + + return d; +} + +// file: Buffer.cpp +/* + Audio File Library + Copyright (C) 2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + +#include + +Buffer::Buffer() : m_data(0), m_size(0) +{ +} + +Buffer::Buffer(size_t size) : m_data(0), m_size(0) +{ + if (size) + m_data = ::operator new(size); + if (m_data) + { + m_size = size; + } +} + +Buffer::Buffer(const void *data, size_t size) : m_data(0), m_size(0) +{ + if (size) + m_data = ::operator new(size); + if (m_data) + { + ::memcpy(m_data, data, m_size); + m_size = size; + } +} + +Buffer::~Buffer() +{ + ::operator delete(m_data); +} + +// file: File.cpp +/* + Copyright (C) 2010, Michael Pruett. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + + +#include +#include +#include +#include +#include +#include +#include + +class FilePOSIX : public File +{ +public: + FilePOSIX(int fd, AccessMode mode) : File(mode), m_fd(fd) { } + virtual ~FilePOSIX() { close(); } + + virtual int close() OVERRIDE; + virtual ssize_t read(void *data, size_t nbytes) OVERRIDE; + virtual ssize_t write(const void *data, size_t nbytes) OVERRIDE; + virtual off_t length() OVERRIDE; + virtual off_t seek(off_t offset, SeekOrigin origin) OVERRIDE; + virtual off_t tell() OVERRIDE; + +private: + int m_fd; +}; + +class FileVF : public File +{ +public: + FileVF(AFvirtualfile *vf, AccessMode mode) : File(mode), m_vf(vf) { } + virtual ~FileVF() { close(); } + + virtual int close() OVERRIDE; + virtual ssize_t read(void *data, size_t nbytes) OVERRIDE; + virtual ssize_t write(const void *data, size_t nbytes) OVERRIDE; + virtual off_t length() OVERRIDE; + virtual off_t seek(off_t offset, SeekOrigin origin) OVERRIDE; + virtual off_t tell() OVERRIDE; + +private: + AFvirtualfile *m_vf; +}; + +File *File::open(const char *path, File::AccessMode mode) +{ + int flags = 0; + if (mode == ReadAccess) + flags = O_RDONLY; + else if (mode == WriteAccess) + flags = O_CREAT | O_WRONLY | O_TRUNC; +#if defined(WIN32) || defined(__CYGWIN__) + flags |= O_BINARY; +#endif + int fd = ::open(path, flags, 0666); + if (fd == -1) + return NULL; + File *file = new FilePOSIX(fd, mode); + return file; +} + +File *File::create(int fd, File::AccessMode mode) +{ + return new FilePOSIX(fd, mode); +} + +File *File::create(AFvirtualfile *vf, File::AccessMode mode) +{ + return new FileVF(vf, mode); +} + +File::~File() +{ +} + +bool File::canSeek() +{ + return seek(0, File::SeekFromCurrent) != -1; +} + +int FilePOSIX::close() +{ + if (m_fd == -1) + return 0; + + int result = ::close(m_fd); + m_fd = -1; + return result; +} + +ssize_t FilePOSIX::read(void *data, size_t nbytes) +{ + return ::read(m_fd, data, nbytes); +} + +ssize_t FilePOSIX::write(const void *data, size_t nbytes) +{ + return ::write(m_fd, data, nbytes); +} + +off_t FilePOSIX::length() +{ + off_t current = tell(); + if (current == -1) + return -1; + off_t length = seek(0, SeekFromEnd); + if (length == -1) + return -1; + seek(current, SeekFromBeginning); + return length; +} + +off_t FilePOSIX::seek(off_t offset, File::SeekOrigin origin) +{ + int whence; + switch (origin) + { + case SeekFromBeginning: whence = SEEK_SET; break; + case SeekFromCurrent: whence = SEEK_CUR; break; + case SeekFromEnd: whence = SEEK_END; break; + default: assert(false); return -1; + } + return ::lseek(m_fd, offset, whence); +} + +off_t FilePOSIX::tell() +{ + return seek(0, File::SeekFromCurrent); +} + +int FileVF::close() +{ + if (m_vf) + af_virtual_file_destroy(m_vf); + m_vf = 0; + return 0; +} + +ssize_t FileVF::read(void *data, size_t nbytes) +{ + return m_vf->read(m_vf, data, nbytes); +} + +ssize_t FileVF::write(const void *data, size_t nbytes) +{ + return m_vf->write(m_vf, data, nbytes); +} + +off_t FileVF::length() +{ + return m_vf->length(m_vf); +} + +off_t FileVF::seek(off_t offset, SeekOrigin origin) +{ + if (origin == SeekFromEnd) + offset += length(); + return m_vf->seek(m_vf, offset, origin == SeekFromCurrent); +} + +off_t FileVF::tell() +{ + return m_vf->tell(m_vf); +} + +// file: FileHandle.cpp +/* + Audio File Library + Copyright (C) 2010-2012, Michael Pruett + Copyright (C) 2000-2001, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + +#include +#include + + + +static void freeInstParams (AFPVu *values, int fileFormat) +{ + if (!values) + return; + + int parameterCount = _af_units[fileFormat].instrumentParameterCount; + + for (int i=0; itrackCount) == 0) + { + m_tracks = NULL; + return AF_SUCCEED; + } + + m_tracks = new Track[m_trackCount]; + if (!m_tracks) + return AF_FAIL; + + for (int i=0; itracks[i]; + + track->id = trackSetup->id; + track->f = trackSetup->f; + + if (track->copyMarkers(trackSetup) == AF_FAIL) + return AF_FAIL; + + track->hasAESData = trackSetup->aesDataSet; + } + + return AF_SUCCEED; +} + +status _AFfilehandle::copyInstrumentsFromSetup(AFfilesetup setup) +{ + if ((m_instrumentCount = setup->instrumentCount) == 0) + { + m_instruments = NULL; + return AF_SUCCEED; + } + + m_instruments = static_cast(_af_calloc(m_instrumentCount, + sizeof (Instrument))); + if (!m_instruments) + return AF_FAIL; + + for (int i=0; iinstruments[i].id; + + // Copy loops. + if ((m_instruments[i].loopCount = setup->instruments[i].loopCount) == 0) + { + m_instruments[i].loops = NULL; + } + else + { + m_instruments[i].loops = + static_cast(_af_calloc(m_instruments[i].loopCount, + sizeof (Loop))); + if (!m_instruments[i].loops) + return AF_FAIL; + for (int j=0; jid = setup->instruments[i].loops[j].id; + loop->mode = AF_LOOP_MODE_NOLOOP; + loop->count = 0; + loop->trackid = AF_DEFAULT_TRACK; + loop->beginMarker = 2*j + 1; + loop->endMarker = 2*j + 2; + } + } + + int instParamCount; + // Copy instrument parameters. + if ((instParamCount = _af_units[setup->fileFormat].instrumentParameterCount) == 0) + { + m_instruments[i].values = NULL; + } + else + { + m_instruments[i].values = + static_cast(_af_calloc(instParamCount, sizeof (AFPVu))); + if (!m_instruments[i].values) + return AF_FAIL; + for (int j=0; jfileFormat].instrumentParameters[j].defaultValue; + } + } + } + + return AF_SUCCEED; +} + +status _AFfilehandle::copyMiscellaneousFromSetup(AFfilesetup setup) +{ + if ((m_miscellaneousCount = setup->miscellaneousCount) == 0) + { + m_miscellaneous = NULL; + return AF_SUCCEED; + } + + m_miscellaneous = static_cast(_af_calloc(m_miscellaneousCount, + sizeof (Miscellaneous))); + if (!m_miscellaneous) + return AF_FAIL; + + for (int i=0; imiscellaneous[i].id; + m_miscellaneous[i].type = setup->miscellaneous[i].type; + m_miscellaneous[i].size = setup->miscellaneous[i].size; + m_miscellaneous[i].position = 0; + m_miscellaneous[i].buffer = NULL; + } + + return AF_SUCCEED; +} + +template +static bool readValue(File *f, T *value) +{ + return f->read(value, sizeof (*value)) == sizeof (*value); +} + +template +static bool writeValue(File *f, const T *value) +{ + return f->write(value, sizeof (*value)) == sizeof (*value); +} + +template +static T swapValue(T value, int order) +{ + if (order == AF_BYTEORDER_BIGENDIAN) + return bigToHost(value); + else if (order == AF_BYTEORDER_LITTLEENDIAN) + return littleToHost(value); + return value; +} + +template +static bool readSwap(File *f, T *value, int order) +{ + if (!readValue(f, value)) return false; + *value = swapValue(*value, order); + return true; +} + +template +static bool writeSwap(File *f, const T *value, int order) +{ + T t = swapValue(*value, order); + return writeValue(f, &t); +} + +bool _AFfilehandle::readU8(uint8_t *v) { return readValue(m_fh, v); } +bool _AFfilehandle::readS8(int8_t *v) { return readValue(m_fh, v); } + +bool _AFfilehandle::readU16(uint16_t *v) +{ + return readSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::readS16(int16_t *v) +{ + return readSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::readU32(uint32_t *v) +{ + return readSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::readS32(int32_t *v) +{ + return readSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::readU64(uint64_t *v) +{ + return readSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::readS64(int64_t *v) +{ + return readSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::readFloat(float *v) +{ + return readSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::readDouble(double *v) +{ + return readSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::writeU8(const uint8_t *v) { return writeValue(m_fh, v); } +bool _AFfilehandle::writeS8(const int8_t *v) { return writeValue(m_fh, v); } + +bool _AFfilehandle::writeU16(const uint16_t *v) +{ + return writeSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::writeS16(const int16_t *v) +{ + return writeSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::writeU32(const uint32_t *v) +{ + return writeSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::writeS32(const int32_t *v) +{ + return writeSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::writeU64(const uint64_t *v) +{ + return writeSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::writeS64(const int64_t *v) +{ + return writeSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::writeFloat(const float *v) +{ + return writeSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::writeDouble(const double *v) +{ + return writeSwap(m_fh, v, m_formatByteOrder); +} + +bool _AFfilehandle::readTag(Tag *t) +{ + uint32_t v; + if (m_fh->read(&v, sizeof (v)) == sizeof (v)) + { + *t = Tag(v); + return true; + } + return false; +} + +bool _AFfilehandle::writeTag(const Tag *t) +{ + uint32_t v = t->value(); + return m_fh->write(&v, sizeof (v)) == sizeof (v); +} + +// file: Instrument.cpp +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + Instrument.cpp + + Info about instrument parameters: + + Each unit has an array of _InstParamInfo structures, one for + each instrument parameter. Each of these structures describes + the inst parameters. + + id: a 4-byte id as in AIFF file + type: data type AU_PVLIST_* + name: text name + defaultValue: default value, to which it is set when a file with + instruments is first opened for writing. + + Each inst has only an array of values (_AFPVu's). Each value in the + instrument's array is the value of the corresponding index into the + unit's instparaminfo array. + + So for a unit u and an instrument i, u.instparam[N] describes + the parameter whose value is given in i.value[N]. +*/ + + + +#include + +bool InstrumentSetup::allocateLoops(int count) +{ + freeLoops(); + loops = (LoopSetup *) _af_calloc(count, sizeof (LoopSetup)); + if (loops) + { + loopCount = count; + return true; + } + return false; +} + +void InstrumentSetup::freeLoops() +{ + if (loops) + free(loops); + loops = NULL; + loopCount = 0; +} + +/* + Initialize instrument id list for audio file. +*/ +void afInitInstIDs (AFfilesetup setup, const int *instids, int ninsts) +{ + if (!_af_filesetup_ok(setup)) + return; + + if (!_af_unique_ids(instids, ninsts, "instrument", AF_BAD_INSTID)) + return; + + _af_setup_free_instruments(setup); + + setup->instrumentCount = ninsts; + setup->instrumentSet = true; + + setup->instruments = _af_instsetup_new(setup->instrumentCount); + + for (int i=0; i < setup->instrumentCount; i++) + setup->instruments[i].id = instids[i]; +} + +int afGetInstIDs (AFfilehandle file, int *instids) +{ + if (!_af_filehandle_ok(file)) + return -1; + + if (instids) + for (int i=0; i < file->m_instrumentCount; i++) + instids[i] = file->m_instruments[i].id; + + return file->m_instrumentCount; +} + +/* + This routine checks and sets instrument parameters. + npv is number of valid AUpvlist pairs. +*/ +void _af_instparam_set (AFfilehandle file, int instid, AUpvlist pvlist, int npv) +{ + if (!_af_filehandle_ok(file)) + return; + + if (!file->checkCanWrite()) + return; + + Instrument *instrument = file->getInstrument(instid); + if (!instrument) + return; + + if (AUpvgetmaxitems(pvlist) < npv) + npv = AUpvgetmaxitems(pvlist); + + for (int i=0; i < npv; i++) + { + int param; + + AUpvgetparam(pvlist, i, ¶m); + + int j; + if ((j = _af_instparam_index_from_id(file->m_fileFormat, param)) == -1) + /* no parameter with that id; ignore */ + continue; + + if (!file->isInstrumentParameterValid(pvlist, i)) + /* bad parameter value; ignore */ + continue; + + int type = _af_units[file->m_fileFormat].instrumentParameters[j].type; + + switch (type) + { + case AU_PVTYPE_LONG: + AUpvgetval(pvlist, i, &instrument->values[j].l); + break; + case AU_PVTYPE_DOUBLE: + AUpvgetval(pvlist, i, &instrument->values[j].d); + break; + case AU_PVTYPE_PTR: + AUpvgetval(pvlist, i, &instrument->values[j].v); + break; + default: + return; + } + } +} + +void afSetInstParams (AFfilehandle file, int instid, AUpvlist pvlist, int npv) +{ + _af_instparam_set(file, instid, pvlist, npv); +} + +void afSetInstParamLong (AFfilehandle file, int instid, int param, long value) +{ + AUpvlist pvlist = AUpvnew(1); + + AUpvsetparam(pvlist, 0, param); + AUpvsetvaltype(pvlist, 0, AU_PVTYPE_LONG); + AUpvsetval(pvlist, 0, &value); + + _af_instparam_set(file, instid, pvlist, 1); + + AUpvfree(pvlist); +} + +/* + This routine gets instrument parameters. + npv is number of valid AUpvlist pairs +*/ +void _af_instparam_get (AFfilehandle file, int instid, AUpvlist pvlist, int npv, + bool forceLong) +{ + if (!_af_filehandle_ok(file)) + return; + + Instrument *instrument = file->getInstrument(instid); + if (!instrument) + return; + + if (AUpvgetmaxitems(pvlist) < npv) + npv = AUpvgetmaxitems(pvlist); + + for (int i=0; i < npv; i++) + { + int param; + AUpvgetparam(pvlist, i, ¶m); + + int j; + if ((j = _af_instparam_index_from_id(file->m_fileFormat, param)) == -1) + /* no parameter with that id; ignore */ + continue; + + int type = _af_units[file->m_fileFormat].instrumentParameters[j].type; + + /* + forceLong is true when this routine called by + afGetInstParamLong(). + */ + if (forceLong && type != AU_PVTYPE_LONG) + { + _af_error(AF_BAD_INSTPTYPE, "type of instrument parameter %d is not AU_PVTYPE_LONG", param); + continue; + } + + AUpvsetvaltype(pvlist, i, type); + + switch (type) + { + case AU_PVTYPE_LONG: + AUpvsetval(pvlist, i, &instrument->values[j].l); + break; + case AU_PVTYPE_DOUBLE: + AUpvsetval(pvlist, i, &instrument->values[j].d); + break; + case AU_PVTYPE_PTR: + AUpvsetval(pvlist, i, &instrument->values[j].v); + break; + + default: + _af_error(AF_BAD_INSTPTYPE, "invalid instrument parameter type %d", type); + return; + } + } +} + +/* + afGetInstParams -- get a parameter-value array containing + instrument parameters for the specified instrument chunk +*/ +void afGetInstParams (AFfilehandle file, int inst, AUpvlist pvlist, int npv) +{ + _af_instparam_get(file, inst, pvlist, npv, false); +} + +long afGetInstParamLong (AFfilehandle file, int inst, int param) +{ + long val; + AUpvlist pvlist = AUpvnew(1); + + AUpvsetparam(pvlist, 0, param); + AUpvsetvaltype(pvlist, 0, AU_PVTYPE_LONG); + + _af_instparam_get(file, inst, pvlist, 1, true); + + AUpvgetval(pvlist, 0, &val); + AUpvfree(pvlist); + + return(val); +} + +/* + Search _af_units[fileFormat].instrumentParameters for the instrument + parameter with the specified id. + + Report an error and return -1 if no such instrument parameter + exists. +*/ + +int _af_instparam_index_from_id (int filefmt, int id) +{ + int i; + + for (i = 0; i < _af_units[filefmt].instrumentParameterCount; i++) + if (_af_units[filefmt].instrumentParameters[i].id == id) + break; + + if (i == _af_units[filefmt].instrumentParameterCount) + { + _af_error(AF_BAD_INSTPID, "invalid instrument parameter id %d", + id); + return -1; + } + + return i; +} + +Loop *Instrument::getLoop(int loopID) +{ + for (int i=0; i + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + Loop.cpp + + All routines that operate on loops. +*/ + + + +void afInitLoopIDs (AFfilesetup setup, int instid, const int *loopids, int nloops) +{ + if (!_af_filesetup_ok(setup)) + return; + + if (!_af_unique_ids(loopids, nloops, "loop", AF_BAD_LOOPID)) + return; + + InstrumentSetup *instrument = setup->getInstrument(instid); + if (!instrument) + return; + + instrument->freeLoops(); + if (!instrument->allocateLoops(nloops)) + return; + + for (int i=0; i < nloops; i++) + instrument->loops[i].id = loopids[i]; +} + +int afGetLoopIDs (AFfilehandle file, int instid, int *loopids) +{ + if (!_af_filehandle_ok(file)) + return AF_FAIL; + + Instrument *instrument = file->getInstrument(instid); + if (!instrument) + return AF_FAIL; + + if (loopids) + for (int i=0; i < instrument->loopCount; i++) + loopids[i] = instrument->loops[i].id; + + return instrument->loopCount; +} + +/* + getLoop returns pointer to requested loop if it exists, and if + mustWrite is true, only if handle is writable. +*/ + +static Loop *getLoop (AFfilehandle handle, int instid, int loopid, + bool mustWrite) +{ + if (!_af_filehandle_ok(handle)) + return NULL; + + if (mustWrite && !handle->checkCanWrite()) + return NULL; + + Instrument *instrument = handle->getInstrument(instid); + if (!instrument) + return NULL; + + return instrument->getLoop(loopid); +} + +/* + Set loop mode (as in AF_LOOP_MODE_...). +*/ +void afSetLoopMode (AFfilehandle file, int instid, int loopid, int mode) +{ + Loop *loop = getLoop(file, instid, loopid, true); + + if (!loop) + return; + + if (mode != AF_LOOP_MODE_NOLOOP && + mode != AF_LOOP_MODE_FORW && + mode != AF_LOOP_MODE_FORWBAKW) + { + _af_error(AF_BAD_LOOPMODE, "unrecognized loop mode %d", mode); + return; + } + + loop->mode = mode; +} + +/* + Get loop mode (as in AF_LOOP_MODE_...). +*/ +int afGetLoopMode (AFfilehandle file, int instid, int loopid) +{ + Loop *loop = getLoop(file, instid, loopid, false); + + if (!loop) + return -1; + + return loop->mode; +} + +/* + Set loop count. +*/ +int afSetLoopCount (AFfilehandle file, int instid, int loopid, int count) +{ + Loop *loop = getLoop(file, instid, loopid, true); + + if (!loop) + return AF_FAIL; + + if (count < 1) + { + _af_error(AF_BAD_LOOPCOUNT, "invalid loop count: %d", count); + return AF_FAIL; + } + + loop->count = count; + return AF_SUCCEED; +} + +/* + Get loop count. +*/ +int afGetLoopCount(AFfilehandle file, int instid, int loopid) +{ + Loop *loop = getLoop(file, instid, loopid, false); + + if (!loop) + return -1; + + return loop->count; +} + +/* + Set loop start marker id in the file structure +*/ +void afSetLoopStart(AFfilehandle file, int instid, int loopid, int markid) +{ + Loop *loop = getLoop(file, instid, loopid, true); + + if (!loop) + return; + + loop->beginMarker = markid; +} + +/* + Get loop start marker id. +*/ +int afGetLoopStart (AFfilehandle file, int instid, int loopid) +{ + Loop *loop = getLoop(file, instid, loopid, false); + + if (!loop) + return -1; + + return loop->beginMarker; +} + +/* + Set loop start frame in the file structure. +*/ +int afSetLoopStartFrame (AFfilehandle file, int instid, int loopid, AFframecount startFrame) +{ + Loop *loop = getLoop(file, instid, loopid, true); + + if (!loop) + return -1; + + if (startFrame < 0) + { + _af_error(AF_BAD_FRAME, "loop start frame must not be negative"); + return AF_FAIL; + } + + int trackid = loop->trackid; + int beginMarker = loop->beginMarker; + + afSetMarkPosition(file, trackid, beginMarker, startFrame); + return AF_SUCCEED; +} + +/* + Get loop start frame. +*/ +AFframecount afGetLoopStartFrame (AFfilehandle file, int instid, int loopid) +{ + Loop *loop = getLoop(file, instid, loopid, false); + if (!loop) + return -1; + + int trackid = loop->trackid; + int beginMarker = loop->beginMarker; + + return afGetMarkPosition(file, trackid, beginMarker); +} + +/* + Set loop track id. +*/ +void afSetLoopTrack (AFfilehandle file, int instid, int loopid, int track) +{ + Loop *loop = getLoop(file, instid, loopid, true); + + if (!loop) return; + + loop->trackid = track; +} + +/* + Get loop track. +*/ +int afGetLoopTrack (AFfilehandle file, int instid, int loopid) +{ + Loop *loop = getLoop(file, instid, loopid, false); + + if (!loop) + return -1; + + return loop->trackid; +} + +/* + Set loop end frame marker id. +*/ +void afSetLoopEnd (AFfilehandle file, int instid, int loopid, int markid) +{ + Loop *loop = getLoop(file, instid, loopid, true); + + if (!loop) + return; + + loop->endMarker = markid; +} + +/* + Get loop end frame marker id. +*/ +int afGetLoopEnd (AFfilehandle file, int instid, int loopid) +{ + Loop *loop = getLoop(file, instid, loopid, false); + + if (!loop) + return -1; + + return loop->endMarker; +} + +/* + Set loop end frame. +*/ +int afSetLoopEndFrame (AFfilehandle file, int instid, int loopid, AFframecount endFrame) +{ + Loop *loop = getLoop(file, instid, loopid, true); + if (!loop) + return -1; + + if (endFrame < 0) + { + _af_error(AF_BAD_FRAME, "loop end frame must not be negative"); + return AF_FAIL; + } + + int trackid = loop->trackid; + int endMarker = loop->endMarker; + + afSetMarkPosition(file, trackid, endMarker, endFrame); + return AF_SUCCEED; +} + +/* + Get loop end frame. +*/ + +AFframecount afGetLoopEndFrame (AFfilehandle file, int instid, int loopid) +{ + Loop *loop = getLoop(file, instid, loopid, false); + + if (!loop) + return -1; + + int trackid = loop->trackid; + int endMarker = loop->endMarker; + + return afGetMarkPosition(file, trackid, endMarker); +} + +// file: Marker.cpp +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + Marker.cpp + + This file contains routines for dealing with loop markers. +*/ + + +#include +#include +#include + + +void afInitMarkIDs(AFfilesetup setup, int trackid, const int *markids, int nmarks) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + if (track->markers != NULL) + { + for (int i=0; imarkerCount; i++) + { + if (track->markers[i].name != NULL) + free(track->markers[i].name); + if (track->markers[i].comment != NULL) + free(track->markers[i].comment); + } + free(track->markers); + } + + track->markers = (MarkerSetup *) _af_calloc(nmarks, sizeof (struct MarkerSetup)); + track->markerCount = nmarks; + + for (int i=0; imarkers[i].id = markids[i]; + track->markers[i].name = _af_strdup(""); + track->markers[i].comment = _af_strdup(""); + } + + track->markersSet = true; +} + +void afInitMarkName(AFfilesetup setup, int trackid, int markid, + const char *namestr) +{ + int markno; + int length; + + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + for (markno=0; marknomarkerCount; markno++) + { + if (track->markers[markno].id == markid) + break; + } + + if (markno == track->markerCount) + { + _af_error(AF_BAD_MARKID, "no marker id %d for file setup", markid); + return; + } + + length = strlen(namestr); + if (length > 255) + { + _af_error(AF_BAD_STRLEN, + "warning: marker name truncated to 255 characters"); + length = 255; + } + + if (track->markers[markno].name) + free(track->markers[markno].name); + if ((track->markers[markno].name = (char *) _af_malloc(length+1)) == NULL) + return; + strncpy(track->markers[markno].name, namestr, length); + /* + The null terminator is not set by strncpy if + strlen(namestr) > length. Set it here. + */ + track->markers[markno].name[length] = '\0'; +} + +void afInitMarkComment(AFfilesetup setup, int trackid, int markid, + const char *commstr) +{ + int markno; + int length; + + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + for (markno=0; marknomarkerCount; markno++) + { + if (track->markers[markno].id == markid) + break; + } + + if (markno == track->markerCount) + { + _af_error(AF_BAD_MARKID, "no marker id %d for file setup", markid); + return; + } + + length = strlen(commstr); + + if (track->markers[markno].comment) + free(track->markers[markno].comment); + if ((track->markers[markno].comment = (char *) _af_malloc(length+1)) == NULL) + return; + strcpy(track->markers[markno].comment, commstr); +} + +char *afGetMarkName (AFfilehandle file, int trackid, int markid) +{ + if (!_af_filehandle_ok(file)) + return NULL; + + Track *track = file->getTrack(trackid); + if (!track) + return NULL; + + Marker *marker = track->getMarker(markid); + if (!marker) + return NULL; + + return marker->name; +} + +char *afGetMarkComment (AFfilehandle file, int trackid, int markid) +{ + if (!_af_filehandle_ok(file)) + return NULL; + + Track *track = file->getTrack(trackid); + if (!track) + return NULL; + + Marker *marker = track->getMarker(markid); + if (!marker) + return NULL; + + return marker->comment; +} + +void afSetMarkPosition (AFfilehandle file, int trackid, int markid, + AFframecount position) +{ + if (!_af_filehandle_ok(file)) + return; + + if (!file->checkCanWrite()) + return; + + Track *track = file->getTrack(trackid); + if (!track) + return; + + Marker *marker = track->getMarker(markid); + if (!marker) + return; + + if (position < 0) + { + _af_error(AF_BAD_MARKPOS, "invalid marker position %jd", + static_cast(position)); + position = 0; + } + + marker->position = position; +} + +int afGetMarkIDs (AFfilehandle file, int trackid, int markids[]) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + if (markids != NULL) + { + for (int i=0; imarkerCount; i++) + { + markids[i] = track->markers[i].id; + } + } + + return track->markerCount; +} + +AFframecount afGetMarkPosition (AFfilehandle file, int trackid, int markid) +{ + if (!_af_filehandle_ok(file)) + return 0L; + + Track *track = file->getTrack(trackid); + if (!track) + return 0L; + + Marker *marker = track->getMarker(markid); + if (!marker) + return 0L; + + return marker->position; +} + +Marker *_af_marker_new (int count) +{ + Marker *markers = (Marker *) _af_calloc(count, sizeof (Marker)); + if (markers == NULL) + return NULL; + + return markers; +} + +// file: Miscellaneous.cpp +/* + Audio File Library + Copyright (C) 1998, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + Miscellaneous.cpp + + This file contains routines for dealing with the Audio File + Library's internal miscellaneous data types. +*/ + + +#include +#include +#include +#include + + +void afInitMiscIDs (AFfilesetup setup, const int *ids, int nids) +{ + if (!_af_filesetup_ok(setup)) + return; + + if (setup->miscellaneous != NULL) + { + free(setup->miscellaneous); + } + + setup->miscellaneousCount = nids; + + if (nids == 0) + setup->miscellaneous = NULL; + else + { + setup->miscellaneous = (MiscellaneousSetup *) _af_calloc(nids, + sizeof (MiscellaneousSetup)); + + if (setup->miscellaneous == NULL) + return; + + for (int i=0; imiscellaneous[i].id = ids[i]; + setup->miscellaneous[i].type = 0; + setup->miscellaneous[i].size = 0; + } + } + + setup->miscellaneousSet = true; +} + +int afGetMiscIDs (AFfilehandle file, int *ids) +{ + if (!_af_filehandle_ok(file)) + return -1; + + if (ids != NULL) + { + for (int i=0; im_miscellaneousCount; i++) + { + ids[i] = file->m_miscellaneous[i].id; + } + } + + return file->m_miscellaneousCount; +} + +void afInitMiscType (AFfilesetup setup, int miscellaneousid, int type) +{ + if (!_af_filesetup_ok(setup)) + return; + + MiscellaneousSetup *miscellaneous = setup->getMiscellaneous(miscellaneousid); + if (miscellaneous) + miscellaneous->type = type; +} + +int afGetMiscType (AFfilehandle file, int miscellaneousid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); + if (miscellaneous) + return miscellaneous->type; + return -1; +} + +void afInitMiscSize (AFfilesetup setup, int miscellaneousid, int size) +{ + if (!_af_filesetup_ok(setup)) + return; + + MiscellaneousSetup *miscellaneous = setup->getMiscellaneous(miscellaneousid); + if (miscellaneous) + miscellaneous->size = size; +} + +int afGetMiscSize (AFfilehandle file, int miscellaneousid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); + if (miscellaneous) + return miscellaneous->size; + return -1; +} + +int afWriteMisc (AFfilehandle file, int miscellaneousid, const void *buf, int bytes) +{ + if (!_af_filehandle_ok(file)) + return -1; + + if (!file->checkCanWrite()) + return -1; + + Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); + if (!miscellaneous) + return -1; + + if (bytes <= 0) + { + _af_error(AF_BAD_MISCSIZE, "invalid size (%d) for miscellaneous chunk", bytes); + return -1; + } + + if (miscellaneous->buffer == NULL && miscellaneous->size != 0) + { + miscellaneous->buffer = _af_malloc(miscellaneous->size); + if (miscellaneous->buffer == NULL) + return -1; + memset(miscellaneous->buffer, 0, miscellaneous->size); + } + + int localsize = std::min(bytes, + miscellaneous->size - miscellaneous->position); + memcpy((char *) miscellaneous->buffer + miscellaneous->position, + buf, localsize); + miscellaneous->position += localsize; + return localsize; +} + +int afReadMisc (AFfilehandle file, int miscellaneousid, void *buf, int bytes) +{ + if (!_af_filehandle_ok(file)) + return -1; + + if (!file->checkCanRead()) + return -1; + + Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); + if (!miscellaneous) + return -1; + + if (bytes <= 0) + { + _af_error(AF_BAD_MISCSIZE, "invalid size (%d) for miscellaneous chunk", bytes); + return -1; + } + + int localsize = std::min(bytes, + miscellaneous->size - miscellaneous->position); + memcpy(buf, (char *) miscellaneous->buffer + miscellaneous->position, + localsize); + miscellaneous->position += localsize; + return localsize; +} + +int afSeekMisc (AFfilehandle file, int miscellaneousid, int offset) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Miscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid); + if (!miscellaneous) + return -1; + + if (offset >= miscellaneous->size) + { + _af_error(AF_BAD_MISCSEEK, + "offset %d too big for miscellaneous chunk %d " + "(%d data bytes)", + offset, miscellaneousid, miscellaneous->size); + return -1; + } + + miscellaneous->position = offset; + + return offset; +} + +// file: PacketTable.cpp +/* + Audio File Library + Copyright (C) 2013 Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + +PacketTable::PacketTable(int64_t numValidFrames, int32_t primingFrames, + int32_t remainderFrames) : + m_numValidFrames(numValidFrames), + m_primingFrames(primingFrames), + m_remainderFrames(remainderFrames) +{ +} + +PacketTable::PacketTable() +{ + m_numValidFrames = 0; + m_primingFrames = 0; + m_remainderFrames = 0; +} + +PacketTable::~PacketTable() +{ +} + +void PacketTable::setNumValidFrames(int64_t numValidFrames) +{ + m_numValidFrames = numValidFrames; +} + +void PacketTable::setPrimingFrames(int32_t primingFrames) +{ + m_primingFrames = primingFrames; +} + +void PacketTable::setRemainderFrames(int32_t remainderFrames) +{ + m_remainderFrames = remainderFrames; +} + +void PacketTable::append(size_t bytesPerPacket) +{ + m_bytesPerPacket.push_back(bytesPerPacket); +} + +AFfileoffset PacketTable::startOfPacket(size_t packet) const +{ + AFfileoffset offset = 0; + for (size_t i=0; igetTrack(); + if (!trackSetup) + return AF_FAIL; + + Track *track = getTrack(); + + /* Set the track's data offset. */ + if (trackSetup->dataOffsetSet) + track->fpos_first_frame = trackSetup->dataOffset; + else + track->fpos_first_frame = 0; + + /* Set the track's frame count. */ + if (trackSetup->frameCountSet) + { + track->totalfframes = trackSetup->frameCount; + } + else + { + AFfileoffset filesize = m_fh->length(); + if (filesize == -1) + track->totalfframes = -1; + else + { + /* Ensure that the data offset is valid. */ + if (track->fpos_first_frame > filesize) + { + _af_error(AF_BAD_FILESETUP, "data offset is larger than file size"); + return AF_FAIL; + } + + filesize -= track->fpos_first_frame; + track->totalfframes = filesize / (int) _af_format_frame_size(&track->f, false); + } + track->data_size = filesize; + } + + return AF_SUCCEED; +} + +status RawFile::writeInit(AFfilesetup setup) +{ + if (initFromSetup(setup) == AF_FAIL) + return AF_FAIL; + + TrackSetup *trackSetup = setup->getTrack(); + if (!trackSetup) + return AF_FAIL; + + Track *track = getTrack(); + + if (trackSetup->dataOffsetSet) + track->fpos_first_frame = trackSetup->dataOffset; + else + track->fpos_first_frame = 0; + + return AF_SUCCEED; +} + +status RawFile::update() +{ + return AF_SUCCEED; +} + +AFfilesetup RawFile::completeSetup(AFfilesetup setup) +{ + AFfilesetup newSetup; + + if (setup->trackSet && setup->trackCount != 1) + { + _af_error(AF_BAD_FILESETUP, "raw file must have exactly one track"); + return AF_NULL_FILESETUP; + } + + TrackSetup *track = setup->getTrack(); + if (!track) + { + _af_error(AF_BAD_FILESETUP, "could not access track in file setup"); + return AF_NULL_FILESETUP; + } + + if (track->aesDataSet) + { + _af_error(AF_BAD_FILESETUP, "raw file cannot have AES data"); + return AF_NULL_FILESETUP; + } + + if (track->markersSet && track->markerCount != 0) + { + _af_error(AF_BAD_NUMMARKS, "raw file cannot have markers"); + return AF_NULL_FILESETUP; + } + + if (setup->instrumentSet && setup->instrumentCount != 0) + { + _af_error(AF_BAD_NUMINSTS, "raw file cannot have instruments"); + return AF_NULL_FILESETUP; + } + + if (setup->miscellaneousSet && setup->miscellaneousCount != 0) + { + _af_error(AF_BAD_NUMMISC, "raw file cannot have miscellaneous data"); + return AF_NULL_FILESETUP; + } + + newSetup = (_AFfilesetup *) _af_malloc(sizeof (_AFfilesetup)); + *newSetup = rawDefaultFileSetup; + + newSetup->tracks = (TrackSetup *) _af_malloc(sizeof (TrackSetup)); + newSetup->tracks[0] = setup->tracks[0]; + newSetup->tracks[0].f.compressionParams = NULL; + + newSetup->tracks[0].markerCount = 0; + newSetup->tracks[0].markers = NULL; + + return newSetup; +} + +// file: Setup.cpp +/* + Audio File Library + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + Setup.cpp +*/ + + +#include +#include + + +static const _AFfilesetup _af_default_file_setup = +{ + _AF_VALID_FILESETUP, /* valid */ +#if WORDS_BIGENDIAN + AF_FILE_AIFFC, /* file format */ +#else + AF_FILE_WAVE, /* file format */ +#endif + false, /* trackSet */ + false, /* instrumentSet */ + false, /* miscellaneousSet */ + 1, /* trackCount */ + NULL, /* tracks */ + 1, /* instrumentCount */ + NULL, /* instruments */ + 0, /* miscellaneousCount */ + NULL /* miscellaneous */ +}; + +static const InstrumentSetup _af_default_instrumentsetup = +{ + 0, /* id */ + 2, /* loopCount */ + NULL, /* loops */ + false /* loopSet */ +}; + +static const TrackSetup _af_default_tracksetup = +{ + 0, + { + 44100.0, + AF_SAMPFMT_TWOSCOMP, + 16, + _AF_BYTEORDER_NATIVE, + { SLOPE_INT16, 0, MIN_INT16, MAX_INT16 }, + 2, + AF_COMPRESSION_NONE, + NULL + }, + false, /* rateSet */ + false, /* sampleFormatSet */ + false, /* sampleWidthSet */ + false, /* byteOrderSet */ + false, /* channelCountSet */ + false, /* compressionSet */ + false, /* aesDataSet */ + false, /* markersSet */ + false, /* dataOffsetSet */ + false, /* frameCountSet */ + + 4, /* markerCount */ + NULL, /* markers */ + 0, /* dataOffset */ + 0 /* frameCount */ +}; + +TrackSetup *_af_tracksetup_new (int trackCount) +{ + TrackSetup *tracks; + + if (trackCount == 0) + return NULL; + + tracks = (TrackSetup *) _af_calloc(trackCount, sizeof (TrackSetup)); + if (tracks == NULL) + return NULL; + + for (int i=0; itracks = _af_tracksetup_new(setup->trackCount); + + setup->instruments = _af_instsetup_new(setup->instrumentCount); + + if (setup->miscellaneousCount == 0) + setup->miscellaneous = NULL; + else + { + setup->miscellaneous = (MiscellaneousSetup *) _af_calloc(setup->miscellaneousCount, + sizeof (MiscellaneousSetup)); + for (int i=0; imiscellaneousCount; i++) + { + setup->miscellaneous[i].id = i+1; + setup->miscellaneous[i].type = 0; + setup->miscellaneous[i].size = 0; + } + } + + return setup; +} + +/* + Free the specified track's markers and their subfields. +*/ +void _af_setup_free_markers (AFfilesetup setup, int trackno) +{ + if (setup->tracks[trackno].markerCount != 0) + { + for (int i=0; itracks[trackno].markerCount; i++) + { + free(setup->tracks[trackno].markers[i].name); + free(setup->tracks[trackno].markers[i].comment); + } + + free(setup->tracks[trackno].markers); + } + + setup->tracks[trackno].markers = NULL; + setup->tracks[trackno].markerCount = 0; +} + +/* + Free the specified setup's tracks and their subfields. +*/ +void _af_setup_free_tracks (AFfilesetup setup) +{ + if (setup->tracks) + { + for (int i=0; itrackCount; i++) + { + _af_setup_free_markers(setup, i); + } + + free(setup->tracks); + } + + setup->tracks = NULL; + setup->trackCount = 0; +} + +/* + Free the specified setup's instruments and their subfields. +*/ +void _af_setup_free_instruments (AFfilesetup setup) +{ + if (setup->instruments) + { + for (int i=0; i < setup->instrumentCount; i++) + setup->instruments[i].freeLoops(); + + free(setup->instruments); + } + + setup->instruments = NULL; + setup->instrumentCount = 0; +} + +void afFreeFileSetup (AFfilesetup setup) +{ + if (!_af_filesetup_ok(setup)) + return; + + _af_setup_free_tracks(setup); + + _af_setup_free_instruments(setup); + + if (setup->miscellaneousCount) + { + free(setup->miscellaneous); + setup->miscellaneous = NULL; + setup->miscellaneousCount = 0; + } + + memset(setup, 0, sizeof (_AFfilesetup)); + free(setup); +} + +void afInitFileFormat (AFfilesetup setup, int filefmt) +{ + if (!_af_filesetup_ok(setup)) + return; + + if (filefmt < 0 || filefmt >= _AF_NUM_UNITS) + { + _af_error(AF_BAD_FILEFMT, "unrecognized file format %d", + filefmt); + return; + } + + if (!_af_units[filefmt].implemented) + { + _af_error(AF_BAD_NOT_IMPLEMENTED, + "%s format not currently supported", + _af_units[filefmt].name); + return; + } + + setup->fileFormat = filefmt; +} + +void afInitChannels (AFfilesetup setup, int trackid, int channels) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + if (channels < 1) + { + _af_error(AF_BAD_CHANNELS, "invalid number of channels %d", + channels); + return; + } + + track->f.channelCount = channels; + track->channelCountSet = true; +} + +void afInitSampleFormat (AFfilesetup setup, int trackid, int sampfmt, int sampwidth) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + _af_set_sample_format(&track->f, sampfmt, sampwidth); + + track->sampleFormatSet = true; + track->sampleWidthSet = true; +} + +void afInitByteOrder (AFfilesetup setup, int trackid, int byteorder) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + if (byteorder != AF_BYTEORDER_BIGENDIAN && + byteorder != AF_BYTEORDER_LITTLEENDIAN) + { + _af_error(AF_BAD_BYTEORDER, "invalid byte order %d", byteorder); + return; + } + + track->f.byteOrder = byteorder; + track->byteOrderSet = true; +} + +void afInitRate (AFfilesetup setup, int trackid, double rate) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + if (rate <= 0.0) + { + _af_error(AF_BAD_RATE, "invalid sample rate %.30g", rate); + return; + } + + track->f.sampleRate = rate; + track->rateSet = true; +} + +/* + track data: data offset within the file (initialized for raw reading only) +*/ +void afInitDataOffset (AFfilesetup setup, int trackid, AFfileoffset offset) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + if (offset < 0) + { + _af_error(AF_BAD_DATAOFFSET, "invalid data offset %jd", + static_cast(offset)); + return; + } + + track->dataOffset = offset; + track->dataOffsetSet = true; +} + +/* + track data: data offset within the file (initialized for raw reading only) +*/ +void afInitFrameCount (AFfilesetup setup, int trackid, AFfileoffset count) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + if (count < 0) + { + _af_error(AF_BAD_FRAMECNT, "invalid frame count %jd", + static_cast(count)); + return; + } + + track->frameCount = count; + track->frameCountSet = true; +} + +#define alloccopy(type, n, var, copyfrom) \ +{ \ + if (n == 0) \ + var = NULL; \ + else \ + { \ + if ((var = (type *) _af_calloc(n, sizeof (type))) == NULL) \ + goto fail; \ + memcpy((var), (copyfrom), (n) * sizeof (type)); \ + } \ +} + +AFfilesetup _af_filesetup_copy (const _AFfilesetup *setup, + const _AFfilesetup *defaultSetup, bool copyMarks) +{ + AFfilesetup newsetup; + int instrumentCount, miscellaneousCount, trackCount; + + newsetup = (_AFfilesetup *) _af_malloc(sizeof (_AFfilesetup)); + if (newsetup == AF_NULL_FILESETUP) + return AF_NULL_FILESETUP; + + *newsetup = *defaultSetup; + + newsetup->tracks = NULL; + newsetup->instruments = NULL; + newsetup->miscellaneous = NULL; + + /* Copy tracks. */ + trackCount = setup->trackSet ? setup->trackCount : + newsetup->trackSet ? newsetup->trackCount : 0; + alloccopy(TrackSetup, trackCount, newsetup->tracks, setup->tracks); + newsetup->trackCount = trackCount; + + /* Copy instruments. */ + instrumentCount = setup->instrumentSet ? setup->instrumentCount : + newsetup->instrumentSet ? newsetup->instrumentCount : 0; + alloccopy(InstrumentSetup, instrumentCount, newsetup->instruments, setup->instruments); + newsetup->instrumentCount = instrumentCount; + + /* Copy miscellaneous information. */ + miscellaneousCount = setup->miscellaneousSet ? setup->miscellaneousCount : + newsetup->miscellaneousSet ? newsetup->miscellaneousCount : 0; + alloccopy(MiscellaneousSetup, miscellaneousCount, newsetup->miscellaneous, setup->miscellaneous); + newsetup->miscellaneousCount = miscellaneousCount; + + for (int i=0; itrackCount; i++) + { + TrackSetup *track = &newsetup->tracks[i]; + + /* XXXmpruett set compression information */ + + if (!setup->tracks[i].markersSet && !copyMarks) + { + track->markers = NULL; + track->markerCount = 0; + continue; + } + + alloccopy(MarkerSetup, setup->tracks[i].markerCount, + track->markers, setup->tracks[i].markers); + track->markerCount = setup->tracks[i].markerCount; + + for (int j=0; jtracks[i].markerCount; j++) + { + track->markers[j].name = + _af_strdup(setup->tracks[i].markers[j].name); + if (track->markers[j].name == NULL) + goto fail; + + track->markers[j].comment = + _af_strdup(setup->tracks[i].markers[j].comment); + if (track->markers[j].comment == NULL) + goto fail; + } + } + + for (int i=0; iinstrumentCount; i++) + { + InstrumentSetup *instrument = &newsetup->instruments[i]; + alloccopy(LoopSetup, setup->instruments[i].loopCount, + instrument->loops, setup->instruments[i].loops); + } + + return newsetup; + + fail: + if (newsetup->miscellaneous) + free(newsetup->miscellaneous); + if (newsetup->instruments) + free(newsetup->instruments); + if (newsetup->tracks) + free(newsetup->tracks); + if (newsetup) + free(newsetup); + + return AF_NULL_FILESETUP; +} + +TrackSetup *_AFfilesetup::getTrack(int trackID) +{ + for (int i=0; i + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + track.c + + This file contains functions for dealing with tracks within an + audio file. +*/ + + +#include +#include +#include +#include + + +void afInitTrackIDs (AFfilesetup file, const int *trackids, int trackCount) +{ + assert(file); + assert(trackids); + assert(trackCount == 1); + assert(trackids[0] == AF_DEFAULT_TRACK); +} + +int afGetTrackIDs (AFfilehandle file, int *trackids) +{ + assert(file); + + if (trackids != NULL) + trackids[0] = AF_DEFAULT_TRACK; + + return 1; +} + +Track::Track() +{ + id = AF_DEFAULT_TRACK; + + f.compressionParams = NULL; + v.compressionParams = NULL; + + channelMatrix = NULL; + + markerCount = 0; + markers = NULL; + + hasAESData = false; + memset(aesData, 0, 24); + + totalfframes = 0; + nextfframe = 0; + frames2ignore = 0; + fpos_first_frame = 0; + fpos_next_frame = 0; + fpos_after_data = 0; + totalvframes = 0; + nextvframe = 0; + data_size = 0; +} + +Track::~Track() +{ + if (f.compressionParams) + { + AUpvfree(f.compressionParams); + f.compressionParams = NULL; + } + + if (v.compressionParams) + { + AUpvfree(v.compressionParams); + v.compressionParams = NULL; + } + + free(channelMatrix); + channelMatrix = NULL; + + if (markers) + { + for (int j=0; jmarkerCount) == 0) + { + markers = NULL; + return AF_SUCCEED; + } + + markers = _af_marker_new(markerCount); + if (!markers) + return AF_FAIL; + + for (int i=0; imarkers[i].id; + markers[i].name = _af_strdup(setup->markers[i].name); + if (!markers[i].name) + return AF_FAIL; + + markers[i].comment = _af_strdup(setup->markers[i].comment); + if (!markers[i].comment) + return AF_FAIL; + markers[i].position = 0; + } + + return AF_SUCCEED; +} + +void Track::computeTotalFileFrames() +{ + if (f.bytesPerPacket && f.framesPerPacket) + totalfframes = (data_size / f.bytesPerPacket) * f.framesPerPacket; +} + +// file: UUID.cpp +/* + Copyright (C) 2011, Michael Pruett. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include +#include + +bool UUID::operator==(const UUID &u) const +{ + return !memcmp(data, u.data, 16); +} + +bool UUID::operator!=(const UUID &u) const +{ + return memcmp(data, u.data, 16) != 0; +} + +std::string UUID::name() const +{ + char s[37]; + uint32_t u1 = + (data[0] << 24) | + (data[1] << 16) | + (data[2] << 8) | + data[3]; + uint16_t u2 = + (data[4] << 8) | + data[5]; + uint16_t u3 = + (data[6] << 8) | + data[7]; + uint16_t u4 = + (data[8] << 8) | + data[9]; + snprintf(s, 37, "%08x-%04x-%04x-%04x-%02x%02x%02x%02x%02x%02x", + u1, u2, u3, u4, + data[10], data[11], data[12], data[13], data[14], data[15]); + return std::string(s); +} + +// file: WAVE.cpp +/* + Audio File Library + Copyright (C) 1998-2000, 2003-2004, 2010-2013, Michael Pruett + Copyright (C) 2000-2002, Silicon Graphics, Inc. + Copyright (C) 2002-2003, Davy Durham + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + WAVE.cpp + + This file contains code for reading and writing RIFF WAVE format + sound files. +*/ + + +#include +#include +#include +#include +#include + + +/* These constants are from RFC 2361. */ +enum +{ + WAVE_FORMAT_UNKNOWN = 0x0000, /* Microsoft Unknown Wave Format */ + WAVE_FORMAT_PCM = 0x0001, /* Microsoft PCM Format */ + WAVE_FORMAT_ADPCM = 0x0002, /* Microsoft ADPCM Format */ + WAVE_FORMAT_IEEE_FLOAT = 0x0003, /* IEEE Float */ + WAVE_FORMAT_VSELP = 0x0004, /* Compaq Computer's VSELP */ + WAVE_FORMAT_IBM_CVSD = 0x0005, /* IBM CVSD */ + WAVE_FORMAT_ALAW = 0x0006, /* Microsoft ALAW */ + WAVE_FORMAT_MULAW = 0x0007, /* Microsoft MULAW */ + WAVE_FORMAT_OKI_ADPCM = 0x0010, /* OKI ADPCM */ + WAVE_FORMAT_DVI_ADPCM = 0x0011, /* Intel's DVI ADPCM */ + WAVE_FORMAT_MEDIASPACE_ADPCM = 0x0012, /* Videologic's MediaSpace ADPCM */ + WAVE_FORMAT_SIERRA_ADPCM = 0x0013, /* Sierra ADPCM */ + WAVE_FORMAT_G723_ADPCM = 0x0014, /* G.723 ADPCM */ + WAVE_FORMAT_DIGISTD = 0x0015, /* DSP Solutions' DIGISTD */ + WAVE_FORMAT_DIGIFIX = 0x0016, /* DSP Solutions' DIGIFIX */ + WAVE_FORMAT_DIALOGIC_OKI_ADPCM = 0x0017, /* Dialogic OKI ADPCM */ + WAVE_FORMAT_MEDIAVISION_ADPCM = 0x0018, /* MediaVision ADPCM */ + WAVE_FORMAT_CU_CODEC = 0x0019, /* HP CU */ + WAVE_FORMAT_YAMAHA_ADPCM = 0x0020, /* Yamaha ADPCM */ + WAVE_FORMAT_SONARC = 0x0021, /* Speech Compression's Sonarc */ + WAVE_FORMAT_DSP_TRUESPEECH = 0x0022, /* DSP Group's True Speech */ + WAVE_FORMAT_ECHOSC1 = 0x0023, /* Echo Speech's EchoSC1 */ + WAVE_FORMAT_AUDIOFILE_AF36 = 0x0024, /* Audiofile AF36 */ + WAVE_FORMAT_APTX = 0x0025, /* APTX */ + WAVE_FORMAT_DOLBY_AC2 = 0x0030, /* Dolby AC2 */ + WAVE_FORMAT_GSM610 = 0x0031, /* GSM610 */ + WAVE_FORMAT_MSNAUDIO = 0x0032, /* MSNAudio */ + WAVE_FORMAT_ANTEX_ADPCME = 0x0033, /* Antex ADPCME */ + + WAVE_FORMAT_MPEG = 0x0050, /* MPEG */ + WAVE_FORMAT_MPEGLAYER3 = 0x0055, /* MPEG layer 3 */ + WAVE_FORMAT_LUCENT_G723 = 0x0059, /* Lucent G.723 */ + WAVE_FORMAT_G726_ADPCM = 0x0064, /* G.726 ADPCM */ + WAVE_FORMAT_G722_ADPCM = 0x0065, /* G.722 ADPCM */ + + IBM_FORMAT_MULAW = 0x0101, + IBM_FORMAT_ALAW = 0x0102, + IBM_FORMAT_ADPCM = 0x0103, + + WAVE_FORMAT_CREATIVE_ADPCM = 0x0200, + + WAVE_FORMAT_EXTENSIBLE = 0xfffe +}; + +const int _af_wave_compression_types[_AF_WAVE_NUM_COMPTYPES] = +{ + AF_COMPRESSION_G711_ULAW, + AF_COMPRESSION_G711_ALAW, + AF_COMPRESSION_IMA, + AF_COMPRESSION_MS_ADPCM +}; + +const InstParamInfo _af_wave_inst_params[_AF_WAVE_NUM_INSTPARAMS] = +{ + { AF_INST_MIDI_BASENOTE, AU_PVTYPE_LONG, "MIDI base note", {60} }, + { AF_INST_NUMCENTS_DETUNE, AU_PVTYPE_LONG, "Detune in cents", {0} }, + { AF_INST_MIDI_LOVELOCITY, AU_PVTYPE_LONG, "Low velocity", {1} }, + { AF_INST_MIDI_HIVELOCITY, AU_PVTYPE_LONG, "High velocity", {127} }, + { AF_INST_MIDI_LONOTE, AU_PVTYPE_LONG, "Low note", {0} }, + { AF_INST_MIDI_HINOTE, AU_PVTYPE_LONG, "High note", {127} }, + { AF_INST_NUMDBS_GAIN, AU_PVTYPE_LONG, "Gain in dB", {0} } +}; + +static const _AFfilesetup waveDefaultFileSetup = +{ + _AF_VALID_FILESETUP, /* valid */ + AF_FILE_WAVE, /* fileFormat */ + true, /* trackSet */ + true, /* instrumentSet */ + true, /* miscellaneousSet */ + 1, /* trackCount */ + NULL, /* tracks */ + 0, /* instrumentCount */ + NULL, /* instruments */ + 0, /* miscellaneousCount */ + NULL /* miscellaneous */ +}; + +static const UUID _af_wave_guid_pcm = +{{ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +}}; +static const UUID _af_wave_guid_ieee_float = +{{ + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +}}; +static const UUID _af_wave_guid_ulaw = +{{ + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +}}; +static const UUID _af_wave_guid_alaw = +{{ + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +}}; + +WAVEFile::WAVEFile() +{ + setFormatByteOrder(AF_BYTEORDER_LITTLEENDIAN); + + m_factOffset = 0; + m_miscellaneousOffset = 0; + m_markOffset = 0; + m_dataSizeOffset = 0; + + m_msadpcmNumCoefficients = 0; +} + +status WAVEFile::parseFrameCount(const Tag &id, uint32_t size) +{ + Track *track = getTrack(); + + uint32_t totalFrames; + readU32(&totalFrames); + + track->totalfframes = totalFrames; + + return AF_SUCCEED; +} + +status WAVEFile::parseFormat(const Tag &id, uint32_t size) +{ + Track *track = getTrack(); + + uint16_t formatTag; + readU16(&formatTag); + uint16_t channelCount; + readU16(&channelCount); + uint32_t sampleRate; + readU32(&sampleRate); + uint32_t averageBytesPerSecond; + readU32(&averageBytesPerSecond); + uint16_t blockAlign; + readU16(&blockAlign); + + if (!channelCount) + { + _af_error(AF_BAD_CHANNELS, "invalid file with 0 channels"); + return AF_FAIL; + } + + track->f.channelCount = channelCount; + track->f.sampleRate = sampleRate; + track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; + + /* Default to uncompressed audio data. */ + track->f.compressionType = AF_COMPRESSION_NONE; + track->f.framesPerPacket = 1; + + switch (formatTag) + { + case WAVE_FORMAT_PCM: + { + uint16_t bitsPerSample; + readU16(&bitsPerSample); + + track->f.sampleWidth = bitsPerSample; + + if (bitsPerSample == 0 || bitsPerSample > 32) + { + _af_error(AF_BAD_WIDTH, + "bad sample width of %d bits", + bitsPerSample); + return AF_FAIL; + } + + if (bitsPerSample <= 8) + track->f.sampleFormat = AF_SAMPFMT_UNSIGNED; + else + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + } + break; + + case WAVE_FORMAT_MULAW: + case IBM_FORMAT_MULAW: + track->f.sampleWidth = 16; + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + track->f.byteOrder = _AF_BYTEORDER_NATIVE; + track->f.compressionType = AF_COMPRESSION_G711_ULAW; + track->f.bytesPerPacket = track->f.channelCount; + break; + + case WAVE_FORMAT_ALAW: + case IBM_FORMAT_ALAW: + track->f.sampleWidth = 16; + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + track->f.byteOrder = _AF_BYTEORDER_NATIVE; + track->f.compressionType = AF_COMPRESSION_G711_ALAW; + track->f.bytesPerPacket = track->f.channelCount; + break; + + case WAVE_FORMAT_IEEE_FLOAT: + { + uint16_t bitsPerSample; + readU16(&bitsPerSample); + + if (bitsPerSample == 64) + { + track->f.sampleWidth = 64; + track->f.sampleFormat = AF_SAMPFMT_DOUBLE; + } + else + { + track->f.sampleWidth = 32; + track->f.sampleFormat = AF_SAMPFMT_FLOAT; + } + } + break; + + case WAVE_FORMAT_ADPCM: + { + uint16_t bitsPerSample, extraByteCount, + samplesPerBlock, numCoefficients; + + if (track->f.channelCount != 1 && + track->f.channelCount != 2) + { + _af_error(AF_BAD_CHANNELS, + "WAVE file with MS ADPCM compression " + "must have 1 or 2 channels"); + } + + readU16(&bitsPerSample); + readU16(&extraByteCount); + readU16(&samplesPerBlock); + readU16(&numCoefficients); + + /* numCoefficients should be at least 7. */ + assert(numCoefficients >= 7 && numCoefficients <= 255); + + m_msadpcmNumCoefficients = numCoefficients; + + for (int i=0; if.sampleWidth = 16; + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + track->f.compressionType = AF_COMPRESSION_MS_ADPCM; + track->f.byteOrder = _AF_BYTEORDER_NATIVE; + + track->f.framesPerPacket = samplesPerBlock; + track->f.bytesPerPacket = blockAlign; + + // Create the parameter list. + AUpvlist pv = AUpvnew(2); + AUpvsetparam(pv, 0, _AF_MS_ADPCM_NUM_COEFFICIENTS); + AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); + long l = m_msadpcmNumCoefficients; + AUpvsetval(pv, 0, &l); + + AUpvsetparam(pv, 1, _AF_MS_ADPCM_COEFFICIENTS); + AUpvsetvaltype(pv, 1, AU_PVTYPE_PTR); + void *v = m_msadpcmCoefficients; + AUpvsetval(pv, 1, &v); + + track->f.compressionParams = pv; + } + break; + + case WAVE_FORMAT_DVI_ADPCM: + { + uint16_t bitsPerSample, extraByteCount, samplesPerBlock; + + readU16(&bitsPerSample); + readU16(&extraByteCount); + readU16(&samplesPerBlock); + + if (bitsPerSample != 4) + { + _af_error(AF_BAD_NOT_IMPLEMENTED, + "IMA ADPCM compression supports only 4 bits per sample"); + } + + int bytesPerBlock = (samplesPerBlock + 14) / 8 * 4 * channelCount; + if (bytesPerBlock > blockAlign || (samplesPerBlock % 8) != 1) + { + _af_error(AF_BAD_CODEC_CONFIG, + "Invalid samples per block for IMA ADPCM compression"); + } + + track->f.sampleWidth = 16; + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + track->f.compressionType = AF_COMPRESSION_IMA; + track->f.byteOrder = _AF_BYTEORDER_NATIVE; + + initIMACompressionParams(); + + track->f.framesPerPacket = samplesPerBlock; + track->f.bytesPerPacket = blockAlign; + } + break; + + case WAVE_FORMAT_EXTENSIBLE: + { + uint16_t bitsPerSample; + readU16(&bitsPerSample); + uint16_t extraByteCount; + readU16(&extraByteCount); + uint16_t reserved; + readU16(&reserved); + uint32_t channelMask; + readU32(&channelMask); + UUID subformat; + readUUID(&subformat); + if (subformat == _af_wave_guid_pcm) + { + track->f.sampleWidth = bitsPerSample; + + if (bitsPerSample == 0 || bitsPerSample > 32) + { + _af_error(AF_BAD_WIDTH, + "bad sample width of %d bits", + bitsPerSample); + return AF_FAIL; + } + + // Use valid bits per sample if bytes per sample is the same. + if (reserved <= bitsPerSample && + (reserved + 7) / 8 == (bitsPerSample + 7) / 8) + track->f.sampleWidth = reserved; + + if (bitsPerSample <= 8) + track->f.sampleFormat = AF_SAMPFMT_UNSIGNED; + else + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + } + else if (subformat == _af_wave_guid_ieee_float) + { + if (bitsPerSample == 64) + { + track->f.sampleWidth = 64; + track->f.sampleFormat = AF_SAMPFMT_DOUBLE; + } + else + { + track->f.sampleWidth = 32; + track->f.sampleFormat = AF_SAMPFMT_FLOAT; + } + } + else if (subformat == _af_wave_guid_alaw || + subformat == _af_wave_guid_ulaw) + { + track->f.compressionType = subformat == _af_wave_guid_alaw ? + AF_COMPRESSION_G711_ALAW : AF_COMPRESSION_G711_ULAW; + track->f.sampleWidth = 16; + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + track->f.byteOrder = _AF_BYTEORDER_NATIVE; + track->f.bytesPerPacket = channelCount; + } + else + { + _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE extensible data format %s is not currently supported", subformat.name().c_str()); + return AF_FAIL; + } + } + break; + + case WAVE_FORMAT_YAMAHA_ADPCM: + case WAVE_FORMAT_OKI_ADPCM: + case WAVE_FORMAT_CREATIVE_ADPCM: + case IBM_FORMAT_ADPCM: + _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE ADPCM data format 0x%x is not currently supported", formatTag); + return AF_FAIL; + break; + + case WAVE_FORMAT_MPEG: + _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE MPEG data format is not supported"); + return AF_FAIL; + break; + + case WAVE_FORMAT_MPEGLAYER3: + _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE MPEG layer 3 data format is not supported"); + return AF_FAIL; + break; + + default: + _af_error(AF_BAD_NOT_IMPLEMENTED, "WAVE file data format 0x%x not currently supported != 0xfffe ? %d, != EXTENSIBLE? %d", formatTag, formatTag != 0xfffe, formatTag != WAVE_FORMAT_EXTENSIBLE); + return AF_FAIL; + break; + } + + if (track->f.isUncompressed()) + track->f.computeBytesPerPacketPCM(); + + _af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth); + + return AF_SUCCEED; +} + +status WAVEFile::parseData(const Tag &id, uint32_t size) +{ + Track *track = getTrack(); + + track->fpos_first_frame = m_fh->tell(); + track->data_size = size; + + return AF_SUCCEED; +} + +status WAVEFile::parsePlayList(const Tag &id, uint32_t size) +{ + uint32_t segmentCount; + readU32(&segmentCount); + + if (segmentCount == 0) + { + m_instrumentCount = 0; + m_instruments = NULL; + return AF_SUCCEED; + } + + for (unsigned segment=0; segmentmarkerCount = markerCount; + + if (markerCount == 0) + { + track->markers = NULL; + return AF_SUCCEED; + } + + if ((track->markers = _af_marker_new(markerCount)) == NULL) + return AF_FAIL; + + for (unsigned i=0; imarkers[i]; + + readU32(&id); + readU32(&position); + readU32(&chunkid); + readU32(&chunkByteOffset); + readU32(&blockByteOffset); + + /* + sampleFrameOffset represents the position of + the mark in units of frames. + */ + readU32(&sampleFrameOffset); + + marker->id = id; + marker->position = sampleFrameOffset; + marker->name = _af_strdup(""); + marker->comment = _af_strdup(""); + } + + return AF_SUCCEED; +} + +/* Parse an adtl sub-chunk within a LIST chunk. */ +status WAVEFile::parseADTLSubChunk(const Tag &id, uint32_t size) +{ + Track *track = getTrack(); + + AFfileoffset endPos = m_fh->tell() + size; + + while (m_fh->tell() < endPos) + { + Tag chunkID; + uint32_t chunkSize; + + readTag(&chunkID); + readU32(&chunkSize); + + if (chunkID == "labl" || chunkID == "note") + { + uint32_t id; + long length=chunkSize-4; + char *p = (char *) _af_malloc(length); + + readU32(&id); + m_fh->read(p, length); + + Marker *marker = track->getMarker(id); + + if (marker) + { + if (chunkID == "labl") + { + free(marker->name); + marker->name = p; + } + else if (chunkID == "note") + { + free(marker->comment); + marker->comment = p; + } + else + free(p); + } + else + free(p); + + /* + If chunkSize is odd, skip an extra byte + at the end of the chunk. + */ + if ((chunkSize % 2) != 0) + m_fh->seek(1, File::SeekFromCurrent); + } + else + { + /* If chunkSize is odd, skip an extra byte. */ + m_fh->seek(chunkSize + (chunkSize % 2), File::SeekFromCurrent); + } + } + return AF_SUCCEED; +} + +/* Parse an INFO sub-chunk within a LIST chunk. */ +status WAVEFile::parseINFOSubChunk(const Tag &id, uint32_t size) +{ + AFfileoffset endPos = m_fh->tell() + size; + + while (m_fh->tell() < endPos) + { + int misctype = AF_MISC_UNRECOGNIZED; + Tag miscid; + uint32_t miscsize; + + readTag(&miscid); + readU32(&miscsize); + + if (miscid == "IART") + misctype = AF_MISC_AUTH; + else if (miscid == "INAM") + misctype = AF_MISC_NAME; + else if (miscid == "ICOP") + misctype = AF_MISC_COPY; + else if (miscid == "ICMT") + misctype = AF_MISC_ICMT; + else if (miscid == "ICRD") + misctype = AF_MISC_ICRD; + else if (miscid == "ISFT") + misctype = AF_MISC_ISFT; + + if (misctype != AF_MISC_UNRECOGNIZED) + { + char *string = (char *) _af_malloc(miscsize); + + m_fh->read(string, miscsize); + + m_miscellaneousCount++; + m_miscellaneous = (Miscellaneous *) _af_realloc(m_miscellaneous, sizeof (Miscellaneous) * m_miscellaneousCount); + + m_miscellaneous[m_miscellaneousCount-1].id = m_miscellaneousCount; + m_miscellaneous[m_miscellaneousCount-1].type = misctype; + m_miscellaneous[m_miscellaneousCount-1].size = miscsize; + m_miscellaneous[m_miscellaneousCount-1].position = 0; + m_miscellaneous[m_miscellaneousCount-1].buffer = string; + } + else + { + m_fh->seek(miscsize, File::SeekFromCurrent); + } + + /* Make the current position an even number of bytes. */ + if (miscsize % 2 != 0) + m_fh->seek(1, File::SeekFromCurrent); + } + return AF_SUCCEED; +} + +status WAVEFile::parseList(const Tag &id, uint32_t size) +{ + Tag typeID; + readTag(&typeID); + size-=4; + + if (typeID == "adtl") + { + /* Handle adtl sub-chunks. */ + return parseADTLSubChunk(typeID, size); + } + else if (typeID == "INFO") + { + /* Handle INFO sub-chunks. */ + return parseINFOSubChunk(typeID, size); + } + else + { + /* Skip unhandled sub-chunks. */ + m_fh->seek(size, File::SeekFromCurrent); + return AF_SUCCEED; + } + return AF_SUCCEED; +} + +status WAVEFile::parseInstrument(const Tag &id, uint32_t size) +{ + uint8_t baseNote; + int8_t detune, gain; + uint8_t lowNote, highNote, lowVelocity, highVelocity; + uint8_t padByte; + + readU8(&baseNote); + readS8(&detune); + readS8(&gain); + readU8(&lowNote); + readU8(&highNote); + readU8(&lowVelocity); + readU8(&highVelocity); + readU8(&padByte); + + return AF_SUCCEED; +} + +bool WAVEFile::recognize(File *fh) +{ + uint8_t buffer[8]; + + fh->seek(0, File::SeekFromBeginning); + + if (fh->read(buffer, 8) != 8 || memcmp(buffer, "RIFF", 4) != 0) + return false; + if (fh->read(buffer, 4) != 4 || memcmp(buffer, "WAVE", 4) != 0) + return false; + + return true; +} + +status WAVEFile::readInit(AFfilesetup setup) +{ + Tag type, formtype; + uint32_t size; + uint32_t index = 0; + + bool hasFormat = false; + bool hasData = false; + bool hasFrameCount = false; + + Track *track = allocateTrack(); + + m_fh->seek(0, File::SeekFromBeginning); + + readTag(&type); + readU32(&size); + readTag(&formtype); + + assert(type == "RIFF"); + assert(formtype == "WAVE"); + + /* Include the offset of the form type. */ + index += 4; + + while (index < size) + { + Tag chunkid; + uint32_t chunksize = 0; + status result; + + readTag(&chunkid); + readU32(&chunksize); + + if (chunkid == "fmt ") + { + result = parseFormat(chunkid, chunksize); + if (result == AF_FAIL) + return AF_FAIL; + + hasFormat = true; + } + else if (chunkid == "data") + { + /* The format chunk must precede the data chunk. */ + if (!hasFormat) + { + _af_error(AF_BAD_HEADER, "missing format chunk in WAVE file"); + return AF_FAIL; + } + + result = parseData(chunkid, chunksize); + if (result == AF_FAIL) + return AF_FAIL; + + hasData = true; + } + else if (chunkid == "inst") + { + result = parseInstrument(chunkid, chunksize); + if (result == AF_FAIL) + return AF_FAIL; + } + else if (chunkid == "fact") + { + hasFrameCount = true; + result = parseFrameCount(chunkid, chunksize); + if (result == AF_FAIL) + return AF_FAIL; + } + else if (chunkid == "cue ") + { + result = parseCues(chunkid, chunksize); + if (result == AF_FAIL) + return AF_FAIL; + } + else if (chunkid == "LIST" || chunkid == "list") + { + result = parseList(chunkid, chunksize); + if (result == AF_FAIL) + return AF_FAIL; + } + else if (chunkid == "INST") + { + result = parseInstrument(chunkid, chunksize); + if (result == AF_FAIL) + return AF_FAIL; + } + else if (chunkid == "plst") + { + result = parsePlayList(chunkid, chunksize); + if (result == AF_FAIL) + return AF_FAIL; + } + + index += chunksize + 8; + + /* All chunks must be aligned on an even number of bytes */ + if ((index % 2) != 0) + index++; + + m_fh->seek(index + 8, File::SeekFromBeginning); + } + + /* The format chunk and the data chunk are required. */ + if (!hasFormat || !hasData) + { + return AF_FAIL; + } + + /* + At this point we know that the file has a format chunk and a + data chunk, so we can assume that track->f and track->data_size + have been initialized. + */ + if (!hasFrameCount) + { + if (track->f.bytesPerPacket && track->f.framesPerPacket) + { + track->computeTotalFileFrames(); + } + else + { + _af_error(AF_BAD_HEADER, "Frame count required but not found"); + return AF_FAIL; + } + } + + return AF_SUCCEED; +} + +AFfilesetup WAVEFile::completeSetup(AFfilesetup setup) +{ + if (setup->trackSet && setup->trackCount != 1) + { + _af_error(AF_BAD_NUMTRACKS, "WAVE file must have 1 track"); + return AF_NULL_FILESETUP; + } + + TrackSetup *track = setup->getTrack(); + if (!track) + return AF_NULL_FILESETUP; + + if (track->f.isCompressed()) + { + if (!track->sampleFormatSet) + _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16); + else + _af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth); + } + else if (track->sampleFormatSet) + { + switch (track->f.sampleFormat) + { + case AF_SAMPFMT_FLOAT: + if (track->sampleWidthSet && + track->f.sampleWidth != 32) + { + _af_error(AF_BAD_WIDTH, + "Warning: invalid sample width for floating-point WAVE file: %d (must be 32 bits)\n", + track->f.sampleWidth); + _af_set_sample_format(&track->f, AF_SAMPFMT_FLOAT, 32); + } + break; + + case AF_SAMPFMT_DOUBLE: + if (track->sampleWidthSet && + track->f.sampleWidth != 64) + { + _af_error(AF_BAD_WIDTH, + "Warning: invalid sample width for double-precision floating-point WAVE file: %d (must be 64 bits)\n", + track->f.sampleWidth); + _af_set_sample_format(&track->f, AF_SAMPFMT_DOUBLE, 64); + } + break; + + case AF_SAMPFMT_UNSIGNED: + if (track->sampleWidthSet) + { + if (track->f.sampleWidth < 1 || track->f.sampleWidth > 32) + { + _af_error(AF_BAD_WIDTH, "invalid sample width for WAVE file: %d (must be 1-32 bits)\n", track->f.sampleWidth); + return AF_NULL_FILESETUP; + } + if (track->f.sampleWidth > 8) + { + _af_error(AF_BAD_SAMPFMT, "WAVE integer data of more than 8 bits must be two's complement signed"); + _af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, track->f.sampleWidth); + } + } + else + /* + If the sample width is not set but the user requests + unsigned data, set the width to 8 bits. + */ + _af_set_sample_format(&track->f, track->f.sampleFormat, 8); + break; + + case AF_SAMPFMT_TWOSCOMP: + if (track->sampleWidthSet) + { + if (track->f.sampleWidth < 1 || track->f.sampleWidth > 32) + { + _af_error(AF_BAD_WIDTH, "invalid sample width %d for WAVE file (must be 1-32)", track->f.sampleWidth); + return AF_NULL_FILESETUP; + } + else if (track->f.sampleWidth <= 8) + { + _af_error(AF_BAD_SAMPFMT, "Warning: WAVE format integer data of 1-8 bits must be unsigned; setting sample format to unsigned"); + _af_set_sample_format(&track->f, AF_SAMPFMT_UNSIGNED, track->f.sampleWidth); + } + } + else + /* + If no sample width was specified, we default to 16 bits + for signed integer data. + */ + _af_set_sample_format(&track->f, track->f.sampleFormat, 16); + break; + } + } + /* + Otherwise set the sample format depending on the sample + width or set completely to default. + */ + else + { + if (!track->sampleWidthSet) + { + track->f.sampleWidth = 16; + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + } + else + { + if (track->f.sampleWidth < 1 || track->f.sampleWidth > 32) + { + _af_error(AF_BAD_WIDTH, "invalid sample width %d for WAVE file (must be 1-32)", track->f.sampleWidth); + return AF_NULL_FILESETUP; + } + else if (track->f.sampleWidth > 8) + /* Here track->f.sampleWidth is in {1..32}. */ + track->f.sampleFormat = AF_SAMPFMT_TWOSCOMP; + else + /* Here track->f.sampleWidth is in {1..8}. */ + track->f.sampleFormat = AF_SAMPFMT_UNSIGNED; + } + } + + if (track->f.compressionType != AF_COMPRESSION_NONE && + track->f.compressionType != AF_COMPRESSION_G711_ULAW && + track->f.compressionType != AF_COMPRESSION_G711_ALAW && + track->f.compressionType != AF_COMPRESSION_IMA && + track->f.compressionType != AF_COMPRESSION_MS_ADPCM) + { + _af_error(AF_BAD_NOT_IMPLEMENTED, "compression format not supported in WAVE format"); + return AF_NULL_FILESETUP; + } + + if (track->f.isUncompressed() && + track->byteOrderSet && + track->f.byteOrder != AF_BYTEORDER_LITTLEENDIAN && + track->f.isByteOrderSignificant()) + { + _af_error(AF_BAD_BYTEORDER, "WAVE format only supports little-endian data"); + return AF_NULL_FILESETUP; + } + + if (track->f.isUncompressed()) + track->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN; + + if (track->aesDataSet) + { + _af_error(AF_BAD_FILESETUP, "WAVE files cannot have AES data"); + return AF_NULL_FILESETUP; + } + + if (setup->instrumentSet) + { + if (setup->instrumentCount > 1) + { + _af_error(AF_BAD_NUMINSTS, "WAVE files can have 0 or 1 instrument"); + return AF_NULL_FILESETUP; + } + else if (setup->instrumentCount == 1) + { + if (setup->instruments[0].loopSet && + setup->instruments[0].loopCount > 0 && + (!track->markersSet || track->markerCount == 0)) + { + _af_error(AF_BAD_NUMMARKS, "WAVE files with loops must contain at least 1 marker"); + return AF_NULL_FILESETUP; + } + } + } + + /* Make sure the miscellaneous data is of an acceptable type. */ + if (setup->miscellaneousSet) + { + for (int i=0; imiscellaneousCount; i++) + { + switch (setup->miscellaneous[i].type) + { + case AF_MISC_COPY: + case AF_MISC_AUTH: + case AF_MISC_NAME: + case AF_MISC_ICRD: + case AF_MISC_ISFT: + case AF_MISC_ICMT: + break; + default: + _af_error(AF_BAD_MISCTYPE, "illegal miscellaneous type [%d] for WAVE file", setup->miscellaneous[i].type); + return AF_NULL_FILESETUP; + } + } + } + + /* + Allocate an AFfilesetup and make all the unset fields correct. + */ + AFfilesetup newsetup = _af_filesetup_copy(setup, &waveDefaultFileSetup, false); + + /* Make sure we do not copy loops if they are not specified in setup. */ + if (setup->instrumentSet && setup->instrumentCount > 0 && + setup->instruments[0].loopSet) + { + free(newsetup->instruments[0].loops); + newsetup->instruments[0].loopCount = 0; + } + + return newsetup; +} + +bool WAVEFile::isInstrumentParameterValid(AUpvlist list, int i) +{ + int param, type; + + AUpvgetparam(list, i, ¶m); + AUpvgetvaltype(list, i, &type); + if (type != AU_PVTYPE_LONG) + return false; + + long lval; + AUpvgetval(list, i, &lval); + + switch (param) + { + case AF_INST_MIDI_BASENOTE: + return ((lval >= 0) && (lval <= 127)); + + case AF_INST_NUMCENTS_DETUNE: + return ((lval >= -50) && (lval <= 50)); + + case AF_INST_MIDI_LOVELOCITY: + return ((lval >= 1) && (lval <= 127)); + + case AF_INST_MIDI_HIVELOCITY: + return ((lval >= 1) && (lval <= 127)); + + case AF_INST_MIDI_LONOTE: + return ((lval >= 0) && (lval <= 127)); + + case AF_INST_MIDI_HINOTE: + return ((lval >= 0) && (lval <= 127)); + + case AF_INST_NUMDBS_GAIN: + return true; + + default: + return false; + } + + return true; +} + +status WAVEFile::writeFormat() +{ + uint16_t formatTag, channelCount; + uint32_t sampleRate, averageBytesPerSecond; + uint16_t blockAlign; + uint32_t chunkSize; + uint16_t bitsPerSample; + + Track *track = getTrack(); + + m_fh->write("fmt ", 4); + + switch (track->f.compressionType) + { + case AF_COMPRESSION_NONE: + chunkSize = 16; + if (track->f.sampleFormat == AF_SAMPFMT_FLOAT || + track->f.sampleFormat == AF_SAMPFMT_DOUBLE) + { + formatTag = WAVE_FORMAT_IEEE_FLOAT; + } + else if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP || + track->f.sampleFormat == AF_SAMPFMT_UNSIGNED) + { + formatTag = WAVE_FORMAT_PCM; + } + else + { + _af_error(AF_BAD_COMPTYPE, "bad sample format"); + return AF_FAIL; + } + + blockAlign = _af_format_frame_size(&track->f, false); + bitsPerSample = 8 * _af_format_sample_size(&track->f, false); + break; + + /* + G.711 compression uses eight bits per sample. + */ + case AF_COMPRESSION_G711_ULAW: + chunkSize = 18; + formatTag = IBM_FORMAT_MULAW; + blockAlign = track->f.channelCount; + bitsPerSample = 8; + break; + + case AF_COMPRESSION_G711_ALAW: + chunkSize = 18; + formatTag = IBM_FORMAT_ALAW; + blockAlign = track->f.channelCount; + bitsPerSample = 8; + break; + + case AF_COMPRESSION_IMA: + chunkSize = 20; + formatTag = WAVE_FORMAT_DVI_ADPCM; + blockAlign = track->f.bytesPerPacket; + bitsPerSample = 4; + break; + + case AF_COMPRESSION_MS_ADPCM: + chunkSize = 50; + formatTag = WAVE_FORMAT_ADPCM; + blockAlign = track->f.bytesPerPacket; + bitsPerSample = 4; + break; + + default: + _af_error(AF_BAD_COMPTYPE, "bad compression type"); + return AF_FAIL; + } + + writeU32(&chunkSize); + writeU16(&formatTag); + + channelCount = track->f.channelCount; + writeU16(&channelCount); + + sampleRate = track->f.sampleRate; + writeU32(&sampleRate); + + averageBytesPerSecond = + track->f.sampleRate * _af_format_frame_size(&track->f, false); + if (track->f.compressionType == AF_COMPRESSION_IMA || + track->f.compressionType == AF_COMPRESSION_MS_ADPCM) + averageBytesPerSecond = track->f.sampleRate * track->f.bytesPerPacket / + track->f.framesPerPacket; + writeU32(&averageBytesPerSecond); + + writeU16(&blockAlign); + + writeU16(&bitsPerSample); + + if (track->f.compressionType == AF_COMPRESSION_G711_ULAW || + track->f.compressionType == AF_COMPRESSION_G711_ALAW) + { + uint16_t zero = 0; + writeU16(&zero); + } + else if (track->f.compressionType == AF_COMPRESSION_IMA) + { + uint16_t extraByteCount = 2; + writeU16(&extraByteCount); + uint16_t samplesPerBlock = track->f.framesPerPacket; + writeU16(&samplesPerBlock); + } + else if (track->f.compressionType == AF_COMPRESSION_MS_ADPCM) + { + uint16_t extraByteCount = 2 + 2 + m_msadpcmNumCoefficients * 4; + writeU16(&extraByteCount); + uint16_t samplesPerBlock = track->f.framesPerPacket; + writeU16(&samplesPerBlock); + + uint16_t numCoefficients = m_msadpcmNumCoefficients; + writeU16(&numCoefficients); + + for (int i=0; if.compressionType == AF_COMPRESSION_NONE && + (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP || + track->f.sampleFormat == AF_SAMPFMT_UNSIGNED)) + return AF_SUCCEED; + + /* + If the offset for the fact chunk hasn't been set yet, + set it to the file's current position. + */ + if (m_factOffset == 0) + m_factOffset = m_fh->tell(); + else + m_fh->seek(m_factOffset, File::SeekFromBeginning); + + m_fh->write("fact", 4); + writeU32(&factSize); + + totalFrameCount = track->totalfframes; + writeU32(&totalFrameCount); + + return AF_SUCCEED; +} + +status WAVEFile::writeData() +{ + Track *track = getTrack(); + + m_fh->write("data", 4); + m_dataSizeOffset = m_fh->tell(); + + uint32_t chunkSize = track->data_size; + + writeU32(&chunkSize); + track->fpos_first_frame = m_fh->tell(); + + return AF_SUCCEED; +} + +status WAVEFile::update() +{ + Track *track = getTrack(); + + if (track->fpos_first_frame != 0) + { + uint32_t dataLength, fileLength; + + // Update the frame count chunk if present. + writeFrameCount(); + + // Update the length of the data chunk. + m_fh->seek(m_dataSizeOffset, File::SeekFromBeginning); + dataLength = (uint32_t) track->data_size; + writeU32(&dataLength); + + // Update the length of the RIFF chunk. + fileLength = (uint32_t) m_fh->length(); + fileLength -= 8; + + m_fh->seek(4, File::SeekFromBeginning); + writeU32(&fileLength); + } + + /* + Write the actual data that was set after initializing + the miscellaneous IDs. The size of the data will be + unchanged. + */ + writeMiscellaneous(); + + // Write the new positions; the size of the data will be unchanged. + writeCues(); + + return AF_SUCCEED; +} + +/* Convert an Audio File Library miscellaneous type to a WAVE type. */ +static bool misc_type_to_wave (int misctype, Tag *miscid) +{ + if (misctype == AF_MISC_AUTH) + *miscid = "IART"; + else if (misctype == AF_MISC_NAME) + *miscid = "INAM"; + else if (misctype == AF_MISC_COPY) + *miscid = "ICOP"; + else if (misctype == AF_MISC_ICMT) + *miscid = "ICMT"; + else if (misctype == AF_MISC_ICRD) + *miscid = "ICRD"; + else if (misctype == AF_MISC_ISFT) + *miscid = "ISFT"; + else + return false; + + return true; +} + +status WAVEFile::writeMiscellaneous() +{ + if (m_miscellaneousCount != 0) + { + uint32_t miscellaneousBytes; + uint32_t chunkSize; + + /* Start at 12 to account for 'LIST', size, and 'INFO'. */ + miscellaneousBytes = 12; + + /* Then calculate the size of the whole INFO chunk. */ + for (int i=0; itell(); + else + m_fh->seek(m_miscellaneousOffset, File::SeekFromBeginning); + + /* + Write the data. On the first call to this + function (from _af_wave_write_init), the + data won't be available, fh->seek is used to + reserve space until the data has been provided. + On subseuent calls to this function (from + _af_wave_update), the data will really be written. + */ + + /* Write 'LIST'. */ + m_fh->write("LIST", 4); + + /* Write the size of the following chunk. */ + chunkSize = miscellaneousBytes-8; + writeU32(&chunkSize); + + /* Write 'INFO'. */ + m_fh->write("INFO", 4); + + /* Write each miscellaneous chunk. */ + for (int i=0; iwrite(m_miscellaneous[i].buffer, m_miscellaneous[i].size); + + // Pad if necessary. + if ((m_miscellaneous[i].size%2) != 0) + writeU8(&zero); + } + else + { + int size; + size = m_miscellaneous[i].size; + + // Pad if necessary. + if ((size % 2) != 0) + size++; + m_fh->seek(size, File::SeekFromCurrent); + } + } + } + + return AF_SUCCEED; +} + +status WAVEFile::writeCues() +{ + Track *track = getTrack(); + + if (!track->markerCount) + return AF_SUCCEED; + + if (m_markOffset == 0) + m_markOffset = m_fh->tell(); + else + m_fh->seek(m_markOffset, File::SeekFromBeginning); + + Tag cue("cue "); + writeTag(&cue); + + /* + The cue chunk consists of 4 bytes for the number of cue points + followed by 24 bytes for each cue point record. + */ + uint32_t cueChunkSize = 4 + track->markerCount * 24; + writeU32(&cueChunkSize); + uint32_t numCues = track->markerCount; + writeU32(&numCues); + + // Write each marker to the file. + for (int i=0; imarkerCount; i++) + { + uint32_t identifier = track->markers[i].id; + writeU32(&identifier); + + uint32_t position = i; + writeU32(&position); + + Tag data("data"); + writeTag(&data); + + /* + For an uncompressed WAVE file which contains only one data chunk, + chunkStart and blockStart are zero. + */ + uint32_t chunkStart = 0; + writeU32(&chunkStart); + + uint32_t blockStart = 0; + writeU32(&blockStart); + + AFframecount markPosition = track->markers[i].position; + uint32_t sampleOffset = markPosition; + writeU32(&sampleOffset); + } + + // Now write the cue names and comments within a master list chunk. + uint32_t listChunkSize = 4; + for (int i=0; imarkerCount; i++) + { + const char *name = track->markers[i].name; + const char *comment = track->markers[i].comment; + + /* + Each 'labl' or 'note' chunk consists of 4 bytes for the chunk ID, + 4 bytes for the chunk data size, 4 bytes for the cue point ID, + and then the length of the label as a null-terminated string. + + In all, this is 12 bytes plus the length of the string, its null + termination byte, and a trailing pad byte if the length of the + chunk is otherwise odd. + */ + listChunkSize += 12 + zStringLength(name); + listChunkSize += 12 + zStringLength(comment); + } + + Tag list("LIST"); + writeTag(&list); + writeU32(&listChunkSize); + Tag adtl("adtl"); + writeTag(&adtl); + + for (int i=0; imarkerCount; i++) + { + uint32_t cuePointID = track->markers[i].id; + + const char *name = track->markers[i].name; + uint32_t labelSize = 4 + zStringLength(name); + Tag lablTag("labl"); + writeTag(&lablTag); + writeU32(&labelSize); + writeU32(&cuePointID); + writeZString(name); + + const char *comment = track->markers[i].comment; + uint32_t noteSize = 4 + zStringLength(comment); + Tag noteTag("note"); + writeTag(¬eTag); + writeU32(¬eSize); + writeU32(&cuePointID); + writeZString(comment); + } + + return AF_SUCCEED; +} + +bool WAVEFile::writeZString(const char *s) +{ + ssize_t lengthPlusNull = strlen(s) + 1; + if (m_fh->write(s, lengthPlusNull) != lengthPlusNull) + return false; + if (lengthPlusNull & 1) + { + uint8_t zero = 0; + if (!writeU8(&zero)) + return false; + } + return true; +} + +size_t WAVEFile::zStringLength(const char *s) +{ + size_t lengthPlusNull = strlen(s) + 1; + return lengthPlusNull + (lengthPlusNull & 1); +} + +status WAVEFile::writeInit(AFfilesetup setup) +{ + if (initFromSetup(setup) == AF_FAIL) + return AF_FAIL; + + initCompressionParams(); + + uint32_t zero = 0; + + m_fh->seek(0, File::SeekFromBeginning); + m_fh->write("RIFF", 4); + m_fh->write(&zero, 4); + m_fh->write("WAVE", 4); + + writeMiscellaneous(); + writeCues(); + writeFormat(); + writeFrameCount(); + writeData(); + + return AF_SUCCEED; +} + +bool WAVEFile::readUUID(UUID *u) +{ + return m_fh->read(u->data, 16) == 16; +} + +bool WAVEFile::writeUUID(const UUID *u) +{ + return m_fh->write(u->data, 16) == 16; +} + +void WAVEFile::initCompressionParams() +{ + Track *track = getTrack(); + if (track->f.compressionType == AF_COMPRESSION_IMA) + initIMACompressionParams(); + else if (track->f.compressionType == AF_COMPRESSION_MS_ADPCM) + initMSADPCMCompressionParams(); +} + +void WAVEFile::initIMACompressionParams() +{ + Track *track = getTrack(); + + track->f.framesPerPacket = 505; + track->f.bytesPerPacket = 256 * track->f.channelCount; + + AUpvlist pv = AUpvnew(1); + AUpvsetparam(pv, 0, _AF_IMA_ADPCM_TYPE); + AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); + long l = _AF_IMA_ADPCM_TYPE_WAVE; + AUpvsetval(pv, 0, &l); + + track->f.compressionParams = pv; +} + +void WAVEFile::initMSADPCMCompressionParams() +{ + const int16_t coefficients[7][2] = + { + { 256, 0 }, + { 512, -256 }, + { 0, 0 }, + { 192, 64 }, + { 240, 0 }, + { 460, -208 }, + { 392, -232 } + }; + memcpy(m_msadpcmCoefficients, coefficients, sizeof (int16_t) * 7 * 2); + m_msadpcmNumCoefficients = 7; + + Track *track = getTrack(); + + track->f.framesPerPacket = 500; + track->f.bytesPerPacket = 256 * track->f.channelCount; + + AUpvlist pv = AUpvnew(2); + AUpvsetparam(pv, 0, _AF_MS_ADPCM_NUM_COEFFICIENTS); + AUpvsetvaltype(pv, 0, AU_PVTYPE_LONG); + long l = m_msadpcmNumCoefficients; + AUpvsetval(pv, 0, &l); + + AUpvsetparam(pv, 1, _AF_MS_ADPCM_COEFFICIENTS); + AUpvsetvaltype(pv, 1, AU_PVTYPE_PTR); + void *v = m_msadpcmCoefficients; + AUpvsetval(pv, 1, &v); + + track->f.compressionParams = pv; +} + +// file: aes.cpp +/* + Audio File Library + Copyright (C) 1998-1999, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + aes.c + + This file contains routines for dealing with AES recording data. +*/ + + +#include +#include + + +void afInitAESChannelData (AFfilesetup setup, int trackid) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + track->aesDataSet = true; +} + +void afInitAESChannelDataTo (AFfilesetup setup, int trackid, int willBeData) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + track->aesDataSet = willBeData; +} + +int afGetAESChannelData (AFfilehandle file, int trackid, unsigned char buf[24]) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + if (!track->hasAESData) + { + if (buf) + memset(buf, 0, 24); + return 0; + } + + if (buf) + memcpy(buf, track->aesData, 24); + + return 1; +} + +void afSetAESChannelData (AFfilehandle file, int trackid, unsigned char buf[24]) +{ + if (!_af_filehandle_ok(file)) + return; + + Track *track = file->getTrack(trackid); + if (!track) + return; + + if (!file->checkCanWrite()) + return; + + if (track->hasAESData) + { + memcpy(track->aesData, buf, 24); + } + else + { + _af_error(AF_BAD_NOAESDATA, + "unable to store AES channel status data for track %d", + trackid); + } +} + +// file: af_vfs.cpp +/* + Audio File Library + Copyright (C) 1999, Elliot Lee + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + af_vfs.cpp + + Virtual file operations for the Audio File Library. +*/ + + + +#include + +AFvirtualfile *af_virtual_file_new() +{ + return (AFvirtualfile *) calloc(sizeof (AFvirtualfile), 1); +} + +void af_virtual_file_destroy(AFvirtualfile *vfile) +{ + vfile->destroy(vfile); + + free(vfile); +} + +// file: aupv.c +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + aupv.c + + This file contains an implementation of SGI's Audio Library parameter + value list functions. +*/ + + +#include +#include +#include + + +AUpvlist AUpvnew (int maxitems) +{ + AUpvlist aupvlist; + int i; + + if (maxitems <= 0) + return AU_NULL_PVLIST; + + aupvlist = (AUpvlist) malloc(sizeof (struct _AUpvlist)); + assert(aupvlist); + if (aupvlist == NULL) + return AU_NULL_PVLIST; + + aupvlist->items = (struct _AUpvitem *)calloc(maxitems, sizeof (struct _AUpvitem)); + + assert(aupvlist->items); + if (aupvlist->items == NULL) + { + free(aupvlist); + return AU_NULL_PVLIST; + } + + /* Initialize the items in the list. */ + for (i=0; iitems[i].valid = _AU_VALID_PVITEM; + aupvlist->items[i].type = AU_PVTYPE_LONG; + aupvlist->items[i].parameter = 0; + memset(&aupvlist->items[i].value, 0, sizeof (aupvlist->items[i].value)); + } + + aupvlist->valid = _AU_VALID_PVLIST; + aupvlist->count = maxitems; + + return aupvlist; +} + +int AUpvgetmaxitems (AUpvlist list) +{ + assert(list); + + if (list == AU_NULL_PVLIST) + return AU_BAD_PVLIST; + if (list->valid != _AU_VALID_PVLIST) + return AU_BAD_PVLIST; + + return list->count; +} + +int AUpvfree (AUpvlist list) +{ + assert(list); + assert(list->items); + + if (list == AU_NULL_PVLIST) + return AU_BAD_PVLIST; + if (list->valid != _AU_VALID_PVLIST) + return AU_BAD_PVLIST; + + if ((list->items != _AU_NULL_PVITEM) && + (list->items[0].valid == _AU_VALID_PVITEM)) + { + free(list->items); + } + + free(list); + + return _AU_SUCCESS; +} + +int AUpvsetparam (AUpvlist list, int item, int param) +{ + assert(list); + assert(list->items); + assert(item >= 0); + assert(item < list->count); + + if (list == AU_NULL_PVLIST) + return AU_BAD_PVLIST; + if (list->valid != _AU_VALID_PVLIST) + return AU_BAD_PVLIST; + if ((item < 0) || (item > list->count - 1)) + return AU_BAD_PVITEM; + if (list->items[item].valid != _AU_VALID_PVITEM) + return AU_BAD_PVLIST; + + list->items[item].parameter = param; + return _AU_SUCCESS; +} + +int AUpvsetvaltype (AUpvlist list, int item, int type) +{ + assert(list); + assert(list->items); + assert(item >= 0); + assert(item < list->count); + + if (list == AU_NULL_PVLIST) + return AU_BAD_PVLIST; + if (list->valid != _AU_VALID_PVLIST) + return AU_BAD_PVLIST; + if ((item < 0) || (item > list->count - 1)) + return AU_BAD_PVITEM; + if (list->items[item].valid != _AU_VALID_PVITEM) + return AU_BAD_PVLIST; + + list->items[item].type = type; + return _AU_SUCCESS; +} + +int AUpvsetval (AUpvlist list, int item, void *val) +{ + assert(list); + assert(list->items); + assert(item >= 0); + assert(item < list->count); + + if (list == AU_NULL_PVLIST) + return AU_BAD_PVLIST; + if (list->valid != _AU_VALID_PVLIST) + return AU_BAD_PVLIST; + if ((item < 0) || (item > list->count - 1)) + return AU_BAD_PVITEM; + if (list->items[item].valid != _AU_VALID_PVITEM) + return AU_BAD_PVLIST; + + switch (list->items[item].type) + { + case AU_PVTYPE_LONG: + list->items[item].value.l = *((long *) val); + break; + case AU_PVTYPE_DOUBLE: + list->items[item].value.d = *((double *) val); + break; + case AU_PVTYPE_PTR: + list->items[item].value.v = *((void **) val); + break; + default: + assert(0); + return AU_BAD_PVLIST; + } + + return _AU_SUCCESS; +} + +int AUpvgetparam (AUpvlist list, int item, int *param) +{ + assert(list); + assert(list->items); + assert(item >= 0); + assert(item < list->count); + + if (list == AU_NULL_PVLIST) + return AU_BAD_PVLIST; + if (list->valid != _AU_VALID_PVLIST) + return AU_BAD_PVLIST; + if ((item < 0) || (item > list->count - 1)) + return AU_BAD_PVITEM; + if (list->items[item].valid != _AU_VALID_PVITEM) + return AU_BAD_PVLIST; + + *param = list->items[item].parameter; + return _AU_SUCCESS; +} + +int AUpvgetvaltype (AUpvlist list, int item, int *type) +{ + assert(list); + assert(list->items); + assert(item >= 0); + assert(item < list->count); + + if (list == AU_NULL_PVLIST) + return AU_BAD_PVLIST; + if (list->valid != _AU_VALID_PVLIST) + return AU_BAD_PVLIST; + if ((item < 0) || (item > list->count - 1)) + return AU_BAD_PVITEM; + if (list->items[item].valid != _AU_VALID_PVITEM) + return AU_BAD_PVLIST; + + *type = list->items[item].type; + return _AU_SUCCESS; +} + +int AUpvgetval (AUpvlist list, int item, void *val) +{ + assert(list); + assert(list->items); + assert(item >= 0); + assert(item < list->count); + + if (list == AU_NULL_PVLIST) + return AU_BAD_PVLIST; + if (list->valid != _AU_VALID_PVLIST) + return AU_BAD_PVLIST; + if ((item < 0) || (item > list->count - 1)) + return AU_BAD_PVITEM; + if (list->items[item].valid != _AU_VALID_PVITEM) + return AU_BAD_PVLIST; + + switch (list->items[item].type) + { + case AU_PVTYPE_LONG: + *((long *) val) = list->items[item].value.l; + break; + case AU_PVTYPE_DOUBLE: + *((double *) val) = list->items[item].value.d; + break; + case AU_PVTYPE_PTR: + *((void **) val) = list->items[item].value.v; + break; + } + + return _AU_SUCCESS; +} + +// file: compression.cpp +/* + Audio File Library + Copyright (C) 1999-2000, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + compression.cpp + + This file contains routines for configuring compressed audio. +*/ + + +#include + + +const CompressionUnit *_af_compression_unit_from_id (int compressionid) +{ + for (int i=0; i<_AF_NUM_COMPRESSION; i++) + if (_af_compression[i].compressionID == compressionid) + return &_af_compression[i]; + + _af_error(AF_BAD_COMPTYPE, "compression type %d not available", compressionid); + return NULL; +} + +int afGetCompression (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->f.compressionType; +} + +void afInitCompression (AFfilesetup setup, int trackid, int compression) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + if (!_af_compression_unit_from_id(compression)) + return; + + track->compressionSet = true; + track->f.compressionType = compression; +} + +#if 0 +int afGetCompressionParams (AFfilehandle file, int trackid, + int *compression, AUpvlist pvlist, int numitems) +{ + assert(file); + assert(trackid == AF_DEFAULT_TRACK); +} + +void afInitCompressionParams (AFfilesetup setup, int trackid, + int compression, AUpvlist pvlist, int numitems) +{ + assert(setup); + assert(trackid == AF_DEFAULT_TRACK); +} +#endif + +// file: data.cpp +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + data.cpp +*/ + + +#include +#include +#include + + +int afWriteFrames (AFfilehandle file, int trackid, const void *samples, + int nvframes2write) +{ + SharedPtr firstmod; + SharedPtr userc; + int bytes_per_vframe; + AFframecount vframe; + + if (!_af_filehandle_ok(file)) + return -1; + + if (!file->checkCanWrite()) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + if (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL) + return -1; + + if (!track->ms->fileModuleHandlesSeeking() && + file->m_seekok && + file->m_fh->seek(track->fpos_next_frame, File::SeekFromBeginning) != + track->fpos_next_frame) + { + _af_error(AF_BAD_LSEEK, "unable to position write pointer at next frame"); + return -1; + } + + bytes_per_vframe = _af_format_frame_size(&track->v, true); + + firstmod = track->ms->modules().front(); + userc = track->ms->chunks().front(); + + track->filemodhappy = true; + + vframe = 0; +#ifdef UNLIMITED_CHUNK_NVFRAMES + /* + OPTIMIZATION: see the comment at the very end of + arrangemodules() in modules.c for an explanation of this: + */ + if (!trk->ms->mustUseAtomicNVFrames()) + { + userc->buffer = (char *) samples; + userc->frameCount = nvframes2write; + + firstmod->runPush(); + + /* Count this chunk if there was no i/o error. */ + if (trk->filemodhappy) + vframe += userc->frameCount; + } + else +#else + /* Optimization must be off. */ + assert(track->ms->mustUseAtomicNVFrames()); +#endif + { + while (vframe < nvframes2write) + { + userc->buffer = (char *) samples + bytes_per_vframe * vframe; + if (vframe <= nvframes2write - _AF_ATOMIC_NVFRAMES) + userc->frameCount = _AF_ATOMIC_NVFRAMES; + else + userc->frameCount = nvframes2write - vframe; + + firstmod->runPush(); + + if (!track->filemodhappy) + break; + + vframe += userc->frameCount; + } + } + + track->nextvframe += vframe; + track->totalvframes += vframe; + + return vframe; +} + +int afReadFrames (AFfilehandle file, int trackid, void *samples, + int nvframeswanted) +{ + SharedPtr firstmod; + SharedPtr userc; + AFframecount nvframesleft, nvframes2read; + int bytes_per_vframe; + AFframecount vframe; + + if (!_af_filehandle_ok(file)) + return -1; + + if (!file->checkCanRead()) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + if (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL) + return -1; + + if (!track->ms->fileModuleHandlesSeeking() && + file->m_seekok && + file->m_fh->seek(track->fpos_next_frame, File::SeekFromBeginning) != + track->fpos_next_frame) + { + _af_error(AF_BAD_LSEEK, "unable to position read pointer at next frame"); + return -1; + } + + if (track->totalvframes == -1) + nvframes2read = nvframeswanted; + else + { + nvframesleft = track->totalvframes - track->nextvframe; + nvframes2read = (nvframeswanted > nvframesleft) ? + nvframesleft : nvframeswanted; + } + bytes_per_vframe = _af_format_frame_size(&track->v, true); + + firstmod = track->ms->modules().back(); + userc = track->ms->chunks().back(); + + track->filemodhappy = true; + + vframe = 0; + + if (!track->ms->mustUseAtomicNVFrames()) + { + assert(track->frames2ignore == 0); + userc->buffer = samples; + userc->frameCount = nvframes2read; + + firstmod->runPull(); + if (track->filemodhappy) + vframe += userc->frameCount; + } + else + { + bool eof = false; + + if (track->frames2ignore != 0) + { + userc->frameCount = track->frames2ignore; + userc->allocate(track->frames2ignore * bytes_per_vframe); + if (!userc->buffer) + return 0; + + firstmod->runPull(); + + /* Have we hit EOF? */ + if (static_cast(userc->frameCount) < track->frames2ignore) + eof = true; + + track->frames2ignore = 0; + + userc->deallocate(); + } + + /* + Now start reading useful frames, until EOF or + premature EOF. + */ + + while (track->filemodhappy && !eof && vframe < nvframes2read) + { + AFframecount nvframes2pull; + userc->buffer = (char *) samples + bytes_per_vframe * vframe; + + if (vframe <= nvframes2read - _AF_ATOMIC_NVFRAMES) + nvframes2pull = _AF_ATOMIC_NVFRAMES; + else + nvframes2pull = nvframes2read - vframe; + + userc->frameCount = nvframes2pull; + + firstmod->runPull(); + + if (track->filemodhappy) + { + vframe += userc->frameCount; + if (static_cast(userc->frameCount) < nvframes2pull) + eof = true; + } + } + } + + track->nextvframe += vframe; + + return vframe; +} + +// file: debug.cpp +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + debug.cpp + + This file contains debugging routines for the Audio File + Library. +*/ + + +#include +#include +#include +#include +#include + + + +void _af_print_pvlist (AUpvlist list) +{ + assert(list); + + printf("list.valid: %d\n", list->valid); + printf("list.count: %zu\n", list->count); + + for (unsigned i=0; icount; i++) + { + printf("item %u valid %d, should be %d\n", + i, list->items[i].valid, _AU_VALID_PVITEM); + + switch (list->items[i].type) + { + case AU_PVTYPE_LONG: + printf("item #%u, parameter %d, long: %ld\n", + i, list->items[i].parameter, + list->items[i].value.l); + break; + case AU_PVTYPE_DOUBLE: + printf("item #%u, parameter %d, double: %f\n", + i, list->items[i].parameter, + list->items[i].value.d); + break; + case AU_PVTYPE_PTR: + printf("item #%u, parameter %d, pointer: %p\n", + i, list->items[i].parameter, + list->items[i].value.v); + break; + + default: + printf("item #%u, invalid type %d\n", i, + list->items[i].type); + assert(false); + break; + } + } +} + +void _af_print_audioformat (AudioFormat *fmt) +{ + /* sampleRate, channelCount */ + printf("{ %7.2f Hz %d ch ", fmt->sampleRate, fmt->channelCount); + + /* sampleFormat, sampleWidth */ + switch (fmt->sampleFormat) + { + case AF_SAMPFMT_TWOSCOMP: + printf("%db 2 ", fmt->sampleWidth); + break; + case AF_SAMPFMT_UNSIGNED: + printf("%db u ", fmt->sampleWidth); + break; + case AF_SAMPFMT_FLOAT: + printf("flt "); + break; + case AF_SAMPFMT_DOUBLE: + printf("dbl "); + break; + default: + printf("%dsampfmt? ", fmt->sampleFormat); + } + + /* pcm */ + printf("(%.30g+-%.30g [%.30g,%.30g]) ", + fmt->pcm.intercept, fmt->pcm.slope, + fmt->pcm.minClip, fmt->pcm.maxClip); + + /* byteOrder */ + switch (fmt->byteOrder) + { + case AF_BYTEORDER_BIGENDIAN: + printf("big "); + break; + case AF_BYTEORDER_LITTLEENDIAN: + printf("little "); + break; + default: + printf("%dbyteorder? ", fmt->byteOrder); + break; + } + + /* compression */ + { + const CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType); + if (!unit) + printf("%dcompression?", fmt->compressionType); + else if (fmt->compressionType == AF_COMPRESSION_NONE) + printf("pcm"); + else + printf("%s", unit->label); + } + + printf(" }"); +} + +void _af_print_tracks (AFfilehandle filehandle) +{ + for (int i=0; im_trackCount; i++) + { + Track *track = &filehandle->m_tracks[i]; + printf("track %d\n", i); + printf(" id %d\n", track->id); + printf(" sample format\n"); + _af_print_audioformat(&track->f); + printf(" virtual format\n"); + _af_print_audioformat(&track->v); + printf(" total file frames: %jd\n", + (intmax_t) track->totalfframes); + printf(" total virtual frames: %jd\n", + (intmax_t) track->totalvframes); + printf(" next file frame: %jd\n", + (intmax_t) track->nextfframe); + printf(" next virtual frame: %jd\n", + (intmax_t) track->nextvframe); + printf(" frames to ignore: %jd\n", + (intmax_t) track->frames2ignore); + + printf(" data_size: %jd\n", + (intmax_t) track->data_size); + printf(" fpos_first_frame: %jd\n", + (intmax_t) track->fpos_first_frame); + printf(" fpos_next_frame: %jd\n", + (intmax_t) track->fpos_next_frame); + printf(" fpos_after_data: %jd\n", + (intmax_t) track->fpos_after_data); + + printf(" channel matrix:"); + _af_print_channel_matrix(track->channelMatrix, + track->f.channelCount, track->v.channelCount); + printf("\n"); + + printf(" marker count: %d\n", track->markerCount); + } +} + +void _af_print_filehandle (AFfilehandle filehandle) +{ + printf("file handle: 0x%p\n", filehandle); + + if (filehandle->m_valid == _AF_VALID_FILEHANDLE) + printf("valid\n"); + else + printf("invalid!\n"); + + printf(" access: "); + if (filehandle->m_access == _AF_READ_ACCESS) + putchar('r'); + else + putchar('w'); + + printf(" fileFormat: %d\n", filehandle->m_fileFormat); + + printf(" instrument count: %d\n", filehandle->m_instrumentCount); + printf(" instruments: 0x%p\n", filehandle->m_instruments); + + printf(" miscellaneous count: %d\n", filehandle->m_miscellaneousCount); + printf(" miscellaneous: 0x%p\n", filehandle->m_miscellaneous); + + printf(" trackCount: %d\n", filehandle->m_trackCount); + printf(" tracks: 0x%p\n", filehandle->m_tracks); + _af_print_tracks(filehandle); +} + +void _af_print_channel_matrix (double *matrix, int fchans, int vchans) +{ + int v, f; + + if (!matrix) + { + printf("NULL"); + return; + } + + printf("{"); + for (v=0; v < vchans; v++) + { + if (v) printf(" "); + printf("{"); + for (f=0; f < fchans; f++) + { + if (f) printf(" "); + printf("%5.2f", *(matrix + v*fchans + f)); + } + printf("}"); + } + printf("}"); +} + +void _af_print_frame (AFframecount frameno, double *frame, int nchannels, + char *formatstring, int numberwidth, + double slope, double intercept, double minclip, double maxclip) +{ + char linebuf[81]; + int wavewidth = 78 - numberwidth*nchannels - 6; + int c; + + memset(linebuf, ' ', 80); + linebuf[0] = '|'; + linebuf[wavewidth-1] = '|'; + linebuf[wavewidth] = 0; + + printf("%05jd ", (intmax_t) frameno); + + for (c=0; c < nchannels; c++) + { + double pcm = frame[c]; + printf(formatstring, pcm); + } + for (c=0; c < nchannels; c++) + { + double pcm = frame[c], volts; + if (maxclip > minclip) + { + if (pcm < minclip) pcm = minclip; + if (pcm > maxclip) pcm = maxclip; + } + volts = (pcm - intercept) / slope; + linebuf[(int)((volts/2 + 0.5)*(wavewidth-3)) + 1] = '0' + c; + } + printf("%s\n", linebuf); +} + +// file: error.c +/* + Audio File Library + Copyright (C) 1998, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + error.c + + This file contains the routines used in the Audio File Library's + error handling. +*/ + + +#include +#include +#include + +static void defaultErrorFunction (long error, const char *str); + +static AFerrfunc errorFunction = defaultErrorFunction; + +AFerrfunc afSetErrorHandler (AFerrfunc efunc) +{ + AFerrfunc old; + + old = errorFunction; + errorFunction = efunc; + + return old; +} + +static void defaultErrorFunction (long error, const char *str) +{ + fprintf(stderr, "Audio File Library: "); + fprintf(stderr, "%s", str); + fprintf(stderr, " [error %ld]\n", error); +} + +void _af_error (int errorCode, const char *fmt, ...) +{ + char buf[1024]; + va_list ap; + + va_start(ap, fmt); + + vsnprintf(buf, 1024, fmt, ap); + + va_end(ap); + + if (errorFunction != NULL) + errorFunction(errorCode, buf); +} + +// file: extended.c +/* Copyright (C) 1989-1991 Apple Computer, Inc. + * + * All rights reserved. + * + * Warranty Information + * Even though Apple has reviewed this software, Apple makes no warranty + * or representation, either express or implied, with respect to this + * software, its quality, accuracy, merchantability, or fitness for a + * particular purpose. As a result, this software is provided "as is," + * and you, its user, are assuming the entire risk as to its quality + * and accuracy. + * + * This code may be used and freely distributed as long as it includes + * this copyright notice and the above warranty information. + * + * Machine-independent I/O routines for IEEE floating-point numbers. + * + * NaN's and infinities are converted to HUGE_VAL or HUGE, which + * happens to be infinity on IEEE machines. Unfortunately, it is + * impossible to preserve NaN's in a machine-independent way. + * Infinities are, however, preserved on IEEE machines. + * + * These routines have been tested on the following machines: + * Apple Macintosh, MPW 3.1 C compiler + * Apple Macintosh, THINK C compiler + * Silicon Graphics IRIS, MIPS compiler + * Cray X/MP and Y/MP + * Digital Equipment VAX + * Sequent Balance (Multiprocesor 386) + * NeXT + * + * + * Implemented by Malcolm Slaney and Ken Turkowski. + * + * Malcolm Slaney contributions during 1988-1990 include big- and little- + * endian file I/O, conversion to and from Motorola's extended 80-bit + * floating-point format, and conversions to and from IEEE single- + * precision floating-point format. + * + * In 1991, Ken Turkowski implemented the conversions to and from + * IEEE double-precision format, added more precision to the extended + * conversions, and accommodated conversions involving +/- infinity, + * NaN's, and denormalized numbers. + */ + +/**************************************************************** + * Extended precision IEEE floating-point conversion routines. + * Extended is an 80-bit number as defined by Motorola, + * with a sign bit, 15 bits of exponent (offset 16383?), + * and a 64-bit mantissa, with no hidden bit. + ****************************************************************/ + + +#include + +#ifndef HUGE_VAL +#define HUGE_VAL HUGE +#endif + +#define FloatToUnsigned(f) ((unsigned long) (((long) (f - 2147483648.0)) + 2147483647L) + 1) + +void _af_convert_to_ieee_extended (double num, unsigned char *bytes) +{ + int sign; + int expon; + double fMant, fsMant; + unsigned long hiMant, loMant; + + if (num < 0) { + sign = 0x8000; + num *= -1; + } else { + sign = 0; + } + + if (num == 0) { + expon = 0; hiMant = 0; loMant = 0; + } + else { + fMant = frexp(num, &expon); + if ((expon > 16384) || !(fMant < 1)) { /* Infinity or NaN */ + expon = sign|0x7FFF; hiMant = 0; loMant = 0; /* infinity */ + } + else { /* Finite */ + expon += 16382; + if (expon < 0) { /* denormalized */ + fMant = ldexp(fMant, expon); + expon = 0; + } + expon |= sign; + fMant = ldexp(fMant, 32); + fsMant = floor(fMant); + hiMant = FloatToUnsigned(fsMant); + fMant = ldexp(fMant - fsMant, 32); + fsMant = floor(fMant); + loMant = FloatToUnsigned(fsMant); + } + } + + bytes[0] = expon >> 8; + bytes[1] = expon; + bytes[2] = hiMant >> 24; + bytes[3] = hiMant >> 16; + bytes[4] = hiMant >> 8; + bytes[5] = hiMant; + bytes[6] = loMant >> 24; + bytes[7] = loMant >> 16; + bytes[8] = loMant >> 8; + bytes[9] = loMant; +} + +#define UnsignedToFloat(u) (((double) ((long) (u - 2147483647L - 1))) + 2147483648.0) + +double _af_convert_from_ieee_extended (const unsigned char *bytes) +{ + double f; + int expon; + unsigned long hiMant, loMant; + + expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF); + hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24) + | ((unsigned long) (bytes[3] & 0xFF) << 16) + | ((unsigned long) (bytes[4] & 0xFF) << 8) + | ((unsigned long) (bytes[5] & 0xFF)); + loMant = ((unsigned long) (bytes[6] & 0xFF) << 24) + | ((unsigned long) (bytes[7] & 0xFF) << 16) + | ((unsigned long) (bytes[8] & 0xFF) << 8) + | ((unsigned long) (bytes[9] & 0xFF)); + + if (expon == 0 && hiMant == 0 && loMant == 0) { + f = 0; + } + else { + if (expon == 0x7FFF) { /* Infinity or NaN */ + f = HUGE_VAL; + } + else { + expon -= 16383; + f = ldexp(UnsignedToFloat(hiMant), expon-=31); + f += ldexp(UnsignedToFloat(loMant), expon-=32); + } + } + + if (bytes[0] & 0x80) + return -f; + else + return f; +} + +// file: format.cpp +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + audiofile.c + + This file implements many of the main interface routines of the + Audio File Library. +*/ + + +#include +#include +#include +#include + + +AFfileoffset afGetDataOffset (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->fpos_first_frame; +} + +AFfileoffset afGetTrackBytes (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->data_size; +} + +/* + afGetFrameSize returns the size (in bytes) of a sample frame from + the specified track of an audio file. + + stretch3to4 == true: size which user sees + stretch3to4 == false: size used in file +*/ +float afGetFrameSize (AFfilehandle file, int trackid, int stretch3to4) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return _af_format_frame_size(&track->f, stretch3to4); +} + +float afGetVirtualFrameSize (AFfilehandle file, int trackid, int stretch3to4) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return _af_format_frame_size(&track->v, stretch3to4); +} + +AFframecount afSeekFrame (AFfilehandle file, int trackid, AFframecount frame) +{ + if (!_af_filehandle_ok(file)) + return -1; + + if (!file->checkCanRead()) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + if (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL) + return -1; + + if (frame < 0) + return track->nextvframe; + + /* Optimize the case of seeking to the current position. */ + if (frame == track->nextvframe) + return track->nextvframe; + + /* Limit request to the number of frames in the file. */ + if (track->totalvframes != -1) + if (frame > track->totalvframes) + frame = track->totalvframes - 1; + + /* + Now that the modules are not dirty and frame + represents a valid virtual frame, we call + _AFsetupmodules again after setting track->nextvframe. + + _AFsetupmodules will look at track->nextvframe and + compute track->nextfframe in clever and mysterious + ways. + */ + track->nextvframe = frame; + + if (track->ms->setup(file, track) == AF_FAIL) + return -1; + + return track->nextvframe; +} + +AFfileoffset afTellFrame (AFfilehandle file, int trackid) +{ + return afSeekFrame(file, trackid, -1); +} + +int afSetVirtualByteOrder (AFfilehandle file, int trackid, int byteorder) +{ + if (!_af_filehandle_ok(file)) + return AF_FAIL; + + Track *track = file->getTrack(trackid); + if (!track) + return AF_FAIL; + + if (byteorder != AF_BYTEORDER_BIGENDIAN && + byteorder != AF_BYTEORDER_LITTLEENDIAN) + { + _af_error(AF_BAD_BYTEORDER, "invalid byte order %d", byteorder); + return AF_FAIL; + } + + track->v.byteOrder = byteorder; + track->ms->setDirty(); + + return AF_SUCCEED; +} + +int afGetByteOrder (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->f.byteOrder; +} + +int afGetVirtualByteOrder (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->v.byteOrder; +} + +AFframecount afGetFrameCount (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + if (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL) + return -1; + + return track->totalvframes; +} + +double afGetRate (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->f.sampleRate; +} + +int afGetChannels (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->f.channelCount; +} + +void afGetSampleFormat (AFfilehandle file, int trackid, int *sampleFormat, int *sampleWidth) +{ + if (!_af_filehandle_ok(file)) + return; + + Track *track = file->getTrack(trackid); + if (!track) + return; + + if (sampleFormat) + *sampleFormat = track->f.sampleFormat; + + if (sampleWidth) + *sampleWidth = track->f.sampleWidth; +} + +void afGetVirtualSampleFormat (AFfilehandle file, int trackid, int *sampleFormat, int *sampleWidth) +{ + if (!_af_filehandle_ok(file)) + return; + + Track *track = file->getTrack(trackid); + if (!track) + return; + + if (sampleFormat) + *sampleFormat = track->v.sampleFormat; + + if (sampleWidth) + *sampleWidth = track->v.sampleWidth; +} + +int afSetVirtualSampleFormat (AFfilehandle file, int trackid, + int sampleFormat, int sampleWidth) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + if (_af_set_sample_format(&track->v, sampleFormat, sampleWidth) == AF_FAIL) + return -1; + + track->ms->setDirty(); + + return 0; +} + +/* XXXmpruett fix the version */ +int afGetFileFormat (AFfilehandle file, int *version) +{ + if (!_af_filehandle_ok(file)) + return -1; + + if (version != NULL) + *version = file->getVersion(); + + return file->m_fileFormat; +} + +int afSetVirtualChannels (AFfilehandle file, int trackid, int channelCount) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + track->v.channelCount = channelCount; + track->ms->setDirty(); + + if (track->channelMatrix) + free(track->channelMatrix); + track->channelMatrix = NULL; + + return 0; +} + +double afGetVirtualRate (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->v.sampleRate; +} + +int afSetVirtualRate (AFfilehandle file, int trackid, double rate) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + if (rate < 0) + { + _af_error(AF_BAD_RATE, "invalid sampling rate %.30g", rate); + return -1; + } + + track->v.sampleRate = rate; + track->ms->setDirty(); + + return 0; +} + +void afSetChannelMatrix (AFfilehandle file, int trackid, double* matrix) +{ + if (!_af_filehandle_ok(file)) + return; + + Track *track = file->getTrack(trackid); + if (!track) + return; + + if (track->channelMatrix != NULL) + free(track->channelMatrix); + track->channelMatrix = NULL; + + if (matrix != NULL) + { + int i, size; + + size = track->v.channelCount * track->f.channelCount; + + track->channelMatrix = (double *) malloc(size * sizeof (double)); + + for (i = 0; i < size; i++) + track->channelMatrix[i] = matrix[i]; + } +} + +int afGetVirtualChannels (AFfilehandle file, int trackid) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + return track->v.channelCount; +} + +// file: g711.c +/* + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use. Users may copy or modify this source code without + * charge. + * + * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING + * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#define SUPERCEDED + +/* + * g711.c + * + * u-law, A-law and linear PCM conversions. + */ +#define SIGN_BIT (0x80) /* Sign bit for a A-law byte. */ +#define QUANT_MASK (0xf) /* Quantization field mask. */ +#define NSEGS (8) /* Number of A-law segments. */ +#define SEG_SHIFT (4) /* Left shift for segment number. */ +#define SEG_MASK (0x70) /* Segment field mask. */ + +/* see libst.h */ +#ifdef SUPERCEDED + +static const short seg_end[8] = {0xFF, 0x1FF, 0x3FF, 0x7FF, + 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF}; + +static int search(int val, const short *table, int size) +{ + int i; + + for (i = 0; i < size; i++) { + if (val <= *table++) + return (i); + } + return (size); +} + +/* + * linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law + * + * linear2alaw() accepts an 16-bit integer and encodes it as A-law data. + * + * Linear Input Code Compressed Code + * ------------------------ --------------- + * 0000000wxyza 000wxyz + * 0000001wxyza 001wxyz + * 000001wxyzab 010wxyz + * 00001wxyzabc 011wxyz + * 0001wxyzabcd 100wxyz + * 001wxyzabcde 101wxyz + * 01wxyzabcdef 110wxyz + * 1wxyzabcdefg 111wxyz + * + * For further information see John C. Bellamy's Digital Telephony, 1982, + * John Wiley & Sons, pps 98-111 and 472-476. + */ +unsigned char +_af_linear2alaw(int pcm_val) +{ + int mask; + int seg; + unsigned char aval; + + if (pcm_val >= 0) { + mask = 0xD5; /* sign (7th) bit = 1 */ + } else { + mask = 0x55; /* sign bit = 0 */ + pcm_val = -pcm_val - 8; + } + + /* Convert the scaled magnitude to segment number. */ + seg = search(pcm_val, seg_end, 8); + + /* Combine the sign, segment, and quantization bits. */ + + if (seg >= 8) /* out of range, return maximum value. */ + return (0x7F ^ mask); + else { + aval = seg << SEG_SHIFT; + if (seg < 2) + aval |= (pcm_val >> 4) & QUANT_MASK; + else + aval |= (pcm_val >> (seg + 3)) & QUANT_MASK; + return (aval ^ mask); + } +} + +/* + * alaw2linear() - Convert an A-law value to 16-bit linear PCM + * + */ +int +_af_alaw2linear(unsigned char a_val) +{ + int t; + int seg; + + a_val ^= 0x55; + + t = (a_val & QUANT_MASK) << 4; + seg = ((unsigned)a_val & SEG_MASK) >> SEG_SHIFT; + switch (seg) { + case 0: + t += 8; + break; + case 1: + t += 0x108; + break; + default: + t += 0x108; + t <<= seg - 1; + } + return ((a_val & SIGN_BIT) ? t : -t); +} + +#define BIAS (0x84) /* Bias for linear code. */ + +/* + * linear2ulaw() - Convert a linear PCM value to u-law + * + * In order to simplify the encoding process, the original linear magnitude + * is biased by adding 33 which shifts the encoding range from (0 - 8158) to + * (33 - 8191). The result can be seen in the following encoding table: + * + * Biased Linear Input Code Compressed Code + * ------------------------ --------------- + * 00000001wxyza 000wxyz + * 0000001wxyzab 001wxyz + * 000001wxyzabc 010wxyz + * 00001wxyzabcd 011wxyz + * 0001wxyzabcde 100wxyz + * 001wxyzabcdef 101wxyz + * 01wxyzabcdefg 110wxyz + * 1wxyzabcdefgh 111wxyz + * + * Each biased linear code has a leading 1 which identifies the segment + * number. The value of the segment number is equal to 7 minus the number + * of leading 0's. The quantization interval is directly available as the + * four bits wxyz. * The trailing bits (a - h) are ignored. + * + * Ordinarily the complement of the resulting code word is used for + * transmission, and so the code word is complemented before it is returned. + * + * For further information see John C. Bellamy's Digital Telephony, 1982, + * John Wiley & Sons, pps 98-111 and 472-476. + */ + +/* 2's complement (16-bit range) */ +unsigned char _af_linear2ulaw (int pcm_val) +{ + int mask; + int seg; + unsigned char uval; + + /* Get the sign and the magnitude of the value. */ + if (pcm_val < 0) { + pcm_val = BIAS - pcm_val; + mask = 0x7F; + } else { + pcm_val += BIAS; + mask = 0xFF; + } + + /* Convert the scaled magnitude to segment number. */ + seg = search(pcm_val, seg_end, 8); + + /* + * Combine the sign, segment, quantization bits; + * and complement the code word. + */ + if (seg >= 8) /* out of range, return maximum value. */ + return (0x7F ^ mask); + else { + uval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0xF); + return (uval ^ mask); + } + +} + +/* + * ulaw2linear() - Convert a u-law value to 16-bit linear PCM + * + * First, a biased linear code is derived from the code word. An unbiased + * output can then be obtained by subtracting 33 from the biased code. + * + * Note that this function expects to be passed the complement of the + * original code word. This is in keeping with ISDN conventions. + */ +int _af_ulaw2linear (unsigned char u_val) +{ + int t; + + /* Complement to obtain normal u-law value. */ + u_val = ~u_val; + + /* + * Extract and bias the quantization bits. Then + * shift up by the segment number and subtract out the bias. + */ + t = ((u_val & QUANT_MASK) << 3) + BIAS; + t <<= ((unsigned)u_val & SEG_MASK) >> SEG_SHIFT; + + return ((u_val & SIGN_BIT) ? (BIAS - t) : (t - BIAS)); +} + +#endif + +// file: openclose.cpp +/* + Audio File Library + Copyright (C) 2000-2001, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + + +#include +#include +#include + +#ifdef HAVE_UNISTD_H +#include +#endif + +#include + + +static status _afOpenFile (int access, File *f, const char *filename, + AFfilehandle *file, AFfilesetup filesetup); + +int _af_identify (File *f, int *implemented) +{ + if (!f->canSeek()) + { + _af_error(AF_BAD_LSEEK, "Cannot seek in file"); + return AF_FILE_UNKNOWN; + } + + AFfileoffset curpos = f->tell(); + + for (int i=0; i<_AF_NUM_UNITS; i++) + { + if (_af_units[i].recognize && + _af_units[i].recognize(f)) + { + if (implemented != NULL) + *implemented = _af_units[i].implemented; + f->seek(curpos, File::SeekFromBeginning); + return _af_units[i].fileFormat; + } + } + + f->seek(curpos, File::SeekFromBeginning); + + if (implemented != NULL) + *implemented = false; + + return AF_FILE_UNKNOWN; +} + +int afIdentifyFD (int fd) +{ + /* + Duplicate the file descriptor since otherwise the + original file descriptor would get closed when we close + the virtual file below. + */ + fd = dup(fd); + File *f = File::create(fd, File::ReadAccess); + + int result = _af_identify(f, NULL); + + delete f; + + return result; +} + +int afIdentifyNamedFD (int fd, const char *filename, int *implemented) +{ + /* + Duplicate the file descriptor since otherwise the + original file descriptor would get closed when we close + the virtual file below. + */ + fd = dup(fd); + + File *f = File::create(fd, File::ReadAccess); + if (!f) + { + _af_error(AF_BAD_OPEN, "could not open file '%s'", filename); + return AF_FILE_UNKNOWN; + } + + int result = _af_identify(f, implemented); + + delete f; + + return result; +} + +AFfilehandle afOpenFD (int fd, const char *mode, AFfilesetup setup) +{ + if (!mode) + { + _af_error(AF_BAD_ACCMODE, "null access mode"); + return AF_NULL_FILEHANDLE; + } + + int access; + if (mode[0] == 'r') + { + access = _AF_READ_ACCESS; + } + else if (mode[0] == 'w') + { + access = _AF_WRITE_ACCESS; + } + else + { + _af_error(AF_BAD_ACCMODE, "unrecognized access mode '%s'", mode); + return AF_NULL_FILEHANDLE; + } + + File *f = File::create(fd, access == _AF_READ_ACCESS ? + File::ReadAccess : File::WriteAccess); + + AFfilehandle filehandle = NULL; + if (_afOpenFile(access, f, NULL, &filehandle, setup) != AF_SUCCEED) + { + delete f; + } + + return filehandle; +} + +AFfilehandle afOpenNamedFD (int fd, const char *mode, AFfilesetup setup, + const char *filename) +{ + if (!mode) + { + _af_error(AF_BAD_ACCMODE, "null access mode"); + return AF_NULL_FILEHANDLE; + } + + int access; + if (mode[0] == 'r') + access = _AF_READ_ACCESS; + else if (mode[0] == 'w') + access = _AF_WRITE_ACCESS; + else + { + _af_error(AF_BAD_ACCMODE, "unrecognized access mode '%s'", mode); + return AF_NULL_FILEHANDLE; + } + + File *f = File::create(fd, access == _AF_READ_ACCESS ? + File::ReadAccess : File::WriteAccess); + + AFfilehandle filehandle; + if (_afOpenFile(access, f, filename, &filehandle, setup) != AF_SUCCEED) + { + delete f; + } + + return filehandle; +} + +AFfilehandle afOpenFile (const char *filename, const char *mode, AFfilesetup setup) +{ + if (!mode) + { + _af_error(AF_BAD_ACCMODE, "null access mode"); + return AF_NULL_FILEHANDLE; + } + + int access; + if (mode[0] == 'r') + { + access = _AF_READ_ACCESS; + } + else if (mode[0] == 'w') + { + access = _AF_WRITE_ACCESS; + } + else + { + _af_error(AF_BAD_ACCMODE, "unrecognized access mode '%s'", mode); + return AF_NULL_FILEHANDLE; + } + + File *f = File::open(filename, + access == _AF_READ_ACCESS ? File::ReadAccess : File::WriteAccess); + if (!f) + { + _af_error(AF_BAD_OPEN, "could not open file '%s'", filename); + return AF_NULL_FILEHANDLE; + } + + AFfilehandle filehandle; + if (_afOpenFile(access, f, filename, &filehandle, setup) != AF_SUCCEED) + { + delete f; + } + + return filehandle; +} + +AFfilehandle afOpenVirtualFile (AFvirtualfile *vf, const char *mode, + AFfilesetup setup) +{ + if (!vf) + { + _af_error(AF_BAD_OPEN, "null virtual file"); + return AF_NULL_FILEHANDLE; + } + + if (!mode) + { + _af_error(AF_BAD_ACCMODE, "null access mode"); + return AF_NULL_FILEHANDLE; + } + + int access; + if (mode[0] == 'r') + { + access = _AF_READ_ACCESS; + } + else if (mode[0] == 'w') + { + access = _AF_WRITE_ACCESS; + } + else + { + _af_error(AF_BAD_ACCMODE, "unrecognized access mode '%s'", mode); + return AF_NULL_FILEHANDLE; + } + + File *f = File::create(vf, + access == _AF_READ_ACCESS ? File::ReadAccess : File::WriteAccess); + if (!f) + { + _af_error(AF_BAD_OPEN, "could not open virtual file"); + return AF_NULL_FILEHANDLE; + } + + AFfilehandle filehandle; + if (_afOpenFile(access, f, NULL, &filehandle, setup) != AF_SUCCEED) + { + delete f; + } + + return filehandle; +} + +static status _afOpenFile (int access, File *f, const char *filename, + AFfilehandle *file, AFfilesetup filesetup) +{ + int fileFormat = AF_FILE_UNKNOWN; + int implemented = true; + + int userSampleFormat = 0; + double userSampleRate = 0.0; + PCMInfo userPCM = {0}; + bool userFormatSet = false; + + AFfilehandle filehandle = AF_NULL_FILEHANDLE; + AFfilesetup completesetup = AF_NULL_FILESETUP; + + *file = AF_NULL_FILEHANDLE; + + if (access == _AF_WRITE_ACCESS || filesetup != AF_NULL_FILESETUP) + { + if (!_af_filesetup_ok(filesetup)) + return AF_FAIL; + + fileFormat = filesetup->fileFormat; + if (access == _AF_READ_ACCESS && fileFormat != AF_FILE_RAWDATA) + { + _af_error(AF_BAD_FILESETUP, + "warning: opening file for read access: " + "ignoring file setup with non-raw file format"); + filesetup = AF_NULL_FILESETUP; + fileFormat = _af_identify(f, &implemented); + } + } + else if (filesetup == AF_NULL_FILESETUP) + fileFormat = _af_identify(f, &implemented); + + if (fileFormat == AF_FILE_UNKNOWN) + { + if (filename != NULL) + _af_error(AF_BAD_NOT_IMPLEMENTED, + "'%s': unrecognized audio file format", + filename); + else + _af_error(AF_BAD_NOT_IMPLEMENTED, + "unrecognized audio file format"); + return AF_FAIL; + } + + const char *formatName = _af_units[fileFormat].name; + + if (!implemented) + { + _af_error(AF_BAD_NOT_IMPLEMENTED, + "%s format not currently supported", formatName); + } + + completesetup = NULL; + if (filesetup != AF_NULL_FILESETUP) + { + userSampleFormat = filesetup->tracks[0].f.sampleFormat; + userPCM = filesetup->tracks[0].f.pcm; + userSampleRate = filesetup->tracks[0].f.sampleRate; + userFormatSet = true; + if ((completesetup = _af_units[fileFormat].completesetup(filesetup)) == NULL) + return AF_FAIL; + } + + filehandle = _AFfilehandle::create(fileFormat); + if (!filehandle) + { + if (completesetup) + afFreeFileSetup(completesetup); + return AF_FAIL; + } + + filehandle->m_fh = f; + filehandle->m_access = access; + filehandle->m_seekok = f->canSeek(); + if (filename != NULL) + filehandle->m_fileName = strdup(filename); + else + filehandle->m_fileName = NULL; + filehandle->m_fileFormat = fileFormat; + + status result = access == _AF_READ_ACCESS ? + filehandle->readInit(completesetup) : + filehandle->writeInit(completesetup); + + if (result != AF_SUCCEED) + { + delete filehandle; + filehandle = AF_NULL_FILEHANDLE; + if (completesetup) + afFreeFileSetup(completesetup); + return AF_FAIL; + } + + if (completesetup) + afFreeFileSetup(completesetup); + + /* + Initialize virtual format. + */ + for (int t=0; tm_trackCount; t++) + { + Track *track = &filehandle->m_tracks[t]; + + track->v = track->f; + + if (userFormatSet) + { + track->v.sampleFormat = userSampleFormat; + track->v.pcm = userPCM; + track->v.sampleRate = userSampleRate; + } + + track->v.compressionType = AF_COMPRESSION_NONE; + track->v.compressionParams = NULL; + +#if WORDS_BIGENDIAN + track->v.byteOrder = AF_BYTEORDER_BIGENDIAN; +#else + track->v.byteOrder = AF_BYTEORDER_LITTLEENDIAN; +#endif + + track->ms = new ModuleState(); + if (track->ms->init(filehandle, track) == AF_FAIL) + { + delete filehandle; + return AF_FAIL; + } + } + + *file = filehandle; + + return AF_SUCCEED; +} + +int afSyncFile (AFfilehandle handle) +{ + if (!_af_filehandle_ok(handle)) + return -1; + + if (handle->m_access == _AF_WRITE_ACCESS) + { + /* Finish writes on all tracks. */ + for (int trackno = 0; trackno < handle->m_trackCount; trackno++) + { + Track *track = &handle->m_tracks[trackno]; + + if (track->ms->isDirty() && track->ms->setup(handle, track) == AF_FAIL) + return -1; + + if (track->ms->sync(handle, track) != AF_SUCCEED) + return -1; + } + + /* Update file headers. */ + if (handle->update() != AF_SUCCEED) + return AF_FAIL; + } + else if (handle->m_access == _AF_READ_ACCESS) + { + /* Do nothing. */ + } + else + { + _af_error(AF_BAD_ACCMODE, "unrecognized access mode %d", + handle->m_access); + return AF_FAIL; + } + + return AF_SUCCEED; +} + +int afCloseFile (AFfilehandle file) +{ + int err; + + if (!_af_filehandle_ok(file)) + return -1; + + afSyncFile(file); + + err = file->m_fh->close(); + if (err < 0) + _af_error(AF_BAD_CLOSE, "close returned %d", err); + + delete file->m_fh; + delete file; + + return 0; +} + +// file: pcm.cpp +/* + Audio File Library + Copyright (C) 1999-2000, Michael Pruett + Copyright (C) 2000-2001, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + pcm.cpp + + This file declares default PCM mappings and defines routines + for accessing and modifying PCM mappings in a track. +*/ + + + +extern const PCMInfo _af_default_signed_integer_pcm_mappings[] = +{ + {0, 0, 0, 0}, + {SLOPE_INT8, 0, MIN_INT8, MAX_INT8}, + {SLOPE_INT16, 0, MIN_INT16, MAX_INT16}, + {SLOPE_INT24, 0, MIN_INT24, MAX_INT24}, + {SLOPE_INT32, 0, MIN_INT32, MAX_INT32} +}; + +extern const PCMInfo _af_default_unsigned_integer_pcm_mappings[] = +{ + {0, 0, 0, 0}, + {SLOPE_INT8, INTERCEPT_U_INT8, 0, MAX_U_INT8}, + {SLOPE_INT16, INTERCEPT_U_INT16, 0, MAX_U_INT16}, + {SLOPE_INT24, INTERCEPT_U_INT24, 0, MAX_U_INT24}, + {SLOPE_INT32, INTERCEPT_U_INT32, 0, MAX_U_INT32} +}; + +extern const PCMInfo _af_default_float_pcm_mapping = +{1, 0, 0, 0}; + +extern const PCMInfo _af_default_double_pcm_mapping = +{1, 0, 0, 0}; + +/* + Initialize the PCM mapping for a given track. +*/ +void afInitPCMMapping (AFfilesetup setup, int trackid, + double slope, double intercept, double minClip, double maxClip) +{ + if (!_af_filesetup_ok(setup)) + return; + + TrackSetup *track = setup->getTrack(trackid); + if (!track) + return; + + track->f.pcm.slope = slope; + track->f.pcm.intercept = intercept; + track->f.pcm.minClip = minClip; + track->f.pcm.maxClip = maxClip; +} + +int afSetVirtualPCMMapping (AFfilehandle file, int trackid, + double slope, double intercept, double minClip, double maxClip) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + track->v.pcm.slope = slope; + track->v.pcm.intercept = intercept; + track->v.pcm.minClip = minClip; + track->v.pcm.maxClip = maxClip; + + track->ms->setDirty(); + + return 0; +} + +int afSetTrackPCMMapping (AFfilehandle file, int trackid, + double slope, double intercept, double minClip, double maxClip) +{ + if (!_af_filehandle_ok(file)) + return -1; + + Track *track = file->getTrack(trackid); + if (!track) + return -1; + + /* + NOTE: this is highly unusual: we don't ordinarily + change track.f after the file is opened. + + PCM mapping is the exception because this information + is not encoded in sound files' headers using today's + formats, so the user will probably want to set this + information on a regular basis. The defaults may or + may not be what the user wants. + */ + + track->f.pcm.slope = slope; + track->f.pcm.intercept = intercept; + track->f.pcm.minClip = minClip; + track->f.pcm.maxClip = maxClip; + + track->ms->setDirty(); + + return 0; +} + +void afGetPCMMapping (AFfilehandle file, int trackid, + double *slope, double *intercept, double *minClip, double *maxClip) +{ + if (!_af_filehandle_ok(file)) + return; + + Track *track = file->getTrack(trackid); + if (!track) + return; + + if (slope) + *slope = track->f.pcm.slope; + if (intercept) + *intercept = track->f.pcm.intercept; + if (minClip) + *minClip = track->f.pcm.minClip; + if (maxClip) + *maxClip = track->f.pcm.maxClip; +} + +void afGetVirtualPCMMapping (AFfilehandle file, int trackid, + double *slope, double *intercept, double *minClip, double *maxClip) +{ + if (!_af_filehandle_ok(file)) + return; + + Track *track = file->getTrack(trackid); + if (!track) + return; + + if (slope) + *slope = track->v.pcm.slope; + if (intercept) + *intercept = track->v.pcm.intercept; + if (minClip) + *minClip = track->v.pcm.minClip; + if (maxClip) + *maxClip = track->v.pcm.maxClip; +} + +// file: query.cpp +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + query.cpp + + This file contains the implementation of the Audio File Library's + query mechanism. Querying through the afQuery calls can allow the + programmer to determine the capabilities and characteristics of + the Audio File Library implementation and its supported formats. +*/ + + +#include +#include + + +AUpvlist _afQueryFileFormat (int arg1, int arg2, int arg3, int arg4); +AUpvlist _afQueryInstrument (int arg1, int arg2, int arg3, int arg4); +AUpvlist _afQueryInstrumentParameter (int arg1, int arg2, int arg3, int arg4); +AUpvlist _afQueryLoop (int arg1, int arg2, int arg3, int arg4); +AUpvlist _afQueryMarker (int arg1, int arg2, int arg3, int arg4); +AUpvlist _afQueryMiscellaneous (int arg1, int arg2, int arg3, int arg4); +AUpvlist _afQueryCompression (int arg1, int arg2, int arg3, int arg4); +AUpvlist _afQueryCompressionParameter (int arg1, int arg2, int arg3, int arg4); + +AUpvlist afQuery (int querytype, int arg1, int arg2, int arg3, int arg4) +{ + switch (querytype) + { + case AF_QUERYTYPE_INST: + return _afQueryInstrument(arg1, arg2, arg3, arg4); + case AF_QUERYTYPE_INSTPARAM: + return _afQueryInstrumentParameter(arg1, arg2, arg3, arg4); + case AF_QUERYTYPE_LOOP: + return _afQueryLoop(arg1, arg2, arg3, arg4); + case AF_QUERYTYPE_FILEFMT: + return _afQueryFileFormat(arg1, arg2, arg3, arg4); + case AF_QUERYTYPE_COMPRESSION: + return _afQueryCompression(arg1, arg2, arg3, arg4); + case AF_QUERYTYPE_COMPRESSIONPARAM: + /* FIXME: This selector is not implemented. */ + return AU_NULL_PVLIST; + case AF_QUERYTYPE_MISC: + /* FIXME: This selector is not implemented. */ + return AU_NULL_PVLIST; + case AF_QUERYTYPE_MARK: + return _afQueryMarker(arg1, arg2, arg3, arg4); + } + + _af_error(AF_BAD_QUERYTYPE, "bad query type"); + return AU_NULL_PVLIST; +} + +/* ARGSUSED3 */ +AUpvlist _afQueryFileFormat (int arg1, int arg2, int arg3, int arg4) +{ + switch (arg1) + { + /* The following select only on arg1. */ + case AF_QUERY_ID_COUNT: + { + int count = 0, idx; + for (idx = 0; idx < _AF_NUM_UNITS; idx++) + if (_af_units[idx].implemented) + count++; + return _af_pv_long(count); + } + /* NOTREACHED */ + break; + + case AF_QUERY_IDS: + { + int count = 0, idx; + int *buffer; + + buffer = (int *) _af_calloc(_AF_NUM_UNITS, sizeof (int)); + if (buffer == NULL) + return AU_NULL_PVLIST; + + for (idx = 0; idx < _AF_NUM_UNITS; idx++) + if (_af_units[idx].implemented) + buffer[count++] = idx; + + if (count == 0) + { + free(buffer); + return AU_NULL_PVLIST; + } + + return _af_pv_pointer(buffer); + } + /* NOTREACHED */ + break; + + /* The following select on arg2. */ + case AF_QUERY_LABEL: + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + return _af_pv_pointer(const_cast(_af_units[arg2].label)); + + case AF_QUERY_NAME: + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + return _af_pv_pointer(const_cast(_af_units[arg2].name)); + + case AF_QUERY_DESC: + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + return _af_pv_pointer(const_cast(_af_units[arg2].description)); + + case AF_QUERY_IMPLEMENTED: + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return _af_pv_long(0); + return _af_pv_long(_af_units[arg2].implemented); + + /* The following select on arg3. */ + case AF_QUERY_SAMPLE_FORMATS: + if (arg3 < 0 || arg3 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + switch (arg2) + { + case AF_QUERY_DEFAULT: + return _af_pv_long(_af_units[arg3].defaultSampleFormat); + default: + break; + } + /* NOTREACHED */ + break; + + case AF_QUERY_SAMPLE_SIZES: + if (arg3 < 0 || arg3 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + + switch (arg2) + { + case AF_QUERY_DEFAULT: + return _af_pv_long(_af_units[arg3].defaultSampleWidth); + default: + break; + } + /* NOTREACHED */ + break; + + case AF_QUERY_COMPRESSION_TYPES: + { + int idx, count; + int *buffer; + + if (arg3 < 0 || arg3 >= _AF_NUM_UNITS) + { + _af_error(AF_BAD_QUERY, + "unrecognized file format %d", arg3); + return AU_NULL_PVLIST; + } + + switch (arg2) + { + case AF_QUERY_VALUE_COUNT: + count = _af_units[arg3].compressionTypeCount; + return _af_pv_long(count); + + case AF_QUERY_VALUES: + count = _af_units[arg3].compressionTypeCount; + if (count == 0) + return AU_NULL_PVLIST; + + buffer = (int *) _af_calloc(count, sizeof (int)); + if (buffer == NULL) + return AU_NULL_PVLIST; + + for (idx = 0; idx < count; idx++) + { + buffer[idx] = _af_units[arg3].compressionTypes[idx]; + } + + return _af_pv_pointer(buffer); + } + } + break; + } + + _af_error(AF_BAD_QUERY, "bad query selector"); + return AU_NULL_PVLIST; +} + +long afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4) +{ + AUpvlist list; + int type; + long value; + + list = afQuery(querytype, arg1, arg2, arg3, arg4); + if (list == AU_NULL_PVLIST) + return -1; + AUpvgetvaltype(list, 0, &type); + if (type != AU_PVTYPE_LONG) + return -1; + AUpvgetval(list, 0, &value); + AUpvfree(list); + return value; +} + +double afQueryDouble (int querytype, int arg1, int arg2, int arg3, int arg4) +{ + AUpvlist list; + int type; + double value; + + list = afQuery(querytype, arg1, arg2, arg3, arg4); + if (list == AU_NULL_PVLIST) + return -1; + AUpvgetvaltype(list, 0, &type); + if (type != AU_PVTYPE_DOUBLE) + return -1; + AUpvgetval(list, 0, &value); + AUpvfree(list); + return value; +} + +void *afQueryPointer (int querytype, int arg1, int arg2, int arg3, int arg4) +{ + AUpvlist list; + int type; + void *value; + + list = afQuery(querytype, arg1, arg2, arg3, arg4); + if (list == AU_NULL_PVLIST) + return NULL; + AUpvgetvaltype(list, 0, &type); + if (type != AU_PVTYPE_PTR) + return NULL; + AUpvgetval(list, 0, &value); + AUpvfree(list); + return value; +} + +/* ARGSUSED3 */ +AUpvlist _afQueryInstrumentParameter (int arg1, int arg2, int arg3, int arg4) +{ + switch (arg1) + { + /* For the following query types, arg2 is the file format. */ + case AF_QUERY_SUPPORTED: + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + return _af_pv_long(_af_units[arg2].instrumentParameterCount != 0); + + case AF_QUERY_ID_COUNT: + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + return _af_pv_long(_af_units[arg2].instrumentParameterCount); + + case AF_QUERY_IDS: + { + int count; + int *buffer; + + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + count = _af_units[arg2].instrumentParameterCount; + if (count == 0) + return AU_NULL_PVLIST; + buffer = (int *) _af_calloc(count, sizeof (int)); + if (buffer == NULL) + return AU_NULL_PVLIST; + for (int i=0; i= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + + idx = _af_instparam_index_from_id(arg2, arg3); + if (idx<0) + return AU_NULL_PVLIST; + return _af_pv_long(_af_units[arg2].instrumentParameters[idx].type); + } + + case AF_QUERY_NAME: + { + int idx; + + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + idx = _af_instparam_index_from_id(arg2, arg3); + if (idx < 0) + return AU_NULL_PVLIST; + return _af_pv_pointer(const_cast(_af_units[arg2].instrumentParameters[idx].name)); + } + + case AF_QUERY_DEFAULT: + { + int idx; + + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + idx = _af_instparam_index_from_id(arg2, arg3); + if (idx >= 0) + { + AUpvlist ret = AUpvnew(1); + AUpvsetparam(ret, 0, _af_units[arg2].instrumentParameters[idx].id); + AUpvsetvaltype(ret, 0, _af_units[arg2].instrumentParameters[idx].type); + AUpvsetval(ret, 0, const_cast(&_af_units[arg2].instrumentParameters[idx].defaultValue)); + return ret; + } + return AU_NULL_PVLIST; + } + } + + _af_error(AF_BAD_QUERY, "bad query selector"); + return AU_NULL_PVLIST; +} + +/* ARGSUSED2 */ +AUpvlist _afQueryLoop (int arg1, int arg2, int arg3, int arg4) +{ + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + + switch (arg1) + { + case AF_QUERY_SUPPORTED: + return _af_pv_long(_af_units[arg2].loopPerInstrumentCount != 0); + case AF_QUERY_MAX_NUMBER: + return _af_pv_long(_af_units[arg2].loopPerInstrumentCount); + } + + _af_error(AF_BAD_QUERY, "bad query selector"); + return AU_NULL_PVLIST; +} + +/* ARGSUSED2 */ +AUpvlist _afQueryInstrument (int arg1, int arg2, int arg3, int arg4) +{ + switch (arg1) + { + case AF_QUERY_SUPPORTED: + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + return _af_pv_long(_af_units[arg2].instrumentCount != 0); + + case AF_QUERY_MAX_NUMBER: + if (arg2 < 0 || arg2 >= _AF_NUM_UNITS) + return AU_NULL_PVLIST; + return _af_pv_long(_af_units[arg2].instrumentCount); + } + + _af_error(AF_BAD_QUERY, "bad query selector"); + return AU_NULL_PVLIST; +} + +/* ARGSUSED0 */ +AUpvlist _afQueryMiscellaneous (int arg1, int arg2, int arg3, int arg4) +{ + _af_error(AF_BAD_NOT_IMPLEMENTED, "not implemented yet"); + return AU_NULL_PVLIST; +} + +/* ARGSUSED2 */ +AUpvlist _afQueryMarker (int arg1, int arg2, int arg3, int arg4) +{ + switch (arg1) + { + case AF_QUERY_SUPPORTED: + return _af_pv_long(_af_units[arg2].markerCount != 0); + case AF_QUERY_MAX_NUMBER: + return _af_pv_long(_af_units[arg2].markerCount); + } + + _af_error(AF_BAD_QUERY, "bad query selector"); + return AU_NULL_PVLIST; +} + +/* ARGSUSED0 */ +AUpvlist _afQueryCompression (int arg1, int arg2, int arg3, int arg4) +{ + const CompressionUnit *unit = NULL; + + switch (arg1) + { + case AF_QUERY_ID_COUNT: + { + int count = 0; + for (int i = 0; i < _AF_NUM_COMPRESSION; i++) + if (_af_compression[i].implemented) + count++; + return _af_pv_long(count); + } + + case AF_QUERY_IDS: + { + int *buf = (int *) _af_calloc(_AF_NUM_COMPRESSION, sizeof (int)); + if (!buf) + return AU_NULL_PVLIST; + + int count = 0; + for (int i = 0; i < _AF_NUM_COMPRESSION; i++) + { + if (_af_compression[i].implemented) + buf[count++] = _af_compression[i].compressionID; + } + return _af_pv_pointer(buf); + } + + case AF_QUERY_IMPLEMENTED: + unit = _af_compression_unit_from_id(arg2); + if (!unit) + return _af_pv_long(0); + return _af_pv_long(unit->implemented); + + case AF_QUERY_NATIVE_SAMPFMT: + unit = _af_compression_unit_from_id(arg2); + if (!unit) + return AU_NULL_PVLIST; + return _af_pv_long(unit->nativeSampleFormat); + + case AF_QUERY_NATIVE_SAMPWIDTH: + unit = _af_compression_unit_from_id(arg2); + if (!unit) + return AU_NULL_PVLIST; + return _af_pv_long(unit->nativeSampleWidth); + + case AF_QUERY_LABEL: + unit = _af_compression_unit_from_id(arg2); + if (!unit) + return AU_NULL_PVLIST; + return _af_pv_pointer(const_cast(unit->label)); + + case AF_QUERY_NAME: + unit = _af_compression_unit_from_id(arg2); + if (!unit) + return AU_NULL_PVLIST; + return _af_pv_pointer(const_cast(unit->shortname)); + + case AF_QUERY_DESC: + unit = _af_compression_unit_from_id(arg2); + if (!unit) + return AU_NULL_PVLIST; + return _af_pv_pointer(const_cast(unit->name)); + } + + _af_error(AF_BAD_QUERY, "unrecognized query selector %d\n", arg1); + return AU_NULL_PVLIST; +} + +// file: units.cpp +/* + Audio File Library + Copyright (C) 2000-2001, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + units.cpp + + This file contains the file format units. +*/ + + + + + + +const Unit _af_units[_AF_NUM_UNITS] = +{ + { + AF_FILE_RAWDATA, + "Raw Data", "Raw Sound Data", "raw", + true, + &RawFile::completeSetup, + &RawFile::recognize, + AF_SAMPFMT_TWOSCOMP, 16, + _AF_RAW_NUM_COMPTYPES, + _af_raw_compression_types, + 0, /* maximum marker count */ + 0, /* maximum instrument count */ + 0, /* maxium number of loops per instrument */ + 0, NULL, + }, + { + AF_FILE_AIFFC, + "AIFF-C", "AIFF-C File Format", "aifc", + true, + AIFFFile::completeSetup, + AIFFFile::recognizeAIFFC, + AF_SAMPFMT_TWOSCOMP, 16, + _AF_AIFFC_NUM_COMPTYPES, + _af_aiffc_compression_types, + 65535, /* maximum marker count */ + 1, /* maximum instrument count */ + 2, /* maximum number of loops per instrument */ + _AF_AIFF_NUM_INSTPARAMS, + _af_aiff_inst_params + }, + { + AF_FILE_AIFF, + "AIFF", "Audio Interchange File Format", "aiff", + true, + AIFFFile::completeSetup, + AIFFFile::recognizeAIFF, + AF_SAMPFMT_TWOSCOMP, 16, + 0, /* supported compression types */ + NULL, + 65535, /* maximum marker count */ + 1, /* maximum instrument count */ + 2, /* maximum number of loops per instrument */ + _AF_AIFF_NUM_INSTPARAMS, + _af_aiff_inst_params + }, + { + AF_FILE_WAVE, + "MS RIFF WAVE", "Microsoft RIFF WAVE Format", "wave", + true, + WAVEFile::completeSetup, + WAVEFile::recognize, + AF_SAMPFMT_TWOSCOMP, 16, + _AF_WAVE_NUM_COMPTYPES, + _af_wave_compression_types, + AF_NUM_UNLIMITED, /* maximum marker count */ + 1, /* maximum instrument count */ + AF_NUM_UNLIMITED, /* maximum number of loops per instrument */ + _AF_WAVE_NUM_INSTPARAMS, + _af_wave_inst_params + }, +}; + +const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] = +{ + { + AF_COMPRESSION_NONE, + true, + "none", /* label */ + "none", /* short name */ + "not compressed", + 1.0, + AF_SAMPFMT_TWOSCOMP, 16, + false, /* needsRebuffer */ + false, /* multiple_of */ + _af_pcm_format_ok, + _AFpcminitcompress, _AFpcminitdecompress + }, + { + AF_COMPRESSION_G711_ULAW, + true, + "ulaw", /* label */ + "CCITT G.711 u-law", /* shortname */ + "CCITT G.711 u-law", + 2.0, + AF_SAMPFMT_TWOSCOMP, 16, + false, /* needsRebuffer */ + false, /* multiple_of */ + _af_g711_format_ok, + _AFg711initcompress, _AFg711initdecompress + }, + { + AF_COMPRESSION_G711_ALAW, + true, + "alaw", /* label */ + "CCITT G.711 A-law", /* short name */ + "CCITT G.711 A-law", + 2.0, + AF_SAMPFMT_TWOSCOMP, 16, + false, /* needsRebuffer */ + false, /* multiple_of */ + _af_g711_format_ok, + _AFg711initcompress, _AFg711initdecompress + }, + { + AF_COMPRESSION_MS_ADPCM, + true, + "msadpcm", /* label */ + "MS ADPCM", /* short name */ + "Microsoft ADPCM", + 4.0, + AF_SAMPFMT_TWOSCOMP, 16, + true, /* needsRebuffer */ + false, /* multiple_of */ + _af_ms_adpcm_format_ok, + _af_ms_adpcm_init_compress, _af_ms_adpcm_init_decompress + }, +}; + +// file: util.cpp +/* + Audio File Library + Copyright (C) 1998-2000, Michael Pruett + Copyright (C) 2000, Silicon Graphics, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA +*/ + +/* + util.c + + This file contains general utility routines for the Audio File + Library. +*/ + + +#include +#include +#include +#include + + + +/* + _af_filesetup_ok and _af_filehandle_ok are sanity check routines + which are called at the beginning of every external subroutine. +*/ +bool _af_filesetup_ok (AFfilesetup setup) +{ + if (setup == AF_NULL_FILESETUP) + { + _af_error(AF_BAD_FILESETUP, "null file setup"); + return false; + } + if (setup->valid != _AF_VALID_FILESETUP) + { + _af_error(AF_BAD_FILESETUP, "invalid file setup"); + return false; + } + return true; +} + +bool _af_filehandle_ok (AFfilehandle file) +{ + if (file == AF_NULL_FILEHANDLE) + { + _af_error(AF_BAD_FILEHANDLE, "null file handle"); + return false; + } + if (file->m_valid != _AF_VALID_FILEHANDLE) + { + _af_error(AF_BAD_FILEHANDLE, "invalid file handle"); + return false; + } + return true; +} + +void *_af_malloc (size_t size) +{ + void *p; + + if (size <= 0) + { + _af_error(AF_BAD_MALLOC, "bad memory allocation size request %zd", size); + return NULL; + } + + p = malloc(size); + +#ifdef AF_DEBUG + if (p) + memset(p, 0xff, size); +#endif + + if (p == NULL) + { + _af_error(AF_BAD_MALLOC, "allocation of %zd bytes failed", size); + return NULL; + } + + return p; +} + +char *_af_strdup (const char *s) +{ + char *p = (char *) malloc(strlen(s) + 1); + + if (p) + strcpy(p, s); + + return p; +} + +void *_af_realloc (void *p, size_t size) +{ + if (size <= 0) + { + _af_error(AF_BAD_MALLOC, "bad memory allocation size request %zd", size); + return NULL; + } + + p = realloc(p, size); + + if (p == NULL) + { + _af_error(AF_BAD_MALLOC, "allocation of %zd bytes failed", size); + return NULL; + } + + return p; +} + +void *_af_calloc (size_t nmemb, size_t size) +{ + void *p; + + if (nmemb <= 0 || size <= 0) + { + _af_error(AF_BAD_MALLOC, "bad memory allocation size request " + "%zd elements of %zd bytes each", nmemb, size); + return NULL; + } + + p = calloc(nmemb, size); + + if (p == NULL) + { + _af_error(AF_BAD_MALLOC, "allocation of %zd bytes failed", + nmemb*size); + return NULL; + } + + return p; +} + +AUpvlist _af_pv_long (long val) +{ + AUpvlist ret = AUpvnew(1); + AUpvsetparam(ret, 0, 0); + AUpvsetvaltype(ret, 0, AU_PVTYPE_LONG); + AUpvsetval(ret, 0, &val); + return ret; +} + +AUpvlist _af_pv_double (double val) +{ + AUpvlist ret = AUpvnew(1); + AUpvsetparam(ret, 0, 0); + AUpvsetvaltype(ret, 0, AU_PVTYPE_DOUBLE); + AUpvsetval(ret, 0, &val); + return ret; +} + +AUpvlist _af_pv_pointer (void *val) +{ + AUpvlist ret = AUpvnew(1); + AUpvsetparam(ret, 0, 0); + AUpvsetvaltype(ret, 0, AU_PVTYPE_PTR); + AUpvsetval(ret, 0, &val); + return ret; +} + +bool _af_pv_getlong (AUpvlist pvlist, int param, long *l) +{ + for (int i=0; isampleFormat) + { + case AF_SAMPFMT_FLOAT: + size = sizeof (float); + break; + case AF_SAMPFMT_DOUBLE: + size = sizeof (double); + break; + default: + size = (int) (format->sampleWidth + 7) / 8; + if (format->compressionType == AF_COMPRESSION_NONE && + size == 3 && stretch3to4) + size = 4; + break; + } + + return size; +} + +float _af_format_sample_size (const AudioFormat *fmt, bool stretch3to4) +{ + const CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType); + float squishFactor = unit->squishFactor; + + return _af_format_sample_size_uncompressed(fmt, stretch3to4) / + squishFactor; +} + +int _af_format_frame_size_uncompressed (const AudioFormat *fmt, bool stretch3to4) +{ + return _af_format_sample_size_uncompressed(fmt, stretch3to4) * + fmt->channelCount; +} + +float _af_format_frame_size (const AudioFormat *fmt, bool stretch3to4) +{ + const CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType); + float squishFactor = unit->squishFactor; + + return _af_format_frame_size_uncompressed(fmt, stretch3to4) / + squishFactor; +} + +/* + Set the sampleFormat and sampleWidth fields in f, and set the + PCM info to the appropriate default values for the given sample + format and sample width. +*/ +status _af_set_sample_format (AudioFormat *f, int sampleFormat, int sampleWidth) +{ + switch (sampleFormat) + { + case AF_SAMPFMT_UNSIGNED: + case AF_SAMPFMT_TWOSCOMP: + if (sampleWidth < 1 || sampleWidth > 32) + { + _af_error(AF_BAD_SAMPFMT, + "illegal sample width %d for integer data", + sampleWidth); + return AF_FAIL; + } + else + { + int bytes; + + f->sampleFormat = sampleFormat; + f->sampleWidth = sampleWidth; + + bytes = _af_format_sample_size_uncompressed(f, false); + + if (sampleFormat == AF_SAMPFMT_TWOSCOMP) + f->pcm = _af_default_signed_integer_pcm_mappings[bytes]; + else + f->pcm = _af_default_unsigned_integer_pcm_mappings[bytes]; + } + break; + + case AF_SAMPFMT_FLOAT: + f->sampleFormat = sampleFormat; + f->sampleWidth = 32; + f->pcm = _af_default_float_pcm_mapping; + break; + case AF_SAMPFMT_DOUBLE: + f->sampleFormat = sampleFormat; + f->sampleWidth = 64; /*for convenience */ + f->pcm = _af_default_double_pcm_mapping; + break; + default: + _af_error(AF_BAD_SAMPFMT, "unknown sample format %d", + sampleFormat); + return AF_FAIL; + } + + return AF_SUCCEED; +} + +/* + Verify the uniqueness of the nids ids given. + + idname is the name of what the ids identify, as in "loop" + iderr is an error as in AF_BAD_LOOPID +*/ +bool _af_unique_ids (const int *ids, int nids, const char *idname, int iderr) +{ + for (int i = 0; i < nids; i++) + { + for (int j = 0; j < i; j++) + { + if (ids[i] == ids[j]) + { + _af_error(iderr, "nonunique %s id %d", idname, ids[i]); + return false; + } + } + } + + return true; +} + diff --git a/tools/audiofile-0.3.6/libaudiofile/audiofile.h b/tools/audiofile/audiofile.h similarity index 100% rename from tools/audiofile-0.3.6/libaudiofile/audiofile.h rename to tools/audiofile/audiofile.h diff --git a/tools/audiofile-0.3.6/libaudiofile/aupvlist.h b/tools/audiofile/aupvlist.h similarity index 100% rename from tools/audiofile-0.3.6/libaudiofile/aupvlist.h rename to tools/audiofile/aupvlist.h diff --git a/tools/util/audiofile_strip.patch b/tools/util/audiofile_strip.patch new file mode 100644 index 00000000..e6e22470 --- /dev/null +++ b/tools/util/audiofile_strip.patch @@ -0,0 +1,318 @@ +diff --git a/libaudiofile/FileHandle.cpp b/libaudiofile/FileHandle.cpp +index 8562d4b..5d6342a 100644 +--- a/libaudiofile/FileHandle.cpp ++++ b/libaudiofile/FileHandle.cpp +@@ -74,26 +74,8 @@ _AFfilehandle *_AFfilehandle::create(int fileFormat) + case AF_FILE_AIFF: + case AF_FILE_AIFFC: + return new AIFFFile(); +- case AF_FILE_NEXTSND: +- return new NeXTFile(); + case AF_FILE_WAVE: + return new WAVEFile(); +- case AF_FILE_BICSF: +- return new IRCAMFile(); +- case AF_FILE_AVR: +- return new AVRFile(); +- case AF_FILE_IFF_8SVX: +- return new IFFFile(); +- case AF_FILE_SAMPLEVISION: +- return new SampleVisionFile(); +- case AF_FILE_VOC: +- return new VOCFile(); +- case AF_FILE_NIST_SPHERE: +- return new NISTFile(); +- case AF_FILE_CAF: +- return new CAFFile(); +- case AF_FILE_FLAC: +- return new FLACFile(); + default: + return NULL; + } +diff --git a/libaudiofile/aupv.c b/libaudiofile/aupv.c +index 64e798b..374838b 100644 +--- a/libaudiofile/aupv.c ++++ b/libaudiofile/aupv.c +@@ -47,7 +47,7 @@ AUpvlist AUpvnew (int maxitems) + if (aupvlist == NULL) + return AU_NULL_PVLIST; + +- aupvlist->items = calloc(maxitems, sizeof (struct _AUpvitem)); ++ aupvlist->items = (struct _AUpvitem *)calloc(maxitems, sizeof (struct _AUpvitem)); + + assert(aupvlist->items); + if (aupvlist->items == NULL) +diff --git a/libaudiofile/g711.c b/libaudiofile/g711.c +index 8fb2323..1b323ec 100644 +--- a/libaudiofile/g711.c ++++ b/libaudiofile/g711.c +@@ -74,8 +74,7 @@ static int search(int val, const short *table, int size) + * John Wiley & Sons, pps 98-111 and 472-476. + */ + unsigned char +-_af_linear2alaw(pcm_val) +- int pcm_val; /* 2's complement (16-bit range) */ ++_af_linear2alaw(int pcm_val) + { + int mask; + int seg; +@@ -110,8 +109,7 @@ _af_linear2alaw(pcm_val) + * + */ + int +-_af_alaw2linear(a_val) +- unsigned char a_val; ++_af_alaw2linear(unsigned char a_val) + { + int t; + int seg; +diff --git a/libaudiofile/units.cpp b/libaudiofile/units.cpp +index ffd0a63..51d2dc3 100644 +--- a/libaudiofile/units.cpp ++++ b/libaudiofile/units.cpp +@@ -32,24 +32,12 @@ + #include "units.h" + + #include "AIFF.h" +-#include "AVR.h" +-#include "CAF.h" +-#include "FLACFile.h" +-#include "IFF.h" +-#include "IRCAM.h" +-#include "NeXT.h" +-#include "NIST.h" + #include "Raw.h" +-#include "SampleVision.h" +-#include "VOC.h" + #include "WAVE.h" + + #include "compression.h" + +-#include "modules/ALAC.h" +-#include "modules/FLAC.h" + #include "modules/G711.h" +-#include "modules/IMA.h" + #include "modules/MSADPCM.h" + #include "modules/PCM.h" + +@@ -99,20 +87,6 @@ const Unit _af_units[_AF_NUM_UNITS] = + _AF_AIFF_NUM_INSTPARAMS, + _af_aiff_inst_params + }, +- { +- AF_FILE_NEXTSND, +- "NeXT .snd/Sun .au", "NeXT .snd/Sun .au Format", "next", +- true, +- NeXTFile::completeSetup, +- NeXTFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 16, +- _AF_NEXT_NUM_COMPTYPES, +- _af_next_compression_types, +- 0, /* maximum marker count */ +- 0, /* maximum instrument count */ +- 0, /* maximum number of loops per instrument */ +- 0, NULL +- }, + { + AF_FILE_WAVE, + "MS RIFF WAVE", "Microsoft RIFF WAVE Format", "wave", +@@ -128,144 +102,6 @@ const Unit _af_units[_AF_NUM_UNITS] = + _AF_WAVE_NUM_INSTPARAMS, + _af_wave_inst_params + }, +- { +- AF_FILE_IRCAM, +- "BICSF", "Berkeley/IRCAM/CARL Sound Format", "bicsf", +- true, +- IRCAMFile::completeSetup, +- IRCAMFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 16, +- _AF_IRCAM_NUM_COMPTYPES, +- _af_ircam_compression_types, +- 0, // maximum marker count +- 0, // maximum instrument count +- 0, // maximum number of loops per instrument +- 0, // number of instrument parameters +- NULL // instrument parameters +- }, +- { +- AF_FILE_MPEG1BITSTREAM, +- "MPEG", "MPEG Audio Bitstream", "mpeg", +- false +- }, +- { +- AF_FILE_SOUNDDESIGNER1, +- "Sound Designer 1", "Sound Designer 1 File Format", "sd1", +- false +- }, +- { +- AF_FILE_SOUNDDESIGNER2, +- "Sound Designer 2", "Sound Designer 2 File Format", "sd2", +- false +- }, +- { +- AF_FILE_AVR, +- "AVR", "Audio Visual Research File Format", "avr", +- true, +- AVRFile::completeSetup, +- AVRFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 16, +- 0, /* number of compression types */ +- NULL, /* compression types */ +- 0, /* maximum marker count */ +- 0, /* maximum instrument count */ +- 0, /* maximum number of loops per instrument */ +- 0, /* number of instrument parameters */ +- }, +- { +- AF_FILE_IFF_8SVX, +- "IFF/8SVX", "Amiga IFF/8SVX Sound File Format", "iff", +- true, +- IFFFile::completeSetup, +- IFFFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 8, +- 0, /* number of compression types */ +- NULL, /* compression types */ +- 0, /* maximum marker count */ +- 0, /* maximum instrument count */ +- 0, /* maximum number of loops per instrument */ +- 0, /* number of instrument parameters */ +- }, +- { +- AF_FILE_SAMPLEVISION, +- "Sample Vision", "Sample Vision File Format", "smp", +- true, +- SampleVisionFile::completeSetup, +- SampleVisionFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 16, +- 0, // number of compression types +- NULL, // compression types +- 0, // maximum marker count +- 0, // maximum instrument count +- 0, // maximum number of loops per instrument +- 0, // number of instrument parameters +- NULL // instrument parameters +- }, +- { +- AF_FILE_VOC, +- "VOC", "Creative Voice File Format", "voc", +- true, +- VOCFile::completeSetup, +- VOCFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 16, +- _AF_VOC_NUM_COMPTYPES, +- _af_voc_compression_types, +- 0, // maximum marker count +- 0, // maximum instrument count +- 0, // maximum number of loops per instrument +- 0, // number of instrument parameters +- NULL // instrument parameters +- }, +- { +- AF_FILE_NIST_SPHERE, +- "NIST SPHERE", "NIST SPHERE File Format", "nist", +- true, +- NISTFile::completeSetup, +- NISTFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 16, +- 0, /* number of compression types */ +- NULL, /* compression types */ +- 0, /* maximum marker count */ +- 0, /* maximum instrument count */ +- 0, /* maximum number of loops per instrument */ +- 0, /* number of instrument parameters */ +- NULL /* instrument parameters */ +- }, +- { +- AF_FILE_SOUNDFONT2, +- "SoundFont 2", "SoundFont 2 File Format", "sf2", +- false +- }, +- { +- AF_FILE_CAF, +- "CAF", "Core Audio Format", "caf", +- true, +- CAFFile::completeSetup, +- CAFFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 16, +- _AF_CAF_NUM_COMPTYPES, +- _af_caf_compression_types, +- 0, // maximum marker count +- 0, // maximum instrument count +- 0, // maximum number of loops per instrument +- 0, // number of instrument parameters +- NULL // instrument parameters +- }, +- { +- AF_FILE_FLAC, +- "FLAC", "Free Lossless Audio Codec", "flac", +- true, +- FLACFile::completeSetup, +- FLACFile::recognize, +- AF_SAMPFMT_TWOSCOMP, 16, +- _AF_FLAC_NUM_COMPTYPES, +- _af_flac_compression_types, +- 0, // maximum marker count +- 0, // maximum instrument count +- 0, // maximum number of loops per instrument +- 0, // number of instrument parameters +- NULL // instrument parameters +- } + }; + + const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] = +@@ -309,19 +145,6 @@ const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] = + _af_g711_format_ok, + _AFg711initcompress, _AFg711initdecompress + }, +- { +- AF_COMPRESSION_IMA, +- true, +- "ima4", /* label */ +- "IMA ADPCM", /* short name */ +- "IMA DVI ADPCM", +- 4.0, +- AF_SAMPFMT_TWOSCOMP, 16, +- true, /* needsRebuffer */ +- false, /* multiple_of */ +- _af_ima_adpcm_format_ok, +- _af_ima_adpcm_init_compress, _af_ima_adpcm_init_decompress +- }, + { + AF_COMPRESSION_MS_ADPCM, + true, +@@ -335,34 +158,4 @@ const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] = + _af_ms_adpcm_format_ok, + _af_ms_adpcm_init_compress, _af_ms_adpcm_init_decompress + }, +- { +- AF_COMPRESSION_FLAC, +-#if ENABLE(FLAC) +- true, +-#else +- false, +-#endif +- "flac", // label +- "FLAC", // short name +- "Free Lossless Audio Codec", +- 1.0, +- AF_SAMPFMT_TWOSCOMP, 16, +- false, // needsRebuffer +- false, // multiple_of +- _af_flac_format_ok, +- _af_flac_init_compress, _af_flac_init_decompress +- }, +- { +- AF_COMPRESSION_ALAC, +- true, +- "alac", // label +- "ALAC", // short name +- "Apple Lossless Audio Codec", +- 1.0, +- AF_SAMPFMT_TWOSCOMP, 16, +- true, // needsRebuffer +- false, // multiple_of +- _af_alac_format_ok, +- _af_alac_init_compress, _af_alac_init_decompress +- } + }; diff --git a/tools/util/generate_audiofile_cpp.py b/tools/util/generate_audiofile_cpp.py new file mode 100644 index 00000000..232e24dd --- /dev/null +++ b/tools/util/generate_audiofile_cpp.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python + +import os +import re +import sys + +file_list = [ + 'Features.h', + 'Compiler.h', + 'error.h', + 'extended.h', + 'compression.h', + 'aupvinternal.h', + 'aupvlist.h', + 'audiofile.h', + 'afinternal.h', + 'byteorder.h', + 'AudioFormat.h', + 'debug.h', + 'util.h', + 'units.h', + 'UUID.h', + 'Shared.h', + 'Buffer.h', + 'File.h', + 'FileHandle.h', + 'Instrument.h', + 'Track.h', + 'Marker.h', + 'Setup.h', + 'Tag.h', + 'PacketTable.h', + 'pcm.h', + 'g711.h', + 'af_vfs.h', + 'Raw.h', + 'WAVE.h', + 'SampleVision.h', + 'modules/Module.h', + 'modules/ModuleState.h', + 'modules/SimpleModule.h', + 'modules/FileModule.h', + 'modules/RebufferModule.h', + 'modules/BlockCodec.h', + 'modules/BlockCodec.cpp', + 'modules/FileModule.cpp', + 'modules/G711.h', + 'modules/G711.cpp', + 'modules/Module.cpp', + 'modules/ModuleState.cpp', + 'modules/MSADPCM.h', + 'modules/MSADPCM.cpp', + 'modules/PCM.h', + 'modules/PCM.cpp', + 'modules/SimpleModule.cpp', + 'modules/RebufferModule.cpp', + 'AIFF.h', + 'AIFF.cpp', + 'AudioFormat.cpp', + 'Buffer.cpp', + 'File.cpp', + 'FileHandle.cpp', + 'Instrument.cpp', + 'Loop.cpp', + 'Marker.cpp', + 'Miscellaneous.cpp', + 'PacketTable.cpp', + 'Raw.cpp', + 'Setup.cpp', + 'Track.cpp', + 'UUID.cpp', + 'WAVE.cpp', + 'aes.cpp', + 'af_vfs.cpp', + 'aupv.c', + 'compression.cpp', + 'data.cpp', + 'debug.cpp', + 'error.c', + 'extended.c', + 'format.cpp', + 'g711.c', + 'openclose.cpp', + 'pcm.cpp', + 'query.cpp', + 'units.cpp', + 'util.cpp', +] + +file_header = \ +"""// libaudiofile b62c902 +// https://github.com/mpruett/audiofile +// To simplify compilation, all files have been concatenated into one. +// Support for all formats except WAVE, AIFF(C) and RAW has been stripped out. +""" + +prepend_defs = \ +"""#define HAVE_UNISTD_H 1 +#if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +#endif +#include +""" + +def banned(line): + return '#pragma once' in line or '#include "' in line or '#include ' in line + +def cat_file(fout, fin_name): + with open(fin_name) as fin: + lines = fin.readlines() + lines = [l.rstrip() for l in lines if not banned(l)] + for l in lines: + fout.write(l + '\n') + fout.write('\n') + +def combine_libaudiofile(fout_name, libaudiofile_path): + with open(fout_name, 'w') as fout: + fout.write(file_header + "\n") + fout.write("/*\n") + cat_file(fout, os.path.join(libaudiofile_path, '../COPYING')) + fout.write("*/\n\n") + fout.write(prepend_defs + "\n") + for f in file_list: + fout.write(f"// file: {f}\n") + cat_file(fout, os.path.join(libaudiofile_path, f)) + +def main(): + if len(sys.argv) > 1 and sys.argv[1] in ['-h', '--help']: + print('Usage: generate_audiofile_cpp.py [output_filename] [libaudiofile_src_dir]') + print('Defaults: [output_filename = "audiofile.cpp"] [libaudiofile_src_dir = "./audiofile/libaudiofile"]') + return + fout_name = sys.argv[1] if len(sys.argv) > 1 else 'audiofile.cpp' + libaudiofile_path = sys.argv[2] if len(sys.argv) > 2 else './audiofile/libaudiofile' + combine_libaudiofile(fout_name, os.path.expanduser(libaudiofile_path)) + +main() From 05bccd107ae3e9c2676cbff71bd5a5eb1bac07df Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sat, 13 Jun 2020 00:21:02 +0300 Subject: [PATCH 143/166] fix that damn ERROR() warning in tools --- tools/utils.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/utils.h b/tools/utils.h index 03f482d0..5112b1bf 100644 --- a/tools/utils.h +++ b/tools/utils.h @@ -71,6 +71,7 @@ typedef struct // global verbosity setting extern int g_verbosity; +#undef ERROR #define ERROR(...) fprintf(stderr, __VA_ARGS__) #define INFO(...) if (g_verbosity) printf(__VA_ARGS__) #define INFO_HEX(...) if (g_verbosity) print_hex(__VA_ARGS__) From eed923e4428bfa52b6df33ea285128089ff3b54f Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sat, 13 Jun 2020 00:51:37 +0300 Subject: [PATCH 144/166] sdl2: fix window position saving and alt-enter --- src/pc/gfx/gfx_sdl2.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index 081019db..f72f2dda 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -106,10 +106,12 @@ const SDL_Scancode scancode_rmapping_nonextended[][2] = { {SDL_SCANCODE_KP_MULTIPLY, SDL_SCANCODE_PRINTSCREEN} }; -#define IS_FULLSCREEN (SDL_GetWindowFlags(wnd) & SDL_WINDOW_FULLSCREEN_DESKTOP) +#define IS_FULLSCREEN() ((SDL_GetWindowFlags(wnd) & SDL_WINDOW_FULLSCREEN_DESKTOP) != 0) static void gfx_sdl_set_fullscreen() { - if (configWindow.fullscreen == IS_FULLSCREEN) + if (configWindow.reset) + configWindow.fullscreen = false; + if (configWindow.fullscreen == IS_FULLSCREEN()) return; if (configWindow.fullscreen) { SDL_SetWindowFullscreen(wnd, SDL_WINDOW_FULLSCREEN_DESKTOP); @@ -122,25 +124,21 @@ static void gfx_sdl_set_fullscreen() { } static void gfx_sdl_reset_dimension_and_pos(void) { - if (configWindow.exiting_fullscreen) { + if (configWindow.exiting_fullscreen) configWindow.exiting_fullscreen = false; - } else if (configWindow.reset) { + + if (configWindow.reset) { configWindow.x = WAPI_WIN_CENTERPOS; configWindow.y = WAPI_WIN_CENTERPOS; configWindow.w = DESIRED_SCREEN_WIDTH; configWindow.h = DESIRED_SCREEN_HEIGHT; configWindow.reset = false; - - if (IS_FULLSCREEN) { - configWindow.fullscreen = false; - return; - } } else if (!configWindow.settings_changed) { return; } - int xpos = (configWindow.x = WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.x; - int ypos = (configWindow.y = WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.y; + int xpos = (configWindow.x == WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.x; + int ypos = (configWindow.y == WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.y; SDL_SetWindowSize(wnd, configWindow.w, configWindow.h); SDL_SetWindowPosition(wnd, xpos, ypos); @@ -162,8 +160,8 @@ static void gfx_sdl_init(const char *window_title) { //SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); //SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4); - int xpos = (configWindow.x = WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.x; - int ypos = (configWindow.y = WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.y; + int xpos = (configWindow.x == WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.x; + int ypos = (configWindow.y == WAPI_WIN_CENTERPOS) ? SDL_WINDOWPOS_CENTERED : configWindow.y; wnd = SDL_CreateWindow( window_title, @@ -222,10 +220,10 @@ static void gfx_sdl_onkeydown(int scancode) { const Uint8 *state = SDL_GetKeyboardState(NULL); - if (state[SDL_SCANCODE_LALT] && state[SDL_SCANCODE_RETURN]) + if (state[SDL_SCANCODE_LALT] && state[SDL_SCANCODE_RETURN]) { configWindow.fullscreen = !configWindow.fullscreen; - else if (state[SDL_SCANCODE_ESCAPE] && configWindow.fullscreen) - configWindow.fullscreen = false; + configWindow.settings_changed = true; + } } static void gfx_sdl_onkeyup(int scancode) { @@ -247,11 +245,13 @@ static void gfx_sdl_handle_events(void) { break; #endif case SDL_WINDOWEVENT: // TODO: Check if this makes sense to be included in the Web build - if (!(IS_FULLSCREEN || configWindow.exiting_fullscreen)) { + if (!IS_FULLSCREEN()) { switch (event.window.event) { case SDL_WINDOWEVENT_MOVED: - configWindow.x = event.window.data1; - configWindow.y = event.window.data2; + if (!configWindow.exiting_fullscreen) { + if (event.window.data1 >= 0) configWindow.x = event.window.data1; + if (event.window.data2 >= 0) configWindow.y = event.window.data2; + } break; case SDL_WINDOWEVENT_SIZE_CHANGED: configWindow.w = event.window.data1; @@ -270,8 +270,8 @@ static void gfx_sdl_handle_events(void) { } if (configWindow.settings_changed) { - gfx_sdl_reset_dimension_and_pos(); gfx_sdl_set_fullscreen(); + gfx_sdl_reset_dimension_and_pos(); configWindow.settings_changed = false; } } From 7fe8645fcd9a0439f3a882a6fa467a0bd697ccbe Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sat, 13 Jun 2020 00:53:01 +0300 Subject: [PATCH 145/166] thank you case sensitive file systems very cool --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d7a716cc..146043ba 100644 --- a/Makefile +++ b/Makefile @@ -582,7 +582,7 @@ endif ifeq ($(SDL_USED),2) BACKEND_CFLAGS += -DHAVE_SDL2=1 `$(SDLCONFIG) --cflags` ifeq ($(WINDOWS_BUILD),1) - BACKEND_LDFLAGS += `$(SDLCONFIG) --static-libs` -lsetupapi -luser32 -limm32 -lOle32 -loleaut32 -lshell32 -lwinmm -lversion + BACKEND_LDFLAGS += `$(SDLCONFIG) --static-libs` -lsetupapi -luser32 -limm32 -lole32 -loleaut32 -lshell32 -lwinmm -lversion else BACKEND_LDFLAGS += `$(SDLCONFIG) --libs` endif From b673f385168c8a467bfdf9be68fcf85a2ec48998 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sat, 13 Jun 2020 03:27:56 +0300 Subject: [PATCH 146/166] tabledesign should build on linux now --- tools/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/Makefile b/tools/Makefile index e87621c5..b8c84775 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -39,7 +39,7 @@ aifc_decode_CFLAGS := $(OPT_FLAG) aiff_extract_codebook_SOURCES := aiff_extract_codebook.c tabledesign_SOURCES := sdk-tools/tabledesign/codebook.c sdk-tools/tabledesign/estimate.c sdk-tools/tabledesign/print.c sdk-tools/tabledesign/tabledesign.c -tabledesign_CFLAGS := -Wno-uninitialized -Iaudiofile -Laudiofile -laudiofile -lstdc++ +tabledesign_CFLAGS := -Wno-uninitialized -Iaudiofile -Laudiofile -laudiofile -lstdc++ -lm vadpcm_enc_SOURCES := sdk-tools/adpcm/vadpcm_enc.c sdk-tools/adpcm/vpredictor.c sdk-tools/adpcm/quant.c sdk-tools/adpcm/util.c sdk-tools/adpcm/vencode.c vadpcm_enc_CFLAGS := -Wno-unused-result -Wno-uninitialized -Wno-sign-compare -Wno-absolute-value From 208bfdcbf3ac21ea592bf1889cb3d482ce1c7062 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sat, 13 Jun 2020 04:21:47 +0300 Subject: [PATCH 147/166] move all the discordrpc stuff to pc_main.c that means it will now work in D3D11 and D3D12 also 'normalized' the sdl2 main loop --- src/game/area.c | 8 -------- src/pc/gfx/gfx_sdl2.c | 25 +++++-------------------- src/pc/pc_main.c | 17 ++++++++++++++++- 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/src/game/area.c b/src/game/area.c index 6e7a3ff2..d408190c 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -23,10 +23,6 @@ #include "gfx_dimensions.h" -#ifdef DISCORDRPC -#include "pc/discord/discordrpc.h" -#endif - struct SpawnInfo gPlayerSpawnInfos[1]; struct GraphNode *D_8033A160[0x100]; struct Area gAreaData[8]; @@ -425,8 +421,4 @@ void render_game(void) { D_8032CE74 = NULL; D_8032CE78 = 0; - -#ifdef DISCORDRPC - discord_update_rich_presence(); -#endif } diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index f72f2dda..e46c186e 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -34,10 +34,6 @@ #include "src/pc/controller/controller_keyboard.h" -#ifdef DISCORDRPC -#include "pc/discord/discordrpc.h" -#endif - // TODO: figure out if this shit even works #ifdef VERSION_EU # define FRAMERATE 25 @@ -50,7 +46,6 @@ static const Uint32 FRAME_TIME = 1000 / FRAMERATE; static SDL_Window *wnd; static SDL_GLContext ctx = NULL; static int inverted_scancode_table[512]; -static Uint32 frame_start = 0; static kb_callback_t kb_key_down = NULL; static kb_callback_t kb_key_up = NULL; @@ -189,17 +184,11 @@ static void gfx_sdl_init(const char *window_title) { } static void gfx_sdl_main_loop(void (*run_one_game_iter)(void)) { - Uint32 t; -#ifdef DISCORDRPC - discord_init(); -#endif - while (1) { - t = SDL_GetTicks(); - run_one_game_iter(); - t = SDL_GetTicks() - t; - if (t < FRAME_TIME && configWindow.vsync <= 1) - SDL_Delay(FRAME_TIME - t); - } + Uint32 t = SDL_GetTicks(); + run_one_game_iter(); + t = SDL_GetTicks() - t; + if (t < FRAME_TIME && configWindow.vsync <= 1) + SDL_Delay(FRAME_TIME - t); } static void gfx_sdl_get_dimensions(uint32_t *width, uint32_t *height) { @@ -261,9 +250,6 @@ static void gfx_sdl_handle_events(void) { } break; case SDL_QUIT: -#ifdef DISCORDRPC - discord_shutdown(); -#endif game_exit(); break; } @@ -283,7 +269,6 @@ static void gfx_sdl_set_keyboard_callbacks(kb_callback_t on_key_down, kb_callbac } static bool gfx_sdl_start_frame(void) { - frame_start = SDL_GetTicks(); return true; } diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index c74624e4..dfc62463 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -32,6 +32,10 @@ #include "game/main.h" #include "game/thread6.h" +#ifdef DISCORDRPC +#include "pc/discord/discordrpc.h" +#endif + OSMesg D_80339BEC; OSMesgQueue gSIEventMesgQueue; @@ -106,6 +110,9 @@ void audio_shutdown(void) { } void game_deinit(void) { +#ifdef DISCORDRPC + discord_shutdown(); +#endif configfile_save(configfile_name()); controller_shutdown(); audio_shutdown(); @@ -228,12 +235,20 @@ void main_func(void) { } #endif +#ifdef DISCORDRPC + discord_init(); +#endif + #ifdef TARGET_WEB emscripten_set_main_loop(em_main_loop, 0, 0); request_anim_frame(on_anim_frame); #else - while (true) + while (true) { wm_api->main_loop(produce_one_frame); +#ifdef DISCORDRPC + discord_update_rich_presence(); +#endif + } #endif } From b15bd727c2326e6fe10a92cc08b2eff778c97727 Mon Sep 17 00:00:00 2001 From: NoHomoBoi <36680385+KiritoDv@users.noreply.github.com> Date: Sat, 13 Jun 2020 02:16:00 -0500 Subject: [PATCH 148/166] Added sfx and env volume settings --- include/text_options_strings.h.in | 4 +++- src/audio/external.c | 4 ++-- src/audio/external.h | 2 +- src/game/options_menu.c | 8 ++++++-- src/pc/configfile.c | 4 ++++ src/pc/configfile.h | 2 ++ src/pc/pc_main.c | 4 +++- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 03e1f753..7b68f0c4 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -107,7 +107,9 @@ #define TEXT_OPT_NEAREST _("Nearest") #define TEXT_OPT_LINEAR _("Linear") #define TEXT_OPT_MVOLUME _("Master Volume") -#define TEXT_OPT_TMUSIC _("Music Volume") +#define TEXT_OPT_MUSIC_VOLUME _("Music Volume") +#define TEXT_OPT_SFX_VOLUME _("Sfx Volume") +#define TEXT_OPT_ENV_VOLUME _("Env Volume") #define TEXT_OPT_VSYNC _("Vertical Sync") #define TEXT_OPT_DOUBLE _("Double") #define TEXT_RESET_WINDOW _("Reset Window") diff --git a/src/audio/external.c b/src/audio/external.c index 9f28ec32..b0ebbb99 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -2062,8 +2062,8 @@ void play_dialog_sound(u8 dialogID) { #endif } -void setBackgroundMusicVolume(s32 volume){ - func_8031D838(SEQ_PLAYER_LEVEL, 0, volume); +void setSequencePlayerVolume(s32 player, s32 volume){ + func_8031D838(player, 0, volume); } void play_music(u8 player, u16 seqArgs, u16 fadeTimer) { diff --git a/src/audio/external.h b/src/audio/external.h index ef902a51..4d763f35 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -37,7 +37,7 @@ void sound_banks_disable(u8 player, u16 bankMask); void sound_banks_enable(u8 player, u16 bankMask); void func_80320A4C(u8 bankIndex, u8 arg1); void play_dialog_sound(u8 dialogID); -void setBackgroundMusicVolume(s32 volume); +void setSequencePlayerVolume(s32 player, s32 volume); void play_music(u8 player, u16 seqArgs, u16 fadeTimer); void stop_background_music(u16 seqId); void fadeout_background_music(u16 arg0, u16 fadeOut); diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 660a6d4f..3c084c49 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -85,8 +85,10 @@ static const u8 optsVideoStr[][32] = { }; static const u8 optsAudioStr[][32] = { - { TEXT_OPT_MVOLUME }, - { TEXT_OPT_TMUSIC }, + { TEXT_OPT_MVOLUME }, + { TEXT_OPT_MUSIC_VOLUME }, + { TEXT_OPT_SFX_VOLUME }, + { TEXT_OPT_ENV_VOLUME }, }; static const u8 optsCheatsStr[][64] = { @@ -261,6 +263,8 @@ static struct Option optsVideo[] = { static struct Option optsAudio[] = { DEF_OPT_SCROLL( optsAudioStr[0], &configMasterVolume, 0, MAX_VOLUME, 1 ), DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, MAX_VOLUME, 1), + DEF_OPT_SCROLL( optsAudioStr[2], &configSfxVolume, 0, MAX_VOLUME, 1), + DEF_OPT_SCROLL( optsAudioStr[3], &configEnvVolume, 0, MAX_VOLUME, 1), }; static struct Option optsCheats[] = { diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 6a6b6bd4..2a85b7a6 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -52,6 +52,8 @@ ConfigWindow configWindow = { unsigned int configFiltering = 1; // 0=force nearest, 1=linear, (TODO) 2=three-point unsigned int configMasterVolume = MAX_VOLUME; // 0 - MAX_VOLUME unsigned int configMusicVolume = MAX_VOLUME; +unsigned int configSfxVolume = MAX_VOLUME; +unsigned int configEnvVolume = MAX_VOLUME; // Keyboard mappings (VK_ values, by default keyboard/gamepad/mouse) unsigned int configKeyA[MAX_BINDS] = { 0x0026, 0x1000, 0x1103 }; @@ -101,6 +103,8 @@ static const struct ConfigOption options[] = { {.name = "texture_filtering", .type = CONFIG_TYPE_UINT, .uintValue = &configFiltering}, {.name = "master_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, {.name = "music_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMusicVolume}, + {.name = "sfx_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configSfxVolume}, + {.name = "env_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configEnvVolume}, {.name = "key_a", .type = CONFIG_TYPE_BIND, .uintValue = configKeyA}, {.name = "key_b", .type = CONFIG_TYPE_BIND, .uintValue = configKeyB}, {.name = "key_start", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStart}, diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 0c2960f8..45025141 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -22,6 +22,8 @@ extern ConfigWindow configWindow; extern unsigned int configFiltering; extern unsigned int configMasterVolume; extern unsigned int configMusicVolume; +extern unsigned int configSfxVolume; +extern unsigned int configEnvVolume; extern unsigned int configKeyA[]; extern unsigned int configKeyB[]; extern unsigned int configKeyStart[]; diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 8843930f..05bb4aaf 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -74,7 +74,9 @@ void produce_one_frame(void) { gfx_start_frame(); - setBackgroundMusicVolume((s32)configMusicVolume); + setSequencePlayerVolume(SEQ_PLAYER_LEVEL, (s32)configMusicVolume); + setSequencePlayerVolume(SEQ_PLAYER_SFX, (s32)configSfxVolume); + setSequencePlayerVolume(SEQ_PLAYER_ENV, (s32)configEnvVolume); game_loop_one_iteration(); thread6_rumble_loop(NULL); From fd05cd3adb8db612c3881a559e83ce81f74a48d5 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sat, 13 Jun 2020 22:54:33 +0300 Subject: [PATCH 149/166] don't use small resource alignment for large textures thanks to Emil for this one see https://docs.microsoft.com/en-us/windows/win32/api/d3d12/ns-d3d12-d3d12_resource_desc#alignment for an explanation --- src/pc/gfx/gfx_direct3d12.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pc/gfx/gfx_direct3d12.cpp b/src/pc/gfx/gfx_direct3d12.cpp index e01ce720..3fe9aed1 100644 --- a/src/pc/gfx/gfx_direct3d12.cpp +++ b/src/pc/gfx/gfx_direct3d12.cpp @@ -423,7 +423,8 @@ static void gfx_d3d12_upload_texture(uint8_t *rgba32_buf, int width, int height) texture_desc.SampleDesc.Count = 1; texture_desc.SampleDesc.Quality = 0; texture_desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; - texture_desc.Alignment = D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT; + texture_desc.Alignment = ((width + 31) / 32) * ((height + 31) / 32) > 16 ? + 0 : D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT; D3D12_RESOURCE_ALLOCATION_INFO alloc_info = get_resource_allocation_info(&texture_desc); From 2e03057182f1566b8daa61d6b585ac5eed971389 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 14 Jun 2020 02:28:16 +0300 Subject: [PATCH 150/166] swap width and height for wing cap and vanish cap sides this fixes the doubled up texture with EXTERNAL_DATA enabled --- assets.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets.json b/assets.json index 3faab45b..34aa8b1f 100644 --- a/assets.json +++ b/assets.json @@ -151,9 +151,9 @@ "actors/exclamation_box/metal_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,83496],"us":[2040320,83496],"eu":[1912288,83496],"sh":[1888800,83496]}], "actors/exclamation_box/metal_cap_box_side.rgba16.png": [64,32,4096,{"jp":[2032944,85544],"us":[2040320,85544],"eu":[1912288,85544],"sh":[1888800,85544]}], "actors/exclamation_box/vanish_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,77352],"us":[2040320,77352],"eu":[1912288,77352],"sh":[1888800,77352]}], -"actors/exclamation_box/vanish_cap_box_sides.rgba16.png": [64,32,4096,{"jp":[2032944,79400],"us":[2040320,79400],"eu":[1912288,79400],"sh":[1888800,79400]}], +"actors/exclamation_box/vanish_cap_box_sides.rgba16.png": [32,64,4096,{"jp":[2032944,79400],"us":[2040320,79400],"eu":[1912288,79400],"sh":[1888800,79400]}], "actors/exclamation_box/wing_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,89640],"us":[2040320,89640],"eu":[1912288,89640],"sh":[1888800,89640]}], -"actors/exclamation_box/wing_cap_box_sides.rgba16.png": [64,32,4096,{"jp":[2032944,91688],"us":[2040320,91688],"eu":[1912288,91688],"sh":[1888800,91688]}], +"actors/exclamation_box/wing_cap_box_sides.rgba16.png": [32,64,4096,{"jp":[2032944,91688],"us":[2040320,91688],"eu":[1912288,91688],"sh":[1888800,91688]}], "actors/exclamation_box_outline/exclamation_box_outline.rgba16.png": [32,32,2048,{"jp":[2032944,151912],"us":[2040320,151912],"eu":[1912288,151912],"sh":[1888800,151912]}], "actors/exclamation_box_outline/exclamation_point.rgba16.png": [16,32,1024,{"jp":[2032944,154240],"us":[2040320,154240],"eu":[1912288,154240],"sh":[1888800,154240]}], "actors/explosion/explosion_0.rgba16.png": [32,32,2048,{"jp":[2094912,2568],"us":[2102288,2568],"eu":[1974256,2568],"sh":[1950768,2568]}], From f02c1cab49976d5a7152b1046a2e68ceadf35bb0 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 14 Jun 2020 02:28:59 +0300 Subject: [PATCH 151/166] tools: make some stuff endianness-aware --- tools/aifc_decode.c | 18 +++++++++++++----- tools/aiff_extract_codebook.c | 9 +++++++-- tools/audiofile/Makefile | 2 +- tools/audiofile/audiofile.cpp | 6 +++--- tools/gen_asset_list.cpp | 9 +++++++-- tools/sdk-tools/adpcm/vadpcm.h | 2 +- tools/skyconv.c | 2 ++ 7 files changed, 34 insertions(+), 14 deletions(-) diff --git a/tools/aifc_decode.c b/tools/aifc_decode.c index 19d13c6c..102e62bf 100644 --- a/tools/aifc_decode.c +++ b/tools/aifc_decode.c @@ -19,11 +19,19 @@ typedef unsigned int u32; typedef unsigned long long u64; typedef float f32; -#define bswap16(x) __builtin_bswap16(x) -#define bswap32(x) __builtin_bswap32(x) -#define BSWAP16(x) x = __builtin_bswap16(x) -#define BSWAP32(x) x = __builtin_bswap32(x) -#define BSWAP16_MANY(x, n) for (s32 _i = 0; _i < n; _i++) BSWAP16((x)[_i]) +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define bswap16(x) (x) +# define bswap32(x) (x) +# define BSWAP16(x) +# define BSWAP32(x) +# define BSWAP16_MANY(x, n) +#else +# define bswap16(x) __builtin_bswap16(x) +# define bswap32(x) __builtin_bswap32(x) +# define BSWAP16(x) x = __builtin_bswap16(x) +# define BSWAP32(x) x = __builtin_bswap32(x) +# define BSWAP16_MANY(x, n) for (s32 _i = 0; _i < n; _i++) BSWAP16((x)[_i]) +#endif #define NORETURN __attribute__((noreturn)) #define UNUSED __attribute__((unused)) diff --git a/tools/aiff_extract_codebook.c b/tools/aiff_extract_codebook.c index 78864e38..481e3133 100644 --- a/tools/aiff_extract_codebook.c +++ b/tools/aiff_extract_codebook.c @@ -15,8 +15,13 @@ typedef int s32; typedef unsigned char u8; typedef unsigned int u32; -#define BSWAP16(x) x = __builtin_bswap16(x) -#define BSWAP32(x) x = __builtin_bswap32(x) +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define BSWAP16(x) +# define BSWAP32(x) +#else +# define BSWAP16(x) x = __builtin_bswap16(x) +# define BSWAP32(x) x = __builtin_bswap32(x) +#endif #define NORETURN __attribute__((noreturn)) #define UNUSED __attribute__((unused)) diff --git a/tools/audiofile/Makefile b/tools/audiofile/Makefile index f1868a7e..20d22a45 100644 --- a/tools/audiofile/Makefile +++ b/tools/audiofile/Makefile @@ -4,7 +4,7 @@ libaudiofile.a: audiofile.o ar rcs libaudiofile.a audiofile.o audiofile.o: audiofile.cpp audiofile.h aupvlist.h - $(CXX) -O2 -I. -c audiofile.cpp + $(CXX) -std=c++11 -O2 -I. -c audiofile.cpp clean: rm -f audiofile.o libaudiofile.a diff --git a/tools/audiofile/audiofile.cpp b/tools/audiofile/audiofile.cpp index cbfc605c..ffe960aa 100644 --- a/tools/audiofile/audiofile.cpp +++ b/tools/audiofile/audiofile.cpp @@ -5075,7 +5075,7 @@ bool ModuleState::fileModuleHandlesSeeking() const status ModuleState::setup(AFfilehandle file, Track *track) { - AFframecount fframepos = llrint(track->nextvframe * track->f.sampleRate / track->v.sampleRate); + AFframecount fframepos = std::llrint((long double)track->nextvframe * track->f.sampleRate / track->v.sampleRate); bool isReading = file->m_access == _AF_READ_ACCESS; if (!track->v.isUncompressed()) @@ -5146,11 +5146,11 @@ status ModuleState::setup(AFfilehandle file, Track *track) if (track->totalfframes == -1) track->totalvframes = -1; else - track->totalvframes = llrint(track->totalfframes * + track->totalvframes = std::llrint((long double)track->totalfframes * (track->v.sampleRate / track->f.sampleRate)); track->nextfframe = fframepos; - track->nextvframe = llrint(fframepos * track->v.sampleRate / track->f.sampleRate); + track->nextvframe = std::llrint((long double)fframepos * track->v.sampleRate / track->f.sampleRate); m_isDirty = false; diff --git a/tools/gen_asset_list.cpp b/tools/gen_asset_list.cpp index 3096293e..c1d0e901 100644 --- a/tools/gen_asset_list.cpp +++ b/tools/gen_asset_list.cpp @@ -18,8 +18,13 @@ #include using namespace std; -#define BSWAP32(x) ((((x) >> 24) & 0xff) | (((x) >> 8) & 0xff00) | (((x) << 8) & 0xff0000) | (((x) << 24) & 0xff000000U)) -#define BSWAP16(x) ((((x) >> 8) & 0xff) | (((x) << 8) & 0xff00)) +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +# define BSWAP32(x) ((((x) >> 24) & 0xff) | (((x) >> 8) & 0xff00) | (((x) << 8) & 0xff0000) | (((x) << 24) & 0xff000000U)) +# define BSWAP16(x) ((((x) >> 8) & 0xff) | (((x) << 8) & 0xff00)) +#else +# define BSWAP32(x) (x) +# define BSWAP16(x) (x) +#endif const char* OUTPUT_FILE = "assets.json"; const size_t CHUNK_SIZE = 16; diff --git a/tools/sdk-tools/adpcm/vadpcm.h b/tools/sdk-tools/adpcm/vadpcm.h index cac44861..de015e85 100644 --- a/tools/sdk-tools/adpcm/vadpcm.h +++ b/tools/sdk-tools/adpcm/vadpcm.h @@ -14,7 +14,7 @@ typedef unsigned long long u64; typedef float f32; typedef double f64; -#ifdef __sgi +#if defined(__sgi) || (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) # define BSWAP16(x) # define BSWAP32(x) # define BSWAP16_MANY(x, n) diff --git a/tools/skyconv.c b/tools/skyconv.c index a66c5c1b..778295db 100644 --- a/tools/skyconv.c +++ b/tools/skyconv.c @@ -387,7 +387,9 @@ void combine_skybox(const char *input, const char *output) { uint32_t table[W*H]; if (fread(table, sizeof(table), 1, file) != 1) goto fail; + #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ reverse_endian((unsigned char *) table, W*H*4); + #endif uint32_t base = table[0]; for (int i = 0; i < W*H; i++) { From a558942beb7bf893f5ee584f9b58ffcb16c8129e Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 14 Jun 2020 02:40:04 +0300 Subject: [PATCH 152/166] increment asset file version --- extract_assets.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/extract_assets.py b/extract_assets.py index 7c29358b..29a64057 100755 --- a/extract_assets.py +++ b/extract_assets.py @@ -20,6 +20,8 @@ def read_local_asset_list(f): def asset_needs_update(asset, version): + if version <= 6 and asset in ["actors/exclamation_box/vanish_cap_box_sides.rgba16.png", "actors/exclamation_box/wing_cap_box_sides.rgba16.png"]: + return True if version <= 5 and asset == "textures/spooky/bbh_textures.00800.rgba16.png": return True if version <= 4 and asset in ["textures/mountain/ttm_textures.01800.rgba16.png", "textures/mountain/ttm_textures.05800.rgba16.png"]: @@ -60,7 +62,7 @@ def clean_assets(local_asset_file): def main(): # In case we ever need to change formats of generated files, we keep a # revision ID in the local asset file. - new_version = 6 + new_version = 7 try: local_asset_file = open(".assets-local.txt") From ee789bd18dfd7fa3af949e4c78b086825df53d1f Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 14 Jun 2020 13:30:39 +0300 Subject: [PATCH 153/166] revert asset version increase --- assets.json | 4 ++-- extract_assets.py | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/assets.json b/assets.json index 34aa8b1f..3faab45b 100644 --- a/assets.json +++ b/assets.json @@ -151,9 +151,9 @@ "actors/exclamation_box/metal_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,83496],"us":[2040320,83496],"eu":[1912288,83496],"sh":[1888800,83496]}], "actors/exclamation_box/metal_cap_box_side.rgba16.png": [64,32,4096,{"jp":[2032944,85544],"us":[2040320,85544],"eu":[1912288,85544],"sh":[1888800,85544]}], "actors/exclamation_box/vanish_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,77352],"us":[2040320,77352],"eu":[1912288,77352],"sh":[1888800,77352]}], -"actors/exclamation_box/vanish_cap_box_sides.rgba16.png": [32,64,4096,{"jp":[2032944,79400],"us":[2040320,79400],"eu":[1912288,79400],"sh":[1888800,79400]}], +"actors/exclamation_box/vanish_cap_box_sides.rgba16.png": [64,32,4096,{"jp":[2032944,79400],"us":[2040320,79400],"eu":[1912288,79400],"sh":[1888800,79400]}], "actors/exclamation_box/wing_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,89640],"us":[2040320,89640],"eu":[1912288,89640],"sh":[1888800,89640]}], -"actors/exclamation_box/wing_cap_box_sides.rgba16.png": [32,64,4096,{"jp":[2032944,91688],"us":[2040320,91688],"eu":[1912288,91688],"sh":[1888800,91688]}], +"actors/exclamation_box/wing_cap_box_sides.rgba16.png": [64,32,4096,{"jp":[2032944,91688],"us":[2040320,91688],"eu":[1912288,91688],"sh":[1888800,91688]}], "actors/exclamation_box_outline/exclamation_box_outline.rgba16.png": [32,32,2048,{"jp":[2032944,151912],"us":[2040320,151912],"eu":[1912288,151912],"sh":[1888800,151912]}], "actors/exclamation_box_outline/exclamation_point.rgba16.png": [16,32,1024,{"jp":[2032944,154240],"us":[2040320,154240],"eu":[1912288,154240],"sh":[1888800,154240]}], "actors/explosion/explosion_0.rgba16.png": [32,32,2048,{"jp":[2094912,2568],"us":[2102288,2568],"eu":[1974256,2568],"sh":[1950768,2568]}], diff --git a/extract_assets.py b/extract_assets.py index 29a64057..7c29358b 100755 --- a/extract_assets.py +++ b/extract_assets.py @@ -20,8 +20,6 @@ def read_local_asset_list(f): def asset_needs_update(asset, version): - if version <= 6 and asset in ["actors/exclamation_box/vanish_cap_box_sides.rgba16.png", "actors/exclamation_box/wing_cap_box_sides.rgba16.png"]: - return True if version <= 5 and asset == "textures/spooky/bbh_textures.00800.rgba16.png": return True if version <= 4 and asset in ["textures/mountain/ttm_textures.01800.rgba16.png", "textures/mountain/ttm_textures.05800.rgba16.png"]: @@ -62,7 +60,7 @@ def clean_assets(local_asset_file): def main(): # In case we ever need to change formats of generated files, we keep a # revision ID in the local asset file. - new_version = 7 + new_version = 6 try: local_asset_file = open(".assets-local.txt") From 8749ebda17e6d31d79e94950f3432706bc3a3aa8 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 14 Jun 2020 13:37:57 +0300 Subject: [PATCH 154/166] give the correct textures a different name instead --- actors/exclamation_box/model.inc.c | 4 ++-- assets.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/actors/exclamation_box/model.inc.c b/actors/exclamation_box/model.inc.c index e50b8c5d..70dd506d 100644 --- a/actors/exclamation_box/model.inc.c +++ b/actors/exclamation_box/model.inc.c @@ -13,7 +13,7 @@ ALIGNED8 static const u8 exclamation_box_seg8_texture_08012E28[] = { // 0x08013628 ALIGNED8 static const u8 exclamation_box_seg8_texture_08013628[] = { -#include "actors/exclamation_box/vanish_cap_box_sides.rgba16.inc.c" +#include "actors/exclamation_box/vanish_cap_box_side.rgba16.inc.c" }; // 0x08014628 @@ -33,7 +33,7 @@ ALIGNED8 static const u8 exclamation_box_seg8_texture_08015E28[] = { // 0x08016628 ALIGNED8 static const u8 exclamation_box_seg8_texture_08016628[] = { -#include "actors/exclamation_box/wing_cap_box_sides.rgba16.inc.c" +#include "actors/exclamation_box/wing_cap_box_side.rgba16.inc.c" }; // 0x08017628 diff --git a/assets.json b/assets.json index 3faab45b..b2ebf99e 100644 --- a/assets.json +++ b/assets.json @@ -151,9 +151,9 @@ "actors/exclamation_box/metal_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,83496],"us":[2040320,83496],"eu":[1912288,83496],"sh":[1888800,83496]}], "actors/exclamation_box/metal_cap_box_side.rgba16.png": [64,32,4096,{"jp":[2032944,85544],"us":[2040320,85544],"eu":[1912288,85544],"sh":[1888800,85544]}], "actors/exclamation_box/vanish_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,77352],"us":[2040320,77352],"eu":[1912288,77352],"sh":[1888800,77352]}], -"actors/exclamation_box/vanish_cap_box_sides.rgba16.png": [64,32,4096,{"jp":[2032944,79400],"us":[2040320,79400],"eu":[1912288,79400],"sh":[1888800,79400]}], +"actors/exclamation_box/vanish_cap_box_side.rgba16.png": [32,64,4096,{"jp":[2032944,79400],"us":[2040320,79400],"eu":[1912288,79400],"sh":[1888800,79400]}], "actors/exclamation_box/wing_cap_box_front.rgba16.png": [32,32,2048,{"jp":[2032944,89640],"us":[2040320,89640],"eu":[1912288,89640],"sh":[1888800,89640]}], -"actors/exclamation_box/wing_cap_box_sides.rgba16.png": [64,32,4096,{"jp":[2032944,91688],"us":[2040320,91688],"eu":[1912288,91688],"sh":[1888800,91688]}], +"actors/exclamation_box/wing_cap_box_side.rgba16.png": [32,64,4096,{"jp":[2032944,91688],"us":[2040320,91688],"eu":[1912288,91688],"sh":[1888800,91688]}], "actors/exclamation_box_outline/exclamation_box_outline.rgba16.png": [32,32,2048,{"jp":[2032944,151912],"us":[2040320,151912],"eu":[1912288,151912],"sh":[1888800,151912]}], "actors/exclamation_box_outline/exclamation_point.rgba16.png": [16,32,1024,{"jp":[2032944,154240],"us":[2040320,154240],"eu":[1912288,154240],"sh":[1888800,154240]}], "actors/explosion/explosion_0.rgba16.png": [32,32,2048,{"jp":[2094912,2568],"us":[2102288,2568],"eu":[1974256,2568],"sh":[1950768,2568]}], From 69513ef0bc5f4cd12e9c680688de02f83748c467 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 14 Jun 2020 13:40:53 +0300 Subject: [PATCH 155/166] update the exclamation box texture names in crcmaps --- tools/default_crcmap.txt | 4 ++-- tools/rice_crcmap.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/default_crcmap.txt b/tools/default_crcmap.txt index 46439ecc..80eebab1 100644 --- a/tools/default_crcmap.txt +++ b/tools/default_crcmap.txt @@ -142,9 +142,9 @@ 0x33aa18f1, actors/exclamation_box/metal_cap_box_front.rgba16.png 0x01295855, actors/exclamation_box/metal_cap_box_side.rgba16.png 0x4868d6f8, actors/exclamation_box/vanish_cap_box_front.rgba16.png -0x25fa6e30, actors/exclamation_box/vanish_cap_box_sides.rgba16.png +0x25fa6e30, actors/exclamation_box/vanish_cap_box_side.rgba16.png 0x109a876c, actors/exclamation_box/wing_cap_box_front.rgba16.png -0x49dc8276, actors/exclamation_box/wing_cap_box_sides.rgba16.png +0x49dc8276, actors/exclamation_box/wing_cap_box_side.rgba16.png 0x86c1470d, actors/exclamation_box_outline/exclamation_box_outline.rgba16.png 0x380f4109, actors/exclamation_box_outline/exclamation_point.rgba16.png 0x33181fa0, actors/explosion/explosion_0.rgba16.png diff --git a/tools/rice_crcmap.txt b/tools/rice_crcmap.txt index f2726f09..0bd52ff8 100644 --- a/tools/rice_crcmap.txt +++ b/tools/rice_crcmap.txt @@ -1577,8 +1577,8 @@ 0x006a1516, textures/skybox_tiles/wdw.58.rgba16.png 0x0010fdc4, actors/sushi/sushi_snout.rgba16.png 0x1195aecc, actors/chair/chair_bottom.rgba16.png -0xb16edfa9, actors/exclamation_box/vanish_cap_box_sides.rgba16.png -0x4838a16e, actors/exclamation_box/wing_cap_box_sides.rgba16.png +0xb16edfa9, actors/exclamation_box/vanish_cap_box_side.rgba16.png +0x4838a16e, actors/exclamation_box/wing_cap_box_side.rgba16.png 0x2c14636c, actors/eyerok/eyerok_eye_mostly_closed.rgba16.png 0x761e51a0, actors/eyerok/eyerok_eye_mostly_open.rgba16.png 0x93944d54, actors/eyerok/eyerok_eye_open.rgba16.png From 91f50a40895f0e72732a78b942a1174109527d72 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 14 Jun 2020 23:29:34 +0300 Subject: [PATCH 156/166] remove stray spaces --- src/pc/pc_main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 1baca939..53dcc773 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -74,7 +74,7 @@ void send_display_list(struct SPTask *spTask) { #define printf -void produce_one_frame(void) { +void produce_one_frame(void) { gfx_start_frame(); @@ -83,7 +83,7 @@ void produce_one_frame(void) { setSequencePlayerVolume(SEQ_PLAYER_ENV, (s32)configEnvVolume); game_loop_one_iteration(); - thread6_rumble_loop(NULL); + thread6_rumble_loop(NULL); int samples_left = audio_api->buffered(); u32 num_audio_samples = samples_left < audio_api->get_desired_buffered() ? 544 : 528; @@ -96,12 +96,12 @@ void produce_one_frame(void) { u32 num_audio_samples = audio_cnt < 2 ? 528 : 544;*/ create_next_audio_buffer(audio_buffer + i * (num_audio_samples * 2), num_audio_samples); } - //printf("Audio samples before submitting: %d\n", audio_api->buffered()); + //printf("Audio samples before submitting: %d\n", audio_api->buffered()); // scale by master volume (0-127) const s32 mod = (s32)configMasterVolume; for (u32 i = 0; i < num_audio_samples * 4; ++i) - audio_buffer[i] = ((s32)audio_buffer[i] * mod) >> VOLUME_SHIFT; + audio_buffer[i] = ((s32)audio_buffer[i] * mod) >> VOLUME_SHIFT; audio_api->play((u8*)audio_buffer, 2 * num_audio_samples * 4); From 2e989e48310ef31665168e46f29ae14f147ac153 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Mon, 15 Jun 2020 00:20:23 +0300 Subject: [PATCH 157/166] properly scale sound volumes instead of abusing fadeVolume --- src/audio/effects.c | 6 ++++-- src/audio/external.c | 4 ++-- src/audio/external.h | 2 +- src/audio/internal.h | 1 + src/audio/seqplayer.c | 4 ++++ src/pc/pc_main.c | 6 +++--- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/audio/effects.c b/src/audio/effects.c index 2218fba7..fd78f7af 100644 --- a/src/audio/effects.c +++ b/src/audio/effects.c @@ -18,7 +18,8 @@ static void sequence_channel_process_sound(struct SequenceChannel *seqChannel, s s32 i; if (seqChannel->changes.as_bitfields.volume || recalculateVolume) { - channelVolume = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->appliedFadeVolume; + channelVolume = seqChannel->volume * seqChannel->volumeScale * + seqChannel->seqPlayer->appliedFadeVolume * seqChannel->seqPlayer->volumeScale; if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) { channelVolume = seqChannel->seqPlayer->muteVolumeScale * channelVolume; } @@ -59,7 +60,8 @@ static void sequence_channel_process_sound(struct SequenceChannel *seqChannel) { f32 panFromChannel; s32 i; - channelVolume = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->fadeVolume; + channelVolume = seqChannel->volume * seqChannel->volumeScale * + seqChannel->seqPlayer->fadeVolume * seqChannel->seqPlayer->volumeScale; if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) { channelVolume *= seqChannel->seqPlayer->muteVolumeScale; } diff --git a/src/audio/external.c b/src/audio/external.c index b0ebbb99..ff8614e7 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -2062,8 +2062,8 @@ void play_dialog_sound(u8 dialogID) { #endif } -void setSequencePlayerVolume(s32 player, s32 volume){ - func_8031D838(player, 0, volume); +void set_sequence_player_volume(s32 player, f32 volume) { + gSequencePlayers[player].volumeScale = volume; } void play_music(u8 player, u16 seqArgs, u16 fadeTimer) { diff --git a/src/audio/external.h b/src/audio/external.h index 4d763f35..f2ab3ad0 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -37,7 +37,7 @@ void sound_banks_disable(u8 player, u16 bankMask); void sound_banks_enable(u8 player, u16 bankMask); void func_80320A4C(u8 bankIndex, u8 arg1); void play_dialog_sound(u8 dialogID); -void setSequencePlayerVolume(s32 player, s32 volume); +void set_sequence_player_volume(s32 player, f32 volume); void play_music(u8 player, u16 seqArgs, u16 fadeTimer); void stop_background_music(u16 seqId); void fadeout_background_music(u16 arg0, u16 fadeOut); diff --git a/src/audio/internal.h b/src/audio/internal.h index fa44c8be..bd9f1a2d 100644 --- a/src/audio/internal.h +++ b/src/audio/internal.h @@ -273,6 +273,7 @@ struct SequencePlayer #endif /*0x138, 0x140*/ uintptr_t bankDmaCurrDevAddr; /*0x13C, 0x144*/ ssize_t bankDmaRemaining; + /* ext */ f32 volumeScale; }; // size = 0x140, 0x148 on EU struct AdsrSettings diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c index 7e66a220..810dc9ec 100644 --- a/src/audio/seqplayer.c +++ b/src/audio/seqplayer.c @@ -2227,6 +2227,10 @@ void init_sequence_players(void) { #endif gSequencePlayers[i].bankDmaInProgress = FALSE; gSequencePlayers[i].seqDmaInProgress = FALSE; + + // only set this once at the start so it doesn't spike later + gSequencePlayers[i].volumeScale = 1.0f; + init_note_lists(&gSequencePlayers[i].notePool); init_sequence_player(i); } diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 53dcc773..d84fc6f6 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -78,9 +78,9 @@ void produce_one_frame(void) { gfx_start_frame(); - setSequencePlayerVolume(SEQ_PLAYER_LEVEL, (s32)configMusicVolume); - setSequencePlayerVolume(SEQ_PLAYER_SFX, (s32)configSfxVolume); - setSequencePlayerVolume(SEQ_PLAYER_ENV, (s32)configEnvVolume); + set_sequence_player_volume(SEQ_PLAYER_LEVEL, (f32)configMusicVolume / 127.0f); + set_sequence_player_volume(SEQ_PLAYER_SFX, (f32)configSfxVolume / 127.0f); + set_sequence_player_volume(SEQ_PLAYER_ENV, (f32)configEnvVolume / 127.0f); game_loop_one_iteration(); thread6_rumble_loop(NULL); From 1d6469d2cf232edb708dfae207a52c99c76e5930 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 16 Jun 2020 22:24:54 +0300 Subject: [PATCH 158/166] fix web build --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 146043ba..68b71f22 100644 --- a/Makefile +++ b/Makefile @@ -505,6 +505,7 @@ ifneq ($(TARGET_WEB),1) # As in, not-web PC port CXX := $(CROSS)g++ else CC := emcc + CXX := emcc endif LD := $(CC) From 6686a2d7d9b5e25493f3ef2e103d44b6cf4c2ad8 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 17 Jun 2020 00:15:27 +0300 Subject: [PATCH 159/166] use GLES shaders in web build --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 68b71f22..8360415b 100644 --- a/Makefile +++ b/Makefile @@ -211,7 +211,7 @@ VERSION_ASFLAGS := --defsym AVOID_UB=1 COMPARE := 0 ifeq ($(TARGET_WEB),1) - VERSION_CFLAGS := $(VERSION_CFLAGS) -DTARGET_WEB + VERSION_CFLAGS := $(VERSION_CFLAGS) -DTARGET_WEB -DUSE_GLES endif # Check backends From 5abf1baf6aa764c8bfe25d22fb9ba90f3e25144d Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 17 Jun 2020 03:11:50 +0300 Subject: [PATCH 160/166] controller_sdl: init haptics separately in case it's not available --- src/pc/controller/controller_sdl.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/pc/controller/controller_sdl.c b/src/pc/controller/controller_sdl.c index 0a8ad57e..84f5e024 100644 --- a/src/pc/controller/controller_sdl.c +++ b/src/pc/controller/controller_sdl.c @@ -37,6 +37,7 @@ extern u8 newcam_mouse; #endif static bool init_ok; +static bool haptics_enabled; static SDL_GameController *sdl_cntrl; static SDL_Haptic *sdl_haptic; @@ -89,11 +90,13 @@ static void controller_sdl_bind(void) { } static void controller_sdl_init(void) { - if (SDL_Init(SDL_INIT_GAMECONTROLLER | SDL_INIT_EVENTS | SDL_INIT_HAPTIC) != 0) { + if (SDL_Init(SDL_INIT_GAMECONTROLLER | SDL_INIT_EVENTS) != 0) { fprintf(stderr, "SDL init error: %s\n", SDL_GetError()); return; } + haptics_enabled = (SDL_InitSubSystem(SDL_INIT_HAPTIC) == 0); + // try loading an external gamecontroller mapping file uint64_t gcsize = 0; void *gcdata = fs_load_file("gamecontrollerdb.txt", &gcsize); @@ -119,6 +122,8 @@ static void controller_sdl_init(void) { } static SDL_Haptic *controller_sdl_init_haptics(const int joy) { + if (!haptics_enabled) return NULL; + SDL_Haptic *hap = SDL_HapticOpen(joy); if (!hap) return NULL; @@ -279,12 +284,18 @@ static void controller_sdl_shutdown(void) { SDL_GameControllerClose(sdl_cntrl); sdl_cntrl = NULL; } + SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER); + } + + if (SDL_WasInit(SDL_INIT_HAPTIC)) { if (sdl_haptic) { SDL_HapticClose(sdl_haptic); sdl_haptic = NULL; } - SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER); + SDL_QuitSubSystem(SDL_INIT_HAPTIC); } + + haptics_enabled = false; init_ok = false; } From 7526a998cb36c5c39734364c678d56ffafe70b9c Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 17 Jun 2020 04:40:14 +0300 Subject: [PATCH 161/166] 'filter' is a reserved keyword in GLSL but only Intel drivers get pissed at this --- src/pc/gfx/gfx_opengl.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 736fbd03..b3476cef 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -315,14 +315,14 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad append_line(fs_buf, &fs_len, " vec4 c2 = TEX_OFFSET(vec2(offset.x, offset.y - sign(offset.y)));"); append_line(fs_buf, &fs_len, " return c0 + abs(offset.x)*(c1-c0) + abs(offset.y)*(c2-c0);"); append_line(fs_buf, &fs_len, "}"); - append_line(fs_buf, &fs_len, "vec4 sampleTex(in sampler2D tex, in vec2 uv, in vec2 texSize, in bool filter) {"); - append_line(fs_buf, &fs_len, "if (filter)"); + append_line(fs_buf, &fs_len, "vec4 sampleTex(in sampler2D tex, in vec2 uv, in vec2 texSize, in bool dofilter) {"); + append_line(fs_buf, &fs_len, "if (dofilter)"); append_line(fs_buf, &fs_len, "return filter3point(tex, uv, texSize);"); append_line(fs_buf, &fs_len, "else"); append_line(fs_buf, &fs_len, "return texture2D(tex, uv);"); append_line(fs_buf, &fs_len, "}"); } else { - append_line(fs_buf, &fs_len, "vec4 sampleTex(in sampler2D tex, in vec2 uv, in vec2 texSize, in bool filter) {"); + append_line(fs_buf, &fs_len, "vec4 sampleTex(in sampler2D tex, in vec2 uv, in vec2 texSize, in bool dofilter) {"); append_line(fs_buf, &fs_len, "return texture2D(tex, uv);"); append_line(fs_buf, &fs_len, "}"); } From 29e915e4df83ecf6c1856422c231e2d7816a87c3 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 17 Jun 2020 05:18:05 +0300 Subject: [PATCH 162/166] fix JP build --- include/text_options_strings.h.in | 17 ++++++++++------- src/game/options_menu.c | 10 +++++----- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 7b68f0c4..141d3548 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -47,12 +47,15 @@ #define TEXT_OPT_NEAREST _("NEAREST") #define TEXT_OPT_LINEAR _("LINEAR") #define TEXT_OPT_MVOLUME _("MASTER VOLUME") +#define TEXT_OPT_MUSVOLUME _("MUSIC VOLUME") +#define TEXT_OPT_SFXVOLUME _("SFX VOLUME") +#define TEXT_OPT_ENVVOLUME _("ENV VOLUME") #define TEXT_OPT_VSYNC _("VERTICAL SYNC") #define TEXT_OPT_DOUBLE _("DOUBLE") -#define TEXT_RESET_WINDOW _("RESET WINDOW") #define TEXT_OPT_HUD _("HUD") -#define TEXT_OPT_THREEPOINT _("THREE POINT") +#define TEXT_OPT_THREEPT _("THREE POINT") #define TEXT_OPT_APPLY _("APPLY") +#define TEXT_OPT_RESETWND _("RESET WINDOW") #define TEXT_BIND_A _("A BUTTON") #define TEXT_BIND_B _("B BUTTON") @@ -107,15 +110,15 @@ #define TEXT_OPT_NEAREST _("Nearest") #define TEXT_OPT_LINEAR _("Linear") #define TEXT_OPT_MVOLUME _("Master Volume") -#define TEXT_OPT_MUSIC_VOLUME _("Music Volume") -#define TEXT_OPT_SFX_VOLUME _("Sfx Volume") -#define TEXT_OPT_ENV_VOLUME _("Env Volume") +#define TEXT_OPT_MUSVOLUME _("Music Volume") +#define TEXT_OPT_SFXVOLUME _("Sfx Volume") +#define TEXT_OPT_ENVVOLUME _("Env Volume") #define TEXT_OPT_VSYNC _("Vertical Sync") #define TEXT_OPT_DOUBLE _("Double") -#define TEXT_RESET_WINDOW _("Reset Window") #define TEXT_OPT_HUD _("HUD") -#define TEXT_OPT_THREEPOINT _("Three-point") +#define TEXT_OPT_THREEPT _("Three-point") #define TEXT_OPT_APPLY _("Apply") +#define TEXT_OPT_RESETWND _("Reset Window") #define TEXT_BIND_A _("A Button") #define TEXT_BIND_B _("B Button") diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 3c084c49..e004749c 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -76,19 +76,19 @@ static const u8 optsVideoStr[][32] = { { TEXT_OPT_TEXFILTER }, { TEXT_OPT_NEAREST }, { TEXT_OPT_LINEAR }, - { TEXT_RESET_WINDOW }, + { TEXT_OPT_RESETWND }, { TEXT_OPT_VSYNC }, { TEXT_OPT_DOUBLE }, { TEXT_OPT_HUD }, - { TEXT_OPT_THREEPOINT }, + { TEXT_OPT_THREEPT }, { TEXT_OPT_APPLY }, }; static const u8 optsAudioStr[][32] = { { TEXT_OPT_MVOLUME }, - { TEXT_OPT_MUSIC_VOLUME }, - { TEXT_OPT_SFX_VOLUME }, - { TEXT_OPT_ENV_VOLUME }, + { TEXT_OPT_MUSVOLUME }, + { TEXT_OPT_SFXVOLUME }, + { TEXT_OPT_ENVVOLUME }, }; static const u8 optsCheatsStr[][64] = { From 94db04aaf080b829fbc0b61f6fa6cd1daee26aca Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 18 Jun 2020 01:33:45 +0300 Subject: [PATCH 163/166] fix segfaults in libaudiofile.cpp casted the wrong thing? --- tools/audiofile/Makefile | 2 +- tools/audiofile/audiofile.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/audiofile/Makefile b/tools/audiofile/Makefile index 20d22a45..5f3f3e1d 100644 --- a/tools/audiofile/Makefile +++ b/tools/audiofile/Makefile @@ -4,7 +4,7 @@ libaudiofile.a: audiofile.o ar rcs libaudiofile.a audiofile.o audiofile.o: audiofile.cpp audiofile.h aupvlist.h - $(CXX) -std=c++11 -O2 -I. -c audiofile.cpp + $(CXX) -std=c++11 -DNDEBUG -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -O2 -I. -c audiofile.cpp clean: rm -f audiofile.o libaudiofile.a diff --git a/tools/audiofile/audiofile.cpp b/tools/audiofile/audiofile.cpp index ffe960aa..88efeddf 100644 --- a/tools/audiofile/audiofile.cpp +++ b/tools/audiofile/audiofile.cpp @@ -5075,7 +5075,7 @@ bool ModuleState::fileModuleHandlesSeeking() const status ModuleState::setup(AFfilehandle file, Track *track) { - AFframecount fframepos = std::llrint((long double)track->nextvframe * track->f.sampleRate / track->v.sampleRate); + AFframecount fframepos = std::llrint(track->nextvframe * track->f.sampleRate / track->v.sampleRate); bool isReading = file->m_access == _AF_READ_ACCESS; if (!track->v.isUncompressed()) @@ -5146,11 +5146,11 @@ status ModuleState::setup(AFfilehandle file, Track *track) if (track->totalfframes == -1) track->totalvframes = -1; else - track->totalvframes = std::llrint((long double)track->totalfframes * + track->totalvframes = std::llrint(track->totalfframes * (track->v.sampleRate / track->f.sampleRate)); track->nextfframe = fframepos; - track->nextvframe = std::llrint((long double)fframepos * track->v.sampleRate / track->f.sampleRate); + track->nextvframe = std::llrint(fframepos * track->v.sampleRate / track->f.sampleRate); m_isDirty = false; From 34af21bad4630fa71a7dc5e80a5d8d3b264b78f4 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 18 Jun 2020 02:20:32 +0300 Subject: [PATCH 164/166] premultiply volume scales by master volume instead of scaling the output --- src/pc/configfile.h | 5 ++--- src/pc/pc_main.c | 15 +++++---------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 45025141..18e4b919 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -5,9 +5,8 @@ #define CONFIGFILE_DEFAULT "sm64config.txt" -#define MAX_BINDS 3 -#define MAX_VOLUME 127 -#define VOLUME_SHIFT 7 +#define MAX_BINDS 3 +#define MAX_VOLUME 127 typedef struct { unsigned int x, y, w, h; diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index d84fc6f6..af07b57a 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -75,12 +75,12 @@ void send_display_list(struct SPTask *spTask) { #define printf void produce_one_frame(void) { - gfx_start_frame(); - set_sequence_player_volume(SEQ_PLAYER_LEVEL, (f32)configMusicVolume / 127.0f); - set_sequence_player_volume(SEQ_PLAYER_SFX, (f32)configSfxVolume / 127.0f); - set_sequence_player_volume(SEQ_PLAYER_ENV, (f32)configEnvVolume / 127.0f); + const f32 master_mod = (f32)configMasterVolume / 127.0f; + set_sequence_player_volume(SEQ_PLAYER_LEVEL, (f32)configMusicVolume / 127.0f * master_mod); + set_sequence_player_volume(SEQ_PLAYER_SFX, (f32)configSfxVolume / 127.0f * master_mod); + set_sequence_player_volume(SEQ_PLAYER_ENV, (f32)configEnvVolume / 127.0f * master_mod); game_loop_one_iteration(); thread6_rumble_loop(NULL); @@ -98,13 +98,8 @@ void produce_one_frame(void) { } //printf("Audio samples before submitting: %d\n", audio_api->buffered()); - // scale by master volume (0-127) - const s32 mod = (s32)configMasterVolume; - for (u32 i = 0; i < num_audio_samples * 4; ++i) - audio_buffer[i] = ((s32)audio_buffer[i] * mod) >> VOLUME_SHIFT; - audio_api->play((u8*)audio_buffer, 2 * num_audio_samples * 4); - + gfx_end_frame(); } From 4bdc3ecfa8544855c6347c4a1a0d6321a33286f8 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 19 Jun 2020 23:42:57 +0300 Subject: [PATCH 165/166] Update README.md --- README.md | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 10dfa730..a6ed1a95 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,30 @@ -# sm64pc -OpenGL adaptation of [n64decomp/sm64](https://github.com/n64decomp/sm64). +# sm64ex +Fork of [sm64-port/sm64-port](https://github.com/sm64-port/sm64-port) with additional features. Feel free to report bugs and contribute, but remember, there must be **no upload of any copyrighted asset**. -Run `./extract_assets.py --clean && make clean` or `make distclean` to remove ROM-originated content. This port has been made possible mostly thanks to [Emill](https://github.com/Emill) and his [n64-fast3d-engine](https://github.com/Emill/n64-fast3d-engine/) renderer. +Run `./extract_assets.py --clean && make clean` or `make distclean` to remove ROM-originated content. - -Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm64pc/tree/nightly/). New functionality will be merged to master once they're considered to be well-tested. +Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm64ex/tree/nightly/). New functionality will be merged to master once they're considered to be well-tested. *Read this in other languages: [Español](README_es_ES.md), [Português](README_pt_BR.md) or [简体中文](README_zh_CN.md).* -## Features +## New features - * Native rendering. You can now play SM64 without the need of an emulator. - * Variable aspect ratio and resolution. The game can now correctly render at basically any window size. - * Native xinput controller support. On Linux, DualShock 4 has been confirmed to work plug-and-play. - * Analog camera control and mouse look. (Activate with `make BETTERCAMERA=1`.) - * An option to disable drawing distances. (Activate with `make NODRAWINGDISTANCE=1`.) - * Model and texture fixes. (Activate with `make TEXTURE_FIX=1`.) - * In-game control binding. + * Options menu with various settings, including button remapping. + * Optional external data loading (so far only textures and assembled soundbanks), providing support for custom texture packs. + * Optional analog camera and mouse look (using [Puppycam](https://github.com/FazanaJ/puppycam)). + * Optional OpenGL1.3-based renderer for older machines, as well as the original GL2.1, D3D11 and D3D12 renderers from Emill's [n64-fast3d-engine](https://github.com/Emill/n64-fast3d-engine/). + * Option to disable drawing distances. + * Optional odel and texture fixes (e.g. the smoke texture). * Skip introductory Peach & Lakitu cutscenes with the `--skip-intro` CLI option - * Disabling the HUD. - * Cheats menu in Options. (Activate with `--cheats`) Please note that if a cheat asks you to press "L" it's referring to the N64 button. Check your bindings and make sure you have the "L" button mapped to a button in your controller. - * Text-based save support. (Activate with `make TEXTSAVES=1`.) - * Recent changes in Nightly have moved the save and configuration file path to `%HOMEPATH%\AppData\Roaming\sm64pc` on Windows and `$HOME/.local/share/sm64pc` on Linux. This behaviour can be changed with the `--savepath` CLI option. - For example `--savepath .` will read saves from the current directory (which not always matches the exe directory, but most of the time it does); + * Cheats menu in Options (activate with `--cheats` or by pressing L thrice in the pause menu). + * Support for both little-endian and big-endian save files (meaning you can use save files from both sm64-port and most emulators), as well as an optional text-based save format. + +Recent changes in Nightly have moved the save and configuration file path to `%HOMEPATH%\AppData\Roaming\sm64pc` on Windows and `$HOME/.local/share/sm64pc` on Linux. This behaviour can be changed with the `--savepath` CLI option. +For example `--savepath .` will read saves from the current directory (which not always matches the exe directory, but most of the time it does); `--savepath '!'` will read saves from the executable directory. ## Building -For building instructions, please refer to the [wiki](https://github.com/sm64pc/sm64pc/wiki). +For building instructions, please refer to the [wiki](https://github.com/sm64pc/sm64ex/wiki). **Make sure you have MXE first before attempting to compile for Windows on Linux and WSL. Follow the guide on the wiki.** From af8c4fc4fadc30223ff23a15196cd3aff568a3e6 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Fri, 19 Jun 2020 23:43:40 +0300 Subject: [PATCH 166/166] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a6ed1a95..86d7bd43 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Please contribute **first** to the [nightly branch](https://github.com/sm64pc/sm * Optional analog camera and mouse look (using [Puppycam](https://github.com/FazanaJ/puppycam)). * Optional OpenGL1.3-based renderer for older machines, as well as the original GL2.1, D3D11 and D3D12 renderers from Emill's [n64-fast3d-engine](https://github.com/Emill/n64-fast3d-engine/). * Option to disable drawing distances. - * Optional odel and texture fixes (e.g. the smoke texture). + * Optional model and texture fixes (e.g. the smoke texture). * Skip introductory Peach & Lakitu cutscenes with the `--skip-intro` CLI option * Cheats menu in Options (activate with `--cheats` or by pressing L thrice in the pause menu). * Support for both little-endian and big-endian save files (meaning you can use save files from both sm64-port and most emulators), as well as an optional text-based save format.